广丰卷烟厂数采质量分析系统
zhuguifei
2026-03-04 63b4909ac5d0b7355be211cc7080673b41cdb3cc
refactor(module(qa)): 代码重构
已重命名56个文件
已复制2个文件
已修改36个文件
已删除2个文件
7036 ■■■■ 文件已修改
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/FeedmatchTimeDataController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/HoisterTimeDataController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/PackerTimeDataController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/RollerTimeDataController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/StoreSilkInfoController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/BoxTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/FeedmatchTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/HoisterTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/MakeupTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/PackerTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/RollerTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/StoreSilkInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/TransTimeData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/FeedmatchTimeDataBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/HoisterTimeDataBo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/PackerTimeDataBo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/RollerTimeDataBo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/StoreSilkInfoBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/FeedmatchTimeDataVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/HoisterTimeDataVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/PackerTimeDataVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/RollerTimeDataVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/StoreSilkInfoVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/FeedmatchTimeDataMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/HoisterTimeDataMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/PackerTimeDataMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/RollerTimeDataMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/StoreSilkInfoMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IFeedmatchTimeDataService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IHoisterTimeDataService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IPackerTimeDataService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IRollerTimeDataService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IStoreSilkInfoService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/FeedmatchTimeDataServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/HoisterTimeDataServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/PackerTimeDataServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/RollerTimeDataServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/StoreSilkInfoServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/controller/MdShiftController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/domain/MdShift.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/domain/bo/MdShiftBo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/domain/vo/MdShiftVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/mapper/MdShiftMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/service/IMdShiftService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/service/impl/MdShiftServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/controller/QmBatchController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/domain/QmBatch.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/domain/bo/QmBatchBo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/domain/vo/QmBatchVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/mapper/QmBatchMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/IQmBatchService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmBatchServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/StoreSilkInfoMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/FeedmatchTimeDataMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/PackerTimeDataMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/RollerTimeDataMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/StoreSilkInfoMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/md/MdShiftMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/qm/QmBatchMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qm/QmBatchMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/analy/feed-match.ts 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/analy/hoister-data.ts 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/analy/packer-data.ts 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/analy/roller-data.ts 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/analy/store-silk.ts 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/md/shift.ts 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/service/api/qm/batch.ts 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/analy.feed-match.api.d.ts 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/analy.hoister-data.api.d.ts 284 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/analy.packer-data.api.d.ts 242 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/analy.roller-data.api.d.ts 226 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/analy.store-silk.api.d.ts 123 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/md.shift.api.d.ts 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/typings/api/qm.batch.api.d.ts 342 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/feed-match/index.vue 463 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/feed-match/modules/feed-match-operate-drawer.vue 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/hoister/index.vue 607 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/hoister/modules/hoister-data-operate-drawer.vue 221 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/hoister/modules/hoister-data-search.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/output-analy/index.vue 260 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/output-analy/modules/roller-data-line-chart.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/output-analy/modules/roller-data-operate-drawer.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/output-analy/modules/roller-data-search.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/packer/index.vue 429 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/packer/modules/packer-data-operate-drawer.vue 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/packer/modules/packer-data-search.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/roller/index.vue 355 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/roller/modules/roller-data-operate-drawer.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/roller/modules/roller-data-search.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/store-silk/index.vue 264 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-operate-drawer.vue 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/md/shift/index.vue 295 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/md/shift/modules/shift-operate-drawer.vue 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/qm/batch/index.vue 709 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue 250 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/FeedmatchTimeDataController.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/controller/FeedmatchTimeDataController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.controller;
package org.dromara.qa.analy.controller;
import java.util.Date;
import java.util.List;
@@ -18,9 +18,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.analy.domain.bo.FeedmatchTimeDataBo;
import org.dromara.analy.service.IFeedmatchTimeDataService;
import org.dromara.qa.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.qa.analy.domain.bo.FeedmatchTimeDataBo;
import org.dromara.qa.analy.service.IFeedmatchTimeDataService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/HoisterTimeDataController.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/controller/HoisterTimeDataController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.controller;
package org.dromara.qa.analy.controller;
import java.util.Date;
import java.util.List;
@@ -18,9 +18,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.analy.domain.bo.HoisterTimeDataBo;
import org.dromara.analy.service.IHoisterTimeDataService;
import org.dromara.qa.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.qa.analy.domain.bo.HoisterTimeDataBo;
import org.dromara.qa.analy.service.IHoisterTimeDataService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/PackerTimeDataController.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/controller/PackerTimeDataController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.controller;
package org.dromara.qa.analy.controller;
import java.util.Date;
import java.util.List;
@@ -18,9 +18,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.analy.domain.vo.PackerTimeDataVo;
import org.dromara.analy.domain.bo.PackerTimeDataBo;
import org.dromara.analy.service.IPackerTimeDataService;
import org.dromara.qa.analy.domain.vo.PackerTimeDataVo;
import org.dromara.qa.analy.domain.bo.PackerTimeDataBo;
import org.dromara.qa.analy.service.IPackerTimeDataService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/RollerTimeDataController.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/controller/RollerTimeDataController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.controller;
package org.dromara.qa.analy.controller;
import java.util.Date;
import java.util.List;
@@ -18,9 +18,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.analy.domain.vo.RollerTimeDataVo;
import org.dromara.analy.domain.bo.RollerTimeDataBo;
import org.dromara.analy.service.IRollerTimeDataService;
import org.dromara.qa.analy.domain.vo.RollerTimeDataVo;
import org.dromara.qa.analy.domain.bo.RollerTimeDataBo;
import org.dromara.qa.analy.service.IRollerTimeDataService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/controller/StoreSilkInfoController.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/controller/StoreSilkInfoController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.controller;
package org.dromara.qa.analy.controller;
import java.util.List;
@@ -17,9 +17,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.analy.domain.bo.StoreSilkInfoBo;
import org.dromara.analy.service.IStoreSilkInfoService;
import org.dromara.qa.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.qa.analy.domain.bo.StoreSilkInfoBo;
import org.dromara.qa.analy.service.IStoreSilkInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
@@ -42,7 +42,6 @@
    @SaCheckPermission("analy:storeSilk:list")
    @GetMapping("/list")
    public TableDataInfo<StoreSilkInfoVo> list(StoreSilkInfoBo bo, PageQuery pageQuery) {
        return storeSilkInfoService.queryPageList(bo, pageQuery);
    }
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/BoxTimeData.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/BoxTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/FeedmatchTimeData.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/FeedmatchTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/HoisterTimeData.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/HoisterTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/MakeupTimeData.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/MakeupTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/PackerTimeData.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/PackerTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/RollerTimeData.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/RollerTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/StoreSilkInfo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/StoreSilkInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/TransTimeData.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/TransTimeData.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.domain;
package org.dromara.qa.analy.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/FeedmatchTimeDataBo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/bo/FeedmatchTimeDataBo.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package org.dromara.analy.domain.bo;
package org.dromara.qa.analy.domain.bo;
import org.dromara.analy.domain.FeedmatchTimeData;
import org.dromara.qa.analy.domain.FeedmatchTimeData;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@@ -9,7 +9,6 @@
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
 * å–‚丝机对应关系业务对象 feedmatch_time_data
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/HoisterTimeDataBo.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/bo/HoisterTimeDataBo.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package org.dromara.analy.domain.bo;
package org.dromara.qa.analy.domain.bo;
import org.dromara.analy.domain.HoisterTimeData;
import org.dromara.qa.analy.domain.HoisterTimeData;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/PackerTimeDataBo.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/bo/PackerTimeDataBo.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package org.dromara.analy.domain.bo;
package org.dromara.qa.analy.domain.bo;
import org.dromara.analy.domain.PackerTimeData;
import org.dromara.qa.analy.domain.PackerTimeData;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/RollerTimeDataBo.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/bo/RollerTimeDataBo.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package org.dromara.analy.domain.bo;
package org.dromara.qa.analy.domain.bo;
import org.dromara.analy.domain.RollerTimeData;
import org.dromara.qa.analy.domain.RollerTimeData;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/bo/StoreSilkInfoBo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/bo/StoreSilkInfoBo.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package org.dromara.analy.domain.bo;
package org.dromara.qa.analy.domain.bo;
import org.dromara.analy.domain.StoreSilkInfo;
import org.dromara.qa.analy.domain.StoreSilkInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@@ -9,7 +9,6 @@
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
 * å‚¨ä¸æŸœäº§é‡ä¸šåŠ¡å¯¹è±¡ oracle_store_silk
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/FeedmatchTimeDataVo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/vo/FeedmatchTimeDataVo.java ÐÞ¸Ä
@@ -1,19 +1,15 @@
package org.dromara.analy.domain.vo;
package org.dromara.qa.analy.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.analy.domain.FeedmatchTimeData;
import org.dromara.qa.analy.domain.FeedmatchTimeData;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/HoisterTimeDataVo.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/vo/HoisterTimeDataVo.java ÐÞ¸Ä
@@ -1,9 +1,9 @@
package org.dromara.analy.domain.vo;
package org.dromara.qa.analy.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.dromara.analy.domain.HoisterTimeData;
import org.dromara.qa.analy.domain.HoisterTimeData;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/PackerTimeDataVo.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/vo/PackerTimeDataVo.java ÐÞ¸Ä
@@ -1,8 +1,8 @@
package org.dromara.analy.domain.vo;
package org.dromara.qa.analy.domain.vo;
import java.util.Date;
import org.dromara.analy.domain.PackerTimeData;
import org.dromara.qa.analy.domain.PackerTimeData;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/RollerTimeDataVo.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/vo/RollerTimeDataVo.java ÐÞ¸Ä
@@ -1,8 +1,8 @@
package org.dromara.analy.domain.vo;
package org.dromara.qa.analy.domain.vo;
import java.util.Date;
import org.dromara.analy.domain.RollerTimeData;
import org.dromara.qa.analy.domain.RollerTimeData;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/domain/vo/StoreSilkInfoVo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/domain/vo/StoreSilkInfoVo.java ÐÞ¸Ä
@@ -1,19 +1,15 @@
package org.dromara.analy.domain.vo;
package org.dromara.qa.analy.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.analy.domain.StoreSilkInfo;
import org.dromara.qa.analy.domain.StoreSilkInfo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/FeedmatchTimeDataMapper.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/mapper/FeedmatchTimeDataMapper.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.mapper;
package org.dromara.qa.analy.mapper;
import org.dromara.analy.domain.FeedmatchTimeData;
import org.dromara.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.qa.analy.domain.FeedmatchTimeData;
import org.dromara.qa.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/HoisterTimeDataMapper.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/mapper/HoisterTimeDataMapper.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.mapper;
package org.dromara.qa.analy.mapper;
import org.dromara.analy.domain.HoisterTimeData;
import org.dromara.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.qa.analy.domain.HoisterTimeData;
import org.dromara.qa.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/PackerTimeDataMapper.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/mapper/PackerTimeDataMapper.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.mapper;
package org.dromara.qa.analy.mapper;
import org.dromara.analy.domain.PackerTimeData;
import org.dromara.analy.domain.vo.PackerTimeDataVo;
import org.dromara.qa.analy.domain.PackerTimeData;
import org.dromara.qa.analy.domain.vo.PackerTimeDataVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/RollerTimeDataMapper.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/mapper/RollerTimeDataMapper.java ÐÞ¸Ä
@@ -1,8 +1,8 @@
package org.dromara.analy.mapper;
package org.dromara.qa.analy.mapper;
import org.dromara.analy.domain.RollerTimeData;
import org.dromara.analy.domain.bo.RollerTimeDataBo;
import org.dromara.analy.domain.vo.RollerTimeDataVo;
import org.dromara.qa.analy.domain.RollerTimeData;
import org.dromara.qa.analy.domain.bo.RollerTimeDataBo;
import org.dromara.qa.analy.domain.vo.RollerTimeDataVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/mapper/StoreSilkInfoMapper.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/mapper/StoreSilkInfoMapper.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.mapper;
package org.dromara.qa.analy.mapper;
import org.dromara.analy.domain.StoreSilkInfo;
import org.dromara.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.qa.analy.domain.StoreSilkInfo;
import org.dromara.qa.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IFeedmatchTimeDataService.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/IFeedmatchTimeDataService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.service;
package org.dromara.qa.analy.service;
import org.dromara.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.analy.domain.bo.FeedmatchTimeDataBo;
import org.dromara.qa.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.qa.analy.domain.bo.FeedmatchTimeDataBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IHoisterTimeDataService.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/IHoisterTimeDataService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.service;
package org.dromara.qa.analy.service;
import org.dromara.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.analy.domain.bo.HoisterTimeDataBo;
import org.dromara.qa.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.qa.analy.domain.bo.HoisterTimeDataBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IPackerTimeDataService.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/IPackerTimeDataService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.service;
package org.dromara.qa.analy.service;
import org.dromara.analy.domain.vo.PackerTimeDataVo;
import org.dromara.analy.domain.bo.PackerTimeDataBo;
import org.dromara.qa.analy.domain.vo.PackerTimeDataVo;
import org.dromara.qa.analy.domain.bo.PackerTimeDataBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IRollerTimeDataService.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/IRollerTimeDataService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.service;
package org.dromara.qa.analy.service;
import org.dromara.analy.domain.vo.RollerTimeDataVo;
import org.dromara.analy.domain.bo.RollerTimeDataBo;
import org.dromara.qa.analy.domain.vo.RollerTimeDataVo;
import org.dromara.qa.analy.domain.bo.RollerTimeDataBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/IStoreSilkInfoService.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/IStoreSilkInfoService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.analy.service;
package org.dromara.qa.analy.service;
import org.dromara.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.analy.domain.bo.StoreSilkInfoBo;
import org.dromara.qa.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.qa.analy.domain.bo.StoreSilkInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/FeedmatchTimeDataServiceImpl.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/impl/FeedmatchTimeDataServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.service.impl;
package org.dromara.qa.analy.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.analy.domain.bo.FeedmatchTimeDataBo;
import org.dromara.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.analy.domain.FeedmatchTimeData;
import org.dromara.analy.mapper.FeedmatchTimeDataMapper;
import org.dromara.analy.service.IFeedmatchTimeDataService;
import org.dromara.qa.analy.domain.bo.FeedmatchTimeDataBo;
import org.dromara.qa.analy.domain.vo.FeedmatchTimeDataVo;
import org.dromara.qa.analy.domain.FeedmatchTimeData;
import org.dromara.qa.analy.mapper.FeedmatchTimeDataMapper;
import org.dromara.qa.analy.service.IFeedmatchTimeDataService;
import java.util.Date;
import java.util.List;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/HoisterTimeDataServiceImpl.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/impl/HoisterTimeDataServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.service.impl;
package org.dromara.qa.analy.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.analy.domain.bo.HoisterTimeDataBo;
import org.dromara.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.analy.domain.HoisterTimeData;
import org.dromara.analy.mapper.HoisterTimeDataMapper;
import org.dromara.analy.service.IHoisterTimeDataService;
import org.dromara.qa.analy.domain.bo.HoisterTimeDataBo;
import org.dromara.qa.analy.domain.vo.HoisterTimeDataVo;
import org.dromara.qa.analy.domain.HoisterTimeData;
import org.dromara.qa.analy.mapper.HoisterTimeDataMapper;
import org.dromara.qa.analy.service.IHoisterTimeDataService;
import java.util.Date;
import java.util.List;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/PackerTimeDataServiceImpl.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/impl/PackerTimeDataServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.service.impl;
package org.dromara.qa.analy.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.analy.domain.bo.PackerTimeDataBo;
import org.dromara.analy.domain.vo.PackerTimeDataVo;
import org.dromara.analy.domain.PackerTimeData;
import org.dromara.analy.mapper.PackerTimeDataMapper;
import org.dromara.analy.service.IPackerTimeDataService;
import org.dromara.qa.analy.domain.bo.PackerTimeDataBo;
import org.dromara.qa.analy.domain.vo.PackerTimeDataVo;
import org.dromara.qa.analy.domain.PackerTimeData;
import org.dromara.qa.analy.mapper.PackerTimeDataMapper;
import org.dromara.qa.analy.service.IPackerTimeDataService;
import java.util.Date;
import java.util.List;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/RollerTimeDataServiceImpl.java
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/impl/RollerTimeDataServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.service.impl;
package org.dromara.qa.analy.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.analy.domain.bo.RollerTimeDataBo;
import org.dromara.analy.domain.vo.RollerTimeDataVo;
import org.dromara.analy.domain.RollerTimeData;
import org.dromara.analy.mapper.RollerTimeDataMapper;
import org.dromara.analy.service.IRollerTimeDataService;
import org.dromara.qa.analy.domain.bo.RollerTimeDataBo;
import org.dromara.qa.analy.domain.vo.RollerTimeDataVo;
import org.dromara.qa.analy.domain.RollerTimeData;
import org.dromara.qa.analy.mapper.RollerTimeDataMapper;
import org.dromara.qa.analy.service.IRollerTimeDataService;
import java.util.Date;
import java.util.List;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/analy/service/impl/StoreSilkInfoServiceImpl.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/analy/service/impl/StoreSilkInfoServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.analy.service.impl;
package org.dromara.qa.analy.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,18 +10,16 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.analy.domain.bo.StoreSilkInfoBo;
import org.dromara.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.analy.domain.StoreSilkInfo;
import org.dromara.analy.mapper.StoreSilkInfoMapper;
import org.dromara.analy.service.IStoreSilkInfoService;
import org.dromara.analy.mapper.FeedmatchTimeDataMapper;
import org.dromara.analy.domain.FeedmatchTimeData;
import org.dromara.qa.analy.domain.bo.StoreSilkInfoBo;
import org.dromara.qa.analy.domain.vo.StoreSilkInfoVo;
import org.dromara.qa.analy.domain.StoreSilkInfo;
import org.dromara.qa.analy.mapper.StoreSilkInfoMapper;
import org.dromara.qa.analy.service.IStoreSilkInfoService;
import org.dromara.qa.analy.mapper.FeedmatchTimeDataMapper;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.HashMap;
/**
 * å‚¨ä¸æŸœäº§é‡Service业务层处理
@@ -71,6 +69,7 @@
        List<StoreSilkInfoVo> storeSilkInfoList = page.getRecords();
        for (int i = 0; i < storeSilkInfoList.size(); i++) {
            //
            StoreSilkInfoVo storeSilkInfoVo = storeSilkInfoList.get(i);
        }
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/controller/MdShiftController.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/controller/MdShiftController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.md.controller;
package org.dromara.qa.md.controller;
import java.util.List;
@@ -18,9 +18,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.md.domain.vo.MdShiftVo;
import org.dromara.md.domain.bo.MdShiftBo;
import org.dromara.md.service.IMdShiftService;
import org.dromara.qa.md.domain.vo.MdShiftVo;
import org.dromara.qa.md.domain.bo.MdShiftBo;
import org.dromara.qa.md.service.IMdShiftService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/domain/MdShift.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/domain/MdShift.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.md.domain;
package org.dromara.qa.md.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/domain/bo/MdShiftBo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/domain/bo/MdShiftBo.java ÐÞ¸Ä
@@ -1,15 +1,13 @@
package org.dromara.md.domain.bo;
package org.dromara.qa.md.domain.bo;
import org.dromara.md.domain.MdShift;
import org.dromara.qa.md.domain.MdShift;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
 * ç­æ¬¡ä¸šåŠ¡å¯¹è±¡ MD_SHIFT
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/domain/vo/MdShiftVo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/domain/vo/MdShiftVo.java ÐÞ¸Ä
@@ -1,19 +1,15 @@
package org.dromara.md.domain.vo;
package org.dromara.qa.md.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.md.domain.MdShift;
import org.dromara.qa.md.domain.MdShift;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/mapper/MdShiftMapper.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/mapper/MdShiftMapper.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.md.mapper;
package org.dromara.qa.md.mapper;
import org.dromara.md.domain.MdShift;
import org.dromara.md.domain.vo.MdShiftVo;
import org.dromara.qa.md.domain.MdShift;
import org.dromara.qa.md.domain.vo.MdShiftVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/service/IMdShiftService.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/service/IMdShiftService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.md.service;
package org.dromara.qa.md.service;
import org.dromara.md.domain.vo.MdShiftVo;
import org.dromara.md.domain.bo.MdShiftBo;
import org.dromara.qa.md.domain.vo.MdShiftVo;
import org.dromara.qa.md.domain.bo.MdShiftBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/md/service/impl/MdShiftServiceImpl.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/md/service/impl/MdShiftServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.md.service.impl;
package org.dromara.qa.md.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.dromara.common.core.utils.MapstructUtils;
@@ -11,11 +11,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.md.domain.bo.MdShiftBo;
import org.dromara.md.domain.vo.MdShiftVo;
import org.dromara.md.domain.MdShift;
import org.dromara.md.mapper.MdShiftMapper;
import org.dromara.md.service.IMdShiftService;
import org.dromara.qa.md.domain.bo.MdShiftBo;
import org.dromara.qa.md.domain.vo.MdShiftVo;
import org.dromara.qa.md.domain.MdShift;
import org.dromara.qa.md.mapper.MdShiftMapper;
import org.dromara.qa.md.service.IMdShiftService;
import java.util.List;
import java.util.Map;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/controller/QmBatchController.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/controller/QmBatchController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.qm.controller;
package org.dromara.qa.qm.controller;
import java.util.List;
@@ -17,9 +17,9 @@
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.qm.domain.vo.QmBatchVo;
import org.dromara.qm.domain.bo.QmBatchBo;
import org.dromara.qm.service.IQmBatchService;
import org.dromara.qa.qm.domain.vo.QmBatchVo;
import org.dromara.qa.qm.domain.bo.QmBatchBo;
import org.dromara.qa.qm.service.IQmBatchService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/domain/QmBatch.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/domain/QmBatch.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.qm.domain;
package org.dromara.qa.qm.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/domain/bo/QmBatchBo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/domain/bo/QmBatchBo.java ÐÞ¸Ä
@@ -1,15 +1,13 @@
package org.dromara.qm.domain.bo;
package org.dromara.qa.qm.domain.bo;
import org.dromara.qm.domain.QmBatch;
import org.dromara.qa.qm.domain.QmBatch;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
 * æ£€éªŒæ‰¹æ¬¡ä¸šåŠ¡å¯¹è±¡ qm_batch
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/domain/vo/QmBatchVo.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/domain/vo/QmBatchVo.java ÐÞ¸Ä
@@ -1,19 +1,15 @@
package org.dromara.qm.domain.vo;
package org.dromara.qa.qm.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.qm.domain.QmBatch;
import org.dromara.qa.qm.domain.QmBatch;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/mapper/QmBatchMapper.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/mapper/QmBatchMapper.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.qm.mapper;
package org.dromara.qa.qm.mapper;
import org.dromara.qm.domain.QmBatch;
import org.dromara.qm.domain.vo.QmBatchVo;
import org.dromara.qa.qm.domain.QmBatch;
import org.dromara.qa.qm.domain.vo.QmBatchVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/IQmBatchService.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/service/IQmBatchService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package org.dromara.qm.service;
package org.dromara.qa.qm.service;
import org.dromara.qm.domain.vo.QmBatchVo;
import org.dromara.qm.domain.bo.QmBatchBo;
import org.dromara.qa.qm.domain.vo.QmBatchVo;
import org.dromara.qa.qm.domain.bo.QmBatchBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmBatchServiceImpl.java
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qm/service/impl/QmBatchServiceImpl.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.dromara.qm.service.impl;
package org.dromara.qa.qm.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.qm.domain.bo.QmBatchBo;
import org.dromara.qm.domain.vo.QmBatchVo;
import org.dromara.qm.domain.QmBatch;
import org.dromara.qm.mapper.QmBatchMapper;
import org.dromara.qm.service.IQmBatchService;
import org.dromara.qa.qm.domain.bo.QmBatchBo;
import org.dromara.qa.qm.domain.vo.QmBatchVo;
import org.dromara.qa.qm.domain.QmBatch;
import org.dromara.qa.qm.mapper.QmBatchMapper;
import org.dromara.qa.qm.service.IQmBatchService;
import java.util.List;
import java.util.Map;
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/StoreSilkInfoMapper.xml
ÎļþÒÑɾ³ý
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/FeedmatchTimeDataMapper.xml
old mode 100755 new mode 100644 copy from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/PackerTimeDataMapper.xml copy to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/FeedmatchTimeDataMapper.xml
Îļþ´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/PackerTimeDataMapper.xml ¸´ÖÆ
@@ -2,5 +2,5 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.analy.mapper.PackerTimeDataMapper">
<mapper namespace="org.dromara.qa.analy.mapper.FeedmatchTimeDataMapper">
</mapper>
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/PackerTimeDataMapper.xml
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/FeedmatchTimeDataMapper.xml ÐÞ¸Ä
@@ -2,5 +2,5 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.analy.mapper.FeedmatchTimeDataMapper">
<mapper namespace="org.dromara.qa.analy.mapper.PackerTimeDataMapper">
</mapper>
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/RollerTimeDataMapper.xml
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/RollerTimeDataMapper.xml ÐÞ¸Ä
@@ -2,9 +2,9 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.analy.mapper.RollerTimeDataMapper">
<mapper namespace="org.dromara.qa.analy.mapper.RollerTimeDataMapper">
    <select id="selectSampledList" resultType="org.dromara.analy.domain.vo.RollerTimeDataVo">
    <select id="selectSampledList" resultType="org.dromara.qa.analy.domain.vo.RollerTimeDataVo">
        WITH roller_minute AS (
            SELECT
            *,
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/analy/StoreSilkInfoMapper.xml
old mode 100755 new mode 100644
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/analy/PackerTimeDataMapper.xml ÐÞ¸Ä
@@ -2,5 +2,5 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.analy.mapper.PackerTimeDataMapper">
<mapper namespace="org.dromara.qa.analy.mapper.StoreSilkInfoMapper">
</mapper>
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/md/MdShiftMapper.xml
ÎļþÃû´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/md/MdShiftMapper.xml ÐÞ¸Ä
@@ -2,5 +2,5 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.md.mapper.MdShiftMapper">
<mapper namespace="org.dromara.qa.md.mapper.MdShiftMapper">
</mapper>
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/qm/QmBatchMapper.xml
copy from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/md/MdShiftMapper.xml copy to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qa/qm/QmBatchMapper.xml
Îļþ´Ó RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/md/MdShiftMapper.xml ¸´ÖÆ
@@ -2,5 +2,5 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.md.mapper.MdShiftMapper">
<mapper namespace="org.dromara.qa.qm.mapper.QmBatchMapper">
</mapper>
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/resources/mapper/qm/QmBatchMapper.xml
ÎļþÒÑɾ³ý
ruoyi-plus-soybean/src/service/api/analy/feed-match.ts
@@ -1,35 +1,35 @@
import { request } from '@/service/request';
/** èŽ·å–å–‚ä¸æœºå¯¹åº”å…³ç³»åˆ—è¡¨ */
export function fetchGetFeedMatchList (params?: Api.Analy.FeedMatchSearchParams) {
    return request<Api.Analy.FeedMatchList>({
        url: '/analy/feedMatch/list',
        method: 'get',
        params
    });
export function fetchGetFeedMatchList(params?: Api.Analy.FeedMatchSearchParams) {
  return request<Api.Analy.FeedMatchList>({
    url: '/analy/feedMatch/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žå–‚丝机对应关系 */
export function fetchCreateFeedMatch (data: Api.Analy.FeedMatchOperateParams) {
    return request<boolean>({
        url: '/analy/feedMatch',
        method: 'post',
        data
    });
export function fetchCreateFeedMatch(data: Api.Analy.FeedMatchOperateParams) {
  return request<boolean>({
    url: '/analy/feedMatch',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹å–‚丝机对应关系 */
export function fetchUpdateFeedMatch (data: Api.Analy.FeedMatchOperateParams) {
    return request<boolean>({
        url: '/analy/feedMatch',
        method: 'put',
        data
    });
export function fetchUpdateFeedMatch(data: Api.Analy.FeedMatchOperateParams) {
  return request<boolean>({
    url: '/analy/feedMatch',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤å–‚丝机对应关系 */
export function fetchBatchDeleteFeedMatch (times: CommonType.IdType[]) {
    return request<boolean>({
        url: `/analy/feedMatch/${times.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeleteFeedMatch(times: CommonType.IdType[]) {
  return request<boolean>({
    url: `/analy/feedMatch/${times.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/service/api/analy/hoister-data.ts
@@ -1,35 +1,35 @@
import { request } from '@/service/request';
/** èŽ·å–æå‡æœºåˆ†æžåˆ—è¡¨ */
export function fetchGetHoisterDataList (params?: Api.Qa.HoisterDataSearchParams) {
    return request<Api.Qa.HoisterDataList>({
        url: '/analy/hoister/list',
        method: 'get',
        params
    });
export function fetchGetHoisterDataList(params?: Api.Qa.HoisterDataSearchParams) {
  return request<Api.Qa.HoisterDataList>({
    url: '/analy/hoister/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žæå‡æœºåˆ†æž */
export function fetchCreateHoisterData (data: Api.Qa.HoisterDataOperateParams) {
    return request<boolean>({
        url: '/analy/hoister',
        method: 'post',
        data
    });
export function fetchCreateHoisterData(data: Api.Qa.HoisterDataOperateParams) {
  return request<boolean>({
    url: '/analy/hoister',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹æå‡æœºåˆ†æž */
export function fetchUpdateHoisterData (data: Api.Qa.HoisterDataOperateParams) {
    return request<boolean>({
        url: '/analy/hoister',
        method: 'put',
        data
    });
export function fetchUpdateHoisterData(data: Api.Qa.HoisterDataOperateParams) {
  return request<boolean>({
    url: '/analy/hoister',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤æå‡æœºåˆ†æž */
export function fetchBatchDeleteHoisterData (times: CommonType.IdType[]) {
    return request<boolean>({
        url: `/analy/hoister/${times.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeleteHoisterData(times: CommonType.IdType[]) {
  return request<boolean>({
    url: `/analy/hoister/${times.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/service/api/analy/packer-data.ts
@@ -1,35 +1,35 @@
import { request } from '@/service/request';
/** èŽ·å–åŒ…è£…æœºåˆ†æžåˆ—è¡¨ */
export function fetchGetPackerDataList (params?: Api.Qa.PackerDataSearchParams) {
    return request<Api.Qa.PackerDataList>({
        url: '/analy/packer/list',
        method: 'get',
        params
    });
export function fetchGetPackerDataList(params?: Api.Qa.PackerDataSearchParams) {
  return request<Api.Qa.PackerDataList>({
    url: '/analy/packer/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žåŒ…装机分析 */
export function fetchCreatePackerData (data: Api.Qa.PackerDataOperateParams) {
    return request<boolean>({
        url: '/analy/packer',
        method: 'post',
        data
    });
export function fetchCreatePackerData(data: Api.Qa.PackerDataOperateParams) {
  return request<boolean>({
    url: '/analy/packer',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹åŒ…装机分析 */
export function fetchUpdatePackerData (data: Api.Qa.PackerDataOperateParams) {
    return request<boolean>({
        url: '/analy/packer',
        method: 'put',
        data
    });
export function fetchUpdatePackerData(data: Api.Qa.PackerDataOperateParams) {
  return request<boolean>({
    url: '/analy/packer',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤åŒ…装机分析 */
export function fetchBatchDeletePackerData (times: CommonType.IdType[]) {
    return request<boolean>({
        url: `/analy/packer/${times.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeletePackerData(times: CommonType.IdType[]) {
  return request<boolean>({
    url: `/analy/packer/${times.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/service/api/analy/roller-data.ts
@@ -1,8 +1,7 @@
import { request } from '@/service/request';
/** èŽ·å–å·æŽ¥æœºåˆ†æžåˆ—è¡¨ */
export function fetchGetRollerSampleDataList (params?: Api.Qa.RollerDataSearchParams) {
export function fetchGetRollerSampleDataList(params?: Api.Qa.RollerDataSearchParams) {
  return request<Api.Qa.RollerDataList>({
    url: '/analy/roller/sampleList',
    method: 'get',
@@ -10,37 +9,36 @@
  });
}
/** èŽ·å–å·æŽ¥æœºåˆ†æžåˆ—è¡¨ */
export function fetchGetRollerDataList (params?: Api.Qa.RollerDataSearchParams) {
    return request<Api.Qa.RollerDataList>({
        url: '/analy/roller/list',
        method: 'get',
        params
    });
export function fetchGetRollerDataList(params?: Api.Qa.RollerDataSearchParams) {
  return request<Api.Qa.RollerDataList>({
    url: '/analy/roller/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žå·æŽ¥æœºåˆ†æž */
export function fetchCreateRollerData (data: Api.Qa.RollerDataOperateParams) {
    return request<boolean>({
        url: '/analy/roller',
        method: 'post',
        data
    });
export function fetchCreateRollerData(data: Api.Qa.RollerDataOperateParams) {
  return request<boolean>({
    url: '/analy/roller',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹å·æŽ¥æœºåˆ†æž */
export function fetchUpdateRollerData (data: Api.Qa.RollerDataOperateParams) {
    return request<boolean>({
        url: '/analy/roller',
        method: 'put',
        data
    });
export function fetchUpdateRollerData(data: Api.Qa.RollerDataOperateParams) {
  return request<boolean>({
    url: '/analy/roller',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤å·æŽ¥æœºåˆ†æž */
export function fetchBatchDeleteRollerData (times: CommonType.IdType[]) {
    return request<boolean>({
        url: `/analy/roller/${times.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeleteRollerData(times: CommonType.IdType[]) {
  return request<boolean>({
    url: `/analy/roller/${times.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/service/api/analy/store-silk.ts
@@ -1,35 +1,35 @@
import { request } from '@/service/request';
/** èŽ·å–å‚¨ä¸æŸœäº§é‡åˆ—è¡¨ */
export function fetchGetStoreSilkList (params?: Api.Analy.StoreSilkSearchParams) {
    return request<Api.Analy.StoreSilkList>({
        url: '/analy/storeSilk/list',
        method: 'get',
        params
    });
export function fetchGetStoreSilkList(params?: Api.Analy.StoreSilkSearchParams) {
  return request<Api.Analy.StoreSilkList>({
    url: '/analy/storeSilk/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žå‚¨ä¸æŸœäº§é‡ */
export function fetchCreateStoreSilk (data: Api.Analy.StoreSilkOperateParams) {
    return request<boolean>({
        url: '/analy/storeSilk',
        method: 'post',
        data
    });
export function fetchCreateStoreSilk(data: Api.Analy.StoreSilkOperateParams) {
  return request<boolean>({
    url: '/analy/storeSilk',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹å‚¨ä¸æŸœäº§é‡ */
export function fetchUpdateStoreSilk (data: Api.Analy.StoreSilkOperateParams) {
    return request<boolean>({
        url: '/analy/storeSilk',
        method: 'put',
        data
    });
export function fetchUpdateStoreSilk(data: Api.Analy.StoreSilkOperateParams) {
  return request<boolean>({
    url: '/analy/storeSilk',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤å‚¨ä¸æŸœäº§é‡ */
export function fetchBatchDeleteStoreSilk (ids: CommonType.IdType[]) {
    return request<boolean>({
        url: `/analy/storeSilk/${ids.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeleteStoreSilk(ids: CommonType.IdType[]) {
  return request<boolean>({
    url: `/analy/storeSilk/${ids.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/service/api/md/shift.ts
@@ -1,35 +1,35 @@
import { request } from '@/service/request';
/** èŽ·å–ç­æ¬¡åˆ—è¡¨ */
export function fetchGetShiftList (params?: Api.Md.ShiftSearchParams) {
    return request<Api.Md.ShiftList>({
        url: '/md/shift/list',
        method: 'get',
        params
    });
export function fetchGetShiftList(params?: Api.Md.ShiftSearchParams) {
  return request<Api.Md.ShiftList>({
    url: '/md/shift/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žç­æ¬¡ */
export function fetchCreateShift (data: Api.Md.ShiftOperateParams) {
    return request<boolean>({
        url: '/md/shift',
        method: 'post',
        data
    });
export function fetchCreateShift(data: Api.Md.ShiftOperateParams) {
  return request<boolean>({
    url: '/md/shift',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹ç­æ¬¡ */
export function fetchUpdateShift (data: Api.Md.ShiftOperateParams) {
    return request<boolean>({
        url: '/md/shift',
        method: 'put',
        data
    });
export function fetchUpdateShift(data: Api.Md.ShiftOperateParams) {
  return request<boolean>({
    url: '/md/shift',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤ç­æ¬¡ */
export function fetchBatchDeleteShift (ids: CommonType.IdType[]) {
    return request<boolean>({
        url: `/md/shift/${ids.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeleteShift(ids: CommonType.IdType[]) {
  return request<boolean>({
    url: `/md/shift/${ids.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/service/api/qm/batch.ts
@@ -1,35 +1,35 @@
import { request } from '@/service/request';
/** èŽ·å–æ£€éªŒæ‰¹æ¬¡åˆ—è¡¨ */
export function fetchGetBatchList (params?: Api.Qm.BatchSearchParams) {
    return request<Api.Qm.BatchList>({
        url: '/qm/batch/list',
        method: 'get',
        params
    });
export function fetchGetBatchList(params?: Api.Qm.BatchSearchParams) {
  return request<Api.Qm.BatchList>({
    url: '/qm/batch/list',
    method: 'get',
    params
  });
}
/** æ–°å¢žæ£€éªŒæ‰¹æ¬¡ */
export function fetchCreateBatch (data: Api.Qm.BatchOperateParams) {
    return request<boolean>({
        url: '/qm/batch',
        method: 'post',
        data
    });
export function fetchCreateBatch(data: Api.Qm.BatchOperateParams) {
  return request<boolean>({
    url: '/qm/batch',
    method: 'post',
    data
  });
}
/** ä¿®æ”¹æ£€éªŒæ‰¹æ¬¡ */
export function fetchUpdateBatch (data: Api.Qm.BatchOperateParams) {
    return request<boolean>({
        url: '/qm/batch',
        method: 'put',
        data
    });
export function fetchUpdateBatch(data: Api.Qm.BatchOperateParams) {
  return request<boolean>({
    url: '/qm/batch',
    method: 'put',
    data
  });
}
/** æ‰¹é‡åˆ é™¤æ£€éªŒæ‰¹æ¬¡ */
export function fetchBatchDeleteBatch (ids: CommonType.IdType[]) {
    return request<boolean>({
        url: `/qm/batch/${ids.join(',')}`,
        method: 'delete'
    });
export function fetchBatchDeleteBatch(ids: CommonType.IdType[]) {
  return request<boolean>({
    url: `/qm/batch/${ids.join(',')}`,
    method: 'delete'
  });
}
ruoyi-plus-soybean/src/typings/api/analy.feed-match.api.d.ts
@@ -4,115 +4,110 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Analy
     *
     * backend api module: "Analy"
     */
    namespace Analy {
        /** feed match */
        type FeedMatch = Common.CommonRecord<{
            /** æ—¶é—´æˆ³ */
                time: string;
            /** ç­æ¬¡+机台 */
                key: string;
            /** æ•°æ®æ›´æ–°æ—¶é—´ */
                dacUpTime: string;
            /** 1#喂丝机对应的第一个储丝柜 */
                fs11: string;
            /** 1#喂丝机对应的第二个储丝柜 */
                fs12: string;
            /** 2#喂丝机对应的第一个储丝柜 */
                fs21: string;
            /** 2#喂丝机对应的第二个储丝柜 */
                fs22: string;
            /** 3#喂丝机对应的第一个储丝柜 */
                fs31: string;
            /** 3#喂丝机对应的第二个储丝柜 */
                fs32: string;
            /** 4#喂丝机对应的第一个储丝柜 */
                fs41: string;
            /** 4#喂丝机对应的第二个储丝柜 */
                fs42: string;
            /** 1#机组对应的喂丝机和管道 */
                pipe01: number;
            /** 2#机组对应的喂丝机和管道 */
                pipe02: number;
            /** 3#机组对应的喂丝机和管道 */
                pipe03: number;
            /** 4#机组对应的喂丝机和管道 */
                pipe04: number;
            /** 5#机组对应的喂丝机和管道 */
                pipe05: number;
            /** 6#机组对应的喂丝机和管道 */
                pipe06: number;
            /** 7#机组对应的喂丝机和管道 */
                pipe07: number;
            /** 8#机组对应的喂丝机和管道 */
                pipe08: number;
            /** 9#机组对应的喂丝机和管道 */
                pipe09: number;
            /** 10#机组对应的喂丝机和管道 */
                pipe10: number;
            /** 11#机组对应的喂丝机和管道 */
                pipe11: number;
            /** 12#机组对应的喂丝机和管道 */
                pipe12: number;
            /** å–‚丝机状态 1-连接 0-断开 */
                wsjState: number;
            /** ç­æ¬¡ */
                shift: number;
            /** æœºå° */
                equNo: number;
            /** å¤‡æ³¨ */
                remark: string;
        }>;
  /**
   * namespace Analy
   *
   * backend api module: "Analy"
   */
  namespace Analy {
    /** feed match */
    type FeedMatch = Common.CommonRecord<{
      /** æ—¶é—´æˆ³ */
      time: string;
      /** ç­æ¬¡+机台 */
      key: string;
      /** æ•°æ®æ›´æ–°æ—¶é—´ */
      dacUpTime: string;
      /** 1#喂丝机对应的第一个储丝柜 */
      fs11: string;
      /** 1#喂丝机对应的第二个储丝柜 */
      fs12: string;
      /** 2#喂丝机对应的第一个储丝柜 */
      fs21: string;
      /** 2#喂丝机对应的第二个储丝柜 */
      fs22: string;
      /** 3#喂丝机对应的第一个储丝柜 */
      fs31: string;
      /** 3#喂丝机对应的第二个储丝柜 */
      fs32: string;
      /** 4#喂丝机对应的第一个储丝柜 */
      fs41: string;
      /** 4#喂丝机对应的第二个储丝柜 */
      fs42: string;
      /** 1#机组对应的喂丝机和管道 */
      pipe01: number;
      /** 2#机组对应的喂丝机和管道 */
      pipe02: number;
      /** 3#机组对应的喂丝机和管道 */
      pipe03: number;
      /** 4#机组对应的喂丝机和管道 */
      pipe04: number;
      /** 5#机组对应的喂丝机和管道 */
      pipe05: number;
      /** 6#机组对应的喂丝机和管道 */
      pipe06: number;
      /** 7#机组对应的喂丝机和管道 */
      pipe07: number;
      /** 8#机组对应的喂丝机和管道 */
      pipe08: number;
      /** 9#机组对应的喂丝机和管道 */
      pipe09: number;
      /** 10#机组对应的喂丝机和管道 */
      pipe10: number;
      /** 11#机组对应的喂丝机和管道 */
      pipe11: number;
      /** 12#机组对应的喂丝机和管道 */
      pipe12: number;
      /** å–‚丝机状态 1-连接 0-断开 */
      wsjState: number;
      /** ç­æ¬¡ */
      shift: number;
      /** æœºå° */
      equNo: number;
      /** å¤‡æ³¨ */
      remark: string;
    }>;
        /** feed match search params */
        type FeedMatchSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Analy.FeedMatch,
                        | 'time'
                        | 'key'
            > &
            Api.Common.CommonSearchParams
        >;
    /** feed match search params */
    type FeedMatchSearchParams = CommonType.RecordNullable<
      Pick<Api.Analy.FeedMatch, 'time' | 'key'> & Api.Common.CommonSearchParams
    >;
        /** feed match operate params */
        type FeedMatchOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Analy.FeedMatch,
                        | 'time'
                        | 'key'
                        | 'dacUpTime'
                        | 'fs11'
                        | 'fs12'
                        | 'fs21'
                        | 'fs22'
                        | 'fs31'
                        | 'fs32'
                        | 'fs41'
                        | 'fs42'
                        | 'pipe01'
                        | 'pipe02'
                        | 'pipe03'
                        | 'pipe04'
                        | 'pipe05'
                        | 'pipe06'
                        | 'pipe07'
                        | 'pipe08'
                        | 'pipe09'
                        | 'pipe10'
                        | 'pipe11'
                        | 'pipe12'
                        | 'wsjState'
                        | 'shift'
                        | 'equNo'
                        | 'remark'
            >
        >;
    /** feed match operate params */
    type FeedMatchOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Analy.FeedMatch,
        | 'time'
        | 'key'
        | 'dacUpTime'
        | 'fs11'
        | 'fs12'
        | 'fs21'
        | 'fs22'
        | 'fs31'
        | 'fs32'
        | 'fs41'
        | 'fs42'
        | 'pipe01'
        | 'pipe02'
        | 'pipe03'
        | 'pipe04'
        | 'pipe05'
        | 'pipe06'
        | 'pipe07'
        | 'pipe08'
        | 'pipe09'
        | 'pipe10'
        | 'pipe11'
        | 'pipe12'
        | 'wsjState'
        | 'shift'
        | 'equNo'
        | 'remark'
      >
    >;
        /** feed match list */
        type FeedMatchList = Api.Common.PaginatingQueryRecord<FeedMatch>;
    }
    /** feed match list */
    type FeedMatchList = Api.Common.PaginatingQueryRecord<FeedMatch>;
  }
}
ruoyi-plus-soybean/src/typings/api/analy.hoister-data.api.d.ts
@@ -4,152 +4,146 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Qa
     *
     * backend api module: "Qa"
     */
    namespace Qa {
        /** hoister data */
        type HoisterData = Common.CommonRecord<{
            /** æ—¶é—´ */
                time: string;
            /** key */
                key: string;
            /** ç½‘络状态  0异常,1正常 */
                online: number;
            /** äº§é‡ */
                qty: number;
            /** 1#提升机状态 */
                tState1: number;
            /** 2#提升机状态 */
                tState2: number;
            /** 3#提升机状态 */
                tState3: number;
            /** 4#提升机状态 */
                tState4: number;
            /** 5#提升机状态 */
                tState5: number;
            /** 6#提升机状态 */
                tState6: number;
            /** 7#提升机状态 */
                tState7: number;
            /** 8#提升机状态 */
                tState8: number;
            /** 9#提升机状态 */
                tState9: number;
            /** 10#提升机状态 */
                tState10: number;
            /** 11#提升机状态 */
                tState11: number;
            /** 12#提升机状态 */
                tState12: number;
            /** 1#排包机状态 */
                pState1: number;
            /** 2#排包机状态 */
                pState2: number;
            /** 3#排包机状态 */
                pState3: number;
            /** 4#排包机状态 */
                pState4: number;
            /** 1#提升机产量 */
                tQty1: number;
            /** 2#提升机产量 */
                tQty2: number;
            /** 3#提升机产量 */
                tQty3: number;
            /** 4#提升机产量 */
                tQty4: number;
            /** 5#提升机产量 */
                tQty5: number;
            /** 6#提升机产量 */
                tQty6: number;
            /** 7#提升机产量 */
                tQty7: number;
            /** 8#提升机产量 */
                tQty8: number;
            /** 9#提升机产量 */
                tQty9: number;
            /** 10#提升机产量 */
                tQty10: number;
            /** 11#提升机产量 */
                tQty11: number;
            /** 12#提升机产量 */
                tQty12: number;
            /** 1#排包机产量 */
                pQty1: number;
            /** 2#排包机产量 */
                pQty2: number;
            /** 3#排包机产量 */
                pQty3: number;
            /** 4#排包机产量 */
                pQty4: number;
            /** ç­æ¬¡ */
                shift: number;
            /** è®¾å¤‡ */
                equNo: number;
            /** å¤‡æ³¨ */
                remark: string;
        }>;
  /**
   * namespace Qa
   *
   * backend api module: "Qa"
   */
  namespace Qa {
    /** hoister data */
    type HoisterData = Common.CommonRecord<{
      /** æ—¶é—´ */
      time: string;
      /** key */
      key: string;
      /** ç½‘络状态  0异常,1正常 */
      online: number;
      /** äº§é‡ */
      qty: number;
      /** 1#提升机状态 */
      tState1: number;
      /** 2#提升机状态 */
      tState2: number;
      /** 3#提升机状态 */
      tState3: number;
      /** 4#提升机状态 */
      tState4: number;
      /** 5#提升机状态 */
      tState5: number;
      /** 6#提升机状态 */
      tState6: number;
      /** 7#提升机状态 */
      tState7: number;
      /** 8#提升机状态 */
      tState8: number;
      /** 9#提升机状态 */
      tState9: number;
      /** 10#提升机状态 */
      tState10: number;
      /** 11#提升机状态 */
      tState11: number;
      /** 12#提升机状态 */
      tState12: number;
      /** 1#排包机状态 */
      pState1: number;
      /** 2#排包机状态 */
      pState2: number;
      /** 3#排包机状态 */
      pState3: number;
      /** 4#排包机状态 */
      pState4: number;
      /** 1#提升机产量 */
      tQty1: number;
      /** 2#提升机产量 */
      tQty2: number;
      /** 3#提升机产量 */
      tQty3: number;
      /** 4#提升机产量 */
      tQty4: number;
      /** 5#提升机产量 */
      tQty5: number;
      /** 6#提升机产量 */
      tQty6: number;
      /** 7#提升机产量 */
      tQty7: number;
      /** 8#提升机产量 */
      tQty8: number;
      /** 9#提升机产量 */
      tQty9: number;
      /** 10#提升机产量 */
      tQty10: number;
      /** 11#提升机产量 */
      tQty11: number;
      /** 12#提升机产量 */
      tQty12: number;
      /** 1#排包机产量 */
      pQty1: number;
      /** 2#排包机产量 */
      pQty2: number;
      /** 3#排包机产量 */
      pQty3: number;
      /** 4#排包机产量 */
      pQty4: number;
      /** ç­æ¬¡ */
      shift: number;
      /** è®¾å¤‡ */
      equNo: number;
      /** å¤‡æ³¨ */
      remark: string;
    }>;
        /** hoister data search params */
        type HoisterDataSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Qa.HoisterData,
                        | 'time'
                        | 'shift'
                        | 'equNo'
            > &
            Api.Common.CommonSearchParams
        >;
    /** hoister data search params */
    type HoisterDataSearchParams = CommonType.RecordNullable<
      Pick<Api.Qa.HoisterData, 'time' | 'shift' | 'equNo'> & Api.Common.CommonSearchParams
    >;
        /** hoister data operate params */
        type HoisterDataOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Qa.HoisterData,
                        | 'time'
                        | 'key'
                        | 'online'
                        | 'qty'
                        | 'tState1'
                        | 'tState2'
                        | 'tState3'
                        | 'tState4'
                        | 'tState5'
                        | 'tState6'
                        | 'tState7'
                        | 'tState8'
                        | 'tState9'
                        | 'tState10'
                        | 'tState11'
                        | 'tState12'
                        | 'pState1'
                        | 'pState2'
                        | 'pState3'
                        | 'pState4'
                        | 'tQty1'
                        | 'tQty2'
                        | 'tQty3'
                        | 'tQty4'
                        | 'tQty5'
                        | 'tQty6'
                        | 'tQty7'
                        | 'tQty8'
                        | 'tQty9'
                        | 'tQty10'
                        | 'tQty11'
                        | 'tQty12'
                        | 'pQty1'
                        | 'pQty2'
                        | 'pQty3'
                        | 'pQty4'
                        | 'shift'
                        | 'equNo'
                        | 'remark'
            >
        >;
    /** hoister data operate params */
    type HoisterDataOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Qa.HoisterData,
        | 'time'
        | 'key'
        | 'online'
        | 'qty'
        | 'tState1'
        | 'tState2'
        | 'tState3'
        | 'tState4'
        | 'tState5'
        | 'tState6'
        | 'tState7'
        | 'tState8'
        | 'tState9'
        | 'tState10'
        | 'tState11'
        | 'tState12'
        | 'pState1'
        | 'pState2'
        | 'pState3'
        | 'pState4'
        | 'tQty1'
        | 'tQty2'
        | 'tQty3'
        | 'tQty4'
        | 'tQty5'
        | 'tQty6'
        | 'tQty7'
        | 'tQty8'
        | 'tQty9'
        | 'tQty10'
        | 'tQty11'
        | 'tQty12'
        | 'pQty1'
        | 'pQty2'
        | 'pQty3'
        | 'pQty4'
        | 'shift'
        | 'equNo'
        | 'remark'
      >
    >;
        /** hoister data list */
        type HoisterDataList = Api.Common.PaginatingQueryRecord<HoisterData>;
    }
    /** hoister data list */
    type HoisterDataList = Api.Common.PaginatingQueryRecord<HoisterData>;
  }
}
ruoyi-plus-soybean/src/typings/api/analy.packer-data.api.d.ts
@@ -4,128 +4,128 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Qa
     *
     * backend api module: "Qa"
     */
    namespace Qa {
        /** packer data */
        type PackerData = Common.CommonRecord<{
            /** æ—¶é—´ */
                time: string;
            /** key */
                key: string;
            /** ç½‘络状态(0异常,1正常) */
                online: number;
            /** äº§é‡ */
                qty: number;
            /** å‰”除产量 */
                badQty: number;
            /** å°ç›’膜消耗 */
                xiaohemoVal: number;
            /** æ¡ç›’膜消耗 */
                tiaohemoVal: number;
            /** å°ç›’纸消耗 */
                xiaohezhiVal: number;
            /** æ¡ç›’纸消耗 */
                tiaohezhiVal: number;
            /** å†…衬纸消耗 */
                neichenzhiVal: number;
            /** è¿è¡Œæ—¶é—´ */
                runTime: number;
            /** åœæœºæ—¶é—´ */
                stopTime: number;
            /** åœæœºæ¬¡æ•° */
                stopTimes: number;
            /** è½¦é€Ÿ */
                speed: number;
            /** è¿è¡ŒçŠ¶æ€(-1 æ–­ç½‘ 0停止 1低速运行 2正常运行) */
                runStatus: number;
            /** æå‡æœºäº§é‡ */
                tsQty: number;
            /** ä¸»æœºäº§é‡ï¼ˆå°åŒ…机) */
                mainQty: number;
            /** ä¸»æœºå‰”除量 */
                mainBadQty: number;
            /** é€åŒ…机产量 */
                tbjQty: number;
            /** é€åŒ…机剔除好包 */
                tbjGdQty: number;
            /** é€åŒ…机剔除坏包 */
                tbjBadQty: number;
            /** æŽ’包机产量 */
                pbjQty: number;
            /** ç­æ¬¡ */
                shift: number;
            /** è®¾å¤‡ */
                equNo: number;
        }>;
  /**
   * namespace Qa
   *
   * backend api module: "Qa"
   */
  namespace Qa {
    /** packer data */
    type PackerData = Common.CommonRecord<{
      /** æ—¶é—´ */
      time: string;
      /** key */
      key: string;
      /** ç½‘络状态(0异常,1正常) */
      online: number;
      /** äº§é‡ */
      qty: number;
      /** å‰”除产量 */
      badQty: number;
      /** å°ç›’膜消耗 */
      xiaohemoVal: number;
      /** æ¡ç›’膜消耗 */
      tiaohemoVal: number;
      /** å°ç›’纸消耗 */
      xiaohezhiVal: number;
      /** æ¡ç›’纸消耗 */
      tiaohezhiVal: number;
      /** å†…衬纸消耗 */
      neichenzhiVal: number;
      /** è¿è¡Œæ—¶é—´ */
      runTime: number;
      /** åœæœºæ—¶é—´ */
      stopTime: number;
      /** åœæœºæ¬¡æ•° */
      stopTimes: number;
      /** è½¦é€Ÿ */
      speed: number;
      /** è¿è¡ŒçŠ¶æ€(-1 æ–­ç½‘ 0停止 1低速运行 2正常运行) */
      runStatus: number;
      /** æå‡æœºäº§é‡ */
      tsQty: number;
      /** ä¸»æœºäº§é‡ï¼ˆå°åŒ…机) */
      mainQty: number;
      /** ä¸»æœºå‰”除量 */
      mainBadQty: number;
      /** é€åŒ…机产量 */
      tbjQty: number;
      /** é€åŒ…机剔除好包 */
      tbjGdQty: number;
      /** é€åŒ…机剔除坏包 */
      tbjBadQty: number;
      /** æŽ’包机产量 */
      pbjQty: number;
      /** ç­æ¬¡ */
      shift: number;
      /** è®¾å¤‡ */
      equNo: number;
    }>;
        /** packer data search params */
        type PackerDataSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Qa.PackerData,
                        | 'time'
                        | 'key'
                        | 'online'
                        | 'qty'
                        | 'badQty'
                        | 'xiaohemoVal'
                        | 'tiaohemoVal'
                        | 'xiaohezhiVal'
                        | 'tiaohezhiVal'
                        | 'neichenzhiVal'
                        | 'runTime'
                        | 'stopTime'
                        | 'stopTimes'
                        | 'speed'
                        | 'runStatus'
                        | 'tsQty'
                        | 'mainQty'
                        | 'mainBadQty'
                        | 'tbjQty'
                        | 'tbjGdQty'
                        | 'tbjBadQty'
                        | 'pbjQty'
                        | 'shift'
                        | 'equNo'
            > &
            Api.Common.CommonSearchParams
        >;
    /** packer data search params */
    type PackerDataSearchParams = CommonType.RecordNullable<
      Pick<
        Api.Qa.PackerData,
        | 'time'
        | 'key'
        | 'online'
        | 'qty'
        | 'badQty'
        | 'xiaohemoVal'
        | 'tiaohemoVal'
        | 'xiaohezhiVal'
        | 'tiaohezhiVal'
        | 'neichenzhiVal'
        | 'runTime'
        | 'stopTime'
        | 'stopTimes'
        | 'speed'
        | 'runStatus'
        | 'tsQty'
        | 'mainQty'
        | 'mainBadQty'
        | 'tbjQty'
        | 'tbjGdQty'
        | 'tbjBadQty'
        | 'pbjQty'
        | 'shift'
        | 'equNo'
      > &
        Api.Common.CommonSearchParams
    >;
        /** packer data operate params */
        type PackerDataOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Qa.PackerData,
                        | 'time'
                        | 'key'
                        | 'online'
                        | 'qty'
                        | 'badQty'
                        | 'xiaohemoVal'
                        | 'tiaohemoVal'
                        | 'xiaohezhiVal'
                        | 'tiaohezhiVal'
                        | 'neichenzhiVal'
                        | 'runTime'
                        | 'stopTime'
                        | 'stopTimes'
                        | 'speed'
                        | 'runStatus'
                        | 'tsQty'
                        | 'mainQty'
                        | 'mainBadQty'
                        | 'tbjQty'
                        | 'tbjGdQty'
                        | 'tbjBadQty'
                        | 'pbjQty'
                        | 'shift'
                        | 'equNo'
            >
        >;
    /** packer data operate params */
    type PackerDataOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Qa.PackerData,
        | 'time'
        | 'key'
        | 'online'
        | 'qty'
        | 'badQty'
        | 'xiaohemoVal'
        | 'tiaohemoVal'
        | 'xiaohezhiVal'
        | 'tiaohezhiVal'
        | 'neichenzhiVal'
        | 'runTime'
        | 'stopTime'
        | 'stopTimes'
        | 'speed'
        | 'runStatus'
        | 'tsQty'
        | 'mainQty'
        | 'mainBadQty'
        | 'tbjQty'
        | 'tbjGdQty'
        | 'tbjBadQty'
        | 'pbjQty'
        | 'shift'
        | 'equNo'
      >
    >;
        /** packer data list */
        type PackerDataList = Api.Common.PaginatingQueryRecord<PackerData>;
    }
    /** packer data list */
    type PackerDataList = Api.Common.PaginatingQueryRecord<PackerData>;
  }
}
ruoyi-plus-soybean/src/typings/api/analy.roller-data.api.d.ts
@@ -4,120 +4,120 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Qa
     *
     * backend api module: "Qa"
     */
    namespace Qa {
        /** roller data */
        type RollerData = Common.CommonRecord<{
            /** æ—¶é—´ */
            time: string;
            /** key */
            key: string;
            /** ç­æ¬¡ */
            shift: number;
            /** è®¾å¤‡å· */
            equNo: number;
            /** ç½‘络状态 */
            online: number;
            /** äº§é‡ */
            qty: number;
            /** å‰”除产量 */
            badQty: number;
            /** æ»¤æ£’消耗 */
            lvbangVal: number;
            /** å·çƒŸçº¸æ¶ˆè€— */
            juanyanzhiVal: number;
            /** æ°´æ¾çº¸æ¶ˆè€— */
            shuisongzhiVal: number;
            /** è¿è¡Œæ—¶é—´ */
            runTime: number;
            /** åœæœºæ—¶é—´ */
            stopTime: number;
            /** åœæœºæ¬¡æ•° */
            stopTimes: number;
            /** è½¦é€Ÿ */
            speed: number;
            /** è¿è¡ŒçŠ¶æ€ */
            runStatus: number;
            /** å‚¨çƒŸè®¾å¤‡å‚¨é‡ */
            cy: number;
            /** å‚¨çƒŸè®¾å¤‡è½¦é€Ÿ */
            cyCs: number;
            /** å‚¨çƒŸè®¾å¤‡ç½‘络 */
            cyOnline: string;
            /** æŽ¥æ”¶æœºäº§é‡ */
            recQty1: number;
            /** æŽ¥æ”¶æœºäº§é‡2 */
            recQty2: number;
            /** æå‡æœºäº§é‡ */
            tsQty: number;
            /** åŒ…装机产量 */
            packerQty: number;
        }>;
  /**
   * namespace Qa
   *
   * backend api module: "Qa"
   */
  namespace Qa {
    /** roller data */
    type RollerData = Common.CommonRecord<{
      /** æ—¶é—´ */
      time: string;
      /** key */
      key: string;
      /** ç­æ¬¡ */
      shift: number;
      /** è®¾å¤‡å· */
      equNo: number;
      /** ç½‘络状态 */
      online: number;
      /** äº§é‡ */
      qty: number;
      /** å‰”除产量 */
      badQty: number;
      /** æ»¤æ£’消耗 */
      lvbangVal: number;
      /** å·çƒŸçº¸æ¶ˆè€— */
      juanyanzhiVal: number;
      /** æ°´æ¾çº¸æ¶ˆè€— */
      shuisongzhiVal: number;
      /** è¿è¡Œæ—¶é—´ */
      runTime: number;
      /** åœæœºæ—¶é—´ */
      stopTime: number;
      /** åœæœºæ¬¡æ•° */
      stopTimes: number;
      /** è½¦é€Ÿ */
      speed: number;
      /** è¿è¡ŒçŠ¶æ€ */
      runStatus: number;
      /** å‚¨çƒŸè®¾å¤‡å‚¨é‡ */
      cy: number;
      /** å‚¨çƒŸè®¾å¤‡è½¦é€Ÿ */
      cyCs: number;
      /** å‚¨çƒŸè®¾å¤‡ç½‘络 */
      cyOnline: string;
      /** æŽ¥æ”¶æœºäº§é‡ */
      recQty1: number;
      /** æŽ¥æ”¶æœºäº§é‡2 */
      recQty2: number;
      /** æå‡æœºäº§é‡ */
      tsQty: number;
      /** åŒ…装机产量 */
      packerQty: number;
    }>;
        /** roller data search params */
        type RollerDataSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Qa.RollerData,
                        | 'time'
                        | 'key'
                        | 'shift'
                        | 'equNo'
                        | 'online'
                        | 'qty'
                        | 'badQty'
                        | 'lvbangVal'
                        | 'juanyanzhiVal'
                        | 'shuisongzhiVal'
                        | 'runTime'
                        | 'stopTime'
                        | 'stopTimes'
                        | 'speed'
                        | 'runStatus'
                        | 'cy'
                        | 'cyCs'
                        | 'cyOnline'
                        | 'recQty1'
                        | 'recQty2'
                        | 'tsQty'
                        | 'packerQty'
            > &
            Api.Common.CommonSearchParams
        >;
    /** roller data search params */
    type RollerDataSearchParams = CommonType.RecordNullable<
      Pick<
        Api.Qa.RollerData,
        | 'time'
        | 'key'
        | 'shift'
        | 'equNo'
        | 'online'
        | 'qty'
        | 'badQty'
        | 'lvbangVal'
        | 'juanyanzhiVal'
        | 'shuisongzhiVal'
        | 'runTime'
        | 'stopTime'
        | 'stopTimes'
        | 'speed'
        | 'runStatus'
        | 'cy'
        | 'cyCs'
        | 'cyOnline'
        | 'recQty1'
        | 'recQty2'
        | 'tsQty'
        | 'packerQty'
      > &
        Api.Common.CommonSearchParams
    >;
        /** roller data operate params */
        type RollerDataOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Qa.RollerData,
                        | 'time'
                        | 'key'
                        | 'shift'
                        | 'equNo'
                        | 'online'
                        | 'qty'
                        | 'badQty'
                        | 'lvbangVal'
                        | 'juanyanzhiVal'
                        | 'shuisongzhiVal'
                        | 'runTime'
                        | 'stopTime'
                        | 'stopTimes'
                        | 'speed'
                        | 'runStatus'
                        | 'cy'
                        | 'cyCs'
                        | 'cyOnline'
                        | 'recQty1'
                        | 'recQty2'
                        | 'tsQty'
                        | 'packerQty'
            >
        >;
    /** roller data operate params */
    type RollerDataOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Qa.RollerData,
        | 'time'
        | 'key'
        | 'shift'
        | 'equNo'
        | 'online'
        | 'qty'
        | 'badQty'
        | 'lvbangVal'
        | 'juanyanzhiVal'
        | 'shuisongzhiVal'
        | 'runTime'
        | 'stopTime'
        | 'stopTimes'
        | 'speed'
        | 'runStatus'
        | 'cy'
        | 'cyCs'
        | 'cyOnline'
        | 'recQty1'
        | 'recQty2'
        | 'tsQty'
        | 'packerQty'
      >
    >;
        /** roller data list */
        type RollerDataList = Api.Common.PaginatingQueryRecord<RollerData>;
    }
    /** roller data list */
    type RollerDataList = Api.Common.PaginatingQueryRecord<RollerData>;
  }
}
ruoyi-plus-soybean/src/typings/api/analy.store-silk.api.d.ts
@@ -4,71 +4,66 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Analy
     *
     * backend api module: "Analy"
     */
    namespace Analy {
        /** store silk */
        type StoreSilk = Common.CommonRecord<{
            /** id */
                id: CommonType.IdType;
            /** ç‰Œå· */
                materialname: string;
            /** æ‰¹æ¬¡å· */
                batchcode: string;
            /** æŠ•料日期 */
                actualstarttime: string;
            /** æŠ•料重量 */
                jobinput: number;
            /** æŸè€—重量 */
                weightloss: number;
            /** å‡ºå¶ä¸çއ */
                slkrate: number;
            /** å‚¨ä¸æŸœé‡é‡ */
                weight: number;
            /** å‚¨ä¸æŸœå‡ºæ–™å¼€å§‹æ—¶é—´ */
                distimebegin: string;
            /** å‚¨ä¸æŸœå‡ºæ–™ç»“束时间 */
                distimeend: string;
            /** æŸœå­å·(末位) */
                siloid: CommonType.IdType;
        }>;
  /**
   * namespace Analy
   *
   * backend api module: "Analy"
   */
  namespace Analy {
    /** store silk */
    type StoreSilk = Common.CommonRecord<{
      /** id */
      id: CommonType.IdType;
      /** ç‰Œå· */
      materialname: string;
      /** æ‰¹æ¬¡å· */
      batchcode: string;
      /** æŠ•料日期 */
      actualstarttime: string;
      /** æŠ•料重量 */
      jobinput: number;
      /** æŸè€—重量 */
      weightloss: number;
      /** å‡ºå¶ä¸çއ */
      slkrate: number;
      /** å‚¨ä¸æŸœé‡é‡ */
      weight: number;
      /** å‚¨ä¸æŸœå‡ºæ–™å¼€å§‹æ—¶é—´ */
      distimebegin: string;
      /** å‚¨ä¸æŸœå‡ºæ–™ç»“束时间 */
      distimeend: string;
      /** æŸœå­å·(末位) */
      siloid: CommonType.IdType;
    }>;
        /** store silk search params */
        type StoreSilkSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Analy.StoreSilk,
                        | 'materialname'
                        | 'batchcode'
                        | 'actualstarttime'
                        | 'distimebegin'
                        | 'distimeend'
                        | 'siloid'
            > &
            Api.Common.CommonSearchParams
        >;
    /** store silk search params */
    type StoreSilkSearchParams = CommonType.RecordNullable<
      Pick<
        Api.Analy.StoreSilk,
        'materialname' | 'batchcode' | 'actualstarttime' | 'distimebegin' | 'distimeend' | 'siloid'
      > &
        Api.Common.CommonSearchParams
    >;
        /** store silk operate params */
        type StoreSilkOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Analy.StoreSilk,
                        | 'id'
                        | 'materialname'
                        | 'batchcode'
                        | 'actualstarttime'
                        | 'jobinput'
                        | 'weightloss'
                        | 'slkrate'
                        | 'weight'
                        | 'distimebegin'
                        | 'distimeend'
                        | 'siloid'
            >
        >;
    /** store silk operate params */
    type StoreSilkOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Analy.StoreSilk,
        | 'id'
        | 'materialname'
        | 'batchcode'
        | 'actualstarttime'
        | 'jobinput'
        | 'weightloss'
        | 'slkrate'
        | 'weight'
        | 'distimebegin'
        | 'distimeend'
        | 'siloid'
      >
    >;
        /** store silk list */
        type StoreSilkList = Api.Common.PaginatingQueryRecord<StoreSilk>;
    }
    /** store silk list */
    type StoreSilkList = Api.Common.PaginatingQueryRecord<StoreSilk>;
  }
}
ruoyi-plus-soybean/src/typings/api/md.shift.api.d.ts
@@ -4,74 +4,68 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Md
     *
     * backend api module: "Md"
     */
    namespace Md {
        /** shift */
        type Shift = Common.CommonRecord<{
            /** id */
                id: CommonType.IdType;
            /** è½¦é—´å¤–é”® */
                wsId: CommonType.IdType;
            /** ç¼–码 */
                code: string;
            /** åç§° */
                name: string;
            /** ç­æ¬¡å¼€å§‹æ—¶é—´ */
                stim: string;
            /** ç­æ¬¡ç»“束时间 */
                etim: string;
            /** æŽ’序 */
                seq: number;
            /** å¯ç”¨ */
                enable: number;
            /** åˆ é™¤ */
                del: number;
            /** åˆ›å»ºç”¨æˆ· */
                createUserName: string;
            /** åˆ›å»ºæ—¶é—´ */
                createUserTime: string;
            /** æ›´æ–°ç”¨æˆ· */
                updateUserName: string;
            /** æ›´æ–°æ—¶é—´ */
                updateUserTime: string;
        }>;
  /**
   * namespace Md
   *
   * backend api module: "Md"
   */
  namespace Md {
    /** shift */
    type Shift = Common.CommonRecord<{
      /** id */
      id: CommonType.IdType;
      /** è½¦é—´å¤–é”® */
      wsId: CommonType.IdType;
      /** ç¼–码 */
      code: string;
      /** åç§° */
      name: string;
      /** ç­æ¬¡å¼€å§‹æ—¶é—´ */
      stim: string;
      /** ç­æ¬¡ç»“束时间 */
      etim: string;
      /** æŽ’序 */
      seq: number;
      /** å¯ç”¨ */
      enable: number;
      /** åˆ é™¤ */
      del: number;
      /** åˆ›å»ºç”¨æˆ· */
      createUserName: string;
      /** åˆ›å»ºæ—¶é—´ */
      createUserTime: string;
      /** æ›´æ–°ç”¨æˆ· */
      updateUserName: string;
      /** æ›´æ–°æ—¶é—´ */
      updateUserTime: string;
    }>;
        /** shift search params */
        type ShiftSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Md.Shift,
                        | 'code'
                        | 'name'
                        | 'enable'
            > &
            Api.Common.CommonSearchParams
        >;
    /** shift search params */
    type ShiftSearchParams = CommonType.RecordNullable<
      Pick<Api.Md.Shift, 'code' | 'name' | 'enable'> & Api.Common.CommonSearchParams
    >;
        /** shift operate params */
        type ShiftOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Md.Shift,
                        | 'id'
                        | 'wsId'
                        | 'code'
                        | 'name'
                        | 'stim'
                        | 'etim'
                        | 'seq'
                        | 'enable'
                        | 'del'
                        | 'createUserName'
                        | 'createUserTime'
                        | 'updateUserName'
                        | 'updateUserTime'
            >
        >;
    /** shift operate params */
    type ShiftOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Md.Shift,
        | 'id'
        | 'wsId'
        | 'code'
        | 'name'
        | 'stim'
        | 'etim'
        | 'seq'
        | 'enable'
        | 'del'
        | 'createUserName'
        | 'createUserTime'
        | 'updateUserName'
        | 'updateUserTime'
      >
    >;
        /** shift list */
        type ShiftList = Api.Common.PaginatingQueryRecord<Shift>;
    }
    /** shift list */
    type ShiftList = Api.Common.PaginatingQueryRecord<Shift>;
  }
}
ruoyi-plus-soybean/src/typings/api/qm.batch.api.d.ts
@@ -4,182 +4,174 @@
 * All backend api type
 */
declare namespace Api {
    /**
     * namespace Qm
     *
     * backend api module: "Qm"
     */
    namespace Qm {
        /** batch */
        type Batch = Common.CommonRecord<{
            /** ç¼–码 */
                id: CommonType.IdType;
            /** æ‰¹æ¬¡ä»£ç  */
                batchCode: string;
            /** æ‰¹æ¬¡åç§° */
                batchName: string;
            /** A-制丝 B-成型 C-卷包 D-封箱 E-糖香料 */
                typ: string;
            /** æœºå°ä»£ç  */
                eqpCode: string;
            /** ç‰Œå· */
                matCode: string;
            /** åˆ¤å®šä¾æ®ä»£ç  */
                judgeCode: string;
            /** æ‰¹æ¬¡ç”Ÿæˆæ—¥æœŸ */
                batchDate: string;
            /** ä½¿ç”¨æ ‡å¿— */
                isflag: string;
            /** å¯ç”¨æ ‡å¿— */
                enabled: string;
            /** åˆ°è´§æ€»é‡ */
                totalNum: number;
            /** ç»¼åˆåˆ¤å®š */
                results: string;
            /** æ‰¹å‡†äºº */
                approver: string;
            /** å®¡æ ¸äºº */
                auditor: string;
            /** åˆ›å»ºäºº */
                creater: string;
            /** åˆ¶è¡¨æ—¥æœŸ */
                tabDate: string;
            /** ç‰ˆæœ¬åç§° */
                verName: string;
            /** ç‰ˆæœ¬ç¼–号 */
                verCode: string;
            /** ä¿å­˜æœŸ */
                archDate: string;
            /** 0-未上传mes,1-已上传, 3-从MES下载 */
                flag: string;
            /** ä¸Šä¼ MES时间 */
                toMesDate: string;
            /** ä»ŽMES时间下载 */
                fromMesDate: string;
            /** åˆ é™¤æ ‡å¿— */
                deleted: number;
            /** æ‰¹æ¬¡æè¿° */
                batchDes: string;
            /** ç±»åˆ« 0:成品 1:辅材 */
                category: string;
            /** å·åˆ¶å·¥å· */
                makeno: string;
            /** ç­æ¬¡æœºå· */
                shifteqpno: string;
            /** è£…箱号 */
                boxno: string;
            /** çˆ¶æ‰¹æ¬¡å· */
                pid: CommonType.IdType;
            /** å¤æ ¸äºº */
                reviewer: string;
            /** å¤æ£€æ¬¡æ•° */
                rvcount: number;
            /** æ‰¹æ¬¡çŠ¶æ€ */
                state: string;
            /** å¤æ ¸æ—¥æœŸ */
                reviewTime: string;
            /** å®¡æ ¸æ—¥æœŸ */
                auditTime: string;
            /** è§„æ ¼ */
                spec: string;
            /** æ‰¹å‡†æ—¶é—´ */
                approveTime: string;
            /** åˆ°è´§å•位 */
                unit: string;
            /** åˆ°è´§æ—¥æœŸ */
                arrivalTime: string;
            /** å­˜æ”¾åœ°ç‚¹ */
                storagePlace: string;
            /** æ£€éªŒå‘˜ */
                checker: string;
            /** æŽ¥å•日期 */
                receiveTime: string;
            /** æŠ¥æ£€æ—¥æœŸ */
                inspTime: string;
            /** ä»“库保管员 */
                storer: string;
            /** æ˜¯å¦éªŒè¯ */
                isverify: string;
            /** æ˜¯å¦æ£€éªŒ */
                ischk: string;
            /** å¤‡ç”¨1 */
                bak1: string;
            /** å¤‡ç”¨2 */
                bak2: string;
        }>;
  /**
   * namespace Qm
   *
   * backend api module: "Qm"
   */
  namespace Qm {
    /** batch */
    type Batch = Common.CommonRecord<{
      /** ç¼–码 */
      id: CommonType.IdType;
      /** æ‰¹æ¬¡ä»£ç  */
      batchCode: string;
      /** æ‰¹æ¬¡åç§° */
      batchName: string;
      /** A-制丝 B-成型 C-卷包 D-封箱 E-糖香料 */
      typ: string;
      /** æœºå°ä»£ç  */
      eqpCode: string;
      /** ç‰Œå· */
      matCode: string;
      /** åˆ¤å®šä¾æ®ä»£ç  */
      judgeCode: string;
      /** æ‰¹æ¬¡ç”Ÿæˆæ—¥æœŸ */
      batchDate: string;
      /** ä½¿ç”¨æ ‡å¿— */
      isflag: string;
      /** å¯ç”¨æ ‡å¿— */
      enabled: string;
      /** åˆ°è´§æ€»é‡ */
      totalNum: number;
      /** ç»¼åˆåˆ¤å®š */
      results: string;
      /** æ‰¹å‡†äºº */
      approver: string;
      /** å®¡æ ¸äºº */
      auditor: string;
      /** åˆ›å»ºäºº */
      creater: string;
      /** åˆ¶è¡¨æ—¥æœŸ */
      tabDate: string;
      /** ç‰ˆæœ¬åç§° */
      verName: string;
      /** ç‰ˆæœ¬ç¼–号 */
      verCode: string;
      /** ä¿å­˜æœŸ */
      archDate: string;
      /** 0-未上传mes,1-已上传, 3-从MES下载 */
      flag: string;
      /** ä¸Šä¼ MES时间 */
      toMesDate: string;
      /** ä»ŽMES时间下载 */
      fromMesDate: string;
      /** åˆ é™¤æ ‡å¿— */
      deleted: number;
      /** æ‰¹æ¬¡æè¿° */
      batchDes: string;
      /** ç±»åˆ« 0:成品 1:辅材 */
      category: string;
      /** å·åˆ¶å·¥å· */
      makeno: string;
      /** ç­æ¬¡æœºå· */
      shifteqpno: string;
      /** è£…箱号 */
      boxno: string;
      /** çˆ¶æ‰¹æ¬¡å· */
      pid: CommonType.IdType;
      /** å¤æ ¸äºº */
      reviewer: string;
      /** å¤æ£€æ¬¡æ•° */
      rvcount: number;
      /** æ‰¹æ¬¡çŠ¶æ€ */
      state: string;
      /** å¤æ ¸æ—¥æœŸ */
      reviewTime: string;
      /** å®¡æ ¸æ—¥æœŸ */
      auditTime: string;
      /** è§„æ ¼ */
      spec: string;
      /** æ‰¹å‡†æ—¶é—´ */
      approveTime: string;
      /** åˆ°è´§å•位 */
      unit: string;
      /** åˆ°è´§æ—¥æœŸ */
      arrivalTime: string;
      /** å­˜æ”¾åœ°ç‚¹ */
      storagePlace: string;
      /** æ£€éªŒå‘˜ */
      checker: string;
      /** æŽ¥å•日期 */
      receiveTime: string;
      /** æŠ¥æ£€æ—¥æœŸ */
      inspTime: string;
      /** ä»“库保管员 */
      storer: string;
      /** æ˜¯å¦éªŒè¯ */
      isverify: string;
      /** æ˜¯å¦æ£€éªŒ */
      ischk: string;
      /** å¤‡ç”¨1 */
      bak1: string;
      /** å¤‡ç”¨2 */
      bak2: string;
    }>;
        /** batch search params */
        type BatchSearchParams = CommonType.RecordNullable<
            Pick<
                Api.Qm.Batch,
                        | 'batchCode'
                        | 'typ'
                        | 'eqpCode'
                        | 'matCode'
                        | 'batchDate'
                        | 'flag'
                        | 'deleted'
                        | 'category'
                        | 'state'
            > &
            Api.Common.CommonSearchParams
        >;
    /** batch search params */
    type BatchSearchParams = CommonType.RecordNullable<
      Pick<
        Api.Qm.Batch,
        'batchCode' | 'typ' | 'eqpCode' | 'matCode' | 'batchDate' | 'flag' | 'deleted' | 'category' | 'state'
      > &
        Api.Common.CommonSearchParams
    >;
        /** batch operate params */
        type BatchOperateParams = CommonType.RecordNullable<
            Pick<
                Api.Qm.Batch,
                        | 'id'
                        | 'batchCode'
                        | 'batchName'
                        | 'typ'
                        | 'eqpCode'
                        | 'matCode'
                        | 'judgeCode'
                        | 'batchDate'
                        | 'isflag'
                        | 'enabled'
                        | 'totalNum'
                        | 'results'
                        | 'approver'
                        | 'auditor'
                        | 'creater'
                        | 'tabDate'
                        | 'verName'
                        | 'verCode'
                        | 'archDate'
                        | 'flag'
                        | 'toMesDate'
                        | 'fromMesDate'
                        | 'deleted'
                        | 'batchDes'
                        | 'category'
                        | 'makeno'
                        | 'shifteqpno'
                        | 'boxno'
                        | 'pid'
                        | 'reviewer'
                        | 'rvcount'
                        | 'state'
                        | 'reviewTime'
                        | 'auditTime'
                        | 'spec'
                        | 'approveTime'
                        | 'unit'
                        | 'arrivalTime'
                        | 'storagePlace'
                        | 'checker'
                        | 'receiveTime'
                        | 'inspTime'
                        | 'storer'
                        | 'isverify'
                        | 'ischk'
                        | 'bak1'
                        | 'bak2'
            >
        >;
    /** batch operate params */
    type BatchOperateParams = CommonType.RecordNullable<
      Pick<
        Api.Qm.Batch,
        | 'id'
        | 'batchCode'
        | 'batchName'
        | 'typ'
        | 'eqpCode'
        | 'matCode'
        | 'judgeCode'
        | 'batchDate'
        | 'isflag'
        | 'enabled'
        | 'totalNum'
        | 'results'
        | 'approver'
        | 'auditor'
        | 'creater'
        | 'tabDate'
        | 'verName'
        | 'verCode'
        | 'archDate'
        | 'flag'
        | 'toMesDate'
        | 'fromMesDate'
        | 'deleted'
        | 'batchDes'
        | 'category'
        | 'makeno'
        | 'shifteqpno'
        | 'boxno'
        | 'pid'
        | 'reviewer'
        | 'rvcount'
        | 'state'
        | 'reviewTime'
        | 'auditTime'
        | 'spec'
        | 'approveTime'
        | 'unit'
        | 'arrivalTime'
        | 'storagePlace'
        | 'checker'
        | 'receiveTime'
        | 'inspTime'
        | 'storer'
        | 'isverify'
        | 'ischk'
        | 'bak1'
        | 'bak2'
      >
    >;
        /** batch list */
        type BatchList = Api.Common.PaginatingQueryRecord<Batch>;
    }
    /** batch list */
    type BatchList = Api.Common.PaginatingQueryRecord<Batch>;
  }
}
ruoyi-plus-soybean/src/views/analy/feed-match/index.vue
@@ -15,7 +15,6 @@
  name: 'FeedMatchList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -30,242 +29,242 @@
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetFeedMatchList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetFeedMatchList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'time',
      title: '时间戳',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'key',
      title: '班次+机台',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'dacUpTime',
      title: '数据更新时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs11',
      title: '1#喂丝机对应的第一个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs12',
      title: '1#喂丝机对应的第二个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs21',
      title: '2#喂丝机对应的第一个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs22',
      title: '2#喂丝机对应的第二个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs31',
      title: '3#喂丝机对应的第一个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs32',
      title: '3#喂丝机对应的第二个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs41',
      title: '4#喂丝机对应的第一个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fs42',
      title: '4#喂丝机对应的第二个储丝柜',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe01',
      title: '1#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe02',
      title: '2#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe03',
      title: '3#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe04',
      title: '4#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe05',
      title: '5#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe06',
      title: '6#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe07',
      title: '7#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe08',
      title: '8#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe09',
      title: '9#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe10',
      title: '10#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe11',
      title: '11#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pipe12',
      title: '12#机组对应的喂丝机和管道',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'wsjState',
      title: '喂丝机状态 1-连接 0-断开',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'shift',
      title: '班次',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'equNo',
      title: '机台',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'remark',
      title: '备注',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('analy:feedMatch:edit') || !hasAuth('analy:feedMatch:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'time',
        title: '时间戳',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'key',
        title: '班次+机台',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'dacUpTime',
        title: '数据更新时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs11',
        title: '1#喂丝机对应的第一个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs12',
        title: '1#喂丝机对应的第二个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs21',
        title: '2#喂丝机对应的第一个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs22',
        title: '2#喂丝机对应的第二个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs31',
        title: '3#喂丝机对应的第一个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs32',
        title: '3#喂丝机对应的第二个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs41',
        title: '4#喂丝机对应的第一个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fs42',
        title: '4#喂丝机对应的第二个储丝柜',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe01',
        title: '1#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe02',
        title: '2#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe03',
        title: '3#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe04',
        title: '4#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe05',
        title: '5#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe06',
        title: '6#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe07',
        title: '7#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe08',
        title: '8#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe09',
        title: '9#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe10',
        title: '10#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe11',
        title: '11#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pipe12',
        title: '12#机组对应的喂丝机和管道',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'wsjState',
        title: '喂丝机状态 1-连接 0-断开',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'shift',
        title: '班次',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'equNo',
        title: '机台',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'remark',
        title: '备注',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('analy:feedMatch:edit') || !hasAuth('analy:feedMatch:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('analy:feedMatch:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('analy:feedMatch:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.time)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('analy:feedMatch:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.time)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.time)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('analy:feedMatch:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.time)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'time', getData);
ruoyi-plus-soybean/src/views/analy/feed-match/modules/feed-match-operate-drawer.vue
@@ -45,45 +45,41 @@
function createDefaultModel(): Model {
  return {
      time: null,
      key: '',
      dacUpTime: '',
      fs11: '',
      fs12: '',
      fs21: '',
      fs22: '',
      fs31: '',
      fs32: '',
      fs41: '',
      fs42: '',
      pipe01: null,
      pipe02: null,
      pipe03: null,
      pipe04: null,
      pipe05: null,
      pipe06: null,
      pipe07: null,
      pipe08: null,
      pipe09: null,
      pipe10: null,
      pipe11: null,
      pipe12: null,
      wsjState: null,
      shift: null,
      equNo: null,
      remark: ''
    time: null,
    key: '',
    dacUpTime: '',
    fs11: '',
    fs12: '',
    fs21: '',
    fs22: '',
    fs31: '',
    fs32: '',
    fs41: '',
    fs42: '',
    pipe01: null,
    pipe02: null,
    pipe03: null,
    pipe04: null,
    pipe05: null,
    pipe06: null,
    pipe07: null,
    pipe08: null,
    pipe09: null,
    pipe10: null,
    pipe11: null,
    pipe12: null,
    wsjState: null,
    shift: null,
    equNo: null,
    remark: ''
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'time'
  | 'key'
>;
type RuleKey = Extract<keyof Model, 'time' | 'key'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  time: createRequiredRule('时间戳不能为空'),
  key: createRequiredRule('班次+机台不能为空'),
  key: createRequiredRule('班次+机台不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -101,16 +97,100 @@
async function handleSubmit() {
  await validate();
  const { time, key, dacUpTime, fs11, fs12, fs21, fs22, fs31, fs32, fs41, fs42, pipe01, pipe02, pipe03, pipe04, pipe05, pipe06, pipe07, pipe08, pipe09, pipe10, pipe11, pipe12, wsjState, shift, equNo, remark } = model.value;
  const {
    time,
    key,
    dacUpTime,
    fs11,
    fs12,
    fs21,
    fs22,
    fs31,
    fs32,
    fs41,
    fs42,
    pipe01,
    pipe02,
    pipe03,
    pipe04,
    pipe05,
    pipe06,
    pipe07,
    pipe08,
    pipe09,
    pipe10,
    pipe11,
    pipe12,
    wsjState,
    shift,
    equNo,
    remark
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateFeedMatch({ time, key, dacUpTime, fs11, fs12, fs21, fs22, fs31, fs32, fs41, fs42, pipe01, pipe02, pipe03, pipe04, pipe05, pipe06, pipe07, pipe08, pipe09, pipe10, pipe11, pipe12, wsjState, shift, equNo, remark });
    const { error } = await fetchCreateFeedMatch({
      time,
      key,
      dacUpTime,
      fs11,
      fs12,
      fs21,
      fs22,
      fs31,
      fs32,
      fs41,
      fs42,
      pipe01,
      pipe02,
      pipe03,
      pipe04,
      pipe05,
      pipe06,
      pipe07,
      pipe08,
      pipe09,
      pipe10,
      pipe11,
      pipe12,
      wsjState,
      shift,
      equNo,
      remark
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateFeedMatch({ time, key, dacUpTime, fs11, fs12, fs21, fs22, fs31, fs32, fs41, fs42, pipe01, pipe02, pipe03, pipe04, pipe05, pipe06, pipe07, pipe08, pipe09, pipe10, pipe11, pipe12, wsjState, shift, equNo, remark });
    const { error } = await fetchUpdateFeedMatch({
      time,
      key,
      dacUpTime,
      fs11,
      fs12,
      fs21,
      fs22,
      fs31,
      fs32,
      fs41,
      fs42,
      pipe01,
      pipe02,
      pipe03,
      pipe04,
      pipe05,
      pipe06,
      pipe07,
      pipe08,
      pipe09,
      pipe10,
      pipe11,
      pipe12,
      wsjState,
      shift,
      equNo,
      remark
    });
    if (error) return;
  }
@@ -140,84 +220,34 @@
          />
        </NFormItem>
        <NFormItem label="班次+机台" path="key">
          <NInput
            v-model:value="model.key"
            :rows="3"
            type="textarea"
            placeholder="请输入班次+机台"
          />
          <NInput v-model:value="model.key" :rows="3" type="textarea" placeholder="请输入班次+机台" />
        </NFormItem>
        <NFormItem label="数据更新时间" path="dacUpTime">
          <NInput
            v-model:value="model.dacUpTime"
            :rows="3"
            type="textarea"
            placeholder="请输入数据更新时间"
          />
          <NInput v-model:value="model.dacUpTime" :rows="3" type="textarea" placeholder="请输入数据更新时间" />
        </NFormItem>
        <NFormItem label="1#喂丝机对应的第一个储丝柜" path="fs11">
          <NInput
            v-model:value="model.fs11"
            :rows="3"
            type="textarea"
            placeholder="请输入1#喂丝机对应的第一个储丝柜"
          />
          <NInput v-model:value="model.fs11" :rows="3" type="textarea" placeholder="请输入1#喂丝机对应的第一个储丝柜" />
        </NFormItem>
        <NFormItem label="1#喂丝机对应的第二个储丝柜" path="fs12">
          <NInput
            v-model:value="model.fs12"
            :rows="3"
            type="textarea"
            placeholder="请输入1#喂丝机对应的第二个储丝柜"
          />
          <NInput v-model:value="model.fs12" :rows="3" type="textarea" placeholder="请输入1#喂丝机对应的第二个储丝柜" />
        </NFormItem>
        <NFormItem label="2#喂丝机对应的第一个储丝柜" path="fs21">
          <NInput
            v-model:value="model.fs21"
            :rows="3"
            type="textarea"
            placeholder="请输入2#喂丝机对应的第一个储丝柜"
          />
          <NInput v-model:value="model.fs21" :rows="3" type="textarea" placeholder="请输入2#喂丝机对应的第一个储丝柜" />
        </NFormItem>
        <NFormItem label="2#喂丝机对应的第二个储丝柜" path="fs22">
          <NInput
            v-model:value="model.fs22"
            :rows="3"
            type="textarea"
            placeholder="请输入2#喂丝机对应的第二个储丝柜"
          />
          <NInput v-model:value="model.fs22" :rows="3" type="textarea" placeholder="请输入2#喂丝机对应的第二个储丝柜" />
        </NFormItem>
        <NFormItem label="3#喂丝机对应的第一个储丝柜" path="fs31">
          <NInput
            v-model:value="model.fs31"
            :rows="3"
            type="textarea"
            placeholder="请输入3#喂丝机对应的第一个储丝柜"
          />
          <NInput v-model:value="model.fs31" :rows="3" type="textarea" placeholder="请输入3#喂丝机对应的第一个储丝柜" />
        </NFormItem>
        <NFormItem label="3#喂丝机对应的第二个储丝柜" path="fs32">
          <NInput
            v-model:value="model.fs32"
            :rows="3"
            type="textarea"
            placeholder="请输入3#喂丝机对应的第二个储丝柜"
          />
          <NInput v-model:value="model.fs32" :rows="3" type="textarea" placeholder="请输入3#喂丝机对应的第二个储丝柜" />
        </NFormItem>
        <NFormItem label="4#喂丝机对应的第一个储丝柜" path="fs41">
          <NInput
            v-model:value="model.fs41"
            :rows="3"
            type="textarea"
            placeholder="请输入4#喂丝机对应的第一个储丝柜"
          />
          <NInput v-model:value="model.fs41" :rows="3" type="textarea" placeholder="请输入4#喂丝机对应的第一个储丝柜" />
        </NFormItem>
        <NFormItem label="4#喂丝机对应的第二个储丝柜" path="fs42">
          <NInput
            v-model:value="model.fs42"
            :rows="3"
            type="textarea"
            placeholder="请输入4#喂丝机对应的第二个储丝柜"
          />
          <NInput v-model:value="model.fs42" :rows="3" type="textarea" placeholder="请输入4#喂丝机对应的第二个储丝柜" />
        </NFormItem>
        <NFormItem label="1#机组对应的喂丝机和管道" path="pipe01">
          <NInput v-model:value="model.pipe01" placeholder="请输入1#机组对应的喂丝机和管道" />
ruoyi-plus-soybean/src/views/analy/hoister/index.vue
@@ -15,7 +15,6 @@
  name: 'HoisterDataList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -34,314 +33,314 @@
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetHoisterDataList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetHoisterDataList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'time',
      title: '时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'key',
      title: 'key',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'online',
      title: '网络状态  0异常,1正常',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'qty',
      title: '产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState1',
      title: '1#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState2',
      title: '2#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState3',
      title: '3#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState4',
      title: '4#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState5',
      title: '5#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState6',
      title: '6#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState7',
      title: '7#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState8',
      title: '8#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState9',
      title: '9#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState10',
      title: '10#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState11',
      title: '11#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tState12',
      title: '12#提升机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pState1',
      title: '1#排包机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pState2',
      title: '2#排包机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pState3',
      title: '3#排包机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pState4',
      title: '4#排包机状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty1',
      title: '1#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty2',
      title: '2#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty3',
      title: '3#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty4',
      title: '4#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty5',
      title: '5#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty6',
      title: '6#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty7',
      title: '7#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty8',
      title: '8#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty9',
      title: '9#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty10',
      title: '10#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty11',
      title: '11#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tQty12',
      title: '12#提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pQty1',
      title: '1#排包机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pQty2',
      title: '2#排包机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pQty3',
      title: '3#排包机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pQty4',
      title: '4#排包机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'shift',
      title: '班次',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'equNo',
      title: '设备',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'remark',
      title: '备注',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('qa:hoisterData:edit') || !hasAuth('qa:hoisterData:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'time',
        title: '时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'key',
        title: 'key',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'online',
        title: '网络状态  0异常,1正常',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'qty',
        title: '产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState1',
        title: '1#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState2',
        title: '2#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState3',
        title: '3#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState4',
        title: '4#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState5',
        title: '5#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState6',
        title: '6#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState7',
        title: '7#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState8',
        title: '8#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState9',
        title: '9#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState10',
        title: '10#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState11',
        title: '11#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tState12',
        title: '12#提升机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pState1',
        title: '1#排包机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pState2',
        title: '2#排包机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pState3',
        title: '3#排包机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pState4',
        title: '4#排包机状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty1',
        title: '1#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty2',
        title: '2#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty3',
        title: '3#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty4',
        title: '4#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty5',
        title: '5#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty6',
        title: '6#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty7',
        title: '7#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty8',
        title: '8#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty9',
        title: '9#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty10',
        title: '10#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty11',
        title: '11#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tQty12',
        title: '12#提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pQty1',
        title: '1#排包机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pQty2',
        title: '2#排包机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pQty3',
        title: '3#排包机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pQty4',
        title: '4#排包机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'shift',
        title: '班次',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'equNo',
        title: '设备',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'remark',
        title: '备注',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('qa:hoisterData:edit') || !hasAuth('qa:hoisterData:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('qa:hoisterData:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('qa:hoisterData:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.time)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('qa:hoisterData:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.time)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.time)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('qa:hoisterData:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.time)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'time', getData);
ruoyi-plus-soybean/src/views/analy/hoister/modules/hoister-data-operate-drawer.vue
@@ -1,9 +1,9 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { jsonClone } from '~/packages/utils';
import { fetchCreateHoisterData, fetchUpdateHoisterData } from '@/service/api/analy/hoister-data';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
import { jsonClone } from '~/packages/utils';
defineOptions({
  name: 'HoisterDataOperateDrawer'
@@ -45,57 +45,53 @@
function createDefaultModel(): Model {
  return {
      time: null,
      key: '',
      online: null,
      qty: null,
      tState1: null,
      tState2: null,
      tState3: null,
      tState4: null,
      tState5: null,
      tState6: null,
      tState7: null,
      tState8: null,
      tState9: null,
      tState10: null,
      tState11: null,
      tState12: null,
      pState1: null,
      pState2: null,
      pState3: null,
      pState4: null,
      tQty1: null,
      tQty2: null,
      tQty3: null,
      tQty4: null,
      tQty5: null,
      tQty6: null,
      tQty7: null,
      tQty8: null,
      tQty9: null,
      tQty10: null,
      tQty11: null,
      tQty12: null,
      pQty1: null,
      pQty2: null,
      pQty3: null,
      pQty4: null,
      shift: null,
      equNo: null,
      remark: ''
    time: null,
    key: '',
    online: null,
    qty: null,
    tState1: null,
    tState2: null,
    tState3: null,
    tState4: null,
    tState5: null,
    tState6: null,
    tState7: null,
    tState8: null,
    tState9: null,
    tState10: null,
    tState11: null,
    tState12: null,
    pState1: null,
    pState2: null,
    pState3: null,
    pState4: null,
    tQty1: null,
    tQty2: null,
    tQty3: null,
    tQty4: null,
    tQty5: null,
    tQty6: null,
    tQty7: null,
    tQty8: null,
    tQty9: null,
    tQty10: null,
    tQty11: null,
    tQty12: null,
    pQty1: null,
    pQty2: null,
    pQty3: null,
    pQty4: null,
    shift: null,
    equNo: null,
    remark: ''
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'time'
  | 'key'
>;
type RuleKey = Extract<keyof Model, 'time' | 'key'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  time: createRequiredRule('时间不能为空'),
  key: createRequiredRule('key不能为空'),
  key: createRequiredRule('key不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -113,16 +109,136 @@
async function handleSubmit() {
  await validate();
  const { time, key, online, qty, tState1, tState2, tState3, tState4, tState5, tState6, tState7, tState8, tState9, tState10, tState11, tState12, pState1, pState2, pState3, pState4, tQty1, tQty2, tQty3, tQty4, tQty5, tQty6, tQty7, tQty8, tQty9, tQty10, tQty11, tQty12, pQty1, pQty2, pQty3, pQty4, shift, equNo, remark } = model.value;
  const {
    time,
    key,
    online,
    qty,
    tState1,
    tState2,
    tState3,
    tState4,
    tState5,
    tState6,
    tState7,
    tState8,
    tState9,
    tState10,
    tState11,
    tState12,
    pState1,
    pState2,
    pState3,
    pState4,
    tQty1,
    tQty2,
    tQty3,
    tQty4,
    tQty5,
    tQty6,
    tQty7,
    tQty8,
    tQty9,
    tQty10,
    tQty11,
    tQty12,
    pQty1,
    pQty2,
    pQty3,
    pQty4,
    shift,
    equNo,
    remark
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateHoisterData({ time, key, online, qty, tState1, tState2, tState3, tState4, tState5, tState6, tState7, tState8, tState9, tState10, tState11, tState12, pState1, pState2, pState3, pState4, tQty1, tQty2, tQty3, tQty4, tQty5, tQty6, tQty7, tQty8, tQty9, tQty10, tQty11, tQty12, pQty1, pQty2, pQty3, pQty4, shift, equNo, remark });
    const { error } = await fetchCreateHoisterData({
      time,
      key,
      online,
      qty,
      tState1,
      tState2,
      tState3,
      tState4,
      tState5,
      tState6,
      tState7,
      tState8,
      tState9,
      tState10,
      tState11,
      tState12,
      pState1,
      pState2,
      pState3,
      pState4,
      tQty1,
      tQty2,
      tQty3,
      tQty4,
      tQty5,
      tQty6,
      tQty7,
      tQty8,
      tQty9,
      tQty10,
      tQty11,
      tQty12,
      pQty1,
      pQty2,
      pQty3,
      pQty4,
      shift,
      equNo,
      remark
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateHoisterData({ time, key, online, qty, tState1, tState2, tState3, tState4, tState5, tState6, tState7, tState8, tState9, tState10, tState11, tState12, pState1, pState2, pState3, pState4, tQty1, tQty2, tQty3, tQty4, tQty5, tQty6, tQty7, tQty8, tQty9, tQty10, tQty11, tQty12, pQty1, pQty2, pQty3, pQty4, shift, equNo, remark });
    const { error } = await fetchUpdateHoisterData({
      time,
      key,
      online,
      qty,
      tState1,
      tState2,
      tState3,
      tState4,
      tState5,
      tState6,
      tState7,
      tState8,
      tState9,
      tState10,
      tState11,
      tState12,
      pState1,
      pState2,
      pState3,
      pState4,
      tQty1,
      tQty2,
      tQty3,
      tQty4,
      tQty5,
      tQty6,
      tQty7,
      tQty8,
      tQty9,
      tQty10,
      tQty11,
      tQty12,
      pQty1,
      pQty2,
      pQty3,
      pQty4,
      shift,
      equNo,
      remark
    });
    if (error) return;
  }
@@ -153,12 +269,7 @@
          />
        </NFormItem>
        <NFormItem label="key" path="key">
          <NInput
            v-model:value="model.key"
            :rows="3"
            type="textarea"
            placeholder="请输入key"
          />
          <NInput v-model:value="model.key" :rows="3" type="textarea" placeholder="请输入key" />
        </NFormItem>
        <NFormItem label="网络状态  0异常,1正常" path="online">
          <NInput v-model:value="model.online" placeholder="请输入网络状态  0异常,1正常" />
ruoyi-plus-soybean/src/views/analy/hoister/modules/hoister-data-search.vue
@@ -53,9 +53,7 @@
  { label: '晚班', value: 3 }
];
const equNoOptions = [
  { label: '1#提升机', value: 601 }
];
const equNoOptions = [{ label: '1#提升机', value: 601 }];
function onTimeRangeUpdate(value: [string, string] | null) {
  if (!model.value.params) {
@@ -101,25 +99,15 @@
                type="datetimerange"
                value-format="yyyy-MM-dd HH:mm:ss"
                clearable
                @update:formatted-value="onTimeRangeUpdate"
                :default-time="['00:00:00', '23:59:59']"
                @update:formatted-value="onTimeRangeUpdate"
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="设备" path="equNo" class="pr-24px">
              <NSelect
                v-model:value="model.equNo"
                placeholder="请选择设备号"
                :options="equNoOptions"
                clearable
              />
              <NSelect v-model:value="model.equNo" placeholder="请选择设备号" :options="equNoOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="班次" path="shift" class="pr-24px">
              <NSelect
                v-model:value="model.shift"
                placeholder="请选择班次"
                :options="shiftOptions"
                clearable
              />
              <NSelect v-model:value="model.shift" placeholder="请选择班次" :options="shiftOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24" class="pr-24px">
              <NSpace class="w-full" justify="end">
ruoyi-plus-soybean/src/views/analy/output-analy/index.vue
@@ -76,123 +76,124 @@
const { columns, columnChecks, data, getData, loading, scrollX } = useNaiveTable({
  api: () => fetchGetRollerSampleDataList(searchParams.value),
  transform: (response: any) => response.data || [],
  columns: () => ([
    {
      key: 'index',
      title: '序号',
      align: 'center',
      width: 64,
      render: (_: Api.Qa.RollerData, index: number) => index + 1
    },
    {
      key: 'time',
      title: '时间',
      align: 'center',
      minWidth: 160
    },
    {
      key: 'equNo',
      title: '设备',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => equNoMap[row.equNo] || row.equNo
    },
    {
      key: 'shift',
      title: '班次',
      align: 'center',
      minWidth: 80,
      render: (row: Api.Qa.RollerData) => <NTag type="info">{shiftMap[row.shift] || row.shift}</NTag>
    },
    {
      key: 'qty',
      title: '卷接机产量(千支)',
      align: 'center',
      minWidth: 100,
      render: (row: Api.Qa.RollerData) => Number(row.qty ?? 0).toFixed(1)
    },
    {
      key: 'qtyBox',
      title: '卷接机产量(ç®±)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        const v = Number(row.qty ?? 0) / 50;
        return v.toFixed(1);
  columns: () =>
    [
      {
        key: 'index',
        title: '序号',
        align: 'center',
        width: 64,
        render: (_: Api.Qa.RollerData, index: number) => index + 1
      },
      {
        key: 'time',
        title: '时间',
        align: 'center',
        minWidth: 160
      },
      {
        key: 'equNo',
        title: '设备',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => equNoMap[row.equNo] || row.equNo
      },
      {
        key: 'shift',
        title: '班次',
        align: 'center',
        minWidth: 80,
        render: (row: Api.Qa.RollerData) => <NTag type="info">{shiftMap[row.shift] || row.shift}</NTag>
      },
      {
        key: 'qty',
        title: '卷接机产量(千支)',
        align: 'center',
        minWidth: 100,
        render: (row: Api.Qa.RollerData) => Number(row.qty ?? 0).toFixed(1)
      },
      {
        key: 'qtyBox',
        title: '卷接机产量(ç®±)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          const v = Number(row.qty ?? 0) / 50;
          return v.toFixed(1);
        }
      },
      {
        key: 'tsQtyTiao',
        title: '提升机产量(条)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          if (row.tsQty === null || row.tsQty === undefined) return '-';
          return Number(row.tsQty).toFixed(1);
        }
      },
      {
        key: 'tsQtyBox',
        title: '提升机产量(ç®±)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          if (row.tsQty === null || row.tsQty === undefined) return '-';
          const v = Number(row.tsQty) / 250;
          return v.toFixed(1);
        }
      },
      {
        key: 'packerQty',
        title: '包装机产量(小包)',
        align: 'center',
        minWidth: 140,
        render: (row: Api.Qa.RollerData) => {
          if (row.packerQty === null || row.packerQty === undefined) return '-';
          return Number(row.packerQty).toFixed(1);
        }
      },
      {
        key: 'packerQtyBox',
        title: '包装机产量(ç®±)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          if (row.packerQty === null || row.packerQty === undefined) return '-';
          const v = Number(row.packerQty) / 10 / 250;
          return v.toFixed(1);
        }
      },
      {
        key: 'lvbangVal',
        title: '滤棒消耗(支)',
        align: 'center',
        minWidth: 140,
        render: (row: Api.Qa.RollerData) => Number(row.lvbangVal ?? 0).toFixed(1)
      },
      {
        key: 'lvbangWan',
        title: '滤棒消耗(万支)',
        align: 'center',
        minWidth: 140,
        render: (row: Api.Qa.RollerData) => {
          const v = Number(row.lvbangVal ?? 0) / 10000;
          return v.toFixed(1);
        }
      },
      {
        key: 'danhao',
        title: '滤棒单耗(万支/ç®±)',
        align: 'center',
        minWidth: 180,
        render: (row: Api.Qa.RollerData) => {
          const qtyBox = Number(row.qty ?? 0) / 50;
          if (!qtyBox) return '-';
          const v = Number(row.lvbangVal ?? 0) / 10000 / qtyBox;
          return v.toFixed(1);
        }
      }
    },
    {
      key: 'tsQtyTiao',
      title: '提升机产量(条)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        if (row.tsQty === null || row.tsQty === undefined) return '-';
        return Number(row.tsQty).toFixed(1);
      }
    },
    {
      key: 'tsQtyBox',
      title: '提升机产量(ç®±)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        if (row.tsQty === null || row.tsQty === undefined) return '-';
        const v = Number(row.tsQty) / 250;
        return v.toFixed(1);
      }
    },
    {
      key: 'packerQty',
      title: '包装机产量(小包)',
      align: 'center',
      minWidth: 140,
      render: (row: Api.Qa.RollerData) => {
        if (row.packerQty === null || row.packerQty === undefined) return '-';
        return Number(row.packerQty).toFixed(1);
      }
    },
    {
      key: 'packerQtyBox',
      title: '包装机产量(ç®±)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        if (row.packerQty === null || row.packerQty === undefined) return '-';
        const v = Number(row.packerQty) / 10 / 250;
        return v.toFixed(1);
      }
    },
    {
      key: 'lvbangVal',
      title: '滤棒消耗(支)',
      align: 'center',
      minWidth: 140,
      render: (row: Api.Qa.RollerData) => Number(row.lvbangVal ?? 0).toFixed(1)
    },
    {
      key: 'lvbangWan',
      title: '滤棒消耗(万支)',
      align: 'center',
      minWidth: 140,
      render: (row: Api.Qa.RollerData) => {
        const v = Number(row.lvbangVal ?? 0) / 10000;
        return v.toFixed(1);
      }
    },
    {
      key: 'danhao',
      title: '滤棒单耗(万支/ç®±)',
      align: 'center',
      minWidth: 180,
      render: (row: Api.Qa.RollerData) => {
        const qtyBox = Number(row.qty ?? 0) / 50;
        if (!qtyBox) return '-';
        const v = (Number(row.lvbangVal ?? 0) / 10000) / qtyBox;
        return v.toFixed(1);
      }
    }
  ] as any)
    ] as any
});
async function handleExport() {
@@ -202,18 +203,15 @@
<template>
  <div class="h-full min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
    <RollerDataSearch
      v-model:model="searchParams"
      @search="getData"
    />
    <RollerDataSearch v-model:model="searchParams" @search="getData" />
    <NCard
            v-if="!showTable"
            title="卷接机分析趋势图"
            :bordered="false"
            size="small"
            class="sm:flex-1-hidden card-wrapper flex flex-col"
            content-style="flex: 1; min-height: 0; overflow: hidden;"
          >
      v-if="!showTable"
      title="卷接机分析趋势图"
      :bordered="false"
      size="small"
      class="flex flex-col card-wrapper sm:flex-1-hidden"
      content-style="flex: 1; min-height: 0; overflow: hidden;"
    >
      <template #header-extra>
        <NButton size="small" @click="showTable = true">
          <template #icon>
@@ -224,13 +222,7 @@
      </template>
      <RollerDataLineChart :data="(data as any)" class="h-full" />
    </NCard>
    <NCard
      v-else
      title="数据详情"
      :bordered="false"
      size="small"
      class="sm:flex-1-hidden card-wrapper"
    >
    <NCard v-else title="数据详情" :bordered="false" size="small" class="card-wrapper sm:flex-1-hidden">
      <template #header-extra>
        <TableHeaderOperation
          v-model:columns="columnChecks"
ruoyi-plus-soybean/src/views/analy/output-analy/modules/roller-data-line-chart.vue
@@ -258,7 +258,7 @@
watch(
  () => props.data,
  (newData) => {
  newData => {
    if (!newData) return;
    // Process data
@@ -277,7 +277,7 @@
    });
    const packerQtys = sortedData.value.map(item => {
      // Assuming packerQty is in same unit as tsQty or similar
      const v = Number(item.packerQty ?? 0)/ 10 / 250;
      const v = Number(item.packerQty ?? 0) / 10 / 250;
      return Math.round(v * 10) / 10;
    });
    const lvbangVals = sortedData.value.map(item => {
@@ -287,7 +287,7 @@
    const danhaoVals = sortedData.value.map(item => {
      const qtyBox = Number(item.qty ?? 0) / 50;
      if (!qtyBox) return 0;
      const v = (Number(item.lvbangVal ?? 0) / 10000) / qtyBox;
      const v = Number(item.lvbangVal ?? 0) / 10000 / qtyBox;
      return Math.round(v * 10) / 10;
    });
ruoyi-plus-soybean/src/views/analy/output-analy/modules/roller-data-operate-drawer.vue
@@ -1,9 +1,9 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { jsonClone } from '~/packages/utils';
import { fetchCreateRollerData, fetchUpdateRollerData } from '@/service/api/analy/roller-data';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
import { jsonClone } from '~/packages/utils';
defineOptions({
  name: 'RollerDataOperateDrawer'
@@ -45,37 +45,33 @@
function createDefaultModel(): Model {
  return {
      time: null,
      key: '',
      online: null,
      qty: null,
      badQty: null,
      lvbangVal: null,
      juanyanzhiVal: null,
      shuisongzhiVal: null,
      runTime: null,
      stopTime: null,
      stopTimes: null,
      speed: null,
      runStatus: null,
      cy: null,
      cyCs: null,
      cyOnline: '',
      recQty1: null,
      recQty2: null,
      tsQty: null
    time: null,
    key: '',
    online: null,
    qty: null,
    badQty: null,
    lvbangVal: null,
    juanyanzhiVal: null,
    shuisongzhiVal: null,
    runTime: null,
    stopTime: null,
    stopTimes: null,
    speed: null,
    runStatus: null,
    cy: null,
    cyCs: null,
    cyOnline: '',
    recQty1: null,
    recQty2: null,
    tsQty: null
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'time'
  | 'key'
>;
type RuleKey = Extract<keyof Model, 'time' | 'key'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  time: createRequiredRule('时间不能为空'),
  key: createRequiredRule('key不能为空'),
  key: createRequiredRule('key不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -93,16 +89,76 @@
async function handleSubmit() {
  await validate();
  const { time, key, online, qty, badQty, lvbangVal, juanyanzhiVal, shuisongzhiVal, runTime, stopTime, stopTimes, speed, runStatus, cy, cyCs, cyOnline, recQty1, recQty2, tsQty } = model.value;
  const {
    time,
    key,
    online,
    qty,
    badQty,
    lvbangVal,
    juanyanzhiVal,
    shuisongzhiVal,
    runTime,
    stopTime,
    stopTimes,
    speed,
    runStatus,
    cy,
    cyCs,
    cyOnline,
    recQty1,
    recQty2,
    tsQty
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateRollerData({ time, key, online, qty, badQty, lvbangVal, juanyanzhiVal, shuisongzhiVal, runTime, stopTime, stopTimes, speed, runStatus, cy, cyCs, cyOnline, recQty1, recQty2, tsQty });
    const { error } = await fetchCreateRollerData({
      time,
      key,
      online,
      qty,
      badQty,
      lvbangVal,
      juanyanzhiVal,
      shuisongzhiVal,
      runTime,
      stopTime,
      stopTimes,
      speed,
      runStatus,
      cy,
      cyCs,
      cyOnline,
      recQty1,
      recQty2,
      tsQty
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateRollerData({ time, key, online, qty, badQty, lvbangVal, juanyanzhiVal, shuisongzhiVal, runTime, stopTime, stopTimes, speed, runStatus, cy, cyCs, cyOnline, recQty1, recQty2, tsQty });
    const { error } = await fetchUpdateRollerData({
      time,
      key,
      online,
      qty,
      badQty,
      lvbangVal,
      juanyanzhiVal,
      shuisongzhiVal,
      runTime,
      stopTime,
      stopTimes,
      speed,
      runStatus,
      cy,
      cyCs,
      cyOnline,
      recQty1,
      recQty2,
      tsQty
    });
    if (error) return;
  }
@@ -132,12 +188,7 @@
          />
        </NFormItem>
        <NFormItem label="key" path="key">
          <NInput
            v-model:value="model.key"
            :rows="3"
            type="textarea"
            placeholder="请输入key"
          />
          <NInput v-model:value="model.key" :rows="3" type="textarea" placeholder="请输入key" />
        </NFormItem>
        <NFormItem label="网络状态" path="online">
          <NInputNumber v-model:value="model.online" placeholder="请输入网络状态" class="w-full" />
@@ -186,12 +237,7 @@
          <NInputNumber v-model:value="model.cyCs" placeholder="请输入储烟设备车速" class="w-full" />
        </NFormItem>
        <NFormItem label="储烟设备网络" path="cyOnline">
          <NInput
            v-model:value="model.cyOnline"
            :rows="3"
            type="textarea"
            placeholder="请输入储烟设备网络"
          />
          <NInput v-model:value="model.cyOnline" :rows="3" type="textarea" placeholder="请输入储烟设备网络" />
        </NFormItem>
        <NFormItem label="接收机产量" path="recQty1">
          <NInputNumber v-model:value="model.recQty1" placeholder="请输入接收机产量" class="w-full" />
ruoyi-plus-soybean/src/views/analy/output-analy/modules/roller-data-search.vue
@@ -101,25 +101,15 @@
                type="datetimerange"
                value-format="yyyy-MM-dd HH:mm:ss"
                clearable
                @update:formatted-value="onTimeRangeUpdate"
                :default-time="['00:00:00', '23:59:59']"
                @update:formatted-value="onTimeRangeUpdate"
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="设备" path="equNo" class="pr-24px">
              <NSelect
                v-model:value="model.equNo"
                placeholder="请选择设备号"
                :options="equNoOptions"
                clearable
              />
              <NSelect v-model:value="model.equNo" placeholder="请选择设备号" :options="equNoOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="班次" path="shift" class="pr-24px">
              <NSelect
                v-model:value="model.shift"
                placeholder="请选择班次"
                :options="shiftOptions"
                clearable
              />
              <NSelect v-model:value="model.shift" placeholder="请选择班次" :options="shiftOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24" class="pr-24px">
              <NSpace class="w-full" justify="end">
ruoyi-plus-soybean/src/views/analy/packer/index.vue
@@ -15,7 +15,6 @@
  name: 'PackerDataList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -50,229 +49,229 @@
  params: {
    beginTime: `${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, '0')}-${String(new Date().getDate()).padStart(2, '0')} 00:00:00`,
    endTime: `${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, '0')}-${String(new Date().getDate()).padStart(2, '0')} 23:59:59`
  },
  }
});
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetPackerDataList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetPackerDataList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'time',
      title: '时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'key',
      title: 'key',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'online',
      title: '网络状态(0异常,1正常)',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'qty',
      title: '产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'badQty',
      title: '剔除产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'xiaohemoVal',
      title: '小盒膜消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tiaohemoVal',
      title: '条盒膜消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'xiaohezhiVal',
      title: '小盒纸消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tiaohezhiVal',
      title: '条盒纸消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'neichenzhiVal',
      title: '内衬纸消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'runTime',
      title: '运行时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'stopTime',
      title: '停机时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'stopTimes',
      title: '停机次数',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'speed',
      title: '车速',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'runStatus',
      title: '运行状态(-1 æ–­ç½‘ 0停止 1低速运行 2正常运行)',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tsQty',
      title: '提升机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'mainQty',
      title: '主机产量(小包机)',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'mainBadQty',
      title: '主机剔除量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tbjQty',
      title: '透包机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tbjGdQty',
      title: '透包机剔除好包',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tbjBadQty',
      title: '透包机剔除坏包',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pbjQty',
      title: '排包机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'shift',
      title: '班次',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'equNo',
      title: '设备',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('qa:packerData:edit') || !hasAuth('qa:packerData:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'time',
        title: '时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'key',
        title: 'key',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'online',
        title: '网络状态(0异常,1正常)',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'qty',
        title: '产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'badQty',
        title: '剔除产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'xiaohemoVal',
        title: '小盒膜消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tiaohemoVal',
        title: '条盒膜消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'xiaohezhiVal',
        title: '小盒纸消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tiaohezhiVal',
        title: '条盒纸消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'neichenzhiVal',
        title: '内衬纸消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'runTime',
        title: '运行时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'stopTime',
        title: '停机时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'stopTimes',
        title: '停机次数',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'speed',
        title: '车速',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'runStatus',
        title: '运行状态(-1 æ–­ç½‘ 0停止 1低速运行 2正常运行)',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tsQty',
        title: '提升机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'mainQty',
        title: '主机产量(小包机)',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'mainBadQty',
        title: '主机剔除量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tbjQty',
        title: '透包机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tbjGdQty',
        title: '透包机剔除好包',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tbjBadQty',
        title: '透包机剔除坏包',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pbjQty',
        title: '排包机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'shift',
        title: '班次',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'equNo',
        title: '设备',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('qa:packerData:edit') || !hasAuth('qa:packerData:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('qa:packerData:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('qa:packerData:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.time)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('qa:packerData:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.time)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.time)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('qa:packerData:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.time)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'time', getData);
ruoyi-plus-soybean/src/views/analy/packer/modules/packer-data-operate-drawer.vue
@@ -1,9 +1,9 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { jsonClone } from '~/packages/utils';
import { fetchCreatePackerData, fetchUpdatePackerData } from '@/service/api/analy/packer-data';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
import { jsonClone } from '~/packages/utils';
defineOptions({
  name: 'PackerDataOperateDrawer'
@@ -45,39 +45,34 @@
function createDefaultModel(): Model {
  return {
      time: null,
      key: '',
      online: null,
      qty: null,
      badQty: null,
      xiaohemoVal: null,
      tiaohemoVal: null,
      xiaohezhiVal: null,
      tiaohezhiVal: null,
      neichenzhiVal: null,
      runTime: null,
      stopTime: null,
      stopTimes: null,
      speed: null,
      runStatus: null,
      tsQty: null,
      mainQty: null,
      mainBadQty: null,
      tbjQty: null,
      tbjGdQty: null,
      tbjBadQty: null,
      pbjQty: null,
      shift: null,
      equNo: null
    time: null,
    key: '',
    online: null,
    qty: null,
    badQty: null,
    xiaohemoVal: null,
    tiaohemoVal: null,
    xiaohezhiVal: null,
    tiaohezhiVal: null,
    neichenzhiVal: null,
    runTime: null,
    stopTime: null,
    stopTimes: null,
    speed: null,
    runStatus: null,
    tsQty: null,
    mainQty: null,
    mainBadQty: null,
    tbjQty: null,
    tbjGdQty: null,
    tbjBadQty: null,
    pbjQty: null,
    shift: null,
    equNo: null
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'time'
  | 'shift'
  | 'equNo'
>;
type RuleKey = Extract<keyof Model, 'time' | 'shift' | 'equNo'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  time: createRequiredRule('时间不能为空'),
@@ -100,16 +95,91 @@
async function handleSubmit() {
  await validate();
  const { time, key, online, qty, badQty, xiaohemoVal, tiaohemoVal, xiaohezhiVal, tiaohezhiVal, neichenzhiVal, runTime, stopTime, stopTimes, speed, runStatus, tsQty, mainQty, mainBadQty, tbjQty, tbjGdQty, tbjBadQty, pbjQty, shift, equNo } = model.value;
  const {
    time,
    key,
    online,
    qty,
    badQty,
    xiaohemoVal,
    tiaohemoVal,
    xiaohezhiVal,
    tiaohezhiVal,
    neichenzhiVal,
    runTime,
    stopTime,
    stopTimes,
    speed,
    runStatus,
    tsQty,
    mainQty,
    mainBadQty,
    tbjQty,
    tbjGdQty,
    tbjBadQty,
    pbjQty,
    shift,
    equNo
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreatePackerData({ time, key, online, qty, badQty, xiaohemoVal, tiaohemoVal, xiaohezhiVal, tiaohezhiVal, neichenzhiVal, runTime, stopTime, stopTimes, speed, runStatus, tsQty, mainQty, mainBadQty, tbjQty, tbjGdQty, tbjBadQty, pbjQty, shift, equNo });
    const { error } = await fetchCreatePackerData({
      time,
      key,
      online,
      qty,
      badQty,
      xiaohemoVal,
      tiaohemoVal,
      xiaohezhiVal,
      tiaohezhiVal,
      neichenzhiVal,
      runTime,
      stopTime,
      stopTimes,
      speed,
      runStatus,
      tsQty,
      mainQty,
      mainBadQty,
      tbjQty,
      tbjGdQty,
      tbjBadQty,
      pbjQty,
      shift,
      equNo
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdatePackerData({ time, key, online, qty, badQty, xiaohemoVal, tiaohemoVal, xiaohezhiVal, tiaohezhiVal, neichenzhiVal, runTime, stopTime, stopTimes, speed, runStatus, tsQty, mainQty, mainBadQty, tbjQty, tbjGdQty, tbjBadQty, pbjQty, shift, equNo });
    const { error } = await fetchUpdatePackerData({
      time,
      key,
      online,
      qty,
      badQty,
      xiaohemoVal,
      tiaohemoVal,
      xiaohezhiVal,
      tiaohezhiVal,
      neichenzhiVal,
      runTime,
      stopTime,
      stopTimes,
      speed,
      runStatus,
      tsQty,
      mainQty,
      mainBadQty,
      tbjQty,
      tbjGdQty,
      tbjBadQty,
      pbjQty,
      shift,
      equNo
    });
    if (error) return;
  }
@@ -139,12 +209,7 @@
          />
        </NFormItem>
        <NFormItem label="key" path="key">
          <NInput
            v-model:value="model.key"
            :rows="3"
            type="textarea"
            placeholder="请输入key"
          />
          <NInput v-model:value="model.key" :rows="3" type="textarea" placeholder="请输入key" />
        </NFormItem>
        <NFormItem label="网络状态(0异常,1正常)" path="online">
          <NInput v-model:value="model.online" placeholder="请输入网络状态(0异常,1正常)" />
ruoyi-plus-soybean/src/views/analy/packer/modules/packer-data-search.vue
@@ -101,25 +101,15 @@
                type="datetimerange"
                value-format="yyyy-MM-dd HH:mm:ss"
                clearable
                @update:formatted-value="onTimeRangeUpdate"
                :default-time="['00:00:00', '23:59:59']"
                @update:formatted-value="onTimeRangeUpdate"
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="设备" path="equNo" class="pr-24px">
              <NSelect
                v-model:value="model.equNo"
                placeholder="请选择设备号"
                :options="equNoOptions"
                clearable
              />
              <NSelect v-model:value="model.equNo" placeholder="请选择设备号" :options="equNoOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="班次" path="shift" class="pr-24px">
              <NSelect
                v-model:value="model.shift"
                placeholder="请选择班次"
                :options="shiftOptions"
                clearable
              />
              <NSelect v-model:value="model.shift" placeholder="请选择班次" :options="shiftOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24" class="pr-24px">
              <NSpace class="w-full" justify="end">
ruoyi-plus-soybean/src/views/analy/roller/index.vue
@@ -15,7 +15,6 @@
  name: 'RollerDataList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -51,188 +50,188 @@
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetRollerDataList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetRollerDataList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'time',
      title: '时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'key',
      title: 'key',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'online',
      title: '网络状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'qty',
      title: '产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'badQty',
      title: '剔除产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'lvbangVal',
      title: '滤棒消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'juanyanzhiVal',
      title: '卷烟纸消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'shuisongzhiVal',
      title: '水松纸消耗',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'runTime',
      title: '运行时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'stopTime',
      title: '停机时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'stopTimes',
      title: '停机次数',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'speed',
      title: '车速',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'runStatus',
      title: '运行状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'cy',
      title: '储烟设备储量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'cyCs',
      title: '储烟设备车速',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'cyOnline',
      title: '储烟设备网络',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'recQty1',
      title: '接收机产量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'recQty2',
      title: '接收机产量2',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('qa:rollerData:edit') || !hasAuth('qa:rollerData:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'time',
        title: '时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'key',
        title: 'key',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'online',
        title: '网络状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'qty',
        title: '产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'badQty',
        title: '剔除产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'lvbangVal',
        title: '滤棒消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'juanyanzhiVal',
        title: '卷烟纸消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'shuisongzhiVal',
        title: '水松纸消耗',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'runTime',
        title: '运行时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'stopTime',
        title: '停机时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'stopTimes',
        title: '停机次数',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'speed',
        title: '车速',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'runStatus',
        title: '运行状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'cy',
        title: '储烟设备储量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'cyCs',
        title: '储烟设备车速',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'cyOnline',
        title: '储烟设备网络',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'recQty1',
        title: '接收机产量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'recQty2',
        title: '接收机产量2',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('qa:rollerData:edit') || !hasAuth('qa:rollerData:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('qa:rollerData:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('qa:rollerData:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.time)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('qa:rollerData:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.time)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.time)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('qa:rollerData:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.time)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'time', getData);
ruoyi-plus-soybean/src/views/analy/roller/modules/roller-data-operate-drawer.vue
@@ -1,9 +1,9 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { jsonClone } from '~/packages/utils';
import { fetchCreateRollerData, fetchUpdateRollerData } from '@/service/api/analy/roller-data';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
import { jsonClone } from '~/packages/utils';
defineOptions({
  name: 'RollerDataOperateDrawer'
@@ -45,36 +45,32 @@
function createDefaultModel(): Model {
  return {
      time: null,
      key: '',
      online: null,
      qty: null,
      badQty: null,
      lvbangVal: null,
      juanyanzhiVal: null,
      shuisongzhiVal: null,
      runTime: null,
      stopTime: null,
      stopTimes: null,
      speed: null,
      runStatus: null,
      cy: null,
      cyCs: null,
      cyOnline: '',
      recQty1: null,
      recQty2: null
    time: null,
    key: '',
    online: null,
    qty: null,
    badQty: null,
    lvbangVal: null,
    juanyanzhiVal: null,
    shuisongzhiVal: null,
    runTime: null,
    stopTime: null,
    stopTimes: null,
    speed: null,
    runStatus: null,
    cy: null,
    cyCs: null,
    cyOnline: '',
    recQty1: null,
    recQty2: null
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'time'
  | 'key'
>;
type RuleKey = Extract<keyof Model, 'time' | 'key'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  time: createRequiredRule('时间不能为空'),
  key: createRequiredRule('key不能为空'),
  key: createRequiredRule('key不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -92,16 +88,73 @@
async function handleSubmit() {
  await validate();
  const { time, key, online, qty, badQty, lvbangVal, juanyanzhiVal, shuisongzhiVal, runTime, stopTime, stopTimes, speed, runStatus, cy, cyCs, cyOnline, recQty1, recQty2 } = model.value;
  const {
    time,
    key,
    online,
    qty,
    badQty,
    lvbangVal,
    juanyanzhiVal,
    shuisongzhiVal,
    runTime,
    stopTime,
    stopTimes,
    speed,
    runStatus,
    cy,
    cyCs,
    cyOnline,
    recQty1,
    recQty2
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateRollerData({ time, key, online, qty, badQty, lvbangVal, juanyanzhiVal, shuisongzhiVal, runTime, stopTime, stopTimes, speed, runStatus, cy, cyCs, cyOnline, recQty1, recQty2 });
    const { error } = await fetchCreateRollerData({
      time,
      key,
      online,
      qty,
      badQty,
      lvbangVal,
      juanyanzhiVal,
      shuisongzhiVal,
      runTime,
      stopTime,
      stopTimes,
      speed,
      runStatus,
      cy,
      cyCs,
      cyOnline,
      recQty1,
      recQty2
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateRollerData({ time, key, online, qty, badQty, lvbangVal, juanyanzhiVal, shuisongzhiVal, runTime, stopTime, stopTimes, speed, runStatus, cy, cyCs, cyOnline, recQty1, recQty2 });
    const { error } = await fetchUpdateRollerData({
      time,
      key,
      online,
      qty,
      badQty,
      lvbangVal,
      juanyanzhiVal,
      shuisongzhiVal,
      runTime,
      stopTime,
      stopTimes,
      speed,
      runStatus,
      cy,
      cyCs,
      cyOnline,
      recQty1,
      recQty2
    });
    if (error) return;
  }
@@ -131,12 +184,7 @@
          />
        </NFormItem>
        <NFormItem label="key" path="key">
          <NInput
            v-model:value="model.key"
            :rows="3"
            type="textarea"
            placeholder="请输入key"
          />
          <NInput v-model:value="model.key" :rows="3" type="textarea" placeholder="请输入key" />
        </NFormItem>
        <NFormItem label="网络状态" path="online">
          <NInputNumber v-model:value="model.online" placeholder="请输入网络状态" class="w-full" />
@@ -182,12 +230,7 @@
          <NInputNumber v-model:value="model.cyCs" placeholder="请输入储烟设备车速" class="w-full" />
        </NFormItem>
        <NFormItem label="储烟设备网络" path="cyOnline">
          <NInput
            v-model:value="model.cyOnline"
            :rows="3"
            type="textarea"
            placeholder="请输入储烟设备网络"
          />
          <NInput v-model:value="model.cyOnline" :rows="3" type="textarea" placeholder="请输入储烟设备网络" />
        </NFormItem>
        <NFormItem label="接收机产量" path="recQty1">
          <NInputNumber v-model:value="model.recQty1" placeholder="请输入接收机产量" class="w-full" />
ruoyi-plus-soybean/src/views/analy/roller/modules/roller-data-search.vue
@@ -101,25 +101,15 @@
                type="datetimerange"
                value-format="yyyy-MM-dd HH:mm:ss"
                clearable
                @update:formatted-value="onTimeRangeUpdate"
                :default-time="['00:00:00', '23:59:59']"
                @update:formatted-value="onTimeRangeUpdate"
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="设备" path="equNo" class="pr-24px">
              <NSelect
                v-model:value="model.equNo"
                placeholder="请选择设备号"
                :options="equNoOptions"
                clearable
              />
              <NSelect v-model:value="model.equNo" placeholder="请选择设备号" :options="equNoOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:8" label="班次" path="shift" class="pr-24px">
              <NSelect
                v-model:value="model.shift"
                placeholder="请选择班次"
                :options="shiftOptions"
                clearable
              />
              <NSelect v-model:value="model.shift" placeholder="请选择班次" :options="shiftOptions" clearable />
            </NFormItemGi>
            <NFormItemGi span="24" class="pr-24px">
              <NSpace class="w-full" justify="end">
ruoyi-plus-soybean/src/views/analy/store-silk/index.vue
@@ -15,7 +15,6 @@
  name: 'StoreSilkList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -40,141 +39,141 @@
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetStoreSilkList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetStoreSilkList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'materialname',
      title: '牌号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'batchcode',
      title: '批次号',
      align: 'center',
      minWidth: 130
    },
    {
      key: 'roller',
      title: '卷接产量',
      align: 'center',
      minWidth: 100
    },
    {
      key: 'packer',
      title: '包装产量',
      align: 'center',
      minWidth: 100
    },
    {
      key: 'actualstarttime',
      title: '投料日期',
      align: 'center',
      width: 180
    },
    {
      key: 'jobinput',
      title: '投料重量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'weight',
      title: '储丝柜重量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'distimebegin',
      title: '储丝柜出料开始时间',
      align: 'center',
      width: 180
    },
    {
      key: 'distimeend',
      title: '储丝柜出料结束时间',
      align: 'center',
      width: 180
    },
    {
      key: 'siloid',
      title: '柜子号(末位)',
      align: 'center',
      width: 160
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      fixed: 'right',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('analy:storeSilk:edit') || !hasAuth('analy:storeSilk:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'materialname',
        title: '牌号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'batchcode',
        title: '批次号',
        align: 'center',
        minWidth: 130
      },
      {
        key: 'roller',
        title: '卷接产量',
        align: 'center',
        minWidth: 100
      },
      {
        key: 'packer',
        title: '包装产量',
        align: 'center',
        minWidth: 100
      },
      {
        key: 'actualstarttime',
        title: '投料日期',
        align: 'center',
        width: 180
      },
      {
        key: 'jobinput',
        title: '投料重量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'weight',
        title: '储丝柜重量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'distimebegin',
        title: '储丝柜出料开始时间',
        align: 'center',
        width: 180
      },
      {
        key: 'distimeend',
        title: '储丝柜出料结束时间',
        align: 'center',
        width: 180
      },
      {
        key: 'siloid',
        title: '柜子号(末位)',
        align: 'center',
        width: 160
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        fixed: 'right',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('analy:storeSilk:edit') || !hasAuth('analy:storeSilk:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('analy:storeSilk:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('analy:storeSilk:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.id)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('analy:storeSilk:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.id)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.id)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('analy:storeSilk:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.id)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'id', getData);
@@ -252,7 +251,8 @@
        remote
        :row-key="row => row.id"
        :pagination="mobilePagination"
        :class="['sm:h-full', tableSize === 'tiny' ? 'table-size-mini' : '']"
        class="sm:h-full"
        :class="[tableSize === 'tiny' ? 'table-size-mini' : '']"
      />
      <StoreSilkOperateDrawer
        v-model:visible="drawerVisible"
ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-operate-drawer.vue
@@ -45,31 +45,26 @@
function createDefaultModel(): Model {
  return {
      id: null,
      materialname: '',
      batchcode: '',
      actualstarttime: null,
      jobinput: null,
      weightloss: null,
      slkrate: null,
      weight: null,
      distimebegin: null,
      distimeend: null,
      siloid: ''
    id: null,
    materialname: '',
    batchcode: '',
    actualstarttime: null,
    jobinput: null,
    weightloss: null,
    slkrate: null,
    weight: null,
    distimebegin: null,
    distimeend: null,
    siloid: ''
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'id'
  | 'materialname'
  | 'batchcode'
>;
type RuleKey = Extract<keyof Model, 'id' | 'materialname' | 'batchcode'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  id: createRequiredRule('id不能为空'),
  materialname: createRequiredRule('牌号不能为空'),
  batchcode: createRequiredRule('批次号不能为空'),
  batchcode: createRequiredRule('批次号不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -87,16 +82,51 @@
async function handleSubmit() {
  await validate();
  const { id, materialname, batchcode, actualstarttime, jobinput, weightloss, slkrate, weight, distimebegin, distimeend, siloid } = model.value;
  const {
    id,
    materialname,
    batchcode,
    actualstarttime,
    jobinput,
    weightloss,
    slkrate,
    weight,
    distimebegin,
    distimeend,
    siloid
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateStoreSilk({ materialname, batchcode, actualstarttime, jobinput, weightloss, slkrate, weight, distimebegin, distimeend, siloid });
    const { error } = await fetchCreateStoreSilk({
      materialname,
      batchcode,
      actualstarttime,
      jobinput,
      weightloss,
      slkrate,
      weight,
      distimebegin,
      distimeend,
      siloid
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateStoreSilk({ id, materialname, batchcode, actualstarttime, jobinput, weightloss, slkrate, weight, distimebegin, distimeend, siloid });
    const { error } = await fetchUpdateStoreSilk({
      id,
      materialname,
      batchcode,
      actualstarttime,
      jobinput,
      weightloss,
      slkrate,
      weight,
      distimebegin,
      distimeend,
      siloid
    });
    if (error) return;
  }
ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue
@@ -1,5 +1,6 @@
<script setup lang="ts">
import { toRaw } from 'vue';
import { onMounted, ref, toRaw, watch } from 'vue';
import dayjs from 'dayjs';
import { jsonClone } from '@sa/utils';
import { useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
@@ -24,9 +25,50 @@
  Object.assign(model.value, defaultModel);
}
function getDefaultRange(): [string, string] {
  const end = dayjs().format('YYYY-MM-DD');
  const start = dayjs().subtract(3, 'day').format('YYYY-MM-DD');
  return [start, end];
}
const dateRange = ref<[string, string]>(getDefaultRange());
function isDateDisabled(ts: number) {
  const min = dayjs().subtract(3, 'day').startOf('day').valueOf();
  const max = dayjs().endOf('day').valueOf();
  return ts < min || ts > max;
}
onMounted(() => {
  if (!model.value.distimebegin || !model.value.distimeend) {
    dateRange.value = getDefaultRange();
    model.value.distimebegin = dateRange.value[0];
    model.value.distimeend = dateRange.value[1];
  } else {
    dateRange.value = [model.value.distimebegin as string, model.value.distimeend as string];
  }
});
watch(
  dateRange,
  val => {
    if (val && val[0] && val[1]) {
      model.value.distimebegin = val[0];
      model.value.distimeend = val[1];
    } else {
      model.value.distimebegin = null;
      model.value.distimeend = null;
    }
  },
  { deep: true }
);
async function reset() {
  await restoreValidation();
  resetModel();
  dateRange.value = getDefaultRange();
  model.value.distimebegin = dateRange.value[0];
  model.value.distimeend = dateRange.value[1];
  emit('search');
}
@@ -42,13 +84,25 @@
      <NCollapseItem :title="$t('common.search')" name="analy-store-silk-search">
        <NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
          <NGrid responsive="screen" item-responsive>
            <NFormItemGi span="24 s:12 m:6" label="牌号" label-width="auto" path="materialname" class="pr-24px">
            <NFormItemGi
              span="24 s:12 m:8 l:8 xl:8"
              label="牌号"
              label-width="auto"
              path="materialname"
              class="pr-24px"
            >
              <NInput v-model:value="model.materialname" placeholder="请输入牌号" />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="批次号" label-width="auto" path="batchcode" class="pr-24px">
            <NFormItemGi span="24 s:12 m:8 l:8 xl:8" label="批次号" label-width="auto" path="batchcode" class="pr-24px">
              <NInput v-model:value="model.batchcode" placeholder="请输入批次号" />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="投料日期" label-width="auto" path="actualstarttime" class="pr-24px">
            <NFormItemGi
              span="24 s:12 m:8 l:8 xl:8"
              label="投料日期"
              label-width="auto"
              path="actualstarttime"
              class="pr-24px"
            >
              <NDatePicker
                v-model:formatted-value="model.actualstarttime"
                type="datetime"
@@ -56,23 +110,28 @@
                clearable
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="储丝柜出料开始时间" label-width="auto" path="distimebegin" class="pr-24px">
            <NFormItemGi
              span="24 s:12 m:8 l:8 xl:8"
              label="出料时间"
              label-width="auto"
              path="distimebegin"
              class="pr-24px"
            >
              <NDatePicker
                v-model:formatted-value="model.distimebegin"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                v-model:formatted-value="dateRange"
                type="daterange"
                value-format="yyyy-MM-dd"
                clearable
                :is-date-disabled="isDateDisabled"
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="储丝柜出料结束时间" label-width="auto" path="distimeend" class="pr-24px">
              <NDatePicker
                v-model:formatted-value="model.distimeend"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                clearable
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="柜子号(末位)" label-width="auto" path="siloid" class="pr-24px">
            <NFormItemGi
              span="24 s:12 m:8 l:8 xl:8"
              label="柜子号(末位)"
              label-width="auto"
              path="siloid"
              class="pr-24px"
            >
              <NInput v-model:value="model.siloid" placeholder="请输入柜子号(末位)" />
            </NFormItemGi>
            <NFormItemGi :show-feedback="false" span="24" class="pr-24px">
ruoyi-plus-soybean/src/views/md/shift/index.vue
@@ -15,7 +15,6 @@
  name: 'ShiftList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -31,158 +30,158 @@
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetShiftList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetShiftList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'id',
      title: 'id',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'wsId',
      title: '车间外键',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'code',
      title: '编码',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'name',
      title: '名称',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'stim',
      title: '班次开始时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'etim',
      title: '班次结束时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'seq',
      title: '排序',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'enable',
      title: '启用',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'del',
      title: '删除',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'createUserName',
      title: '创建用户',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'createUserTime',
      title: '创建时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'updateUserName',
      title: '更新用户',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'updateUserTime',
      title: '更新时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('md:shift:edit') || !hasAuth('md:shift:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'id',
        title: 'id',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'wsId',
        title: '车间外键',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'code',
        title: '编码',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'name',
        title: '名称',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'stim',
        title: '班次开始时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'etim',
        title: '班次结束时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'seq',
        title: '排序',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'enable',
        title: '启用',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'del',
        title: '删除',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'createUserName',
        title: '创建用户',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'createUserTime',
        title: '创建时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'updateUserName',
        title: '更新用户',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'updateUserTime',
        title: '更新时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('md:shift:edit') || !hasAuth('md:shift:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('md:shift:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('md:shift:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.id)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('md:shift:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.id)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.id)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('md:shift:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.id)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'id', getData);
ruoyi-plus-soybean/src/views/md/shift/modules/shift-operate-drawer.vue
@@ -45,29 +45,26 @@
function createDefaultModel(): Model {
  return {
      id: '',
      wsId: '',
      code: '',
      name: '',
      stim: '',
      etim: '',
      seq: null,
      enable: null,
      del: null,
      createUserName: '',
      createUserTime: null,
      updateUserName: '',
      updateUserTime: null
    id: '',
    wsId: '',
    code: '',
    name: '',
    stim: '',
    etim: '',
    seq: null,
    enable: null,
    del: null,
    createUserName: '',
    createUserTime: null,
    updateUserName: '',
    updateUserTime: null
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'id'
>;
type RuleKey = Extract<keyof Model, 'id'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  id: createRequiredRule('ud不能为空'),
  id: createRequiredRule('ud不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -85,16 +82,57 @@
async function handleSubmit() {
  await validate();
  const { id, wsId, code, name, stim, etim, seq, enable, del, createUserName, createUserTime, updateUserName, updateUserTime } = model.value;
  const {
    id,
    wsId,
    code,
    name,
    stim,
    etim,
    seq,
    enable,
    del,
    createUserName,
    createUserTime,
    updateUserName,
    updateUserTime
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateShift({ wsId, code, name, stim, etim, seq, enable, del, createUserName, createUserTime, updateUserName, updateUserTime });
    const { error } = await fetchCreateShift({
      wsId,
      code,
      name,
      stim,
      etim,
      seq,
      enable,
      del,
      createUserName,
      createUserTime,
      updateUserName,
      updateUserTime
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateShift({ id, wsId, code, name, stim, etim, seq, enable, del, createUserName, createUserTime, updateUserName, updateUserTime });
    const { error } = await fetchUpdateShift({
      id,
      wsId,
      code,
      name,
      stim,
      etim,
      seq,
      enable,
      del,
      createUserName,
      createUserTime,
      updateUserName,
      updateUserTime
    });
    if (error) return;
  }
ruoyi-plus-soybean/src/views/qm/batch/index.vue
@@ -15,7 +15,6 @@
  name: 'BatchList'
});
const appStore = useAppStore();
const { download } = useDownload();
const { hasAuth } = useAuth();
@@ -44,365 +43,365 @@
const { columns, columnChecks, data, getData, getDataByPage, loading, mobilePagination, scrollX } =
  useNaivePaginatedTable({
  api: () => fetchGetBatchList(searchParams.value),
  transform: response => defaultTransform(response),
  onPaginationParamsChange: params => {
    searchParams.value.pageNum = params.page;
    searchParams.value.pageSize = params.pageSize;
  },
  columns: () => [
    {
      type: 'selection',
      align: 'center',
      width: 48
    api: () => fetchGetBatchList(searchParams.value),
    transform: response => defaultTransform(response),
    onPaginationParamsChange: params => {
      searchParams.value.pageNum = params.page;
      searchParams.value.pageSize = params.pageSize;
    },
    {
      key: 'index',
      title: $t('common.index'),
      align: 'center',
      width: 64,
      render: (_, index) => index + 1
    },
    {
      key: 'id',
      title: '编码',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'batchCode',
      title: '批次代码',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'batchName',
      title: '批次名称',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'typ',
      title: '类型',
      align: 'center',
      minWidth: 120,
      render: row => TYP_MAP[row.typ] ?? row.typ
    },
    {
      key: 'eqpCode',
      title: '机台代码',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'matCode',
      title: '牌号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'judgeCode',
      title: '判定依据代码',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'batchDate',
      title: '批次生成日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'isflag',
      title: '使用标志',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'enabled',
      title: '启用标志',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'totalNum',
      title: '到货总量',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'results',
      title: '综合判定',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'approver',
      title: '批准人',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'auditor',
      title: '审核人',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'creater',
      title: '创建人',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'tabDate',
      title: '制表日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'verName',
      title: '版本名称',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'verCode',
      title: '版本编号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'archDate',
      title: '保存期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'flag',
      title: '反馈MES',
      align: 'center',
      minWidth: 120,
      render: row => FLAG_MAP[String(row.flag)] ?? row.flag
    },
    {
      key: 'toMesDate',
      title: '上传MES时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'fromMesDate',
      title: '从MES时间下载',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'deleted',
      title: '删除标志',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'batchDes',
      title: '批次描述',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'category',
      title: '类别',
      align: 'center',
      minWidth: 120,
      render: row => CATEGORY_MAP[String(row.category)] ?? row.category
    },
    {
      key: 'makeno',
      title: '卷制工号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'shifteqpno',
      title: '班次机号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'boxno',
      title: '装箱号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'pid',
      title: '父批次号',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'reviewer',
      title: '复核人',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'rvcount',
      title: '复检次数',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'state',
      title: '批次状态',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'reviewTime',
      title: '复核日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'auditTime',
      title: '审核日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'spec',
      title: '规格',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'approveTime',
      title: '批准时间',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'unit',
      title: '到货单位',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'arrivalTime',
      title: '到货日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'storagePlace',
      title: '存放地点',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'checker',
      title: '检验员',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'receiveTime',
      title: '接单日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'inspTime',
      title: '报检日期',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'storer',
      title: '仓库保管员',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'isverify',
      title: '是否验证',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'ischk',
      title: '是否检验',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'bak1',
      title: '备用1',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'bak2',
      title: '备用2',
      align: 'center',
      minWidth: 120
    },
    {
      key: 'operate',
      title: $t('common.operate'),
      align: 'center',
      width: 130,
      render: row => {
        const divider = () => {
          if (!hasAuth('qm:batch:edit') || !hasAuth('qm:batch:remove')) {
            return null;
          }
          return <NDivider vertical />;
        };
    columns: () => [
      {
        type: 'selection',
        align: 'center',
        width: 48
      },
      {
        key: 'index',
        title: $t('common.index'),
        align: 'center',
        width: 64,
        render: (_, index) => index + 1
      },
      {
        key: 'id',
        title: '编码',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'batchCode',
        title: '批次代码',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'batchName',
        title: '批次名称',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'typ',
        title: '类型',
        align: 'center',
        minWidth: 120,
        render: row => TYP_MAP[row.typ] ?? row.typ
      },
      {
        key: 'eqpCode',
        title: '机台代码',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'matCode',
        title: '牌号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'judgeCode',
        title: '判定依据代码',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'batchDate',
        title: '批次生成日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'isflag',
        title: '使用标志',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'enabled',
        title: '启用标志',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'totalNum',
        title: '到货总量',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'results',
        title: '综合判定',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'approver',
        title: '批准人',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'auditor',
        title: '审核人',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'creater',
        title: '创建人',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'tabDate',
        title: '制表日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'verName',
        title: '版本名称',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'verCode',
        title: '版本编号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'archDate',
        title: '保存期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'flag',
        title: '反馈MES',
        align: 'center',
        minWidth: 120,
        render: row => FLAG_MAP[String(row.flag)] ?? row.flag
      },
      {
        key: 'toMesDate',
        title: '上传MES时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'fromMesDate',
        title: '从MES时间下载',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'deleted',
        title: '删除标志',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'batchDes',
        title: '批次描述',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'category',
        title: '类别',
        align: 'center',
        minWidth: 120,
        render: row => CATEGORY_MAP[String(row.category)] ?? row.category
      },
      {
        key: 'makeno',
        title: '卷制工号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'shifteqpno',
        title: '班次机号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'boxno',
        title: '装箱号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'pid',
        title: '父批次号',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'reviewer',
        title: '复核人',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'rvcount',
        title: '复检次数',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'state',
        title: '批次状态',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'reviewTime',
        title: '复核日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'auditTime',
        title: '审核日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'spec',
        title: '规格',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'approveTime',
        title: '批准时间',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'unit',
        title: '到货单位',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'arrivalTime',
        title: '到货日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'storagePlace',
        title: '存放地点',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'checker',
        title: '检验员',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'receiveTime',
        title: '接单日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'inspTime',
        title: '报检日期',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'storer',
        title: '仓库保管员',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'isverify',
        title: '是否验证',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'ischk',
        title: '是否检验',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'bak1',
        title: '备用1',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'bak2',
        title: '备用2',
        align: 'center',
        minWidth: 120
      },
      {
        key: 'operate',
        title: $t('common.operate'),
        align: 'center',
        width: 130,
        render: row => {
          const divider = () => {
            if (!hasAuth('qm:batch:edit') || !hasAuth('qm:batch:remove')) {
              return null;
            }
            return <NDivider vertical />;
          };
        const editBtn = () => {
          if (!hasAuth('qm:batch:edit')) {
            return null;
          }
          const editBtn = () => {
            if (!hasAuth('qm:batch:edit')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="primary"
                icon="material-symbols:drive-file-rename-outline-outline"
                tooltipContent={$t('common.edit')}
                onClick={() => edit(row.id)}
              />
            );
          };
          const deleteBtn = () => {
            if (!hasAuth('qm:batch:remove')) {
              return null;
            }
            return (
              <ButtonIcon
                text
                type="error"
                icon="material-symbols:delete-outline"
                tooltipContent={$t('common.delete')}
                popconfirmContent={$t('common.confirmDelete')}
                onPositiveClick={() => handleDelete(row.id)}
              />
            );
          };
          return (
            <ButtonIcon
              text
              type="primary"
              icon="material-symbols:drive-file-rename-outline-outline"
              tooltipContent={$t('common.edit')}
              onClick={() => edit(row.id)}
            />
            <div class="flex-center gap-8px">
              {editBtn()}
              {divider()}
              {deleteBtn()}
            </div>
          );
        };
        const deleteBtn = () => {
          if (!hasAuth('qm:batch:remove')) {
            return null;
          }
          return (
            <ButtonIcon
              text
              type="error"
              icon="material-symbols:delete-outline"
              tooltipContent={$t('common.delete')}
              popconfirmContent={$t('common.confirmDelete')}
              onPositiveClick={() => handleDelete(row.id)}
            />
          );
        };
        return (
          <div class="flex-center gap-8px">
            {editBtn()}
            {divider()}
            {deleteBtn()}
          </div>
        );
        }
      }
    }
  ]
});
    ]
  });
const { drawerVisible, operateType, editingData, handleAdd, handleEdit, checkedRowKeys, onBatchDeleted, onDeleted } =
  useTableOperate(data, 'id', getData);
ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue
@@ -67,63 +67,60 @@
function createDefaultModel(): Model {
  return {
      id: '',
      batchCode: '',
      batchName: '',
      typ: '',
      eqpCode: '',
      matCode: '',
      judgeCode: '',
      batchDate: null,
      isflag: '',
      enabled: '',
      totalNum: null,
      results: '',
      approver: '',
      auditor: '',
      creater: '',
      tabDate: null,
      verName: '',
      verCode: '',
      archDate: '',
      flag: '',
      toMesDate: null,
      fromMesDate: null,
      deleted: null,
      batchDes: '',
      category: '',
      makeno: '',
      shifteqpno: '',
      boxno: '',
      pid: '',
      reviewer: '',
      rvcount: null,
      state: '',
      reviewTime: null,
      auditTime: null,
      spec: '',
      approveTime: null,
      unit: '',
      arrivalTime: null,
      storagePlace: '',
      checker: '',
      receiveTime: null,
      inspTime: null,
      storer: '',
      isverify: '',
      ischk: '',
      bak1: '',
      bak2: ''
    id: '',
    batchCode: '',
    batchName: '',
    typ: '',
    eqpCode: '',
    matCode: '',
    judgeCode: '',
    batchDate: null,
    isflag: '',
    enabled: '',
    totalNum: null,
    results: '',
    approver: '',
    auditor: '',
    creater: '',
    tabDate: null,
    verName: '',
    verCode: '',
    archDate: '',
    flag: '',
    toMesDate: null,
    fromMesDate: null,
    deleted: null,
    batchDes: '',
    category: '',
    makeno: '',
    shifteqpno: '',
    boxno: '',
    pid: '',
    reviewer: '',
    rvcount: null,
    state: '',
    reviewTime: null,
    auditTime: null,
    spec: '',
    approveTime: null,
    unit: '',
    arrivalTime: null,
    storagePlace: '',
    checker: '',
    receiveTime: null,
    inspTime: null,
    storer: '',
    isverify: '',
    ischk: '',
    bak1: '',
    bak2: ''
  };
}
type RuleKey = Extract<
  keyof Model,
  | 'id'
>;
type RuleKey = Extract<keyof Model, 'id'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  id: createRequiredRule('编码不能为空'),
  id: createRequiredRule('编码不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -141,16 +138,159 @@
async function handleSubmit() {
  await validate();
  const { id, batchCode, batchName, typ, eqpCode, matCode, judgeCode, batchDate, isflag, enabled, totalNum, results, approver, auditor, creater, tabDate, verName, verCode, archDate, flag, toMesDate, fromMesDate, deleted, batchDes, category, makeno, shifteqpno, boxno, pid, reviewer, rvcount, state, reviewTime, auditTime, spec, approveTime, unit, arrivalTime, storagePlace, checker, receiveTime, inspTime, storer, isverify, ischk, bak1, bak2 } = model.value;
  const {
    id,
    batchCode,
    batchName,
    typ,
    eqpCode,
    matCode,
    judgeCode,
    batchDate,
    isflag,
    enabled,
    totalNum,
    results,
    approver,
    auditor,
    creater,
    tabDate,
    verName,
    verCode,
    archDate,
    flag,
    toMesDate,
    fromMesDate,
    deleted,
    batchDes,
    category,
    makeno,
    shifteqpno,
    boxno,
    pid,
    reviewer,
    rvcount,
    state,
    reviewTime,
    auditTime,
    spec,
    approveTime,
    unit,
    arrivalTime,
    storagePlace,
    checker,
    receiveTime,
    inspTime,
    storer,
    isverify,
    ischk,
    bak1,
    bak2
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateBatch({ batchCode, batchName, typ, eqpCode, matCode, judgeCode, batchDate, isflag, enabled, totalNum, results, approver, auditor, creater, tabDate, verName, verCode, archDate, flag, toMesDate, fromMesDate, deleted, batchDes, category, makeno, shifteqpno, boxno, pid, reviewer, rvcount, state, reviewTime, auditTime, spec, approveTime, unit, arrivalTime, storagePlace, checker, receiveTime, inspTime, storer, isverify, ischk, bak1, bak2 });
    const { error } = await fetchCreateBatch({
      batchCode,
      batchName,
      typ,
      eqpCode,
      matCode,
      judgeCode,
      batchDate,
      isflag,
      enabled,
      totalNum,
      results,
      approver,
      auditor,
      creater,
      tabDate,
      verName,
      verCode,
      archDate,
      flag,
      toMesDate,
      fromMesDate,
      deleted,
      batchDes,
      category,
      makeno,
      shifteqpno,
      boxno,
      pid,
      reviewer,
      rvcount,
      state,
      reviewTime,
      auditTime,
      spec,
      approveTime,
      unit,
      arrivalTime,
      storagePlace,
      checker,
      receiveTime,
      inspTime,
      storer,
      isverify,
      ischk,
      bak1,
      bak2
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateBatch({ id, batchCode, batchName, typ, eqpCode, matCode, judgeCode, batchDate, isflag, enabled, totalNum, results, approver, auditor, creater, tabDate, verName, verCode, archDate, flag, toMesDate, fromMesDate, deleted, batchDes, category, makeno, shifteqpno, boxno, pid, reviewer, rvcount, state, reviewTime, auditTime, spec, approveTime, unit, arrivalTime, storagePlace, checker, receiveTime, inspTime, storer, isverify, ischk, bak1, bak2 });
    const { error } = await fetchUpdateBatch({
      id,
      batchCode,
      batchName,
      typ,
      eqpCode,
      matCode,
      judgeCode,
      batchDate,
      isflag,
      enabled,
      totalNum,
      results,
      approver,
      auditor,
      creater,
      tabDate,
      verName,
      verCode,
      archDate,
      flag,
      toMesDate,
      fromMesDate,
      deleted,
      batchDes,
      category,
      makeno,
      shifteqpno,
      boxno,
      pid,
      reviewer,
      rvcount,
      state,
      reviewTime,
      auditTime,
      spec,
      approveTime,
      unit,
      arrivalTime,
      storagePlace,
      checker,
      receiveTime,
      inspTime,
      storer,
      isverify,
      ischk,
      bak1,
      bak2
    });
    if (error) return;
  }