From 552e787fbf4c15a7a8739f260f7a2db2d05cca2e Mon Sep 17 00:00:00 2001 From: z Date: Thu, 10 Jul 2025 15:12:02 +0800 Subject: [PATCH 01/34] =?UTF-8?q?=E5=BE=85=E5=8A=9E=E5=85=B3=E6=B3=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bdgzsomthing/bdgzsomthingController.java | 6 +-- .../PurchaseOrderNoDetailServiceImpl.java | 49 ++++++++++--------- .../storagein/StorageInServiceImpl.java | 31 ++++++------ mes-ui/mes-ui-admin-vue3/.env.pro | 8 +-- .../src/views/heli/storage/StorageForm.vue | 6 +-- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 5b10088..4551002 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -159,9 +159,9 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { -// selectHasPrice(); -// selectSafeStorageAndDeliverOneYear(); -// bdgzsomthingService.selectds(); + selectHasPrice(); + selectSafeStorageAndDeliverOneYear(); + bdgzsomthingService.selectds(); } @Scheduled(cron = "0 0 2 * * ?") public void selectHasPrice(){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java index 6aca62c..88d873e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java @@ -284,26 +284,27 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(PurchaseOrderNoDetailDO::getId,idList); List purchaseOrderNoDetailDOS = purchaseOrderNoDetailMapper.selectList(lambdaQueryWrapper); - List ids = purchaseOrderNoDetailDOS.stream() - .filter(Objects::nonNull) // 过滤空对象 - .map(PurchaseOrderNoDetailDO::getPurchaseOrderId) - .filter(Objects::nonNull) // 过滤空ID - .collect(Collectors.toList()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(PurchaseOrderNoDO::getId,ids); - List purchaseOrderNoDOS = purchaseOrderNoMapper.selectList(queryWrapper); - for (PurchaseOrderNoDO purchaseOrderNoDO : purchaseOrderNoDOS) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId, purchaseOrderNoDO.getId()); - List lists = purchaseOrderNoDetailMapper.selectList(wrapper); - // 方法1:使用 Stream API(最简洁) - boolean allStatus3 = lists != null && - !lists.isEmpty() && - lists.stream() - .allMatch(detail -> detail.getReceivingStatus()==3); - if (allStatus3) { - //采购订单收货完成 - List attentiontodook = attentiontodoMapper.selectByIdlist(10);//查找该类型的待办和关注人 改 +// List ids = purchaseOrderNoDetailDOS.stream() +// .filter(Objects::nonNull) // 过滤空对象 +// .map(PurchaseOrderNoDetailDO::getPurchaseOrderId) +// .filter(Objects::nonNull) // 过滤空ID +// .collect(Collectors.toList()); +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.in(PurchaseOrderNoDO::getId,ids); +// List purchaseOrderNoDOS = purchaseOrderNoMapper.selectList(queryWrapper); +// for (PurchaseOrderNoDO purchaseOrderNoDO : purchaseOrderNoDOS) { +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId, purchaseOrderNoDO.getId()); +// List lists = purchaseOrderNoDetailMapper.selectList(wrapper); +// // 方法1:使用 Stream API(最简洁) +// boolean allStatus3 = lists != null && +// !lists.isEmpty() && +// lists.stream() +// .allMatch(detail -> detail.getReceivingStatus()==3); +// if (allStatus3) { + for (PurchaseOrderNoDetailDO purchaseOrderNoDetailDO : purchaseOrderNoDetailDOS) { + PurchaseOrderNoDO purchaseOrderNoDO = purchaseOrderNoMapper.selectById(purchaseOrderNoDetailDO.getPurchaseOrderId()); + List attentiontodook = attentiontodoMapper.selectByIdlist(10);//查找该类型的待办和关注人 改 String nickname = userApi.getUser(SecurityFrameworkUtils.getLoginUser().getId()).getNickname(); List attentiontodook1 = attentiontodoService.getAttentiontodolistdaiban(10); @@ -323,7 +324,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe for (AttentiontodoDO attentiontodoRespVO : attentiontodook) { - { + // for (StorageLogNowDO storageLogNowDO : pageResult) { bdgzsomthingDO BdgzsomthingDO = new bdgzsomthingDO(); BdgzsomthingDO.setThingname(attentiontodoRespVO.getEvent());//事件名称 @@ -361,10 +362,10 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe // BdgzsomthingDO.setShowname(operateReqVO.getCreateTime());//获取数据当前表的创建事件 改 bdgzsomthingMapper.insert(BdgzsomthingDO); - // } - } +// } } - } +// } +// } } return success(true); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java index 66b9fb3..a0bae8c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagein/StorageInServiceImpl.java @@ -363,17 +363,20 @@ public class StorageInServiceImpl implements StorageInService { queryWrapper.in(PurchaseOrderNoDO::getId,ids); List purchaseOrderNoDOS = purchaseOrderNoMapper.selectList(queryWrapper); - for (PurchaseOrderNoDO purchaseOrderNoDO : purchaseOrderNoDOS) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId,purchaseOrderNoDO.getId()); - List lists = purchaseOrderNoDetailMapper.selectList(wrapper); - // 方法1:使用 Stream API(最简洁) - boolean allStatus3 = lists != null && - !lists.isEmpty() && - lists.stream() - .allMatch(detail -> detail.getReceivingStatus()==3); - if (allStatus3){ - //采购订单收货完成 +// for (PurchaseOrderNoDO purchaseOrderNoDO : purchaseOrderNoDOS) { +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId,purchaseOrderNoDO.getId()); +// List lists = purchaseOrderNoDetailMapper.selectList(wrapper); +// // 方法1:使用 Stream API(最简洁) +// boolean allStatus3 = lists != null && +// !lists.isEmpty() && +// lists.stream() +// .allMatch(detail -> detail.getReceivingStatus()==3); +// if (allStatus3){ + for (PurchaseOrderNoDetailDO purchaseOrderNoDetailDO : purchaseOrderNoDetailDOS) { + PurchaseOrderNoDO purchaseOrderNoDO = purchaseOrderNoMapper.selectById(purchaseOrderNoDetailDO.getPurchaseOrderId()); + + //采购订单收货完成 List attentiontodook = attentiontodoMapper.selectByIdlist(10);//查找该类型的待办和关注人 改 String nickname = userApi.getUser( SecurityFrameworkUtils.getLoginUser().getId()).getNickname(); @@ -395,7 +398,6 @@ public class StorageInServiceImpl implements StorageInService { for (AttentiontodoDO attentiontodoRespVO : attentiontodook) { - { // for (StorageLogNowDO storageLogNowDO : pageResult) { bdgzsomthingDO BdgzsomthingDO = new bdgzsomthingDO(); BdgzsomthingDO.setThingname(attentiontodoRespVO.getEvent());//事件名称 @@ -416,7 +418,6 @@ public class StorageInServiceImpl implements StorageInService { if (ObjectUtil.isNotEmpty(user)){ BdgzsomthingDO.setClick(user.getNickname()); } - }else { BdgzsomthingDO.setClick(attentiontodoRespVO.getAttr4()); }//提醒人 @@ -437,10 +438,8 @@ public class StorageInServiceImpl implements StorageInService { bdgzsomthingMapper.insert(BdgzsomthingDO); // } - } - } - } + } } return CommonResult.success(true); } diff --git a/mes-ui/mes-ui-admin-vue3/.env.pro b/mes-ui/mes-ui-admin-vue3/.env.pro index 25b00ee..a909bd4 100644 --- a/mes-ui/mes-ui-admin-vue3/.env.pro +++ b/mes-ui/mes-ui-admin-vue3/.env.pro @@ -3,15 +3,15 @@ NODE_ENV=production VITE_DEV=false -# 请求路径https://nxhs.cjyx.cc/admin-api http://192.168.1.87:8080 -VITE_BASE_URL='http://192.168.1.87:8080' +# 请求路径https://nxhs.cjyx.cc/admin-api http://192.168.1.87:8080 https://star.hz-hl.com +VITE_BASE_URL='https://star.hz-hl.com' # 上传路径 http://218.75.46.166:8080 -VITE_UPLOAD_URL='http://192.168.1.87:8080/admin-api/infra/file/upload' +VITE_UPLOAD_URL='https://star.hz-hl.com/admin-api/infra/file/upload' # 上传路径 -VITE_UPLOAD_BATCH_URL='http://192.168.1.87:8080/admin-api/infra/file/uploadBatch' +VITE_UPLOAD_BATCH_URL='https://star.hz-hl.com/admin-api/infra/file/uploadBatch' # 接口前缀 VITE_API_BASEPATH= diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue index 5b99cc2..7410de4 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue @@ -384,9 +384,9 @@ link type="primary" size="small" :disabled="ctrView || ctrDelete" -+-+@@ -415,7 +415,7 @@ link type="primary" size="small" :disabled="ctrView || ctrDelete" - + From e2ceafc29d9cbba5bd4e467d6915ccd22c22a0ea Mon Sep 17 00:00:00 2001 From: z Date: Thu, 10 Jul 2025 21:12:33 +0800 Subject: [PATCH 02/34] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../heli/enums/TaskDispatchStatusEnum.java | 1 + .../bdgzsomthing/bdgzsomthingController.java | 2 +- .../processbom/ProcessBomController.java | 2 - .../UnqualifiedNotificationController.java | 19 +++- .../vo/QualityStatistics.java | 60 +++++++++++ .../taskdispatch/TaskDispatchDO.java | 3 +- .../UnqualifiedNotificationMapper.java | 7 ++ .../heli/manager/CrossOrderManager.java | 4 +- .../materialplan/MaterialPlanServiceImpl.java | 1 + .../processbom/ProcessBomServiceImpl.java | 1 + .../taskdispatch/TaskDispatchServiceImpl.java | 8 +- .../UnqualifiedNotificationService.java | 4 +- .../UnqualifiedNotificationServiceImpl.java | 10 +- .../UnqualifiedNotificationMapper.xml | 99 +++++++++++++++++++ .../api/heli/unqualifiednotification/index.ts | 4 + mes-ui/mes-ui-admin-vue3/src/utils/dict.ts | 1 + .../src/views/Home/Index.vue | 20 +++- .../views/heli/materialplan/management.vue | 17 ++-- .../heli/materialplan/partmanagement.vue | 17 ++-- .../views/heli/materialplan/standardbuy.vue | 7 ++ .../src/views/heli/partpurchase/index.vue | 7 ++ .../src/views/heli/plan/edit.vue | 69 ++++++------- .../views/heli/taskdispatch/detailDialog.vue | 51 ++++++---- .../src/views/heli/taskdispatch/index.vue | 6 +- .../unqualifiednotification/statistic.vue | 70 ++++++++++--- 25 files changed, 381 insertions(+), 109 deletions(-) create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/TaskDispatchStatusEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/TaskDispatchStatusEnum.java index e28d352..f05eb6a 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/TaskDispatchStatusEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/TaskDispatchStatusEnum.java @@ -10,6 +10,7 @@ import lombok.Getter; @Getter public enum TaskDispatchStatusEnum { + Unedited(0, "未编辑"), SAVE(1, "已保存"), SUBMIT(2, "已提交"), CANCEL_SUBMIT(1, "取消提交"), diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 4551002..864fa23 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -161,7 +161,7 @@ public class bdgzsomthingController { public void init() { selectHasPrice(); selectSafeStorageAndDeliverOneYear(); - bdgzsomthingService.selectds(); +// bdgzsomthingService.selectds(); } @Scheduled(cron = "0 0 2 * * ?") public void selectHasPrice(){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java index 03fa146..4893d7a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java @@ -247,8 +247,6 @@ public class ProcessBomController { PageResult pageResult = processBomService.getStandardPage(pageReqVO); return success(pageResult); } - - @PostMapping("/submit") @Operation(summary = "提交") @PreAuthorize("@ss.hasPermission('heli:process-bom:create')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index 0e6b1d6..7314a7c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -10,6 +10,7 @@ import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.module.heli.config.HeliWebConfiguration; import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.QualityStatistics; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationSaveReqVO; @@ -176,9 +177,19 @@ public class UnqualifiedNotificationController { @GetMapping("/statisticPage") @Operation(summary = "获得品质异常单统计分页") @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')") - public CommonResult> getUnqualifiedNotificationStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { - PageResult pageResult = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, UnqualifiedNotificationRespVO.class)); + public CommonResult> getUnqualifiedNotificationStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { + PageResult pageResult = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO); + return success(pageResult); + } + @GetMapping("/exportStatisticPage") + @Operation(summary = "导出质量异常统计 Excel") + @OperateLog(type = EXPORT) + public void exportStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "质量异常统计.xls", "数据", QualityStatistics.class, + BeanUtils.toBean(list, QualityStatistics.class)); } - } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java new file mode 100644 index 0000000..d6f5683 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java @@ -0,0 +1,60 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + + +@Data +@ToString(callSuper = true) +public class QualityStatistics { + + @ExcelProperty("项目名称") + private String projectName; + + @ExcelProperty("客户名称") + private String customerName; + @ExcelProperty("子项目名称") + private String projectSubName; + @ExcelProperty("零件名称") + private String bomName; + @ExcelProperty(value = "质检类型", converter = DictConvert.class) + @DictFormat("heli_inspection_type") + private Integer type; + @ExcelProperty("是否合格") + private String isQua; + @ExcelProperty("数量") + private BigDecimal amount; + @ExcelProperty("检验人") + private String userName; + @ExcelProperty("检验时间") + private String testingTime; + @ExcelProperty("工序") + private String procedureName; + @ExcelProperty("审核人") + private String auditorName; + @ExcelProperty("审核时间") + private String auditTime; + @ExcelProperty(value = "审核意见", converter = DictConvert.class) + @DictFormat("heli_unqualified_notification_opinion") + private Integer auditOpinion; + @ExcelProperty("项目编码") + private String projectCode; + @ExcelProperty("子项目编码") + private String projectSubNumber; + + + + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java index 6a0095d..25da791 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java @@ -175,7 +175,8 @@ public class TaskDispatchDO extends BaseDO { public boolean canOperate(OperateTypeEnum operateTypeEnum) { switch (operateTypeEnum){ case SAVE: - return canSave(); + return true; +// return canSave(); case SUBMIT: return canSubmit(); case CANCEL_SUBMIT: diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java index 7a0cd5a..c321fc6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java @@ -1,7 +1,9 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.unqualifiednotification; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.QualityStatistics; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; @@ -15,8 +17,11 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.U import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.util.StringUtils; +import java.util.List; + /** * 品质异常通知单审核 Mapper * @@ -119,4 +124,6 @@ public interface UnqualifiedNotificationMapper extends BaseMapperX QualityStatistics(@Param("page") Page page, @Param("pageReqVO") UnqualifiedNotificationPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java index fc399fb..97dc150 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java @@ -584,7 +584,7 @@ public class CrossOrderManager { .setBomDetailId(planTaskBomDO.getBomDetailId()) .setBomBlueprintNo(planTaskBomDO.getBomBlueprintNo() == null ?"":planTaskBomDO.getBomBlueprintNo()) .setActive(OperateTypeEnum.SAVE.name()) - .setDispatchStatus(TaskDispatchStatusEnum.SAVE.getCode()) + .setDispatchStatus(TaskDispatchStatusEnum.Unedited.getCode()) .setStatus(ValidStatusEnum.VALID.getCode()); taskDispatchService.createTaskDispatch(taskDispatchSaveReqVO); } @@ -617,7 +617,7 @@ public class CrossOrderManager { .setBomBlueprintNo(planTaskBomDO.getBomBlueprintNo() == null ?"":planTaskBomDO.getBomBlueprintNo()) .setBomDetailId(planTaskBomDO.getBomDetailId()) .setActive(OperateTypeEnum.SAVE.name()) - .setDispatchStatus(TaskDispatchStatusEnum.SAVE.getCode()) + .setDispatchStatus(TaskDispatchStatusEnum.Unedited.getCode()) .setStatus(ValidStatusEnum.VALID.getCode()); taskDispatchService.createTaskDispatch(taskDispatchSaveReqVO); }); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java index 9fa93a7..6932c3c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java @@ -334,6 +334,7 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { BdgzsomthingDO.setThings("物料需求计划单号:" + planDO.getProjectMaterialPlanNo() + "已提交");//事件名称 BdgzsomthingDO.setAttr2(planDO.getProjectMaterialPlanNo());//跳转携带参数 BdgzsomthingDO.setAttr3(planDO.getProjectMaterialPlanNo());//独特标识 + BdgzsomthingDO.setAttr14("1");//独特标识 // BdgzsomthingDO.setClicktime(attentiontodoRespVO.getRemindtime());//提醒周期 // BdgzsomthingDO.setShowname(new Date());比较创建时间,不用单独填写 if (attentiontodoRespVO.getAttr5().equals("1")) {//提醒状态 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index c101733..d81136c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -1136,6 +1136,7 @@ public class ProcessBomServiceImpl implements ProcessBomService { BdgzsomthingDO.setThings("物料需求计划单号:"+planDO.getProjectMaterialPlanNo()+"已提交");//事件名称 BdgzsomthingDO.setAttr2(planDO.getProjectMaterialPlanNo());//跳转携带参数 BdgzsomthingDO.setAttr3(planDO.getProjectMaterialPlanNo());//独特标识 + BdgzsomthingDO.setAttr14("0"); // BdgzsomthingDO.setClicktime(attentiontodoRespVO.getRemindtime());//提醒周期 // BdgzsomthingDO.setShowname(new Date());比较创建时间,不用单独填写 if(attentiontodoRespVO.getAttr5().equals("1")){//提醒状态 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 08bd5e9..2063189 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -115,7 +115,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(taskDispatchTypeEnum.getBusinesTypeEnum().name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); taskDispatch.setCode(taskDispatchTypeEnum.getCodeEnum().getCode(serialNumberDO.getSerialNumber().toString())); - taskDispatch.setDispatchStatus(TaskDispatchStatusEnum.valueOf(createReqVO.getActive()).getCode()); +// taskDispatch.setDispatchStatus(TaskDispatchStatusEnum.valueOf(createReqVO.getActive()).getCode()); taskDispatch.setCreator(getLoginUser().getId().toString()); taskDispatchMapper.insert(taskDispatch); @@ -147,8 +147,6 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } if (!ObjectUtil.equal(v1, v2)) { - System.out.println(v1); - System.out.println(v2); return true; } } @@ -195,7 +193,9 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } } - + if (operateTypeEnum == OperateTypeEnum.SAVE){ + updateObj.setDispatchStatus(1); + } // 明细工序状态更新 if(operateTypeEnum == OperateTypeEnum.SUBMIT){ if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("ASSEMBLE")){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java index 4d10644..f4ac46e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java @@ -1,11 +1,9 @@ package com.chanko.yunxi.mes.module.heli.service.unqualifiednotification; -import java.util.*; import javax.validation.*; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; /** * 品质异常通知单审核 Service 接口 @@ -54,5 +52,5 @@ public interface UnqualifiedNotificationService { void operate(UnqualifiedNotificationSaveReqVO operateReqVO); - PageResult getUnqualifiedNotificationStatisticPage(UnqualifiedNotificationPageReqVO pageReqVO); + PageResult getUnqualifiedNotificationStatisticPage(UnqualifiedNotificationPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index d4270e0..bc223ed 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -1,15 +1,16 @@ package com.chanko.yunxi.mes.module.heli.service.unqualifiednotification; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; +import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.QualityStatistics; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; @@ -225,8 +226,11 @@ try { } @Override - public PageResult getUnqualifiedNotificationStatisticPage(UnqualifiedNotificationPageReqVO pageReqVO) { - return unqualifiedNotificationMapper.getStatisticPage(pageReqVO); + public PageResult getUnqualifiedNotificationStatisticPage(UnqualifiedNotificationPageReqVO pageReqVO) { + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + List qualityStatistics = unqualifiedNotificationMapper.QualityStatistics(page, pageReqVO); +// return new PageResult<>(qualityStatistics, page.getTotal()); + return null; } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml index d244f16..799a0f7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml @@ -9,4 +9,103 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts index 35ee1d5..cc0f65e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts @@ -53,3 +53,7 @@ export async function operateUnqualifiedNotification(data: UnqualifiedNotificati export const getUnqualifiedNotificationStatisticPage = async (params) => { return await request.get({ url: `/heli/unqualified-notification/statisticPage`, params }) } +// 导出品质异常通知单审核 Excel +export const exportStatisticPage = async (params) => { + return await request.download({ url: `/heli/unqualified-notification/exportStatisticPage`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts index 1c9ce4a..1c22a7b 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts @@ -295,5 +295,6 @@ export enum DICT_TYPE { HELI_STORAGEIN_STATUS='heli_storagein_status', MATERIAL_PLAN_BOOM_MPLAN_STATUS='material_plan_boom_mplan_status', HELI_PROJECT_PURCHASE_ORDER_NO_TYPE = 'heli_project_purchase_order_no_type',//采购单类型 + HELI_DISPATCH_PRODUCTION_STATUS = 'heli_dispatch_production_status', // 派工单状态 } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue b/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue index 8c5036b..8250eb8 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/Home/Index.vue @@ -546,7 +546,8 @@ const getList = async () => { jibie: item.level, dbsx: '', yesorno:item.yesorno, - sctime: formatTime(item.createTime, 'yyyy-MM-dd HH:mm:ss') + sctime: formatTime(item.createTime, 'yyyy-MM-dd HH:mm:ss'), + attr14:item.attr14 }; switch (item.thingname) { @@ -662,8 +663,16 @@ const handlePay =async (row: any) => { // router.push({ path: '/order/project', state: { idid: row.idid } }); } if (row.type == '《物料需求计划》提交后') { - await bdgzsomthingApi.deleteByIdNew(row.id); - router.push({ path: '/purchase/MaterialPlanAudit', state: { idid: row.idid } }); + // await bdgzsomthingApi.deleteByIdNew(row.id); + + if (row.attr14=='0'){ + router.push({ path: '/purchase/buy', state: { idid: row.idid } }); + }else { + + router.push({ path: '/purchase/PartPurchase', state: { idid: row.idid } }); + + } + // router.push({ path: '/purchase/MaterialPlanAudit', state: { idid: row.idid } }); // router.push({ path: '/purchase/MaterialPlanAudit', query: { idid: row.idid } }); } if (row.type == 'BOM变更审核') { @@ -763,6 +772,11 @@ const handlePaysee =async (row: any) => { // router.push({ path: '/processDesign/heli/processdesign/bomShenhe', state: { idid: row.idid } }); await bdgzsomthingApi.updatebdgzsomthingbyidoneandok(row.id) //直接修改取消显示 } + if (row.type == '《采购订单》到货时通知检验') { + // router.push({ path: '/processDesign/heli/processdesign/bomShenhe', state: { idid: row.idid } }); + // router.push({ path: '/processDesign/heli/processdesign/bomShenhe', state: { idid: row.idid } }); + await bdgzsomthingApi.updatebdgzsomthingbyidoneandok(row.id) //直接修改取消显示 + } if (row.type == '装配任务到期'){ await bdgzsomthingApi.updatebdgzsomthingbyidoneandok(row.id) //直接修改取消显示 } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/management.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/management.vue index 3f4e63a..b536ad6 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/management.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/management.vue @@ -1,7 +1,7 @@ + + + + + + - + @@ -425,6 +425,21 @@ v-model="row.deviceModel" @@ -445,24 +460,24 @@ v-model="row.deviceModel" - + + + + + + + + + + + + + + + +
diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/index.vue index 84a9af5..338fd3e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/index.vue @@ -29,7 +29,7 @@ - + @@ -78,7 +78,7 @@ @@ -175,7 +175,7 @@ const openForm = (type: string, id?: number) => { formRef.value.open(type, id) } const openDispatching = (type,id,ownerId,taskCode) => { - Dispatchingref.value.open(id,type,queryParams,ownerId,taskCode) + Dispatchingref.value.open(id,type,queryParams,ownerId,taskCode) } /** 删除按钮操作 */ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue index bce53de..06f6343 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue @@ -41,6 +41,14 @@ 重置 + + 导出 + @@ -49,23 +57,32 @@ - - + + + + + + + + + + + + + + + + - - - - - - - - + { queryParams.pageNo = 1 getList() } +const getDictLabel = (dictType, value) => { + var intDictOptions = getIntDictOptions(dictType); + const dict = intDictOptions.find(item => item.value == value) + return dict?.label || value // 找不到时显示原始值 +} +/** 导出按钮操作 */ +const handleExportDetail = async () => { + try { + // 导出的二次确认 + await message.exportConfirm() + // 发起导出 + exportLoading.value = true + const data = await UnqualifiedNotificationApi.exportStatisticPage(queryParams) + download.excel(data, '质量异常统计.xlsx') + } catch { + } finally { + exportLoading.value = false + } +} /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value.resetFields() From ae754e2a71e6c0cf63e6b189597aca1834dca699 Mon Sep 17 00:00:00 2001 From: Ledo Date: Fri, 11 Jul 2025 08:11:12 +0800 Subject: [PATCH 03/34] =?UTF-8?q?=E8=BF=87=E7=A8=8B=E6=A3=80/=E7=BB=88?= =?UTF-8?q?=E6=A3=80/=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- heli-app/src/pages/index/index.vue | 2 +- .../bgmasterline/BgMasterLineController.java | 11 +- .../vo/BgMasterLinePageReqVO.java | 13 +- .../bgmasterline/vo/BgMasterLineRespVO.java | 13 +- .../vo/BgMasterLineSaveReqVO.java | 84 +- .../admin/pgmaster/PgMasterController.java | 3 +- .../UnqualifiedNotificationController.java | 30 +- .../vo/UnqualifiedNotificationPageReqVO.java | 3 + .../ZjBgMasterLineController.java | 12 +- .../vo/ZjBgMasterLineRespVO.java | 11 +- .../vo/ZjBgMasterLineSaveReqVO.java | 83 +- .../zjpgmaster/ZjPgMasterController.java | 2 +- .../bgmasterline/BgMasterLineDO.java | 17 +- .../UnqualifiedNotificationDO.java | 6 +- .../UnqualifiedNotificationFileDO.java | 1 + .../zjbgmasterline/ZjBgMasterLineDO.java | 17 +- .../bgmasterline/BgMasterLineMapper.java | 31 +- .../UnqualifiedNotificationMapper.java | 7 + .../UnqualifiedNotificationFileMapper.java | 5 +- .../zjbgmasterline/ZjBgMasterLineMapper.java | 20 +- .../bgmasterline/BgMasterLineService.java | 2 +- .../bgmasterline/BgMasterLineServiceImpl.java | 122 +- .../service/pgmaster/PgMasterService.java | 2 +- .../service/pgmaster/PgMasterServiceImpl.java | 2 +- .../UnqualifiedNotificationService.java | 3 + .../UnqualifiedNotificationServiceImpl.java | 24 +- .../UnqualifiedNotificationFileService.java | 2 +- ...nqualifiedNotificationFileServiceImpl.java | 4 +- .../zjbgmasterline/ZjBgMasterLineService.java | 6 +- .../ZjBgMasterLineServiceImpl.java | 97 +- .../service/zjpgmaster/ZjPgMasterService.java | 2 +- .../zjpgmaster/ZjPgMasterServiceImpl.java | 2 +- .../UnqualifiedNotificationMapper.xml | 65 +- mes-ui/mini-app/src/pages.json | 10 +- .../assembleReport/assembleReport-detail.vue | 17 +- .../pages/pgMaster/components/showpicture.vue | 118 ++ .../src/pages/pgMaster/pgMaster-detail.vue | 1450 ++++++++++------- .../productionReport-detail.vue | 56 +- .../components/dataItem.vue | 22 +- .../unqualifiedNotification.vue | 4 +- .../pages/zjPgMaster/components/dataItem.vue | 21 +- .../pages/zjPgMaster/zjPgMaster-detail.vue | 1424 +++++++++------- mes-ui/mini-app/src/services/pgMaster.ts | 16 +- .../src/services/unqualifiedNotification.ts | 2 +- mes-ui/mini-app/src/services/zjPgMaster.ts | 14 +- .../images/unqualifiedNotification.jpeg | Bin 0 -> 391766 bytes 46 files changed, 2475 insertions(+), 1383 deletions(-) create mode 100644 mes-ui/mini-app/src/pages/pgMaster/components/showpicture.vue create mode 100644 mes-ui/mini-app/src/static/images/unqualifiedNotification.jpeg diff --git a/heli-app/src/pages/index/index.vue b/heli-app/src/pages/index/index.vue index 7539463..34fea6b 100644 --- a/heli-app/src/pages/index/index.vue +++ b/heli-app/src/pages/index/index.vue @@ -18,7 +18,7 @@ const categoryList = ref([ }, { path: 'unqualifiedNotification', - name: '品质异常通知', + name: '品质异常审核', auth: false, imgUrl: '/static/images/unqualifiedNotification.png', defaultImgUrl: '/static/images/unqualifiedNotification-default.png', diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java index d283e4d..5dee2f7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/BgMasterLineController.java @@ -49,6 +49,7 @@ public class BgMasterLineController { } + @PostMapping("/create") @Operation(summary = "创建过程检报工") @PreAuthorize("@ss.hasPermission('heli:bg-master-line:create')") @@ -73,6 +74,8 @@ public class BgMasterLineController { return success(true); } + + @GetMapping("/get") @Operation(summary = "获得过程检报工") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -81,7 +84,13 @@ public class BgMasterLineController { BgMasterLineDO bgMasterLine = bgMasterLineService.getBgMasterLine(id); return success(BeanUtils.toBean(bgMasterLine, BgMasterLineRespVO.class)); } - + @GetMapping("/validExceed") + @Operation(summary = "获得过程检报工") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:bg-master-line:query')") + public CommonResult validExceed(@RequestParam("id") Long id,@RequestParam("amount") Integer amount) { + return success(bgMasterLineService.validExceed(id,amount)); + } @GetMapping("/page") @Operation(summary = "获得过程检报工分页") @PreAuthorize("@ss.hasPermission('heli:bg-master-line:query')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLinePageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLinePageReqVO.java index 9e2ba62..da06b5a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLinePageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLinePageReqVO.java @@ -38,6 +38,15 @@ public class BgMasterLinePageReqVO extends PageParam { @Schema(description = "工时") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private BigDecimal[] workTime; -} \ No newline at end of file + private BigDecimal[] workTime; + private String userName; + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java index c66c51b..fe52779 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineRespVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -53,5 +54,13 @@ public class BgMasterLineRespVO { @Schema(description = "报工人") @ExcelProperty("报工人") private String userName; - -} \ No newline at end of file + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; + private List fileUrlList; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java index 4ee2dc6..d138077 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bgmasterline/vo/BgMasterLineSaveReqVO.java @@ -1,37 +1,47 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 过程检报工新增/修改 Request VO") -@Data -public class BgMasterLineSaveReqVO { - - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "11518") - private Integer id; - - @Schema(description = "过程检ID", example = "1862") - private Integer zjId; - - @Schema(description = "过程检明细id", example = "10005") - private Integer zjMxId; - - @Schema(description = "报工人") - private String bgUser; - - @Schema(description = "报工数量") - private Integer amount; - - @Schema(description = "报工时间") - private LocalDateTime bgTime; - - @Schema(description = "工时") - private BigDecimal workTime; - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 过程检报工新增/修改 Request VO") +@Data +public class BgMasterLineSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "11518") + private Integer id; + + @Schema(description = "过程检ID", example = "1862") + private Integer zjId; + + @Schema(description = "过程检明细id", example = "10005") + private Long zjMxId; + + @Schema(description = "报工人") + private String bgUser; + + @Schema(description = "报工数量") + private Integer amount; + + @Schema(description = "报工时间") + private LocalDateTime bgTime; + + @Schema(description = "工时") + private BigDecimal workTime; + + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer type; + private String userName; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/pgmaster/PgMasterController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/pgmaster/PgMasterController.java index a1a75f6..cc5ade3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/pgmaster/PgMasterController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/pgmaster/PgMasterController.java @@ -62,7 +62,7 @@ public class PgMasterController { @PostMapping("/zfPgMaster") @Operation(summary = "作废过程检验派工单") @PreAuthorize("@ss.hasPermission('heli:pg-master:create')") - public CommonResult zfPgMaster(@RequestParam("id") Integer id) { + public CommonResult zfPgMaster(@RequestParam("id") Long id) { return success(pgMasterService.zfPgMaster(id)); } @@ -104,6 +104,7 @@ public class PgMasterController { @PreAuthorize("@ss.hasPermission('heli:pg-master:query')") public CommonResult> getPgMasterPage(@Valid PgMasterPageReqVO pageReqVO) { PageResult pageResult = pgMasterService.getPgMasterPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, PgMasterRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index 7314a7c..09ca57c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -65,7 +65,7 @@ public class UnqualifiedNotificationController { @PostMapping("/createWx") @Operation(summary = "创建品质异常通知单审核Wx") @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:create')") - public CommonResult uploadFile(@RequestParam("file") MultipartFile file,@RequestHeader("id") String id) { + public CommonResult uploadFile(@RequestParam("file") MultipartFile file,@RequestHeader("id") String id,@RequestHeader("type") String type) { if (file.isEmpty()) { System.out.println(file); return error(500,"The file is empty."); @@ -94,7 +94,9 @@ public class UnqualifiedNotificationController { fileDO.setUnqualifiedId(Long.valueOf(id)); fileDO.setFileName(fileName); fileDO.setFileUrl( HeliWebConfiguration.FILE_URL+id+"/"+fileName); - + if (type != null){ + fileDO.setType(Integer.valueOf(type)); + } fileDO.setFilePath(directory+id+"/" + fileName); unqualifiedNotificationFileService.createUnqualifiedNotificationFile(fileDO); return success("File uploaded successfully: " + fileName); @@ -148,7 +150,7 @@ public class UnqualifiedNotificationController { if(CollUtil.isNotEmpty(list)){ for (UnqualifiedNotificationDO unqualifiedNotificationDO : list) { List fileUrlList = new ArrayList<>(); - List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId()); + List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId(),0); if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ for (UnqualifiedNotificationFileDO unqualifiedNotificationFileDO : unqualifiedNotificationFileDOS) { fileUrlList.add(unqualifiedNotificationFileDO.getFileUrl()); @@ -160,7 +162,29 @@ public class UnqualifiedNotificationController { return success(BeanUtils.toBean(unqualifiedNotificationPage, UnqualifiedNotificationRespVO.class)); } + @GetMapping("/pageWx") + @Operation(summary = "获得品质异常通知单审核分页") + @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')") + public CommonResult> getUnqualifiedNotificationPageWx(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { + int i = pageReqVO.getPageNo() * pageReqVO.getPageSize(); + pageReqVO.setPageNum(i); + PageResult unqualifiedNotificationPage = unqualifiedNotificationService.getUnqualifiedNotificationPageWx(pageReqVO); +// List list = unqualifiedNotificationPage.getList(); +// if(CollUtil.isNotEmpty(list)){ +// for (UnqualifiedNotificationDO unqualifiedNotificationDO : list) { +// List fileUrlList = new ArrayList<>(); +// List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId(),0); +// if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ +// for (UnqualifiedNotificationFileDO unqualifiedNotificationFileDO : unqualifiedNotificationFileDOS) { +// fileUrlList.add(unqualifiedNotificationFileDO.getFileUrl()); +// } +// unqualifiedNotificationDO.setFileUrlList(fileUrlList); +// } +// } +// } + return success(unqualifiedNotificationPage); + } @GetMapping("/export-excel") @Operation(summary = "导出品质异常通知单审核 Excel") @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:export')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java index 1bcccd8..8a3346f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationPageReqVO.java @@ -82,6 +82,7 @@ public class UnqualifiedNotificationPageReqVO extends PageParam { @Schema(description = "创建人名称") private String creatorName; + private Integer pageNum; @Schema(description = "最小创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime minCreateTime; @@ -89,4 +90,6 @@ public class UnqualifiedNotificationPageReqVO extends PageParam { @Schema(description = "最大创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime maxCreateTime; + + private Integer queryType; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java index fa0040f..42d1c28 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/ZjBgMasterLineController.java @@ -45,7 +45,13 @@ public class ZjBgMasterLineController { public CommonResult endBg(@Valid @RequestBody ZjBgMasterLineSaveReqVO createReqVO) { return success(zjBgMasterLineService.updateBgMasterLines(createReqVO)); } - + @GetMapping("/validExceed") + @Operation(summary = "获得过程检报工") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:bg-master-line:query')") + public CommonResult validExceed(@RequestParam("id") Long id,@RequestParam("amount") Integer amount) { + return success(zjBgMasterLineService.validExceed(id,amount)); + } @PostMapping("/create") @Operation(summary = "创建终检报工") @@ -69,7 +75,7 @@ public class ZjBgMasterLineController { @Operation(summary = "删除终检报工") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('heli:zj-bg-master-line:delete')") - public CommonResult deleteZjBgMasterLine(@RequestParam("id") Integer id) { + public CommonResult deleteZjBgMasterLine(@RequestParam("id") Long id) { zjBgMasterLineService.deleteZjBgMasterLine(id); return success(true); } @@ -78,7 +84,7 @@ public class ZjBgMasterLineController { @Operation(summary = "获得终检报工") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('heli:zj-bg-master-line:query')") - public CommonResult getZjBgMasterLine(@RequestParam("id") Integer id) { + public CommonResult getZjBgMasterLine(@RequestParam("id") Long id) { ZjBgMasterLineDO zjBgMasterLine = zjBgMasterLineService.getZjBgMasterLine(id); return success(BeanUtils.toBean(zjBgMasterLine, ZjBgMasterLineRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java index c1d6bf0..43222a0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineRespVO.java @@ -53,5 +53,14 @@ public class ZjBgMasterLineRespVO { @Schema(description = "报工人") @ExcelProperty("报工人") private String userName; + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; + private List fileUrlList; -} \ No newline at end of file +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineSaveReqVO.java index 6259db0..62e2387 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjbgmasterline/vo/ZjBgMasterLineSaveReqVO.java @@ -1,37 +1,46 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.zjbgmasterline.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 终检报工新增/修改 Request VO") -@Data -public class ZjBgMasterLineSaveReqVO { - - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24341") - private Integer id; - - @Schema(description = "终检ID", example = "30462") - private Integer zjId; - - @Schema(description = "终检检明细id", example = "21667") - private Integer zjMxId; - - @Schema(description = "报工人") - private String bgUser; - - @Schema(description = "报工数量") - private Integer amount; - - @Schema(description = "报工时间") - private LocalDateTime bgTime; - - @Schema(description = "工时") - private BigDecimal workTime; - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.zjbgmasterline.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 终检报工新增/修改 Request VO") +@Data +public class ZjBgMasterLineSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24341") + private Long id; + + @Schema(description = "终检ID", example = "30462") + private Integer zjId; + + @Schema(description = "终检检明细id", example = "21667") + private Long zjMxId; + + @Schema(description = "报工人") + private String bgUser; + + @Schema(description = "报工数量") + private Integer amount; + + @Schema(description = "报工时间") + private LocalDateTime bgTime; + + @Schema(description = "工时") + private BigDecimal workTime; + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer type; + private String userName; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjpgmaster/ZjPgMasterController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjpgmaster/ZjPgMasterController.java index 5b85d60..ab55de0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjpgmaster/ZjPgMasterController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/zjpgmaster/ZjPgMasterController.java @@ -55,7 +55,7 @@ public class ZjPgMasterController { @PostMapping("/zfZjPgMaster") @Operation(summary = "作废终检派工单") @PreAuthorize("@ss.hasPermission('heli:zj-pg-master:create')") - public CommonResult zfZjPgMaster(@RequestParam("id") Integer id) { + public CommonResult zfZjPgMaster(@RequestParam("id") Long id) { return success(zjPgMasterService.zfZjPgMaster(id)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java index 0c2caba..463c819 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/bgmasterline/BgMasterLineDO.java @@ -28,7 +28,7 @@ public class BgMasterLineDO extends BaseDO { * 主键 */ @TableId - private Integer id; + private Long id; /** * 过程检ID */ @@ -36,7 +36,7 @@ public class BgMasterLineDO extends BaseDO { /** * 过程检明细id */ - private Integer zjMxId; + private Long zjMxId; /** * 报工人 */ @@ -60,5 +60,14 @@ public class BgMasterLineDO extends BaseDO { @TableField(exist = false) private String userName; - -} \ No newline at end of file + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; + @TableField(exist = false) + private List fileUrlList; +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java index d802c35..a432df9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java @@ -94,7 +94,6 @@ public class UnqualifiedNotificationDO extends BaseDO { * 审核时间 */ private LocalDateTime auditTime; - @TableField(exist = false) private String projectName; @@ -139,7 +138,10 @@ public class UnqualifiedNotificationDO extends BaseDO { @TableField(exist = false) private String creatorName; - + @TableField(exist = false) + private Integer totalAmount; + @TableField(exist = false) + private String typeName; @TableField(exist = false) private String statisticAmount; @TableField(exist = false) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotificationfile/UnqualifiedNotificationFileDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotificationfile/UnqualifiedNotificationFileDO.java index 1539f9c..9ec14d7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotificationfile/UnqualifiedNotificationFileDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotificationfile/UnqualifiedNotificationFileDO.java @@ -41,4 +41,5 @@ public class UnqualifiedNotificationFileDO extends BaseDO { private String fileName; private String filePath; private String fileUrl; + private Integer type; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java index 6a400fa..a26024b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/zjbgmasterline/ZjBgMasterLineDO.java @@ -28,7 +28,7 @@ public class ZjBgMasterLineDO extends BaseDO { * 主键 */ @TableId - private Integer id; + private Long id; /** * 终检ID */ @@ -36,7 +36,7 @@ public class ZjBgMasterLineDO extends BaseDO { /** * 终检检明细id */ - private Integer zjMxId; + private Long zjMxId; /** * 报工人 */ @@ -61,6 +61,15 @@ public class ZjBgMasterLineDO extends BaseDO { @TableField(exist = false) private String userName; + private Integer isRepre; + private Integer isQua; + private String remark; + private Integer notificationStatus; + private Integer conStatus; + private String auditOpinion; + private Integer auditor; + private LocalDateTime audit_time; + @TableField(exist = false) + private List fileUrlList; - -} \ No newline at end of file +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java index 02619e0..553c427 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java @@ -30,7 +30,8 @@ public interface BgMasterLineMapper extends BaseMapperX { .select("u2.username as userName") .leftJoin("system_users u2 on u2.id = t.bg_user") ; - query.eq(BgMasterLineDO::getZjMxId, reqVO.getZjMxId()); + query.eq(BgMasterLineDO::getZjMxId, reqVO.getZjMxId()) + .orderByDesc(BgMasterLineDO::getId); return selectPage(reqVO, query); @@ -46,7 +47,7 @@ public interface BgMasterLineMapper extends BaseMapperX { .orderByDesc(BgMasterLineDO::getId)) ;*/ } - default BgMasterLineDO selectSum(Integer zjMxId) { + default BgMasterLineDO selectSum(Long zjMxId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.select("SUM(t.amount) as amount ,SUM(t.work_time) as workTime"); @@ -57,7 +58,19 @@ public interface BgMasterLineMapper extends BaseMapperX { return selectOne(query); } - default BgMasterLineDO selectEnd(Integer zjMxId) { + default BgMasterLineDO selectCountUn(Integer type) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.select("count(1) as amount"); + + + query + .eq(BgMasterLineDO::getNotificationStatus,type) + + ; + + return selectOne(query); + } + default BgMasterLineDO selectEnd(Long zjMxId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); @@ -67,5 +80,15 @@ public interface BgMasterLineMapper extends BaseMapperX { return selectOne(query); } + default BgMasterLineDO selectLast(Long zjMxId) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); -} \ No newline at end of file + + query.eq( BgMasterLineDO::getZjMxId, zjMxId) + .orderByDesc(BgMasterLineDO::getId) + .last("limit 1"); + ; + + return selectOne(query); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java index c321fc6..64a9eec 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java @@ -72,6 +72,13 @@ public interface UnqualifiedNotificationMapper extends BaseMapperX selectPageWx( @Param("queryType") Integer queryType, + @Param("offset") Integer offset, + @Param("limit") Integer limit); default UnqualifiedNotificationDO selectById(Long id) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotificationfile/UnqualifiedNotificationFileMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotificationfile/UnqualifiedNotificationFileMapper.java index 1f686e8..e38aeef 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotificationfile/UnqualifiedNotificationFileMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotificationfile/UnqualifiedNotificationFileMapper.java @@ -18,9 +18,10 @@ import java.util.List; @Mapper public interface UnqualifiedNotificationFileMapper extends BaseMapperX { - default List queryUnqualifiedNotificationFileBySuperId(Long unqualifiedId){ + default List queryUnqualifiedNotificationFileBySuperId(Long unqualifiedId,Integer type){ MPJLambdaWrapper query = new MPJLambdaWrapper<>(); - query.eq(UnqualifiedNotificationFileDO::getUnqualifiedId,unqualifiedId); + query.eq(UnqualifiedNotificationFileDO::getUnqualifiedId,unqualifiedId) + .eq(UnqualifiedNotificationFileDO::getType,type); return selectList(query); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java index 8d3933c..3b19f1e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/zjbgmasterline/ZjBgMasterLineMapper.java @@ -42,7 +42,7 @@ public interface ZjBgMasterLineMapper extends BaseMapperX { .orderByDesc(ZjBgMasterLineDO::getId));*/ } - default ZjBgMasterLineDO selectSum(Integer zjMxId) { + default ZjBgMasterLineDO selectSum(Long zjMxId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.select("SUM(t.amount) as amount ,SUM(t.work_time) as workTime"); @@ -54,15 +54,25 @@ public interface ZjBgMasterLineMapper extends BaseMapperX { return selectOne(query); } - default ZjBgMasterLineDO selectEnd(Integer zjMxId) { + default ZjBgMasterLineDO selectEnd(Long zjMxId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); - query.eq( BgMasterLineDO::getZjMxId, zjMxId) - .isNull(BgMasterLineDO::getAmount) + query.eq( ZjBgMasterLineDO::getZjMxId, zjMxId) + .isNull(ZjBgMasterLineDO::getAmount) ; return selectOne(query); } + default ZjBgMasterLineDO selectLast(Long zjMxId) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); -} \ No newline at end of file + + query.eq( BgMasterLineDO::getZjMxId, zjMxId) + .orderByDesc(ZjBgMasterLineDO::getId) + .last("limit 1"); + ; + + return selectOne(query); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java index 84c2440..19d6fd0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineService.java @@ -51,7 +51,7 @@ public interface BgMasterLineService { * @return 过程检报工 */ BgMasterLineDO getBgMasterLine(Integer id); - + public boolean validExceed(Long zjmxId,Integer amount); /** * 获得过程检报工分页 * diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java index 92de164..005477f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bgmasterline/BgMasterLineServiceImpl.java @@ -1,14 +1,18 @@ package com.chanko.yunxi.mes.module.heli.service.bgmasterline; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; +import com.chanko.yunxi.mes.module.heli.service.unqualifiednotificationfile.UnqualifiedNotificationFileService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -43,39 +47,65 @@ public class BgMasterLineServiceImpl implements BgMasterLineService { private PgMasterLineMapper pgMasterLineMapper; @Resource private TaskDispatchDetailMapper taskDispatchDetailMapper; + @Resource + private UnqualifiedNotificationFileService unqualifiedNotificationFileService; - - //结束本次报工 @Override - public Integer updateBgMasterLines(BgMasterLineSaveReqVO createReqVO){ - if(createReqVO.getAmount() == null || createReqVO.getWorkTime() == null){ - throw exception(TASK_REPORT_PARAMS_ERROR); - } - + public boolean validExceed(Long zjmxId,Integer amount){ //先取出总的派工数量和预计工时 - PgMasterLineDO pgMasterLineDO = pgMasterLineMapper.selectById(createReqVO.getZjMxId()); + PgMasterLineDO pgMasterLineDO = pgMasterLineMapper.selectById(zjmxId); //然后再取出这条ID明细ID下的所有工时和报工数量相加 - BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectSum(createReqVO.getZjMxId()); + BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectSum(zjmxId); //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 int value1 = 0; if(bgMasterLineDO!=null){ //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 - value1 = bgMasterLineDO.getAmount()+createReqVO.getAmount(); + value1 = bgMasterLineDO.getAmount()+amount; }else{ - value1 = createReqVO.getAmount(); + value1 = amount; } - //先判断报工数量是否大于派工数量 - if(value1>pgMasterLineDO.getAmount()){ - //这个地方返回错误:报工数量不允许超过派工数量请检查 - throw exception(TASK_REPORT_PARAMS_ERRORS); - }else{ + return value1>pgMasterLineDO.getAmount(); + } + + //结束本次报工 + @Override + public Integer updateBgMasterLines(BgMasterLineSaveReqVO createReqVO){ + //非结束时判断 + if (createReqVO.getType() != null && createReqVO.getType() != 0){ + if(createReqVO.getAmount() == null || createReqVO.getWorkTime() == null){ + throw exception(TASK_REPORT_PARAMS_ERROR); + } + } + + +// +// //先取出总的派工数量和预计工时 + PgMasterLineDO pgMasterLineDO = pgMasterLineMapper.selectById(createReqVO.getZjMxId()); +// //然后再取出这条ID明细ID下的所有工时和报工数量相加 +// BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectSum(createReqVO.getZjMxId()); +// //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 +// int value1 = 0; +// if(bgMasterLineDO!=null){ +// //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 +// value1 = bgMasterLineDO.getAmount()+createReqVO.getAmount(); +// }else{ +// value1 = createReqVO.getAmount(); +// } +// //先判断报工数量是否大于派工数量 +// if(value1>pgMasterLineDO.getAmount()){ +// //这个地方返回错误:报工数量不允许超过派工数量请检查 + // throw exception(TASK_REPORT_PARAMS_ERRORS); +// }else{ //取出本派工单在报工明细中,有没有报 BgMasterLineDO bgMasterLineDOs = bgMasterLineMapper.selectEnd(createReqVO.getZjMxId()); + if (createReqVO.getType() != null && createReqVO.getType() == 0){ + bgMasterLineDOs = bgMasterLineMapper.selectLast(createReqVO.getZjMxId()); + } //判断报工user是否相等 if(bgMasterLineDOs.getBgUser().equals(createReqVO.getBgUser())){ //相同时判断报工数量和派工数量是否相等,相等设置为设置报工状态为1 已完成 LocalDateTime currentDateTime = LocalDateTime.now(); - if(value1 == pgMasterLineDO.getAmount()){ + if(createReqVO.getType() != null && createReqVO.getType() == 0){ //这个地方跟定是否完成状态 pgMasterLineDO.setPgType(1); pgMasterLineDO.setDetilUser(Long.parseLong(createReqVO.getBgUser())); @@ -86,44 +116,34 @@ public class BgMasterLineServiceImpl implements BgMasterLineService { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(TaskDispatchDetailDO::getId,pgMasterLineDO.getDispatchDetailId()); wrapper.set(TaskDispatchDetailDO::getTestYn,"Y"); - taskDispatchDetailMapper.update(wrapper); -// TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(pgMasterLineDO.getDispatchDetailId()); -// if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){ -// LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); -// wrapper1.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId()); -// wrapper1.gt(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort()); -// wrapper1.eq(TaskDispatchDetailDO::getReportStatus, 0); -// wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0); -// wrapper1.orderByAsc(TaskDispatchDetailDO::getSort); -// wrapper1.last("limit 1"); -// TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1); -// if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){ -// nextTaskDispatchDetailDO.setReportStatus(1); -// taskDispatchDetailMapper.updateById(nextTaskDispatchDetailDO); -// } -// } + return taskDispatchDetailMapper.update(wrapper); }else{ //不相等时只更新当前报工状态 pgMasterLineDO.setActive("END"); pgMasterLineDO.setEntTime(currentDateTime); pgMasterLineMapper.updateById(pgMasterLineDO); - } - //更新报工信息 - //结束时间 - bgMasterLineDOs.setEntTime(currentDateTime); - //报工工时 - bgMasterLineDOs.setWorkTime(createReqVO.getWorkTime()); - //报工数量 - bgMasterLineDOs.setAmount(createReqVO.getAmount()); + //更新报工信息 + //结束时间 + bgMasterLineDOs.setEntTime(currentDateTime); + //报工工时 + bgMasterLineDOs.setWorkTime(createReqVO.getWorkTime()); + bgMasterLineDOs.setIsQua(createReqVO.getIsQua()==null ?null :createReqVO.getIsQua()); + bgMasterLineDOs.setIsRepre(createReqVO.getIsRepre()==null ?null :createReqVO.getIsRepre()); + bgMasterLineDOs.setRemark(createReqVO.getRemark()!=null && !createReqVO.getRemark().trim().equals("")?createReqVO.getRemark() :null); + + bgMasterLineDOs.setNotificationStatus(1); + //报工数量 + bgMasterLineDOs.setAmount(createReqVO.getAmount()); + return bgMasterLineMapper.updateById(bgMasterLineDOs); + } - return bgMasterLineMapper.updateById(bgMasterLineDOs); }else{ //当创建人和报工人不一样时返回报错,不允许用户报工 throw exception(TASK_REPORT_PARAMS_ERRORBG); } // - } +// } } @Override @@ -179,7 +199,21 @@ public class BgMasterLineServiceImpl implements BgMasterLineService { @Override public PageResult getBgMasterLinePage(BgMasterLinePageReqVO pageReqVO) { - return bgMasterLineMapper.selectPage(pageReqVO); + PageResult pageResult = bgMasterLineMapper.selectPage(pageReqVO); + List list = pageResult.getList(); + if(CollUtil.isNotEmpty(list)){ + for (BgMasterLineDO bgMasterLineDO : list) { + List fileUrlList = new ArrayList<>(); + List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(bgMasterLineDO.getId(),1); + if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ + for (UnqualifiedNotificationFileDO unqualifiedNotificationFileDO : unqualifiedNotificationFileDOS) { + fileUrlList.add(unqualifiedNotificationFileDO.getFileUrl()); + } + bgMasterLineDO.setFileUrlList(fileUrlList); + } + } + } + return pageResult; } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterService.java index ce2ff7d..f9b44da 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterService.java @@ -23,7 +23,7 @@ public interface PgMasterService { * @param id 创建信息 * @return 编号 */ - Integer zfPgMaster(Integer id); + Integer zfPgMaster(Long id); /** * 创建质量过程检派工单主 * diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java index 04b12e6..b2a1354 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/pgmaster/PgMasterServiceImpl.java @@ -164,7 +164,7 @@ public class PgMasterServiceImpl implements PgMasterService { @Override - public Integer zfPgMaster(Integer id) { + public Integer zfPgMaster(Long id) { //作废先判断是否已经报工 BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.selectSum(id); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java index f4ac46e..0a28955 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java @@ -5,6 +5,8 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import java.util.List; + /** * 品质异常通知单审核 Service 接口 * @@ -49,6 +51,7 @@ public interface UnqualifiedNotificationService { * @return 品质异常通知单审核分页 */ PageResult getUnqualifiedNotificationPage(UnqualifiedNotificationPageReqVO pageReqVO); + PageResult getUnqualifiedNotificationPageWx(UnqualifiedNotificationPageReqVO pageReqVO); void operate(UnqualifiedNotificationSaveReqVO operateReqVO); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index bc223ed..2824c8a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.service.unqualifiednotification; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.QualityStatistics; @@ -10,11 +11,15 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjbgmasterline.ZjBgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.bgmasterline.BgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.unqualifiednotification.UnqualifiedNotificationMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.zjbgmasterline.ZjBgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; import com.chanko.yunxi.mes.module.heli.enums.UnqualifiedNotificationStatusEnum; @@ -55,7 +60,10 @@ public class UnqualifiedNotificationServiceImpl implements UnqualifiedNotificati private com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper bdgzsomthingMapper; @Resource private AttentiontodoMapper attentiontodoMapper; - + @Resource + private ZjBgMasterLineMapper zjBgMasterLineMapper; + @Resource + private BgMasterLineMapper bgMasterLineMapper; @Resource private UnqualifiedNotificationMapper unqualifiedNotificationMapper; @Resource @@ -196,7 +204,7 @@ try { @Override public UnqualifiedNotificationDO getUnqualifiedNotification(Long id) { UnqualifiedNotificationDO unqualifiedNotificationDO = unqualifiedNotificationMapper.selectById(id); - List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId()); + List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId(),0); List fileUrlList = unqualifiedNotificationFileDOS.stream() .map(UnqualifiedNotificationFileDO::getFileUrl) .collect(Collectors.toList()); @@ -208,7 +216,19 @@ try { public PageResult getUnqualifiedNotificationPage(UnqualifiedNotificationPageReqVO pageReqVO) { return unqualifiedNotificationMapper.selectPage(pageReqVO); } + @Override + public PageResult getUnqualifiedNotificationPageWx(UnqualifiedNotificationPageReqVO pageReqVO) { + PageResult pageResult = new PageResult<>(); + Long total = unqualifiedNotificationMapper.selectCountPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize()); + pageResult.setTotal(total); + if (total > 0L){ + pageResult.setTotalPages(total.intValue()/ pageReqVO.getPageSize()); + } + List unqualifiedNotificationDOS = unqualifiedNotificationMapper.selectPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize()); + pageResult.setList(unqualifiedNotificationDOS); + return pageResult; + } @Override public void operate(UnqualifiedNotificationSaveReqVO operateReqVO) { if(operateReqVO.getId() == null){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileService.java index ca896bf..aed8c54 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileService.java @@ -21,7 +21,7 @@ public interface UnqualifiedNotificationFileService { int createUnqualifiedNotificationFile(@Valid UnqualifiedNotificationFileDO unqualifiedNotificationFileDO); // void updateUnqualifiedNotificationFile(@Valid UnqualifiedNotificationFileDO unqualifiedNotificationFileDO); -List queryUnqualifiedNotificationFileBySuperId(@Valid Long unqualificationId); +List queryUnqualifiedNotificationFileBySuperId(@Valid Long unqualificationId,Integer type); /** * 删除品质异常通知单审核 * diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileServiceImpl.java index 3f504be..75faf5e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotificationfile/UnqualifiedNotificationFileServiceImpl.java @@ -33,8 +33,8 @@ public class UnqualifiedNotificationFileServiceImpl implements UnqualifiedNotifi // } @Override - public List queryUnqualifiedNotificationFileBySuperId(Long unqualificationId) { - return unqualifiedNotificationFileMapper.queryUnqualifiedNotificationFileBySuperId(unqualificationId); + public List queryUnqualifiedNotificationFileBySuperId(Long unqualificationId,Integer type) { + return unqualifiedNotificationFileMapper.queryUnqualifiedNotificationFileBySuperId(unqualificationId,type); } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java index 6cc056f..5234c50 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineService.java @@ -22,7 +22,7 @@ public interface ZjBgMasterLineService { * @return 编号 */ Integer updateBgMasterLines(@Valid ZjBgMasterLineSaveReqVO createReqVO); - + public boolean validExceed(Long zjmxId,Integer amount); /** * 创建终检报工 @@ -44,7 +44,7 @@ public interface ZjBgMasterLineService { * * @param id 编号 */ - void deleteZjBgMasterLine(Integer id); + void deleteZjBgMasterLine(Long id); /** * 获得终检报工 @@ -52,7 +52,7 @@ public interface ZjBgMasterLineService { * @param id 编号 * @return 终检报工 */ - ZjBgMasterLineDO getZjBgMasterLine(Integer id); + ZjBgMasterLineDO getZjBgMasterLine(Long id); /** * 获得终检报工分页 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java index 1b28a26..515c2ee 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjbgmasterline/ZjBgMasterLineServiceImpl.java @@ -1,12 +1,15 @@ package com.chanko.yunxi.mes.module.heli.service.zjbgmasterline; +import cn.hutool.core.collection.CollUtil; import com.chanko.yunxi.mes.module.heli.controller.admin.bgmasterline.vo.BgMasterLineSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotificationfile.UnqualifiedNotificationFileDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjpgmaster.ZjPgMasterDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.zjpgmaster.ZjPgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.zjpgmaster.ZjPgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.zjpgmaster.ZjPgMasterMapper; +import com.chanko.yunxi.mes.module.heli.service.unqualifiednotificationfile.UnqualifiedNotificationFileService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -43,46 +46,53 @@ public class ZjBgMasterLineServiceImpl implements ZjBgMasterLineService { @Resource private ZjPgMasterLineMapper zjPgMasterLineMapper; - - + @Resource + private UnqualifiedNotificationFileService unqualifiedNotificationFileService; + @Override + public boolean validExceed(Long zjmxId,Integer amount){ + //先取出总的派工数量和预计工时 + ZjPgMasterLineDO zjPgMasterLineDO = zjPgMasterLineMapper.selectById(zjmxId); + //然后再取出这条ID明细ID下的所有工时和报工数量相加 + ZjBgMasterLineDO zjBgMasterLineDO = zjBgMasterLineMapper.selectSum(zjmxId); + //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 + int value1 = 0; + if(zjBgMasterLineDO!=null){ + //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 + value1 = zjBgMasterLineDO.getAmount()+amount; + }else{ + value1 = amount; + } + return value1>zjPgMasterLineDO.getAmount(); + } //结束本次报工 @Override public Integer updateBgMasterLines(ZjBgMasterLineSaveReqVO createReqVO){ - if(createReqVO.getAmount() == null || createReqVO.getWorkTime() == null){ - throw exception(TASK_REPORT_PARAMS_ERROR); + if (createReqVO.getType() != null && createReqVO.getType() != 0){ + if(createReqVO.getAmount() == null || createReqVO.getWorkTime() == null){ + throw exception(TASK_REPORT_PARAMS_ERROR); + } } + //先取出总的派工数量和预计工时 ZjPgMasterLineDO zjPgMasterLineDO = zjPgMasterLineMapper.selectById(createReqVO.getZjMxId()); - //然后再取出这条ID明细ID下的所有工时和报工数量相加 - ZjBgMasterLineDO zjBgMasterLineDO = zjBgMasterLineMapper.selectSum(createReqVO.getZjMxId()); - //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 - int value1 = 0; - if(zjBgMasterLineDO!=null){ - //然后加上用户传入的当前的工时和查出的工时进行相加,进行判断 - value1 = zjBgMasterLineDO.getAmount()+createReqVO.getAmount(); - }else{ - value1 = createReqVO.getAmount(); - } - //先判断报工数量是否大于派工数量 - if(value1>zjPgMasterLineDO.getAmount()){ - //这个地方返回错误:报工数量不允许超过派工数量请检查 - throw exception(TASK_REPORT_PARAMS_ERRORS); - }else{ //取出本派工单在报工明细中,有没有报 ZjBgMasterLineDO zjBgMasterLineDO1 = zjBgMasterLineMapper.selectEnd(createReqVO.getZjMxId()); + if (createReqVO.getType() != null && createReqVO.getType() == 0){ + zjBgMasterLineDO1 = zjBgMasterLineMapper.selectLast(createReqVO.getZjMxId()); + } //判断报工user是否相等 if(zjBgMasterLineDO1.getBgUser().equals(createReqVO.getBgUser())){ //相同时判断报工数量和派工数量是否相等,相等设置为设置报工状态为1 已完成 LocalDateTime currentDateTime = LocalDateTime.now(); - if(value1 == zjPgMasterLineDO.getAmount()){ + if(createReqVO.getType() != null && createReqVO.getType() == 0){ //这个地方跟定是否完成状态 zjPgMasterLineDO.setPgType(1); zjPgMasterLineDO.setDetilUser(Long.parseLong(createReqVO.getBgUser())); zjPgMasterLineDO.setActive("END"); zjPgMasterLineDO.setEntTime(currentDateTime); - zjPgMasterLineMapper.updateById(zjPgMasterLineDO); + return zjPgMasterLineMapper.updateById(zjPgMasterLineDO); //更新工时 }else{ @@ -90,22 +100,23 @@ public class ZjBgMasterLineServiceImpl implements ZjBgMasterLineService { zjPgMasterLineDO.setActive("END"); zjPgMasterLineDO.setEntTime(currentDateTime); zjPgMasterLineMapper.updateById(zjPgMasterLineDO); + //更新报工信息 + //结束时间 + zjBgMasterLineDO1.setEntTime(currentDateTime); + //报工工时 + zjBgMasterLineDO1.setWorkTime(createReqVO.getWorkTime()); + //报工数量 + zjBgMasterLineDO1.setAmount(createReqVO.getAmount()); + zjBgMasterLineDO1.setIsQua(createReqVO.getIsQua()==null ?null :createReqVO.getIsQua()); + zjBgMasterLineDO1.setIsRepre(createReqVO.getIsRepre()==null ?null :createReqVO.getIsRepre()); + zjBgMasterLineDO1.setRemark(createReqVO.getRemark()!=null && !createReqVO.getRemark().trim().equals("")?createReqVO.getRemark() :null); + zjBgMasterLineDO1.setNotificationStatus(1); + return zjBgMasterLineMapper.updateById(zjBgMasterLineDO1); } - //更新报工信息 - //结束时间 - zjBgMasterLineDO1.setEntTime(currentDateTime); - //报工工时 - zjBgMasterLineDO1.setWorkTime(createReqVO.getWorkTime()); - //报工数量 - zjBgMasterLineDO1.setAmount(createReqVO.getAmount()); - - return zjBgMasterLineMapper.updateById(zjBgMasterLineDO1); }else{ //当创建人和报工人不一样时返回报错,不允许用户报工 throw exception(TASK_REPORT_PARAMS_ERRORBG); } - // - } } @@ -187,27 +198,41 @@ public class ZjBgMasterLineServiceImpl implements ZjBgMasterLineService { } @Override - public void deleteZjBgMasterLine(Integer id) { + public void deleteZjBgMasterLine(Long id) { // 校验存在 validateZjBgMasterLineExists(id); // 删除 zjBgMasterLineMapper.deleteById(id); } - private void validateZjBgMasterLineExists(Integer id) { + private void validateZjBgMasterLineExists(Long id) { if (zjBgMasterLineMapper.selectById(id) == null) { throw exception(ZJ_BG_MASTER_LINE_NOT_EXISTS); } } @Override - public ZjBgMasterLineDO getZjBgMasterLine(Integer id) { + public ZjBgMasterLineDO getZjBgMasterLine(Long id) { return zjBgMasterLineMapper.selectById(id); } @Override public PageResult getZjBgMasterLinePage(ZjBgMasterLinePageReqVO pageReqVO) { - return zjBgMasterLineMapper.selectPage(pageReqVO); + PageResult pageResult = zjBgMasterLineMapper.selectPage(pageReqVO); + List list = pageResult.getList(); + if(CollUtil.isNotEmpty(list)){ + for (ZjBgMasterLineDO bgMasterLineDO : list) { + List fileUrlList = new ArrayList<>(); + List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(bgMasterLineDO.getId(),1); + if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ + for (UnqualifiedNotificationFileDO unqualifiedNotificationFileDO : unqualifiedNotificationFileDOS) { + fileUrlList.add(unqualifiedNotificationFileDO.getFileUrl()); + } + bgMasterLineDO.setFileUrlList(fileUrlList); + } + } + } + return pageResult; } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterService.java index 0b36744..6eef704 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterService.java @@ -26,7 +26,7 @@ public interface ZjPgMasterService { * @param createReqVO 作废 * @return 编号 */ - Integer zfZjPgMaster(Integer id); + Integer zfZjPgMaster(Long id); /** * 创建质量终检派工单主 * diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java index d790a47..3f1b1bd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/zjpgmaster/ZjPgMasterServiceImpl.java @@ -208,7 +208,7 @@ public class ZjPgMasterServiceImpl implements ZjPgMasterService { @Override - public Integer zfZjPgMaster(Integer id) { + public Integer zfZjPgMaster(Long id) { //作废先判断是否已经报工 ZjBgMasterLineDO zjBgMasterLineDOS = zjBgMasterLineMapper.selectSum(id); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml index 799a0f7..0a42537 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml @@ -108,4 +108,67 @@ order by t.createTime desc - \ No newline at end of file + + + diff --git a/mes-ui/mini-app/src/pages.json b/mes-ui/mini-app/src/pages.json index 6461dba..ed056e0 100644 --- a/mes-ui/mini-app/src/pages.json +++ b/mes-ui/mini-app/src/pages.json @@ -96,6 +96,12 @@ "navigationBarTitleText": "过程检报工" } }, + { + "path": "pages/pgMaster/components/showpicture", + "style": { + "navigationBarTitleText": "过程检图片" + } + }, { "path": "pages/pgMaster/pgMaster-detail", "style": { @@ -104,7 +110,7 @@ },{ "path": "pages/moJuSheJiReport/moJuSheJiReport", "style": { - "navigationBarTitleText": "进度上报" + "navigationBarTitleText": "进度上报" } }, { @@ -136,7 +142,7 @@ }, { "path" : "pages/messageNotification/messageNotification", - "style" : + "style" : { "navigationBarTitleText" : "消息通知" } diff --git a/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue b/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue index 26bf8d6..e0a8d19 100644 --- a/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue +++ b/mes-ui/mini-app/src/pages/assembleReport/assembleReport-detail.vue @@ -120,10 +120,10 @@ if (historyList.value.length) { id, } const data = await getTaskDetailAPI(params) - if (data.beforeProcedureStatus == 0) { - //如果上一道工序没结束 - isOverBeforeProcedure.value = true; - } + // if (data.beforeProcedureStatus == 0) { + // //如果上一道工序没结束 + // isOverBeforeProcedure.value = true; + // } data.startTime = formatDate(data.startTime, 'YYYY-MM-DD HH:mm'); data.endTime = formatDate(data.endTime, 'YYYY-MM-DD HH:mm'); // 去掉了末尾的空格 @@ -162,16 +162,13 @@ if (historyList.value.length) { try { const data = await postOperateAPI(params); console.log(data) - console.log('ai') } catch (error) { - console.log('meijinlai ') uni.showToast({ icon: 'none', duration: 3000, title: error.data.msg, }) } finally { - console.log('jie') await getDetailData(detailInfo.value.id) await getData() const obj = historyList.value[0] @@ -195,7 +192,7 @@ if (historyList.value.length) { workTime: workTime.value, } const data = await postOperateAPI(params) - const pages = getCurrentPages(); // 获取当前页面栈 + const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; uni.reLaunch({ url }); // 重新加载当前页面 @@ -246,7 +243,7 @@ if (historyList.value.length) { + + + @@ -207,6 +226,14 @@ {{' ' + detailInfo.projectSubName }} 通知日期:{{detailInfo.createTime}} + + + 零件名称:{{ detailInfo.materialName }} + + + 工序:{{ detailInfo.procedureName }} + + 质检员:{{ detailInfo.creatorName }} @@ -260,11 +287,36 @@ - 报废 + + 取消 + 审核 + + + + + 审核信息 + + + + + + + + *审核意见: + + + + + + 确定 + @@ -513,7 +565,9 @@ width: 272rpx; height: 86rpx; border-radius: 24rpx; - +&.info { + background: linear-gradient(157deg, #A9A9A9 -3%, #A9A9A9 90%); + } &.start { background: linear-gradient(157deg, #2EACE6 -3%, #356899 90%); } @@ -604,4 +658,4 @@ } } } - \ No newline at end of file + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotification/unqualifiedNotification.vue b/mes-ui/mini-app/src/pages/unqualifiedNotification/unqualifiedNotification.vue index 675b89b..6bbc9ff 100644 --- a/mes-ui/mini-app/src/pages/unqualifiedNotification/unqualifiedNotification.vue +++ b/mes-ui/mini-app/src/pages/unqualifiedNotification/unqualifiedNotification.vue @@ -77,9 +77,6 @@ const handlePopClose = (flag) => { - diff --git a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue index d590b09..d1dc254 100644 --- a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue @@ -147,7 +147,7 @@ // uni.redirectTo({ // url, // }) - await initPage(); + const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; @@ -194,8 +194,8 @@ if (isQua.value == 1) { await imgUpload() } + const pages = getCurrentPages(); // 获取当前页面栈 - await initPage(); const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; uni.reLaunch({ url }); // 重新加载当前页面 @@ -217,8 +217,8 @@ if (isQua.value == 1) { await imgUpload() } - const pages = getCurrentPages(); // 获取当前页面栈 await initPage(); + const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; uni.reLaunch({ url }); // 重新加载当前页面 @@ -287,7 +287,7 @@ }) } finally { isLoading.value = false - await initPage() + const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 @@ -396,7 +396,6 @@ icon: 'none', // 显示纯文本时icon设为none duration: 2000 }); - await initPage() popup.value.close(); }, @@ -408,7 +407,6 @@ icon: 'none', // 显示纯文本时icon设为none duration: 2000 }); - await initPage() }, complete: () => { uni.hideLoading(); @@ -505,10 +503,10 @@ {{ item.amount }} - + 是否复检: - {{ item.isRepre == 0 ? '是':'否' }} + {{ item.isRepre == 1? '是':'否' }} 是否合格: @@ -913,4 +911,4 @@ } } } - \ No newline at end of file + diff --git a/mes-ui/mini-app/src/services/home.ts b/mes-ui/mini-app/src/services/home.ts index 59803a0..51009f4 100644 --- a/mes-ui/mini-app/src/services/home.ts +++ b/mes-ui/mini-app/src/services/home.ts @@ -17,7 +17,13 @@ export const getHomeCategoryAPI = () => { url: '/system/auth/get-permission-info', }) } - +export const countUnqualifiedNotification = (data: Object) => { + return http({ + method: 'GET', + url: '/heli/unqualified-notification/countWx', + data, + }) +} export const getUnreadMessage = () => { return http({ method: 'GET', diff --git a/mes-ui/mini-app/src/services/unqualifiedNotification.ts b/mes-ui/mini-app/src/services/unqualifiedNotification.ts index c89b948..b52f35a 100644 --- a/mes-ui/mini-app/src/services/unqualifiedNotification.ts +++ b/mes-ui/mini-app/src/services/unqualifiedNotification.ts @@ -31,6 +31,9 @@ export const operateWx = (data: Object) => { data, }) } + + + // 获取零件分页 export const getBomPageAPI = (data: Object) => { return http({ From fc5a4fa2a26b9820f67f14f3163d3bada3f8b5a6 Mon Sep 17 00:00:00 2001 From: Ledo Date: Fri, 11 Jul 2025 14:27:24 +0800 Subject: [PATCH 08/34] =?UTF-8?q?=E5=93=81=E8=B4=A8=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UnqualifiedNotificationController.java | 4 ++-- mes-ui/mini-app/src/pages/index/index.vue | 5 ++++- mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index d5d7cff..72ed5a5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -213,9 +213,9 @@ public class UnqualifiedNotificationController { List fileUrlList = new ArrayList<>(); Integer type = 0; if (unqualifiedNotificationDO.getTypeName().equals("过程检")){ - type = 2; - }else if (unqualifiedNotificationDO.getTypeName().equals("终检")){ type = 1; + }else if (unqualifiedNotificationDO.getTypeName().equals("终检")){ + type = 2; } List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId(),type); if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ diff --git a/mes-ui/mini-app/src/pages/index/index.vue b/mes-ui/mini-app/src/pages/index/index.vue index d509a20..bb0d103 100644 --- a/mes-ui/mini-app/src/pages/index/index.vue +++ b/mes-ui/mini-app/src/pages/index/index.vue @@ -6,7 +6,7 @@ import CustomNavbar from "./components/CustomNavbar.vue"; import CategoryPanel from "./components/CategoryPanel.vue"; import footRight from "./components/footRight.vue"; import PageSkeleton from "./components/PageSkeleton.vue"; -import {countReview, getHomeCategoryAPI, getUnreadMessage} from "@/services/home"; +import {countReview, getHomeCategoryAPI, getUnreadMessage,countUnqualifiedNotification} from "@/services/home"; // 获取前台分类数据 const categoryList = ref([ { @@ -111,6 +111,9 @@ const getHomeCategory = async () => { const unReadCount = await getUnreadMessage(); const count = await countReview(); + var query ={ + queryType:2, + } const unqualifiedNotificationCount = await countUnqualifiedNotification(query); // 把未读数放到消息通知项 const cgdsp = categoryList.value.find( diff --git a/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue b/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue index b0d6b9c..a80d3cf 100644 --- a/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue @@ -200,7 +200,7 @@ if (isQua.value == 1) { await imgUpload() } - + await initPage(); const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; @@ -223,7 +223,7 @@ if (isQua.value == 1) { await imgUpload() } - + await initPage(); const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; From a3e8cffda8cc19acbec402600ff59b198833c2c9 Mon Sep 17 00:00:00 2001 From: Ledo Date: Fri, 11 Jul 2025 15:00:42 +0800 Subject: [PATCH 09/34] =?UTF-8?q?=E8=B4=A8=E6=A3=80=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=B8=8D=E5=88=B7=E6=96=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/pgMaster/pgMaster-detail.vue | 34 ++++++++++++------- .../pages/zjPgMaster/zjPgMaster-detail.vue | 32 ++++++++++------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue b/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue index a80d3cf..3211cea 100644 --- a/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/pgMaster/pgMaster-detail.vue @@ -184,7 +184,7 @@ title: '总报工数量超出派工数量,请确认', confirmText: '确认', cancelText: '取消', - success: async(res) => { + success: async (res) => { if (res.confirm) { const params = { @@ -199,17 +199,20 @@ const data = await postOperateAPIEnd(params) if (isQua.value == 1) { await imgUpload() - } - await initPage(); + }else{ + await getDetailData(idValue.value) + await getData() const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; uni.reLaunch({ url }); // 重新加载当前页面 + } + } }, }); - }else{ + } else { const params = { zjMxId: detailInfo.value?.id, amount: amount.value, @@ -222,12 +225,12 @@ const data = await postOperateAPIEnd(params) if (isQua.value == 1) { await imgUpload() + }else{ + const pages = getCurrentPages(); // 获取当前页面栈 + const currentPage = pages[pages.length - 1]; // 当前页面 + const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + uni.reLaunch({ url }); // 重新加载当前页面 } - await initPage(); - const pages = getCurrentPages(); // 获取当前页面栈 - const currentPage = pages[pages.length - 1]; // 当前页面 - const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; - uni.reLaunch({ url }); // 重新加载当前页面 } @@ -410,7 +413,7 @@ id: detailId.value, Authorization: token, 'Tenant-Id': 2, - 'type':1, + 'type': 1, }, success: async (uploadFileRes) => { uni.hideLoading(); @@ -420,6 +423,10 @@ duration: 2000 }); await initPage() + const pages = getCurrentPages(); // 获取当前页面栈 + const currentPage = pages[pages.length - 1]; // 当前页面 + const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + uni.reLaunch({ url }); // 重新加载当前页面 popup.value.close(); }, @@ -493,7 +500,8 @@ - + 质检完成 @@ -925,6 +933,7 @@ } } } + .no { font-size: 32rpx; margin: 20rpx auto 80rpx; @@ -935,6 +944,7 @@ background-color: red; color: #fff; } + .ok { font-size: 32rpx; margin: 20rpx auto 80rpx; @@ -947,4 +957,4 @@ } } } - + \ No newline at end of file diff --git a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue index d1dc254..49cc5ea 100644 --- a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue @@ -191,14 +191,15 @@ remark: remark.value } const data = await postOperateAPIEnd(params) - if (isQua.value == 1) { - await imgUpload() - } - - const pages = getCurrentPages(); // 获取当前页面栈 - const currentPage = pages[pages.length - 1]; // 当前页面 - const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; - uni.reLaunch({ url }); // 重新加载当前页面 + if (isQua.value == 1) { + await imgUpload() + }else{ + const pages = getCurrentPages(); // 获取当前页面栈 + const currentPage = pages[pages.length - 1]; // 当前页面 + const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + uni.reLaunch({ url }); // 重新加载当前页面 + } + } }, @@ -216,12 +217,12 @@ const data = await postOperateAPIEnd(params) if (isQua.value == 1) { await imgUpload() + }else{ + const pages = getCurrentPages(); // 获取当前页面栈 + const currentPage = pages[pages.length - 1]; // 当前页面 + const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + uni.reLaunch({ url }); // 重新加载当前页面 } - await initPage(); - const pages = getCurrentPages(); // 获取当前页面栈 - const currentPage = pages[pages.length - 1]; // 当前页面 - const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; - uni.reLaunch({ url }); // 重新加载当前页面 } @@ -396,6 +397,11 @@ icon: 'none', // 显示纯文本时icon设为none duration: 2000 }); + await initPage() + const pages = getCurrentPages(); // 获取当前页面栈 + const currentPage = pages[pages.length - 1]; // 当前页面 + const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + uni.reLaunch({ url }); // 重新加载当前页面 popup.value.close(); }, From 1a5e45fb4da81ea8d8016843ca3df2294d666dc6 Mon Sep 17 00:00:00 2001 From: z Date: Fri, 11 Jul 2025 17:00:44 +0800 Subject: [PATCH 10/34] =?UTF-8?q?=E8=B4=A8=E9=87=8F=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=B7=BB=E5=8A=A0=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bdgzsomthing/bdgzsomthingController.java | 4 +- .../UnqualifiedNotificationController.java | 15 ++- .../vo/QualityStatistics.java | 6 ++ .../TaskDispatchDetailMapper.java | 5 + .../bdgzsomthing/bdgzsomthingServiceImpl.java | 2 +- .../taskdispatch/TaskDispatchServiceImpl.java | 6 +- .../UnqualifiedNotificationService.java | 2 + .../UnqualifiedNotificationServiceImpl.java | 23 +++++ .../UnqualifiedNotificationMapper.xml | 15 ++- .../api/heli/unqualifiednotification/index.ts | 4 + .../heli/unqualifiednotification/from.vue | 91 +++++++++++++++++++ .../unqualifiednotification/statistic.vue | 29 ++++-- mes-ui/mini-app/src/pages/index/index.vue | 2 +- 13 files changed, 187 insertions(+), 17 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/from.vue diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 864fa23..5b10088 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -159,8 +159,8 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { - selectHasPrice(); - selectSafeStorageAndDeliverOneYear(); +// selectHasPrice(); +// selectSafeStorageAndDeliverOneYear(); // bdgzsomthingService.selectds(); } @Scheduled(cron = "0 0 2 * * ?") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index 72ed5a5..2c1db95 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -244,8 +244,13 @@ public class UnqualifiedNotificationController { @Operation(summary = "获得品质异常单统计分页") @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')") public CommonResult> getUnqualifiedNotificationStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { - PageResult pageResult = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO); - return success(pageResult); + try { + PageResult pageResult = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO); + return success(pageResult); + } catch (Exception e){ + e.printStackTrace(); + } + return success(null); } @GetMapping("/exportStatisticPage") @Operation(summary = "导出质量异常统计 Excel") @@ -258,4 +263,10 @@ public class UnqualifiedNotificationController { ExcelUtils.write(response, "质量异常统计.xls", "数据", QualityStatistics.class, BeanUtils.toBean(list, QualityStatistics.class)); } + @PostMapping("/review") + @Operation(summary = "质量异常统计审核") + public CommonResult review(@Valid @RequestBody UnqualifiedNotificationPageReqVO pageReqVO) { + unqualifiedNotificationService.review(pageReqVO); + return success(true); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java index d6f5683..364ee25 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/vo/QualityStatistics.java @@ -34,6 +34,8 @@ public class QualityStatistics { private Integer type; @ExcelProperty("是否合格") private String isQua; + @ExcelProperty("异常情况描述 ") + private String remark; @ExcelProperty("数量") private BigDecimal amount; @ExcelProperty("检验人") @@ -54,6 +56,10 @@ public class QualityStatistics { @ExcelProperty("子项目编码") private String projectSubNumber; + private Long id; + + private String notificationStatus; + diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index 909228d..c468b11 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -350,6 +350,11 @@ public interface TaskDispatchDetailMapper extends BaseMapperX j + .eq(TaskDispatchDetailDO::getPostId, postId) + .isNull(TaskDispatchDetailDO::getOwner) + ); } } }); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java index d327e26..9ac1452 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java @@ -865,7 +865,7 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService { BdgzsomthingDO.setThingname(attentiontodoRespVO.getEvent());//事件名称 BdgzsomthingDO.setAttr4("0");//是否点击 BdgzsomthingDO.setThings("计划单号:"+materialPlanBoomDO.getProjectMaterialPlanNo()+" 加工件:"+materialPlanBoomDO.getName()+",临近到货日期");//事件名称 - BdgzsomthingDO.setAttr2(null);//因为不用跳转所以为null + BdgzsomthingDO.setAttr2(String.valueOf(materialPlanBoomDO.getId()));//因为不用跳转所以为null BdgzsomthingDO.setClicktime(attentiontodoRespVO.getRemindtime());//提醒周期 BdgzsomthingDO.setTenantId(attentiontodoRespVO.getTxrid()); // BdgzsomthingDO.setShowname(LocalDateTime.now());//比较创建时间,不用单独填写 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 2c9ec43..08a07d7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -544,7 +544,11 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // Set procedureIds = new HashSet<>(); Map postIds = new HashMap<>(); for (FpUserDetailDO fpUserDetailDO : fpUserDetailDOS) { - postIds.put(fpUserDetailDO.getPostId(), fpUserDetailDO.getProcedureId()); + if (ObjectUtil.isNotEmpty(fpUserDetailDO.getPostId())&&ObjectUtil.isNotEmpty(fpUserDetailDO.getProcedureId())){ + postIds.put(fpUserDetailDO.getPostId(), fpUserDetailDO.getProcedureId()); + }else if (ObjectUtil.isNotEmpty(fpUserDetailDO.getPostId())){ + postIds.put(fpUserDetailDO.getPostId(), null); + } } PageResult taskDispatchDetailDOPageResult = taskDispatchDetailMapper.selectPageWx(pageReqVO, postIds); List list = taskDispatchDetailDOPageResult.getList(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java index f0b88e0..ade3918 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java @@ -59,4 +59,6 @@ public interface UnqualifiedNotificationService { void operate(UnqualifiedNotificationSaveReqVO operateReqVO); void operateWx(UnqualifiedNotificationSaveReqVO operateReqVO); PageResult getUnqualifiedNotificationStatisticPage(UnqualifiedNotificationPageReqVO pageReqVO); + + void review(UnqualifiedNotificationPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index 797ea70..233a3e9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.service.unqualifiednotification; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; @@ -43,6 +44,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.INVALID_OPERATE; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.UNQUALIFIED_NOTIFICATION_NOT_EXISTS; @@ -299,4 +301,25 @@ try { return new PageResult<>(qualityStatistics, page.getTotal()); } + @Override + public void review(UnqualifiedNotificationPageReqVO pageReqVO) { + if ("0".equals(pageReqVO.getType())){ + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(BgMasterLineDO::getId, pageReqVO.getId()) + .set(BgMasterLineDO::getNotificationStatus, 3) + .set(BgMasterLineDO::getAuditor, getLoginUser().getId()) + .set(BgMasterLineDO::getAudit_time, LocalDateTime.now()) + .set(BgMasterLineDO::getAuditOpinion, pageReqVO.getAuditOpinion()); + bgMasterLineMapper.update( updateWrapper); + }else { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ZjBgMasterLineDO::getId, pageReqVO.getId()) + .set(ZjBgMasterLineDO::getNotificationStatus, 3) + .set(ZjBgMasterLineDO::getAuditor, getLoginUser().getId()) + .set(ZjBgMasterLineDO::getAudit_time, LocalDateTime.now()) + .set(ZjBgMasterLineDO::getAuditOpinion, pageReqVO.getAuditOpinion()); + zjBgMasterLineMapper.update( updateWrapper); + } + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml index f933eba..7d1749d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml @@ -16,17 +16,20 @@ FROM ( SELECT + t.id as id, + t.notification_status as notificationStatus, t.create_time as createTime, p.project_name AS projectName, c.NAME AS customerName, pg.project_sub_name AS projectSubName, pg.bom_name AS bomName, + t.remark AS remark, 0 AS type, CASE - WHEN t.is_qua = 1 THEN - '是' WHEN t.is_qua = 0 THEN + '是' + WHEN t.is_qua = 1 THEN '否' ELSE '未知' END AS isQua, t.amount AS amount, @@ -52,22 +55,26 @@ group by t.id UNION ALL SELECT + t.id as id, + t.notification_status as notificationStatus, t.create_time as createTime, pg.project_name AS projectName, c.NAME AS customerName, pg.project_sub_name AS projectSubName, '' AS bomName, + t.remark AS remark, 1 AS type, CASE - WHEN t.is_qua = 1 THEN - '是' WHEN t.is_qua = 0 THEN + '是' + WHEN t.is_qua = 1 THEN '否' ELSE '未知' END AS isQua, t.amount AS amount, u1.nickname AS userName, + DATE_FORMAT(t.create_time, '%Y-%m-%d') AS testingTime, '' AS procedureName, u2.nickname AS auditorName, diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts index cc0f65e..bf7fccb 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/unqualifiednotification/index.ts @@ -57,3 +57,7 @@ export const getUnqualifiedNotificationStatisticPage = async (params) => { export const exportStatisticPage = async (params) => { return await request.download({ url: `/heli/unqualified-notification/exportStatisticPage`, params }) } +// 新增入/出库 +export const review = async (data) => { + return await request.post({ url: `/heli/unqualified-notification/review`, data }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/from.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/from.vue new file mode 100644 index 0000000..3221491 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/from.vue @@ -0,0 +1,91 @@ + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue index 37a6d23..826a0a5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/unqualifiednotification/statistic.vue @@ -69,6 +69,7 @@ + @@ -82,24 +83,32 @@ - + + + + + @@ -322,24 +336,33 @@ + \ No newline at end of file diff --git a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue index 49cc5ea..f1f94a3 100644 --- a/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue +++ b/mes-ui/mini-app/src/pages/zjPgMaster/zjPgMaster-detail.vue @@ -304,15 +304,14 @@ const handleStop = async () => { // var lastIndex = historyList.value.length-1; var lastItem = historyList.value[0]; - console.log(historyList.value) - workTime.value = Math.floor(Math.abs(lastItem.createTime - Date.now()) / (1000 * 60 * 60)).toString(); + var nowDate = new Date(); + workTime.value = Math.floor(Math.abs(lastItem.createTime - nowDate.getTime()) / (1000 * 60 * 60)).toString(); //算数量 if (historyList.value.length == 1) { amount.value = detailInfo.value.amount; } else { var beforeAmount = 0; - for (var i = historyList.value.length - 1; i > 0; i--) { - console.log(historyList.value[i]) + for (var i = 1; i < historyList.value.length ; i++) { beforeAmount += historyList.value[i].amount } var finalamount = detailInfo.value.amount - beforeAmount @@ -397,7 +396,7 @@ icon: 'none', // 显示纯文本时icon设为none duration: 2000 }); - await initPage() + // await initPage() const pages = getCurrentPages(); // 获取当前页面栈 const currentPage = pages[pages.length - 1]; // 当前页面 const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; From 5cce8ba539d79122c7b23592c040bb0b081ce7b3 Mon Sep 17 00:00:00 2001 From: Ledo Date: Fri, 11 Jul 2025 23:04:53 +0800 Subject: [PATCH 12/34] =?UTF-8?q?=E6=89=93=E5=8D=B0=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/heli/taskdispatch/ProductProcessPrint.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue index ee49adc..424caaa 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue @@ -92,14 +92,14 @@
+ - + - From 76ac33477451f922eae4885e7283c6ea67694963 Mon Sep 17 00:00:00 2001 From: z Date: Sat, 12 Jul 2025 20:15:57 +0800 Subject: [PATCH 13/34] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bdgzsomthing/bdgzsomthingController.java | 6 +- .../PurchaseOrderNoController.java | 4 +- .../UnqualifiedNotificationController.java | 44 ++ .../UnqualifiedNotificationDO.java | 2 + .../UnqualifiedNotificationMapper.java | 8 + .../PurchaseOrderNoService.java | 2 +- .../PurchaseOrderNoServiceImpl.java | 11 +- .../UnqualifiedNotificationService.java | 6 +- .../UnqualifiedNotificationServiceImpl.java | 36 + .../UnqualifiedNotificationMapper.xml | 94 ++- mes-ui/mini-app/src/pages.json | 15 +- mes-ui/mini-app/src/pages/index/index.vue | 28 +- .../components/dataItem.vue | 374 ++++++++++ .../components/detailPanel.vue | 415 +++++++++++ .../components/mySelect.vue | 250 +++++++ .../components/showpicture.vue | 118 +++ .../unqualifiedNotification-detail.vue | 690 ++++++++++++++++++ .../unqualifiedNotificationConfirm-detail.vue | 690 ++++++++++++++++++ .../unqualifiedNotificationConfirm.vue | 185 +++++ mes-ui/mini-app/src/services/constants.ts | 4 +- mes-ui/mini-app/src/services/home.ts | 7 + .../src/services/unqualifiedNotification.ts | 16 +- 22 files changed, 2984 insertions(+), 21 deletions(-) create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/detailPanel.vue create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/mySelect.vue create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/showpicture.vue create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue create mode 100644 mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm.vue diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 5b10088..6f8ed56 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -151,7 +151,7 @@ public class bdgzsomthingController { BeanUtils.toBean(list, bdgzsomthingRespVO.class)); } - @Scheduled(fixedRate = 10800000) +// @Scheduled(fixedRate = 10800000) public void scheduledTask() { bdgzsomthingService.selectds(); } @@ -163,12 +163,12 @@ public class bdgzsomthingController { // selectSafeStorageAndDeliverOneYear(); // bdgzsomthingService.selectds(); } - @Scheduled(cron = "0 0 2 * * ?") +// @Scheduled(cron = "0 0 2 * * ?") public void selectHasPrice(){ bdgzsomthingService.selectHasPrice(); } - @Scheduled(cron = "0 0 0 * * ?") +// @Scheduled(cron = "0 0 0 * * ?") public void selectSafeStorageAndDeliverOneYear(){bdgzsomthingService.selectSafeStorageAndDeliverOneYear();} @PostMapping("/getMessage") @Operation(summary = "小程序消息") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java index 8a122b1..6ee3003 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/PurchaseOrderNoController.java @@ -71,8 +71,8 @@ public class PurchaseOrderNoController { @Operation(summary = "更新采购订单主") @PreAuthorize("@ss.hasPermission('project:purchase-order-no:update')") public CommonResult updatePurchaseOrderNo(@Valid @RequestBody PurchaseOrderNoSaveReqVO updateReqVO) { - purchaseOrderNoService.updatePurchaseOrderNo(updateReqVO); - return success(true); + + return purchaseOrderNoService.updatePurchaseOrderNo(updateReqVO); } @DeleteMapping("/delete") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index 2c1db95..3658c78 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -269,4 +269,48 @@ public class UnqualifiedNotificationController { unqualifiedNotificationService.review(pageReqVO); return success(true); } + + + @GetMapping("/unqualifiedNotificationConfirmPageWx") + @Operation(summary = "获得品质异常通知单确认分页") + public CommonResult> unqualifiedNotificationConfirmPageWx(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { + int i = (pageReqVO.getPageNo()-1) * pageReqVO.getPageSize(); + pageReqVO.setPageNum(i); + PageResult unqualifiedNotificationPage = unqualifiedNotificationService.unqualifiedNotificationConfirmPageWx(pageReqVO); + List list = unqualifiedNotificationPage.getList(); + if(CollUtil.isNotEmpty(list)){ + for (UnqualifiedNotificationDO unqualifiedNotificationDO : list) { + List fileUrlList = new ArrayList<>(); + Integer type = 0; + if (unqualifiedNotificationDO.getTypeName().equals("过程检")){ + type = 2; + }else if (unqualifiedNotificationDO.getTypeName().equals("终检")){ + type = 1; + } + List unqualifiedNotificationFileDOS = unqualifiedNotificationFileService.queryUnqualifiedNotificationFileBySuperId(unqualifiedNotificationDO.getId(),type); + if(CollUtil.isNotEmpty(unqualifiedNotificationFileDOS)){ + for (UnqualifiedNotificationFileDO unqualifiedNotificationFileDO : unqualifiedNotificationFileDOS) { + fileUrlList.add(unqualifiedNotificationFileDO.getFileUrl()); + } + unqualifiedNotificationDO.setFileUrlList(fileUrlList); + } + } + } + + return success(unqualifiedNotificationPage); + } + @PostMapping("/confirm") + @Operation(summary = "确认品质异常通知单") + @OperateLog(enable = false) + @Transactional(rollbackFor = Exception.class) + public CommonResult confirm(@Valid @RequestBody UnqualifiedNotificationSaveReqVO operateReqVO) { + unqualifiedNotificationService.confirm(operateReqVO); + return success(operateReqVO.getId()); + } + @GetMapping("/countWx1") + @Operation(summary = "获得品质异常通知单确认消息") + @PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')") + public CommonResult countWx1(@Valid UnqualifiedNotificationPageReqVO pageReqVO) { + return success(unqualifiedNotificationService.countWx1(pageReqVO)); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java index cdddaea..9ab710f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/unqualifiednotification/UnqualifiedNotificationDO.java @@ -150,6 +150,8 @@ public class UnqualifiedNotificationDO extends BaseDO { private Integer isRepre; @TableField(exist = false) private Integer isQua; + @TableField(exist = false) + private Integer conStatus; public boolean canSave(){ return UnqualifiedNotificationStatusEnum.SAVE.getCode() == this.notificationStatus.intValue(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java index 2fccabb..c501aa3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java @@ -136,4 +136,12 @@ public interface UnqualifiedNotificationMapper extends BaseMapperX QualityStatistics(@Param("page") Page page, @Param("pageReqVO") UnqualifiedNotificationPageReqVO pageReqVO); + + Long selectCountConfirmPageWx( @Param("queryType") Integer queryType, + @Param("offset") Integer offset, + @Param("limit") Integer limit); + + List selectConfirmPageWx( @Param("queryType") Integer queryType, + @Param("offset") Integer offset, + @Param("limit") Integer limit); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoService.java index daa52e4..a02dccd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoService.java @@ -29,7 +29,7 @@ public interface PurchaseOrderNoService { * * @param updateReqVO 更新信息 */ - void updatePurchaseOrderNo(@Valid PurchaseOrderNoSaveReqVO updateReqVO); + CommonResult updatePurchaseOrderNo(@Valid PurchaseOrderNoSaveReqVO updateReqVO); /** * 删除采购订单主 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoServiceImpl.java index 3471d10..280ccd9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseorderno/PurchaseOrderNoServiceImpl.java @@ -32,6 +32,7 @@ import com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail.Purchase import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.system.api.user.AdminUserApi; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; +import com.chanko.yunxi.mes.module.system.enums.ErrorCodeConstants; import com.chanko.yunxi.mes.module.system.service.user.AdminUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -112,7 +113,7 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService { } @Override - public void updatePurchaseOrderNo(PurchaseOrderNoSaveReqVO updateReqVO) { + public CommonResult updatePurchaseOrderNo(PurchaseOrderNoSaveReqVO updateReqVO) { // 校验存在 validatePurchaseOrderNoExists(updateReqVO.getId()); // 更新 @@ -130,7 +131,8 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService { updateObj.setSubmitTime(currTime); } else { // 处理未找到审核人情况 - throw new RuntimeException("审核人未找到"); +// throw new RuntimeException("审核人未找到"); + return CommonResult.error(400,"审核人未找到"); } }else if(updateReqVO.getStatus()==2 && updateReqVO.getAuditor().equals(loginUser.getId())){ ShenheDO shenHeDOOne = shenheMapper.selectOne(ShenheDO::getShenheName,"1",ShenheDO::getShenheUser,updateReqVO.getAuditor()); @@ -149,13 +151,16 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService { orderYfService.createCg(orderYfVO); } } else { - throw new RuntimeException("采购订单审核失败,请联系管理员!"); +// throw new RuntimeException("采购订单审核失败,请联系管理员!"); + return CommonResult.error(400,"采购订单审核失败,请联系管理员!"); + } } if(updateReqVO.getStatus()== 3){ pOrderReceivedCompleted(updateReqVO.getPurchaseNo(),updateReqVO.getId()); } purchaseOrderNoMapper.updateById(updateObj); + return CommonResult.success(true); } private void pOrderReceivedCompleted(String purchaseNo,Long id) { PurchaseOrderNoPageReqVO purchaseOrderPageReqVO = new PurchaseOrderNoPageReqVO(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java index ade3918..6824a42 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationService.java @@ -55,10 +55,14 @@ public interface UnqualifiedNotificationService { */ PageResult getUnqualifiedNotificationPage(UnqualifiedNotificationPageReqVO pageReqVO); PageResult getUnqualifiedNotificationPageWx(UnqualifiedNotificationPageReqVO pageReqVO); - + PageResult unqualifiedNotificationConfirmPageWx(UnqualifiedNotificationPageReqVO pageReqVO); void operate(UnqualifiedNotificationSaveReqVO operateReqVO); void operateWx(UnqualifiedNotificationSaveReqVO operateReqVO); PageResult getUnqualifiedNotificationStatisticPage(UnqualifiedNotificationPageReqVO pageReqVO); void review(UnqualifiedNotificationPageReqVO pageReqVO); + + void confirm(UnqualifiedNotificationSaveReqVO operateReqVO); + + Long countWx1(UnqualifiedNotificationPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index 233a3e9..9990a1a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -241,6 +241,21 @@ try { pageResult.setList(unqualifiedNotificationDOS); return pageResult; } + + @Override + public PageResult unqualifiedNotificationConfirmPageWx(UnqualifiedNotificationPageReqVO pageReqVO) { + PageResult pageResult = new PageResult<>(); + Long total = unqualifiedNotificationMapper.selectCountConfirmPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize()); + + pageResult.setTotal(total); + if (total > 0L){ + pageResult.setTotalPages(total.intValue()/ pageReqVO.getPageSize()); + } + List unqualifiedNotificationDOS = unqualifiedNotificationMapper.selectConfirmPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize()); + pageResult.setList(unqualifiedNotificationDOS); + return pageResult; + } + @Override public Long countWx(UnqualifiedNotificationPageReqVO pageReqVO) { PageResult pageResult = new PageResult<>(); @@ -322,4 +337,25 @@ try { } } + @Override + public void confirm(UnqualifiedNotificationSaveReqVO operateReqVO) { + if ("过程检".equals(operateReqVO.getType())){ + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(BgMasterLineDO::getId, operateReqVO.getId()) + .set(BgMasterLineDO::getConStatus, 2); + bgMasterLineMapper.update( updateWrapper); + }else { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ZjBgMasterLineDO::getId, operateReqVO.getId()) + .set(ZjBgMasterLineDO::getConStatus, 2); + zjBgMasterLineMapper.update( updateWrapper); + } + + } + + @Override + public Long countWx1(UnqualifiedNotificationPageReqVO pageReqVO) { + return unqualifiedNotificationMapper.selectCountConfirmPageWx(1, 5,5); + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml index 7d1749d..9e76aec 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml @@ -155,14 +155,17 @@ gh.createTime as createTime,gh.creatorName as creatorName,gh.projectSubCode as projectSubCode, gh.projectName as projectName, gh.auditorName as auditorName,gh.auditOpinion as auditOpinion, gh.auditTime as auditTime,gh.isRepre,gh.isQua,gh.notificationStatus as notificationStatus, - gh.remark as remark ,gh.materialName as materialName,gh.blueprintNo as blueprintNo, gh.procedureName as procedureName + gh.remark as remark ,gh.materialName as materialName,gh.blueprintNo as blueprintNo, gh.procedureName as procedureName, + gh.conStatus as conStatus FROM ( SELECT t.id as id, g.pg_number as code, g.project_sub_name as projectSubName, t.amount as amount, g.amount as totalAmount, '过程检' as typeName, t.ent_time as createTime,u.nickname as creatorName,g.project_sub_number as projectSubCode, g.project_name as projectName ,u2.nickname as auditorName,t.audit_opinion as auditOpinion, t.audit_time as auditTime,t.is_repre as isRepre,t.is_qua as isQua,t.notification_status as notificationStatus, - t.remark as remark, g.material_name as materialName,g.blueprint_no as blueprintNo, pr1.name as procedureName + t.remark as remark, g.material_name as materialName,g.blueprint_no as blueprintNo, pr1.name as procedureName, + t.con_status as conStatus + FROM quality_bg_master_line t LEFT JOIN quality_pg_master_line g ON t.zj_mx_id = g.id LEFT JOIN base_procedure pr1 ON pr1.id = g.procedure_id @@ -177,7 +180,9 @@ zj.ent_time as createTime,u1.nickname as creatorName,g1.project_sub_number as projectSubCode, g1.project_name as projectName , u3.nickname as auditorName,zj.audit_opinion as auditOpinion, zj.audit_time as auditTime,zj.is_repre as isRepre,zj.is_qua as isQua,zj.notification_status as notificationStatus, - zj.remark as remark ,'' as materialName, '' as blueprintNo, '' as procedureName + zj.remark as remark ,'' as materialName, '' as blueprintNo, '' as procedureName, + zj.con_status as conStatus + FROM quality_zj_bg_master_line zj LEFT JOIN quality_zj_pg_master_line g1 ON zj.zj_mx_id = g1.id and zj.is_qua = 1 left join system_users u1 on u1.id = zj.bg_user left join system_users u3 on u3.id = zj.auditor @@ -224,4 +229,87 @@ ) gh ORDER BY gh.createTime DESC LIMIT #{offset}, #{limit} + + diff --git a/mes-ui/mini-app/src/pages.json b/mes-ui/mini-app/src/pages.json index eb2862d..98979c6 100644 --- a/mes-ui/mini-app/src/pages.json +++ b/mes-ui/mini-app/src/pages.json @@ -158,8 +158,19 @@ "style": { "navigationBarTitleText": "采购单审批" } - } - ], + }, + { + "path": "pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm", + "style": { + "navigationBarTitleText": "品质异常确认" + } + },{ + "path": "pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail", + "style": { + "navigationBarTitleText": "详情" + } + } + ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "", diff --git a/mes-ui/mini-app/src/pages/index/index.vue b/mes-ui/mini-app/src/pages/index/index.vue index 11fd259..75979c9 100644 --- a/mes-ui/mini-app/src/pages/index/index.vue +++ b/mes-ui/mini-app/src/pages/index/index.vue @@ -6,7 +6,13 @@ import CustomNavbar from "./components/CustomNavbar.vue"; import CategoryPanel from "./components/CategoryPanel.vue"; import footRight from "./components/footRight.vue"; import PageSkeleton from "./components/PageSkeleton.vue"; -import {countReview, getHomeCategoryAPI, getUnreadMessage,countUnqualifiedNotification} from "@/services/home"; +import { + countReview, + getHomeCategoryAPI, + getUnreadMessage, + countUnqualifiedNotification, + countUnqualifiedNotificationConfirm +} from "@/services/home"; // 获取前台分类数据 const categoryList = ref([ { @@ -73,6 +79,13 @@ const categoryList = ref([ defaultImgUrl: "/static/images/assembleReport-default.png", unReadCount: 0, // 未读消息数 }, + { + path: "unqualifiedNotificationConfirm", + name: "品质异常确认", + auth: true, + imgUrl: "/static/images/unqualifiedNotification.png", + defaultImgUrl: "/static/images/unqualifiedNotification-default.png", + }, ]); const loginStore = useLoginStore(); const isLogin = computed(() => { @@ -106,7 +119,7 @@ const getHomeCategory = async () => { e.auth = !!target; }); } - // categoryList.value = categoryList.value.filter(item => item.auth == true); + categoryList.value = categoryList.value.filter(item => item.auth == true); const unReadCount = await getUnreadMessage(); @@ -114,7 +127,11 @@ const getHomeCategory = async () => { var query ={ queryType:2, } + var query1 ={ + queryType:1, + } const unqualifiedNotificationCount = await countUnqualifiedNotification(query); + const unqualifiedNotificationCountConfirm = await countUnqualifiedNotificationConfirm(query1); // 把未读数放到消息通知项 const cgdsp = categoryList.value.find( (e) => e.path === "cgdsp" @@ -125,6 +142,9 @@ const getHomeCategory = async () => { const unqualifiedNotificationItem = categoryList.value.find( (e) => e.path === "unqualifiedNotification" ); + const unqualifiedNotificationConfirm = categoryList.value.find( + (e) => e.path === "unqualifiedNotificationConfirm" + ); if (cgdsp){ cgdsp.unReadCount = count; // cgdsp.auth=true @@ -136,7 +156,9 @@ const getHomeCategory = async () => { if(unqualifiedNotificationItem){ unqualifiedNotificationItem.unReadCount = unqualifiedNotificationCount } - + if(unqualifiedNotificationConfirm){ + unqualifiedNotificationConfirm.unReadCount = unqualifiedNotificationCountConfirm + } if (loginStore.userInfo.userId) { const obj = { diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue new file mode 100644 index 0000000..27b1e3b --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue @@ -0,0 +1,374 @@ + + + + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/detailPanel.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/detailPanel.vue new file mode 100644 index 0000000..255c7b7 --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/detailPanel.vue @@ -0,0 +1,415 @@ + + + + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/mySelect.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/mySelect.vue new file mode 100644 index 0000000..ba0f771 --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/mySelect.vue @@ -0,0 +1,250 @@ + + + + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/showpicture.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/showpicture.vue new file mode 100644 index 0000000..5b9dbf9 --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/showpicture.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue new file mode 100644 index 0000000..1ca79aa --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue @@ -0,0 +1,690 @@ + + + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue new file mode 100644 index 0000000..74de257 --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue @@ -0,0 +1,690 @@ + + + diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm.vue new file mode 100644 index 0000000..5e343c5 --- /dev/null +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/mes-ui/mini-app/src/services/constants.ts b/mes-ui/mini-app/src/services/constants.ts index 5415a46..63ce0a9 100644 --- a/mes-ui/mini-app/src/services/constants.ts +++ b/mes-ui/mini-app/src/services/constants.ts @@ -9,5 +9,5 @@ // export const serviceDomain = 'https://nxhs.cjyx.cc' // export const serviceDomain = 'https://star.hz-hl.com' // export const serviceDomain = 'http://222.71.165.187:9010' - // export const serviceDomain = 'http://localhost:8080' -export const serviceDomain = 'https://nxhs.cjyx.cc' + export const serviceDomain = 'http://localhost:8080' +// export const serviceDomain = 'https://nxhs.cjyx.cc' diff --git a/mes-ui/mini-app/src/services/home.ts b/mes-ui/mini-app/src/services/home.ts index 51009f4..1537be1 100644 --- a/mes-ui/mini-app/src/services/home.ts +++ b/mes-ui/mini-app/src/services/home.ts @@ -24,6 +24,13 @@ export const countUnqualifiedNotification = (data: Object) => { data, }) } +export const countUnqualifiedNotificationConfirm = (data: Object) => { + return http({ + method: 'GET', + url: '/heli/unqualified-notification/countWx1', + data, + }) +} export const getUnreadMessage = () => { return http({ method: 'GET', diff --git a/mes-ui/mini-app/src/services/unqualifiedNotification.ts b/mes-ui/mini-app/src/services/unqualifiedNotification.ts index b52f35a..6f4da9d 100644 --- a/mes-ui/mini-app/src/services/unqualifiedNotification.ts +++ b/mes-ui/mini-app/src/services/unqualifiedNotification.ts @@ -31,7 +31,13 @@ export const operateWx = (data: Object) => { data, }) } - +export const confirm = (data: Object) => { + return http({ + method: 'POST', + url: '/heli/unqualified-notification/confirm', + data, + }) +} // 获取零件分页 @@ -76,3 +82,11 @@ export const postAddWxAPI = (data: Object) => { data, }) } +// 品质异常确认分页查询 +export const getNotificationConfirmPageAPI = (data: Object) => { + return http({ + method: 'GET', + url: '/heli/unqualified-notification/unqualifiedNotificationConfirmPageWx', + data, + }) +} From 666f8402a2a1c8f0cc369369defef689a7c0656b Mon Sep 17 00:00:00 2001 From: z Date: Sun, 13 Jul 2025 15:18:16 +0800 Subject: [PATCH 14/34] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=A1=AE=E8=AE=A4=E9=A1=B5=E9=9D=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-ui/mini-app/src/pages/index/index.vue | 4 +-- .../components/dataItem.vue | 2 +- .../unqualifiedNotification-detail.vue | 20 +++++++------ .../unqualifiedNotificationConfirm-detail.vue | 30 +++++++++---------- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/mes-ui/mini-app/src/pages/index/index.vue b/mes-ui/mini-app/src/pages/index/index.vue index 75979c9..0a7f1ae 100644 --- a/mes-ui/mini-app/src/pages/index/index.vue +++ b/mes-ui/mini-app/src/pages/index/index.vue @@ -83,8 +83,8 @@ const categoryList = ref([ path: "unqualifiedNotificationConfirm", name: "品质异常确认", auth: true, - imgUrl: "/static/images/unqualifiedNotification.png", - defaultImgUrl: "/static/images/unqualifiedNotification-default.png", + imgUrl: "", + defaultImgUrl: "", }, ]); const loginStore = useLoginStore(); diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue index 27b1e3b..5a267a3 100644 --- a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/components/dataItem.vue @@ -105,7 +105,7 @@ const onRefresherrefresh = async () => { isTriggered.value = false } onShow(async () => { - await getListData() + await updateData() }) defineExpose({ updateData }) const showpicture= (pictureArray:[])=>{ diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue index 1ca79aa..d4465a8 100644 --- a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotification-detail.vue @@ -183,15 +183,16 @@ }) } finally { isLoading.value = false; - // const url = `/pages/unqualifiedNotification/unqualifiedNotification` - // uni.redirectTo({ - // url, - // }) - const pages = getCurrentPages(); // 获取当前页面栈 - await initPage(); - const currentPage = pages[pages.length - 1]; // 当前页面 - const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; - uni.reLaunch({ url }); // 重新加载当前页面 + console.log(1111) + const url = `/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm` + uni.redirectTo({ + url, + }) + // const pages = getCurrentPages(); // 获取当前页面栈 + // await initPage(); + // const currentPage = pages[pages.length - 1]; // 当前页面 + // const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + // uni.reLaunch({ url }); // 重新加载当前页面 } @@ -210,6 +211,7 @@ } const cancel = () => { + console.log(1111) uni.navigateBack({ delta: 1 // 返回的页面数,这里1表示返回上一页 }); diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue index 74de257..3f53586 100644 --- a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue @@ -132,15 +132,14 @@ const handleComplate = async () => { }) } finally { isLoading.value = false; - // const url = `/pages/pgMaster/pgMaster-detail?id=${detailInfo.value.id}` // uni.redirectTo({ // url, // }) - await initPage(); - const pages = getCurrentPages(); // 获取当前页面栈 - const currentPage = pages[pages.length - 1]; // 当前页面 - const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; - uni.reLaunch({ url }); // 重新加载当前页面 + // await initPage(); + // const pages = getCurrentPages(); // 获取当前页面栈 + // const currentPage = pages[pages.length - 1]; // 当前页面 + // const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + // uni.reLaunch({ url }); // 重新加载当前页面 } } const range = [ @@ -183,15 +182,16 @@ const submitForm = async () => { }) } finally { isLoading.value = false; - // const url = `/pages/unqualifiedNotificationConfirm/dataltem` - // uni.redirectTo({ - // url, - // }) - const pages = getCurrentPages(); // 获取当前页面栈 - await initPage(); - const currentPage = pages[pages.length - 1]; // 当前页面 - const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; - uni.reLaunch({ url }); // 重新加载当前页面 + + const url = `/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm` + uni.redirectTo({ + url, + }) + // const pages = getCurrentPages(); // 获取当前页面栈 + // await initPage(); + // const currentPage = pages[pages.length - 1]; // 当前页面 + // const url = `/${currentPage.route}?${Object.entries(currentPage.options).map(([key, val]) => `${key}=${val}`).join('&')}`; + // uni.reLaunch({ url }); // 重新加载当前页面 } From 666483500a316270d45dd6b0bd480c210f30fd56 Mon Sep 17 00:00:00 2001 From: Ledo Date: Sun, 13 Jul 2025 16:45:33 +0800 Subject: [PATCH 15/34] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=99=90=E6=97=B6=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UnqualifiedNotificationServiceImpl.java | 2 -- .../heli/taskdispatch/ProductProcessPrint.vue | 19 ++++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index 9990a1a..fb5164e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -288,7 +288,6 @@ try { bgMasterLineDO.setAuditor(operateReqVO.getAuditor().intValue()); bgMasterLineDO.setAudit_time(LocalDateTime.now()); bgMasterLineDO.setAuditOpinion(operateReqVO.getAuditOpinion()); - bgMasterLineDO.setConStatus(2); bgMasterLineMapper.updateById(bgMasterLineDO); }else { //终检 @@ -297,7 +296,6 @@ try { bgMasterLineDO.setAuditor(operateReqVO.getAuditor().intValue()); bgMasterLineDO.setAudit_time(LocalDateTime.now()); bgMasterLineDO.setAuditOpinion(operateReqVO.getAuditOpinion()); - bgMasterLineDO.setConStatus(2); zjBgMasterLineMapper.updateById(bgMasterLineDO); } // if(operateReqVO.getActive().equals("AUDIT")){ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue index 424caaa..4a01cf6 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue @@ -848,9 +848,22 @@ const outopen = () => { ] } } -const queryParams: any = ref({ - code: undefined -}) +const queryParams = { + pageNo: 1, + pageSize: 99, + code: undefined, + name: undefined, + description: undefined, + status: 1, + creator: undefined, + createTime: [], + updater: undefined, + updateTime: [], + deleted: undefined, + tenantId: undefined, + isReport: undefined, + wid: undefined +} /** 打开弹窗 */ const open = async (id?: number) => { From a86c03c7de81ae29ff315861d2dce86b5aefc70e Mon Sep 17 00:00:00 2001 From: Ledo Date: Sun, 13 Jul 2025 17:17:18 +0800 Subject: [PATCH 16/34] =?UTF-8?q?=E9=81=97=E6=BC=8F=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/heli/taskdispatch/ProductProcessPrint.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue index 4a01cf6..346c5f8 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue @@ -899,7 +899,8 @@ const open = async (id?: number) => { // 根据任务单详情子表的procedureId,找到工序详情中name const Procedure = await ProcedureApi.getProcedure(taskitem.procedureId) // 处理数据 - + console.log(taskitem.procedureId) + console.log(Procedure.name) if (Procedure.name == '下料') { summarylist.value[0].name = Procedure.name console.log(';s') @@ -1288,7 +1289,7 @@ const open = async (id?: number) => { } } - } else if (Procedure.name == '深钻孔') { + } else if (Procedure.name == '深孔钻') { summarylist.value[10].name = Procedure.name if (!summarylist.value[10].data) { summarylist.value[10].data = taskitem.summary From ab440ab911d5998c3ce788b96c9b93b3df518c3d Mon Sep 17 00:00:00 2001 From: z Date: Mon, 14 Jul 2025 08:09:25 +0800 Subject: [PATCH 17/34] =?UTF-8?q?=E5=93=81=E8=B4=A8=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/bdgzsomthing/bdgzsomthingController.java | 10 +++++----- .../UnqualifiedNotificationMapper.java | 6 ++++-- .../UnqualifiedNotificationServiceImpl.java | 13 ++++++------- .../UnqualifiedNotificationMapper.xml | 4 ++++ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 6f8ed56..864fa23 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -151,7 +151,7 @@ public class bdgzsomthingController { BeanUtils.toBean(list, bdgzsomthingRespVO.class)); } -// @Scheduled(fixedRate = 10800000) + @Scheduled(fixedRate = 10800000) public void scheduledTask() { bdgzsomthingService.selectds(); } @@ -159,16 +159,16 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { -// selectHasPrice(); -// selectSafeStorageAndDeliverOneYear(); + selectHasPrice(); + selectSafeStorageAndDeliverOneYear(); // bdgzsomthingService.selectds(); } -// @Scheduled(cron = "0 0 2 * * ?") + @Scheduled(cron = "0 0 2 * * ?") public void selectHasPrice(){ bdgzsomthingService.selectHasPrice(); } -// @Scheduled(cron = "0 0 0 * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void selectSafeStorageAndDeliverOneYear(){bdgzsomthingService.selectSafeStorageAndDeliverOneYear();} @PostMapping("/getMessage") @Operation(summary = "小程序消息") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java index c501aa3..7b03420 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/unqualifiednotification/UnqualifiedNotificationMapper.java @@ -139,9 +139,11 @@ public interface UnqualifiedNotificationMapper extends BaseMapperX selectConfirmPageWx( @Param("queryType") Integer queryType, @Param("offset") Integer offset, - @Param("limit") Integer limit); + @Param("limit") Integer limit, + @Param("userId") Integer userId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index fb5164e..72dd3e2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -37,10 +37,7 @@ import javax.annotation.Resource; import javax.validation.Valid; import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -245,13 +242,13 @@ try { @Override public PageResult unqualifiedNotificationConfirmPageWx(UnqualifiedNotificationPageReqVO pageReqVO) { PageResult pageResult = new PageResult<>(); - Long total = unqualifiedNotificationMapper.selectCountConfirmPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize()); + Long total = unqualifiedNotificationMapper.selectCountConfirmPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize(),Objects.requireNonNull(getLoginUser()).getId().intValue()); pageResult.setTotal(total); if (total > 0L){ pageResult.setTotalPages(total.intValue()/ pageReqVO.getPageSize()); } - List unqualifiedNotificationDOS = unqualifiedNotificationMapper.selectConfirmPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize()); + List unqualifiedNotificationDOS = unqualifiedNotificationMapper.selectConfirmPageWx(pageReqVO.getQueryType(), pageReqVO.getPageNum(), pageReqVO.getPageSize(),Objects.requireNonNull(getLoginUser()).getId().intValue()); pageResult.setList(unqualifiedNotificationDOS); return pageResult; } @@ -288,6 +285,7 @@ try { bgMasterLineDO.setAuditor(operateReqVO.getAuditor().intValue()); bgMasterLineDO.setAudit_time(LocalDateTime.now()); bgMasterLineDO.setAuditOpinion(operateReqVO.getAuditOpinion()); +// bgMasterLineDO.setConStatus(2); bgMasterLineMapper.updateById(bgMasterLineDO); }else { //终检 @@ -296,6 +294,7 @@ try { bgMasterLineDO.setAuditor(operateReqVO.getAuditor().intValue()); bgMasterLineDO.setAudit_time(LocalDateTime.now()); bgMasterLineDO.setAuditOpinion(operateReqVO.getAuditOpinion()); +// bgMasterLineDO.setConStatus(2); zjBgMasterLineMapper.updateById(bgMasterLineDO); } // if(operateReqVO.getActive().equals("AUDIT")){ @@ -353,7 +352,7 @@ try { @Override public Long countWx1(UnqualifiedNotificationPageReqVO pageReqVO) { - return unqualifiedNotificationMapper.selectCountConfirmPageWx(1, 5,5); + return unqualifiedNotificationMapper.selectCountConfirmPageWx(1, 5,5, Objects.requireNonNull(getLoginUser()).getId().intValue()); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml index 9e76aec..0713b76 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/unqualifiednotification/UnqualifiedNotificationMapper.xml @@ -246,6 +246,7 @@ AND pr1.deleted = 0 AND pr1.tenant_id = 2 and t.is_qua = 1 AND t.notification_status =3 AND t.audit_opinion = 2 + AND t.bg_user = #{userId} AND t.con_status = #{queryType} UNION ALL @@ -264,6 +265,7 @@ WHERE zj.deleted = 0 AND zj.tenant_id = 2 AND g1.deleted = 0 AND g1.tenant_id = 2 and zj.is_qua = 1 AND zj.notification_status = 3 AND zj.audit_opinion=2 + AND zj.bg_user = #{userId} AND zj.con_status = #{queryType} ) gh @@ -291,6 +293,7 @@ AND pr1.deleted = 0 AND pr1.tenant_id = 2 and t.is_qua = 1 AND t.notification_status =3 AND t.audit_opinion = 2 + AND t.bg_user = #{userId} AND t.con_status = #{queryType} UNION ALL @@ -307,6 +310,7 @@ WHERE zj.deleted = 0 AND zj.tenant_id = 2 AND g1.deleted = 0 AND g1.tenant_id = 2 and zj.is_qua = 1 AND zj.notification_status = 3 AND zj.audit_opinion=2 + AND zj.bg_user = #{userId} AND zj.con_status = #{queryType} ) gh From c1272fede281d5f318e0ed220bc61fbc917402f8 Mon Sep 17 00:00:00 2001 From: z Date: Mon, 14 Jul 2025 19:07:14 +0800 Subject: [PATCH 18/34] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bdgzsomthing/bdgzsomthingController.java | 6 +- .../processbom/ProcessBomController.java | 14 +++ .../StorageInventoryController.java | 16 +++ .../taskdispatch/TaskDispatchController.java | 2 + .../processbom/ProcessBomDetailDO.java | 15 ++- .../taskdispatch/TaskDispatchDetailDO.java | 8 +- .../bgmasterline/BgMasterLineMapper.java | 13 ++ .../processbom/ProcessBomDetailMapper.java | 59 +++++++++ .../PurchaseOrderNoDetailMapper.java | 2 +- .../TaskDispatchDetailMapper.java | 24 ++++ .../taskdispatch/TaskDispatchMapper.java | 1 + .../service/processbom/ProcessBomService.java | 5 + .../processbom/ProcessBomServiceImpl.java | 68 +++++++++++ .../src/api/heli/processbom/index.ts | 9 ++ .../src/api/heli/storageinventory/index.ts | 4 + .../src/views/heli/plan/planSchedule.vue | 24 +--- .../src/views/heli/projectorder/detail.vue | 7 +- .../src/views/heli/purchaseorderno/from.vue | 23 +++- .../src/views/heli/storage/StorageForm.vue | 39 ++++-- .../heli/taskdispatch/ProductProcessPrint.vue | 113 +++++++++++++++--- mes-ui/mini-app/src/pages/index/index.vue | 33 ++--- mes-ui/mini-app/src/services/constants.ts | 4 +- 22 files changed, 409 insertions(+), 80 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 864fa23..93ad04a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -151,7 +151,7 @@ public class bdgzsomthingController { BeanUtils.toBean(list, bdgzsomthingRespVO.class)); } - @Scheduled(fixedRate = 10800000) +// @Scheduled(fixedRate = 10800000) public void scheduledTask() { bdgzsomthingService.selectds(); } @@ -159,8 +159,8 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { - selectHasPrice(); - selectSafeStorageAndDeliverOneYear(); +// selectHasPrice(); +// selectSafeStorageAndDeliverOneYear(); // bdgzsomthingService.selectds(); } @Scheduled(cron = "0 0 2 * * ?") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java index 4893d7a..477bf0d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java @@ -15,11 +15,13 @@ import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFramewor import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.PlanTaskPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.PlanTaskRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.service.composition.CompositionService; @@ -271,4 +273,16 @@ public class ProcessBomController { ExcelUtils.write(response, "标准件物料需求计划.xlsx", "数据", ProcessBomExcelVO.class, BeanUtils.toBean(list, ProcessBomExcelVO.class)); } + @GetMapping("/planBbPage") + @Operation(summary = "获得加工件生产进度分页") + @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") + public CommonResult> planBbPage(@Valid TaskPlanJDBaoBiaoPageReqVO pageReqVO) { + return success(processBomService.planBbPage(pageReqVO)); + } + @GetMapping("/planBZJPage") + @Operation(summary = "获得生产进度分页") + @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") + public CommonResult> planBZJPage(@Valid TaskPlanJDBaoBiaoPageReqVO pageReqVO) { + return success(processBomService.planBZJPage(pageReqVO)); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java index f84013e..f64b38a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storageinventory/StorageInventoryController.java @@ -1,7 +1,9 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -40,6 +42,8 @@ public class StorageInventoryController { @Resource private StorageInventoryService storageInventoryService; + @Resource + private StorageInventoryMapper storageInventoryMapper; @PostMapping("/create") @Operation(summary = "创建库存") @@ -130,4 +134,16 @@ public class StorageInventoryController { PageResult pageResult = storageInventoryService.realTimeInventory(pageReqVO); return success(pageResult); } + @GetMapping("/getById") + @Operation(summary = "获得根据物料跟仓库获取库存分页") + @PreAuthorize("@ss.hasPermission('heli:storage-inventory:query')") + public CommonResult getById(@Valid StorageInventoryPageReqVO pageReqVO) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInventoryDO::getMaterialId,pageReqVO.getMaterialId()); + wrapper.eq(StorageInventoryDO::getWhId,pageReqVO.getWhId()); + wrapper.orderByDesc(StorageInventoryDO::getYardAmount); + wrapper.last("limit 1"); + StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper); + return success(storageInventoryDO); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java index 2b3cfac..9dd7fda 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java @@ -238,4 +238,6 @@ public class TaskDispatchController { List list= taskDispatchService.getListJg(id,projectSubId); return success( list); } + + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java index d4e987d..583e1e0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java @@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import lombok.*; import org.apache.poi.hpsf.Date; import org.apache.poi.hpsf.Decimal; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * 工艺bom明细 DO @@ -189,6 +191,17 @@ public class ProcessBomDetailDO extends BaseDO { private String projectNameSim; @TableField(exist = false) private String nickname; - + @TableField(exist = false) + private Integer planBoomExists; + @TableField(exist = false) + private Integer purYard; + @TableField(exist = false) + private Integer makeStatus; + @TableField(exist = false) + private Integer receivingStatus; + @TableField(exist = false) + private Integer orderNoExists; + @TableField(exist = false) + private List taskDispatchDetailDOList; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java index 7c1d452..da6c345 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java @@ -232,9 +232,13 @@ public class TaskDispatchDetailDO extends BaseDO { private BigDecimal matWeight; @TableField(exist = false) private String nickname; - + @TableField(exist = false) + private BigDecimal workingHours; + @TableField(exist = false) + private LocalDateTime reportTime; private Integer reportStatus; - + @TableField(exist = false) + private Integer flag; //是否泡沫, 是-Y 否 -N private String isFoam; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java index 553c427..eb3116c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/bgmasterline/BgMasterLineMapper.java @@ -91,4 +91,17 @@ public interface BgMasterLineMapper extends BaseMapperX { return selectOne(query); } + + default BgMasterLineDO getByDispatchDetail(Long id){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(BgMasterLineDO.class) + .leftJoin(PgMasterLineDO.class, "a", PgMasterLineDO::getId, BgMasterLineDO::getZjMxId); + + query.eq( PgMasterLineDO::getDispatchDetailId, id) + .orderByDesc(BgMasterLineDO::getId) + .last("limit 1"); + ; + + return selectOne(query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java index 79ea996..857221d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java @@ -11,6 +11,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.Pro import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.ProcessBoomRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo.PlanTaskBomPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; @@ -236,4 +237,62 @@ public interface ProcessBomDetailMapper extends BaseMapperX return selectPage(pageReqVO, query); } + + default PageResult planBbPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessBomDetailDO.class) + .select("f.name as compositionName") + .leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId) + .leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId) + .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) + .leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId) + .leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId) + .leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId) + .leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,PlanTaskBomDO::getOwner) + .leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId) + .groupBy(ProcessBomDetailDO::getId) + .disableSubLogicDel(); + query.like(!ObjectUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode,pageReqVO.getProjectCode()) + .like(!ObjectUtils.isEmpty(pageReqVO.getProjectName()),ProjectOrderDO::getProjectName,pageReqVO.getProjectName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getTaskNo()),PlanTaskDO::getTaskNo,pageReqVO.getTaskNo()) + .like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubName()),ProjectOrderSubDO::getName,pageReqVO.getProjectSubName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getMaterialName()),ProcessBomDetailDO::getMaterialName,pageReqVO.getMaterialName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getOwner()),AdminUserDO::getNickname,pageReqVO.getOwner()) + .eq(ProcessBomDetailDO::getType,2); + return selectPage(pageReqVO, query); + + } + + default PageResult planBZJPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessBomDetailDO.class) + .select("f.name as compositionName") + .select("CASE WHEN w.id IS NOT NULL THEN 1 ELSE 0 END AS planBoomExists") + .select("w.is_pur_yard as purYard") + .select("m.status as makeStatus") + .select("r.receiving_status as receivingStatus") + .select("CASE WHEN r.id IS NOT NULL THEN 1 ELSE 0 END AS orderNoExists") + .leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId) + .leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId) + .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) + .leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId) + .leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId) + .leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId) + .leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,PlanTaskBomDO::getOwner) + .leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId) + .leftJoin("project_material_plan_boom w on t.id=w.boom_detail_id and w.deleted=0 and w.tenant_id=2") + .leftJoin("project_purchase_order_make_detail e on w.project_purchase_order_make_detail_id = e.id and e.deleted=0 and e.tenant_id=2") + .leftJoin("project_purchase_order_make m on e.purchase_order_id=m.id and m.deleted=0 and e.tenant_id=2") + .leftJoin("project_purchase_order_no_detail r on e.purchase_order_no_detail_id = r.id and r.deleted=0 and r.tenant_id=2") + .groupBy(ProcessBomDetailDO::getId) + .disableSubLogicDel(); + query.like(!ObjectUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode,pageReqVO.getProjectCode()) + .like(!ObjectUtils.isEmpty(pageReqVO.getProjectName()),ProjectOrderDO::getProjectName,pageReqVO.getProjectName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getTaskNo()),PlanTaskDO::getTaskNo,pageReqVO.getTaskNo()) + .like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubName()),ProjectOrderSubDO::getName,pageReqVO.getProjectSubName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getMaterialName()),ProcessBomDetailDO::getMaterialName,pageReqVO.getMaterialName()) + .like(!ObjectUtils.isEmpty(pageReqVO.getOwner()),AdminUserDO::getNickname,pageReqVO.getOwner()) + .eq(ProcessBomDetailDO::getType,1); + return selectPage(pageReqVO, query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java index 686aea3..ea7643a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java @@ -63,9 +63,9 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX getPurchaseOrderNoDetailById(Long id){ MPJLambdaWrapper query = new MPJLambdaWrapper<>(); - query.selectAll(PurchaseOrderNoDetailDO.class) .select("t.composition as compositionName","t.purchase_rem_amount as purchaseRemAmounts","mat.code as matCode","pro.name as procedureName","bom.blueprint_no as blueprintNo","psub.id as projectSubId") + .select("ROUND(t.estimated_price / t.purchase_amount, 1) as unitPrice") .leftJoin(PurchaseOrderNoDO.class, "pb", PurchaseOrderNoDO::getId, PurchaseOrderBoomDO::getPurchaseOrderId) .leftJoin(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId) .leftJoin(MaterialPlanBoomDO.class,"plan", MaterialPlanBoomDO::getId, PurchaseOrderNoDetailDO::getProjectMaterialPlanBoomId) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index c468b11..e01a79a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -11,11 +11,13 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDis import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchDetailTotalVO; import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.ygjx.vo.YgjxPageReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; @@ -379,8 +381,18 @@ public interface TaskDispatchDetailMapper extends BaseMapperX getByBoomId(Long id){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.selectAll(TaskDispatchDetailDO.class) + .select("b.name as procedureName") + .leftJoin(TaskDispatchDO.class, "a", TaskDispatchDO::getId, TaskDispatchDetailDO::getDispatchId) + .leftJoin(ProcedureDO.class, "b", ProcedureDO::getId, TaskDispatchDetailDO::getProcedureId) + .groupBy(TaskDispatchDetailDO::getId); + wrapper.eq(TaskDispatchDO::getBomDetailId, id); + return selectList(wrapper); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java index 71aeb67..934012a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java @@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchPageReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java index 4d3b750..3d9337b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java @@ -4,6 +4,7 @@ import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import org.apache.poi.ss.formula.functions.T; @@ -97,4 +98,8 @@ public interface ProcessBomService { Boolean submit(List list); CommonResult withdraw(String code); + + PageResult planBbPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO); + + PageResult planBZJPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index a776250..b75b7b4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -20,8 +20,10 @@ import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomImportExcelVO; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; @@ -34,8 +36,11 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDeta import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.shenhe.ShenheDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.bgmasterline.BgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; @@ -44,7 +49,10 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMap import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.shenhe.ShenheMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper; import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum; +import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService; import com.chanko.yunxi.mes.module.heli.service.composition.CompositionService; import com.chanko.yunxi.mes.module.heli.service.material.MaterialService; @@ -127,6 +135,12 @@ public class ProcessBomServiceImpl implements ProcessBomService { private MaterialPlanBoomMapper materialPlanBoomMapper; @Resource private StorageLogNowMapper storageLogNowMapper; + @Resource + private TaskDispatchDetailMapper taskDispatchDetailMapper; + @Resource + private TaskReportMapper taskReportMapper; + @Resource + private BgMasterLineMapper bgMasterLineMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createProcessBom(ProcessBomSaveReqVO createReqVO) { @@ -1205,6 +1219,60 @@ public class ProcessBomServiceImpl implements ProcessBomService { return CommonResult.success(true); } + @Override + public PageResult planBbPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO) { + PageResult processBomDetailDOPageResult = processBomDetailMapper.planBbPage(pageReqVO); + List list = processBomDetailDOPageResult.getList(); + list.forEach(item->{ + List detailDOS= taskDispatchDetailMapper.getByBoomId(item.getId()); + detailDOS.forEach(detailDO -> { + LambdaQueryWrapper taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + taskReportDOLambdaQueryWrapper.eq(TaskReportDO::getDispatchDetailId, detailDO.getId()); + taskReportDOLambdaQueryWrapper.eq(TaskReportDO::getHasReport, YesOrNoEnum.Y.getCode()); + taskReportDOLambdaQueryWrapper.orderByDesc(TaskReportDO::getCreateTime); + taskReportDOLambdaQueryWrapper.last("limit 1"); + TaskReportDO taskReportDO = taskReportMapper.selectOne(taskReportDOLambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(taskReportDO)){ + detailDO.setReportTime(taskReportDO.getReportTime()); + } + Integer Postponement=0; + Integer flag=0; + if (detailDO.getCheckYn()==1){ + if (ObjectUtil.isNotEmpty(taskReportDO)){ + boolean after = taskReportDO.getReportTime().isAfter(detailDO.getEndTime()); + if (after){ + Postponement=1; + } + }else { + boolean after = LocalDateTime.now().isAfter(detailDO.getEndTime()); + if (after){ + Postponement=1; + } + } + BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.getByDispatchDetail(detailDO.getId()); + if (ObjectUtil.isNotEmpty(bgMasterLineDO)){ + if (bgMasterLineDO.getIsQua()==1&&("1".equals(bgMasterLineDO.getAuditOpinion())||"3".equals(bgMasterLineDO.getAuditOpinion()))){ + flag=3; + }else if (Postponement==0){ + flag=1; + }else if (Postponement==1){ + flag=2; + } + } + detailDO.setFlag(flag); + } + }); + item.setTaskDispatchDetailDOList(detailDOS); + }); + processBomDetailDOPageResult.setList(list); + return processBomDetailDOPageResult; + } + + @Override + public PageResult planBZJPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO) { + return processBomDetailMapper.planBZJPage(pageReqVO); + } + private void createProcessBomDetailList(String bomCode,Long bomId, List list,Integer num) { LocalDateTime now = LocalDateTime.now(); /*list.forEach(o -> {o.setBomId(bomId);o.setUpdateTimes(now);} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts index 5c7aa65..f4c05a3 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts @@ -91,3 +91,12 @@ export const exportStandard = async (params) => { return await request.download({ url: `/heli/process-bom/exportStandard`, params }) } +// 查询加工件生产进度统计 +export const getPlanBb = async (params) => { + return await request.get({ url: `/heli/process-bom/planBbPage`, params }) +} + +// 查询标准件生产进度统计 +export const planBZJPage = async (params) => { + return await request.get({ url: `/heli/process-bom/planBZJPage`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storageinventory/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storageinventory/index.ts index 270d13c..87eb9bb 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storageinventory/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storageinventory/index.ts @@ -62,3 +62,7 @@ export const getSupplementPage = async (params) => { export const realTimeInventory = async (params) => { return await request.get({ url: `/heli/storage-inventory/realTimeInventory`, params }) } +// 查询库存 +export const getById = async (params) => { + return await request.get({ url: `/heli/storage-inventory/getById`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/planSchedule.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/planSchedule.vue index 62c9440..f43799d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/planSchedule.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/planSchedule.vue @@ -144,6 +144,7 @@ + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue index f4a60c7..d60bee9 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue @@ -97,9 +97,10 @@ --+++@@ -111,6 +112,7 @@ + @@ -124,6 +126,7 @@ + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/MaterialForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/MaterialForm.vue new file mode 100644 index 0000000..2433c08 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/MaterialForm.vue @@ -0,0 +1,263 @@ + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/StorageLogForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/StorageLogForm.vue index 948660b..594afd4 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/StorageLogForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagelog/StorageLogForm.vue @@ -82,6 +82,16 @@ v-for="dict in pnCurrentList" :key="dict.id" :label="dict.pn_name" + + + + - + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue index b589c8e..a1bf910 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue @@ -171,9 +171,14 @@ 删除 + + 开票 + + + @@ -184,14 +189,20 @@ 取 消 + + + + From f51339f806dc30c5ded572bb0e3537b2c6b88b2f Mon Sep 17 00:00:00 2001 From: z Date: Thu, 17 Jul 2025 18:29:31 +0800 Subject: [PATCH 22/34] =?UTF-8?q?=E5=BA=94=E6=94=B6=E5=BA=94=E4=BB=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/invoice/InvoiceController.java | 2 +- .../admin/invoice/vo/InvoiceRespVO.java | 2 + .../processdesign/vo/ProcessDesignRespVO.java | 7 +- .../dal/dataobject/invoice/InvoiceDO.java | 2 +- .../processdesign/ProcessDesignDO.java | 17 ++++ .../heli/dal/mysql/orderyf/OrderYfMapper.java | 4 +- .../heli/dal/mysql/orderys/OrderYsMapper.java | 4 +- .../heli/service/invoice/InvoiceService.java | 4 +- .../service/invoice/InvoiceServiceImpl.java | 49 +++++++++- .../OrderYfDetailServiceImpl.java | 9 ++ .../OrderYsDetailServiceImpl.java | 8 ++ .../ProcessDesignServiceImpl.java | 95 +++++++++++++++++++ .../mapper/processbom/ProcessBomMapper.xml | 3 +- .../src/api/heli/invoice/index.ts | 1 + .../src/views/heli/orderyf/OrderYfForm.vue | 33 ++++++- .../src/views/heli/orderyf/index.vue | 2 +- .../src/views/heli/orderyf/invoivce.vue | 38 +++++--- .../src/views/heli/orderyf/record.vue | 25 ++++- .../src/views/heli/orderys/OrderYsForm.vue | 61 ++++++++++-- .../src/views/heli/orderys/index.vue | 2 +- .../src/views/heli/orderys/invoivce.vue | 23 ++++- .../src/views/heli/orderys/record.vue | 23 +++++ .../src/views/heli/processdesign/overview.vue | 92 +++++++++++------- 23 files changed, 430 insertions(+), 76 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/InvoiceController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/InvoiceController.java index 9ce4f65..1993329 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/InvoiceController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/InvoiceController.java @@ -58,7 +58,7 @@ public class InvoiceController { @OperateLog(enable = false) @Transactional(rollbackFor = Exception.class) public CommonResult operate(@Valid @RequestBody InvoiceSaveReqVO operateReqVO) { - return success(invoiceService.operate(operateReqVO)); + return invoiceService.operate(operateReqVO); } @DeleteMapping("/delete") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/vo/InvoiceRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/vo/InvoiceRespVO.java index 17f1bcb..2353970 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/vo/InvoiceRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/invoice/vo/InvoiceRespVO.java @@ -87,4 +87,6 @@ public class InvoiceRespVO { @Schema(description = "订单编号") private String orderCode; + @Schema(description = "订单编号") + private Long cgOrderIdId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java index d3c33e1..c227994 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java @@ -142,5 +142,10 @@ public class ProcessDesignRespVO { private String reReason; @Schema(description = "返工日期") private LocalDateTime reTime; - + private String blankDeferred; + private String deferred3d; + private String deferred2d; + private String blankDelayReason; + private String delayReason2d; + private String delayReason3d; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/invoice/InvoiceDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/invoice/InvoiceDO.java index b09f7fe..90f0f0b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/invoice/InvoiceDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/invoice/InvoiceDO.java @@ -49,7 +49,7 @@ public class InvoiceDO extends BaseDO { * * 枚举 {@link TODO heli_invoice_type 对应的类} */ - private String type; + private Integer type; /** * 开票日期 */ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java index 247a24a..0d2dab4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java @@ -157,4 +157,21 @@ public class ProcessDesignDO extends BaseDO { private String reReason; private LocalDateTime reTime; + + + @TableField(exist = false) + private String blankDeferred; + + @TableField(exist = false) + private String deferred3d; + + @TableField(exist = false) + private String deferred2d; + + @TableField(exist = false) + private String blankDelayReason; + @TableField(exist = false) + private String delayReason2d; + @TableField(exist = false) + private String delayReason3d; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderyf/OrderYfMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderyf/OrderYfMapper.java index e5b6523..c187c1f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderyf/OrderYfMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderyf/OrderYfMapper.java @@ -36,7 +36,7 @@ public interface OrderYfMapper extends BaseMapperX { " ELSE 2 " + // 其他情况 "END AS receivingStatus") .leftJoin( - "finance_invoice i ON i.order_code = t.cg_order_num AND i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'") + "finance_invoice i ON i.order_code = t.cg_order_num AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'") .leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getPurchaseNo, OrderYfDO::getCgOrderNum) .leftJoin(PurchaseOrderNoDetailDO.class,"d", PurchaseOrderNoDetailDO::getPurchaseOrderId, PurchaseOrderNoDO::getId) .disableSubLogicDel() @@ -57,7 +57,7 @@ public interface OrderYfMapper extends BaseMapperX { .select("sum(i.amount) as amount") .select("p.id as projectId","p.purchase_no as projectCode") .leftJoin( - "finance_invoice i ON i.order_code = t.cg_order_num AND i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'") + "finance_invoice i ON i.order_code = t.cg_order_num AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'") .leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getPurchaseNo, OrderYfDO::getCgOrderNum) .disableSubLogicDel(); query diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java index b8f2e22..33bf686 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java @@ -33,7 +33,7 @@ public interface OrderYsMapper extends BaseMapperX { .select("sum(i.amount) as amount") .select("p.delivery_status as deliveryStatus") .leftJoin( - "finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") + "finance_invoice i ON i.order_code = t.code AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") .leftJoin(ProjectOrderDO.class,"p", ProjectOrderDO::getCode, OrderYsDO::getCode) .disableSubLogicDel() .groupBy(OrderYsDO::getId) @@ -56,7 +56,7 @@ public interface OrderYsMapper extends BaseMapperX { .select("p.four_Fu_Kuan as fourFuKuan","p.five_Fu_Kuan as fiveFuKuan","p.six_Fu_Kuan as sixFuKuan") .select("p.code as projectCode,p.id as projectId") .leftJoin( - "finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") + "finance_invoice i ON i.order_code = t.code AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") .leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode) .disableSubLogicDel(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceService.java index c2bf07a..1df2479 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceService.java @@ -1,6 +1,8 @@ package com.chanko.yunxi.mes.module.heli.service.invoice; import javax.validation.*; + +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.invoice.InvoiceDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; @@ -53,7 +55,7 @@ public interface InvoiceService { */ PageResult getInvoicePage(InvoicePageReqVO pageReqVO); - Long operate(InvoiceSaveReqVO operateReqVO); + CommonResult operate(InvoiceSaveReqVO operateReqVO); List getOrderYsInvoice(String code); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceServiceImpl.java index 79772b5..cf9c35c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/invoice/InvoiceServiceImpl.java @@ -1,8 +1,12 @@ package com.chanko.yunxi.mes.module.heli.service.invoice; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderysdetail.OrderYsDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.orderysdetail.OrderYsDetailMapper; import com.chanko.yunxi.mes.module.heli.enums.InvoiceStatusEnum; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -16,8 +20,11 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.invoice.InvoiceMapper; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.List; +import java.util.Objects; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; @@ -33,6 +40,9 @@ public class InvoiceServiceImpl implements InvoiceService { @Resource private InvoiceMapper invoiceMapper; + @Resource + private OrderYsDetailMapper orderYsDetailMapper; + @Override public Long createInvoice(InvoiceSaveReqVO createReqVO) { @@ -88,7 +98,7 @@ public class InvoiceServiceImpl implements InvoiceService { @Override @Transactional(rollbackFor = Exception.class) - public Long operate(InvoiceSaveReqVO operateReqVO) { + public CommonResult operate(InvoiceSaveReqVO operateReqVO) { OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(operateReqVO.getActive()); if(operateTypeEnum == OperateTypeEnum.SUBMIT){ operateReqVO.setSubmitter(SecurityFrameworkUtils.getLoginUser().getId()) @@ -97,12 +107,47 @@ public class InvoiceServiceImpl implements InvoiceService { operateReqVO.setCanceller(SecurityFrameworkUtils.getLoginUser().getId()) .setCancelTime(LocalDateTime.now()); } + System.out.println("FINANCE_MAKE_INVOICE".equals(operateReqVO.getBusinessType())); + if ("FINANCE_MAKE_INVOICE".equals(operateReqVO.getBusinessType())){ + if (ObjectUtil.isNotEmpty(operateReqVO.getCgOrderIdId())) { + OrderYsDetailDO orderYsDetailDO = orderYsDetailMapper.selectById(operateReqVO.getCgOrderIdId()); + if (ObjectUtil.isNotEmpty(orderYsDetailDO)){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(InvoiceDO::getCgOrderIdId, operateReqVO.getCgOrderIdId()); + if (ObjectUtil.isNotEmpty(operateReqVO.getId())) { + wrapper.ne(InvoiceDO::getId, operateReqVO.getId()); + List invoiceDOS = invoiceMapper.selectList(wrapper); + BigDecimal sum = invoiceDOS.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(InvoiceDO::getAmount) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + if (sum.add(operateReqVO.getAmount()).compareTo(orderYsDetailDO.getCgYishou())>0){ + return CommonResult.error(400,"已开发票"+sum.setScale(2, RoundingMode.HALF_UP)+"+本次开票"+operateReqVO.getAmount().setScale(2, RoundingMode.HALF_UP)+">回款金额"+orderYsDetailDO.getCgYishou().setScale(2, RoundingMode.HALF_UP)+"请确认!"); + } + } else { + List invoiceDOS = invoiceMapper.selectList(wrapper); + BigDecimal sum=BigDecimal.ZERO; + if (ObjectUtil.isNotEmpty(invoiceDOS)){ + sum = invoiceDOS.stream() + .filter(Objects::nonNull) // 过滤掉空对象 + .map(InvoiceDO::getAmount) + .filter(Objects::nonNull) // 过滤掉空值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 + } + if (sum.add(operateReqVO.getAmount()).compareTo(orderYsDetailDO.getCgYishou())>0){ + return CommonResult.error(400,"已开发票"+sum+"+本次开票"+operateReqVO.getAmount()+">回款金额"+orderYsDetailDO.getCgYishou().setScale(2, RoundingMode.HALF_UP)+"请确认!"); + } + } + } + } + } if(operateReqVO.getId() == null){ operateReqVO.setId(createInvoice(operateReqVO)); }else{ updateInvoice(operateReqVO); } - return operateReqVO.getId(); + return CommonResult.success(operateReqVO.getId()); } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderyfdetail/OrderYfDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderyfdetail/OrderYfDetailServiceImpl.java index 9adaa66..bb6d606 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderyfdetail/OrderYfDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderyfdetail/OrderYfDetailServiceImpl.java @@ -1,7 +1,10 @@ package com.chanko.yunxi.mes.module.heli.service.orderyfdetail; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderyf.OrderYfDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderysdetail.OrderYsDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.orderyf.OrderYfMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -30,6 +33,8 @@ public class OrderYfDetailServiceImpl implements OrderYfDetailService { @Resource private OrderYfDetailMapper orderYfDetailMapper; + @Resource + private OrderYfMapper orderYfMapper; @Override public Integer createOrderYfDetail(OrderYfDetailSaveReqVO createReqVO) { @@ -53,6 +58,10 @@ public class OrderYfDetailServiceImpl implements OrderYfDetailService { public void deleteOrderYfDetail(Integer id) { // 校验存在 validateOrderYfDetailExists(id); + OrderYfDetailDO orderYfDetailDO = orderYfDetailMapper.selectById(id); + OrderYfDO orderYfDO = orderYfMapper.selectById(orderYfDetailDO.getCgId()); + orderYfDO.setCgYifu(orderYfDO.getCgYifu().subtract(orderYfDetailDO.getCgYifu())); + orderYfMapper.updateById(orderYfDO); // 删除 orderYfDetailMapper.deleteById(id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderysdetail/OrderYsDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderysdetail/OrderYsDetailServiceImpl.java index 06d76c2..7c420e5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderysdetail/OrderYsDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/orderysdetail/OrderYsDetailServiceImpl.java @@ -1,6 +1,8 @@ package com.chanko.yunxi.mes.module.heli.service.orderysdetail; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -29,6 +31,8 @@ public class OrderYsDetailServiceImpl implements OrderYsDetailService { @Resource private OrderYsDetailMapper orderYsDetailMapper; + @Resource + private OrderYsMapper orderYsMapper; @Override public Integer createOrderYsDetail(OrderYsDetailSaveReqVO createReqVO) { @@ -52,6 +56,10 @@ public class OrderYsDetailServiceImpl implements OrderYsDetailService { public void deleteOrderYsDetail(Integer id) { // 校验存在 validateOrderYsDetailExists(id); + OrderYsDetailDO orderYsDetailDO = orderYsDetailMapper.selectById(id); + OrderYsDO orderYsDO = orderYsMapper.selectById(orderYsDetailDO.getCgId()); + orderYsDO.setCgYishou(orderYsDO.getCgYishou().subtract(orderYsDetailDO.getCgYishou())); + orderYsMapper.updateById(orderYsDO); // 删除 orderYsDetailMapper.deleteById(id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java index f0c64c8..3bf101a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java @@ -26,6 +26,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignPro import com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.WarningEnum; import com.chanko.yunxi.mes.module.heli.vo.WarningMessageVO; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.security.access.method.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,7 +35,9 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.Duration; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; @@ -271,6 +274,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { if(ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name().equals(processDesign.getProcessDesignType())){ processDesignDO.setBlankDate(processDesign.getBlankDate()) .setStartBlankDate(processDesign.getStartBlankDate()) + .setBlankDelayReason(processDesign.getDelayReason()) .setBlankOwnerName(processDesign.getBlankOwnerName()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId()); @@ -284,9 +288,39 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { processDesignDO.setProgressBlank("进行中"); } } + + if (ObjectUtil.isNotEmpty(processDesign.getBlankDate())){ + if (processDesign.getIsOverProcess()==1){ + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId()); + wrapper1.orderByDesc(ProcessDesignProgressDO::getEndTime); + wrapper1.last("limit 1"); + ProcessDesignProgressDO processDesignProgressDO1 = processDesignProgressMapper.selectOne(wrapper1); + if (compareDateParts(processDesignProgressDO1.getEndTime().toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(),processDesign.getBlankDate())>0){ + processDesignDO.setBlankDeferred("是"); + }else { + processDesignDO.setBlankDeferred("否"); + + } + }else{ + if (compareDateParts(LocalDateTime.now(),processDesign.getBlankDate())>0){ + processDesignDO.setBlankDeferred("是"); + }else { + processDesignDO.setBlankDeferred("否"); + + } + } + }else { + processDesignDO.setBlankDeferred("否"); + + } + }else if(ProcessDesignTypeEnum.BLUEPRINT_3D.name().equals(processDesign.getProcessDesignType())){ processDesignDO.setThreeDimDate(processDesign.getThreeDimDate()) .setStartThreeDimDate(processDesign.getStartThreeDimDate()) + .setDelayReason3d(processDesign.getDelayReason()) .setThreeDimOwnerName(processDesign.getThreeDimOwnerName()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId()); @@ -301,9 +335,37 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { processDesignDO.setProgress3d("进行中"); } } + if (ObjectUtil.isNotEmpty(processDesign.getThreeDimDate())){ + if (processDesign.getIsOverProcess()==1){ + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId()); + wrapper1.orderByDesc(ProcessDesignProgressDO::getEndTime); + wrapper1.last("limit 1"); + ProcessDesignProgressDO processDesignProgressDO1 = processDesignProgressMapper.selectOne(wrapper1); + if (compareDateParts(processDesignProgressDO1.getEndTime().toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(),processDesign.getThreeDimDate())>0){ + processDesignDO.setDeferred3d("是"); + }else { + processDesignDO.setDeferred3d("否"); + + } + }else{ + if (compareDateParts(LocalDateTime.now(),processDesign.getThreeDimDate())>0){ + processDesignDO.setDeferred3d("是"); + }else { + processDesignDO.setDeferred3d("否"); + + } + } + }else { + processDesignDO.setDeferred3d("否"); + } + }else if(ProcessDesignTypeEnum.BLUEPRINT_2D.name().equals(processDesign.getProcessDesignType())){ processDesignDO.setTwoDimDate(processDesign.getTwoDimDate()) .setStartTwoDimDate(processDesign.getStartTwoDimDate()) + .setDelayReason2d(processDesign.getDelayReason()) .setTwoDimOwnerName(processDesign.getTwoDimOwnerName()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId()); @@ -317,6 +379,31 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { processDesignDO.setProgress2d("进行中"); } } + if (ObjectUtil.isNotEmpty(processDesign.getTwoDimDate())){ + if (processDesign.getIsOverProcess()==1){ + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId()); + wrapper1.orderByDesc(ProcessDesignProgressDO::getEndTime); + wrapper1.last("limit 1"); + ProcessDesignProgressDO processDesignProgressDO1 = processDesignProgressMapper.selectOne(wrapper1); + if (compareDateParts(processDesignProgressDO1.getEndTime().toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(),processDesign.getTwoDimDate())>0){ + processDesignDO.setDeferred2d("是"); + }else { + processDesignDO.setDeferred2d("否"); + + } + }else{ + if (compareDateParts(LocalDateTime.now(),processDesign.getTwoDimDate())>0){ + processDesignDO.setDeferred2d("是"); + }else { + processDesignDO.setDeferred2d("否"); + } + } + }else { + processDesignDO.setDeferred2d("否"); + } } }); } @@ -338,6 +425,14 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { } return processDesignDOPageResult; } + public int compareDateParts(LocalDateTime dt1, LocalDateTime dt2) { + // 提取日期部分 + LocalDate date1 = dt1.toLocalDate(); + LocalDate date2 = dt2.toLocalDate(); + + // 使用compareTo比较 + return date1.compareTo(date2); + } // ==================== 子表(工艺设计进度) ==================== diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml index 9f2c846..f38b1f0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml @@ -24,10 +24,11 @@ diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/invoice/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/invoice/index.ts index becc427..2a55226 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/invoice/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/invoice/index.ts @@ -16,6 +16,7 @@ export interface InvoiceVO { canceller: number cancelTime: Date status: number + cgOrderIdId:number } // 查询财务发票分页 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/OrderYfForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/OrderYfForm.vue index 5d086a7..109bc65 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/OrderYfForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/OrderYfForm.vue @@ -106,7 +106,7 @@ 删除 - 开票 + 发票 @@ -118,7 +118,7 @@ @@ -129,6 +129,7 @@ import * as OrderYfApi from '@/api/heli/orderyf' import * as OrderYfDetailApi from '@/api/heli/orderyfdetail' import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict"; import Invoivce from "@/views/heli/orderyf/invoivce.vue"; +import * as InvoiceApi from "@/api/heli/invoice"; const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -230,15 +231,32 @@ const onAddItem = () => { formData.value.orderYfDetails.push(row) } +const queryParams = reactive({ + pageNo: 1, + pageSize: 10, + id:undefined, + type:undefined, +}) /** 删除子项操作 */ const onDeleteItem = async (index) => { if (index!=formData.value.orderYfDetails.length-1){ message.error(`请从最后一条数据开始删除`) return false } - let deletedItems = formData.value.orderYfDetails.splice(index, 1) - let id = deletedItems[0].id; - if (id) await OrderYfDetailApi.deleteOrderYfDetail(id) + let id = formData.value.orderYfDetails[index].id; + if (id){ + queryParams.id=id + queryParams.type="FINANCE_RECEIVE_INVOICE" + const data=await InvoiceApi.getInvoicePages(queryParams) + if (data.total>0){ + message.error(`该付款发票已接收,不允许删除`) + return false + } + await OrderYfDetailApi.deleteOrderYfDetail(id) + } + formData.value.orderYfDetails.splice(index, 1) + + formData.value.cgYifu=formData.value.orderYfDetails.reduce((sum, item) => sum + Number(item.cgYifu), 0); } const sum = async () => { @@ -246,6 +264,11 @@ const sum = async () => { } /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 +const cancel = async () => { + dialogVisible.value = false + emit('success') + +} const submitForm = async () => { // 校验表单 // await formRef.value.validate() diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue index 693cde3..c7ca19c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue @@ -100,7 +100,7 @@ width="180px" v-if="false" /> - + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/invoivce.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/invoivce.vue index f264f21..d76f6c4 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/invoivce.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/invoivce.vue @@ -134,7 +134,11 @@ width="140" /> - + + + @@ -267,6 +271,7 @@ const resetForm = () => { // formRef.value?.resetFields() } +const flag = ref(true) const getList = async (id) => { queryParams.id=id queryParams.type="FINANCE_RECEIVE_INVOICE" @@ -275,6 +280,8 @@ const getList = async (id) => { const data=await InvoiceApi.getInvoicePages(queryParams) list.value = data.list total.value = data.total + flag.value=true + uploadFiles.value=[] } finally { loading1.value = false } @@ -282,7 +289,6 @@ const getList = async (id) => { const emits = async () => { dialogVisible.value = false emit('success') - } const queryData = async (id?: number) => { resetForm() @@ -321,6 +327,7 @@ const submitForm = async () => { // 上传附件 if (uploadFiles.value.length > 0) { + flag.value=false uploadData.value.businessId = dataId await uploadRef.value!.submit() message.success(t('common.operationSuccess')) @@ -329,6 +336,7 @@ const submitForm = async () => { commonStore.setStore('active', jumpActive) commonStore.setStore('businessType', "FINANCE_RECEIVE_INVOICE") resetForm(); + uploadFiles.value=[] getList(detailId.value) }else{ message.success(t('common.operationSuccess')) @@ -368,7 +376,7 @@ const handleAvatarSuccess: UploadProps['onSuccess'] = async ( businessFileType:"FINANCE_RECEIVE_INVOICE" } uploading.value = true; - formData.value.attachments = (await getFilePage(attParams)).list + // formData.value.attachments = (await getFilePage(attParams)).list // await reload() uploading.value = false; @@ -385,8 +393,6 @@ const uploadChange = (file, files) => { uploadFiles.value = files refreshAttachments(files) } - - const open = async (id?: number,projectId,projectCode) => { resetForm() dialogVisible.value = true @@ -396,6 +402,7 @@ const open = async (id?: number,projectId,projectCode) => { formData.value.orderId = projectId formData.value.orderCode = projectCode formData.value.cgOrderIdId=id + uploadFiles.value=[] getList(id) } @@ -416,17 +423,18 @@ const handleDelete = async (id: number) => { defineExpose({ open }) // 提供 open 方法,用于打开弹窗 const refreshAttachments = (files) => { - formData.value.attachments = formData.value.attachments.filter((value, index, array) => { - return value.id - }) - - for (let i = 0; i < files.length; i++) { - let file = files[i] - file.createTime = new Date() - formData.value.attachments.push(file) + if (flag.value){ + formData.value.attachments = formData.value.attachments.filter((value, index, array) => { + return value.id + }) + for (let i = 0; i < files.length; i++) { + let file = files[i] + file.createTime = new Date() + formData.value.attachments.push(file) + } + // 排序 + formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime) } - // 排序 - formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime) } // 删除附件 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/record.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/record.vue index 029a06f..4fc09be 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/record.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/record.vue @@ -71,7 +71,7 @@ - + @@ -83,12 +83,35 @@ + + + + + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue index a1bf910..9720bdf 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/OrderYsForm.vue @@ -186,7 +186,7 @@ @@ -198,12 +198,18 @@ import * as OrderYsDetailApi from '@/api/heli/orderysdetail' import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict"; import Invoivce from "@/views/heli/orderys/invoivce.vue"; import {ref} from "vue"; +import * as InvoiceApi from "@/api/heli/invoice"; const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const formRefs = ref() const ids = ref() - +const queryParams = reactive({ + pageNo: 1, + pageSize: 10, + id:undefined, + type:undefined, +}) const dialogVisible = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 @@ -294,9 +300,18 @@ const onDeleteItem = async (index) => { message.error(`请从最后一条数据开始删除`) return false } - let deletedItems = formData.value.orderYsDetails.splice(index, 1) - let id = deletedItems[0].id; - if (id) await OrderYsDetailApi.deleteOrderYsDetail(id) + let id = formData.value.orderYsDetails[index].id; + if (id){ + queryParams.id=id + queryParams.type="FINANCE_MAKE_INVOICE" + const data=await InvoiceApi.getInvoicePages(queryParams) + if (data.total>0){ + message.error(`该回款已开票,不允许删除`) + return false + } + await OrderYsDetailApi.deleteOrderYsDetail(id) + } + formData.value.orderYsDetails.splice(index, 1) formData.value.cgYishou=formData.value.orderYsDetails.reduce((sum, item) => sum + Number(item.cgYishou), 0); } @@ -325,7 +340,12 @@ const sum = async () => { formData.value.cgYishou=formData.value.orderYsDetails.reduce((sum, item) => sum + Number(item.cgYishou), 0); } /** 提交表单 */ -const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 +const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 +const cancel = async () => { + dialogVisible.value = false + emit('success') + +} const submitForm = async () => { // 校验表单 // await formRef.value.validate() @@ -343,7 +363,36 @@ const submitForm = async () => { message.error('第'+(i+1)+'行回款金额不能为空') return false } + + if (formData.value.orderYsDetails[i].cgType==1&&formData.value.shouFuKuan==null){ + message.error('付款类型跟订单不一致,不允许添加') + return false } + if (formData.value.orderYsDetails[i].cgType==2&&formData.value.twoFuKuan==null){ + message.error('付款类型跟订单不一致,不允许添加') + return false + } + if (formData.value.orderYsDetails[i].cgType==3&&formData.value.threeFuKuan==null){ + message.error('付款类型跟订单不一致,不允许添加') + return false + } + if (formData.value.orderYsDetails[i].cgType==4&&formData.value.fourFuKuan==null){ + message.error('付款类型跟订单不一致,不允许添加') + return false + } + if (formData.value.orderYsDetails[i].cgType==5&&formData.value.fiveFuKuan==null){ + message.error('付款类型跟订单不一致,不允许添加') + return false + } + if (formData.value.orderYsDetails[i].cgType==6&&formData.value.sixFuKuan==null){ + message.error('付款类型跟订单不一致,不允许添加') + return false + } + } + if (formData.value.cgYishou>=formData.value.cgYs){ + message.error('已收金额大于应收金额,请确认') + return false + } if (formData.value.cgYishou!=''&&formData.value.cgYishou!=undefined&&formData.value.cgYishou!=null){ if (formData.value.cgYishou - + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/invoivce.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/invoivce.vue index 44bdc67..38d80b5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/invoivce.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/invoivce.vue @@ -134,7 +134,11 @@ width="140" /> - + + + @@ -199,6 +203,8 @@ const currentId = toRef(commonStore.getStore('id')) const businessType = toRef(commonStore.getStore('businessType')) const formLoading = ref(false) +const flag = ref(true) + const dialogTitle = ref('') const detailDisabled = ref(false) const queryParams = reactive({ @@ -276,6 +282,7 @@ const getList = async (id) => { const data=await InvoiceApi.getInvoicePages(queryParams) list.value = data.list total.value = data.total + flag.value=true } finally { loading1.value = false } @@ -317,11 +324,13 @@ const submitForm = async () => { // 提交请求 formLoading.value = true try { + console.log(formData.value) const data = formData.value as unknown as InvoiceApi.InvoiceVO let dataId = await InvoiceApi.operateInvoice(data) // 上传附件 if (uploadFiles.value.length > 0) { + flag.value=false uploadData.value.businessId = dataId await uploadRef.value!.submit() message.success(t('common.operationSuccess')) @@ -329,6 +338,7 @@ const submitForm = async () => { commonStore.setStore('id', dataId) commonStore.setStore('active', jumpActive) commonStore.setStore('businessType', "FINANCE_MAKE_INVOICE") + uploadFiles.value=[] resetForm(); getList(detailId.value) }else{ @@ -364,13 +374,16 @@ const handleAvatarSuccess: UploadProps['onSuccess'] = async ( let attParams = { pageNo: 1, pageSize: 99, - businessId: currentId.value, + businessId: null, businessType: "FINANCE_MAKE_INVOICE", businessFileType:"FINANCE_MAKE_INVOICE" } uploading.value = true; - formData.value.attachments = (await getFilePage(attParams)).list + // formData.value.attachments = (await getFilePage(attParams)).list // await reload() + // formData.value.attachments=[] + console.log(111) + console.log(formData.value.attachments) uploading.value = false; } @@ -397,6 +410,7 @@ const open = async (id?: number,projectId,projectCode) => { formData.value.orderId = projectId formData.value.orderCode = projectCode formData.value.cgOrderIdId=id + uploadFiles.value=[] getList(id) } @@ -417,10 +431,10 @@ const handleDelete = async (id: number) => { defineExpose({ open }) // 提供 open 方法,用于打开弹窗 const refreshAttachments = (files) => { + if (flag.value){ formData.value.attachments = formData.value.attachments.filter((value, index, array) => { return value.id }) - for (let i = 0; i < files.length; i++) { let file = files[i] file.createTime = new Date() @@ -428,6 +442,7 @@ const refreshAttachments = (files) => { } // 排序 formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime) + } } // 删除附件 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/record.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/record.vue index fc05d00..f476509 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/record.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/record.vue @@ -104,12 +104,35 @@ /> + + + + + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/overview.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/overview.vue index 3477a61..c45d5ad 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/overview.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/overview.vue @@ -87,44 +87,62 @@ - - - - - + + + + - - - + + + + + + + - - - - - + + + + - - - - - > + + - + + - - - + + + + + + + + + + + + { exportLoading.value = false } } - +// 定义样式计算函数 +const getCellStyle = (status) => { + switch (status) { + case '已完成': + return { backgroundColor: '#f2f2f2' } // 浅灰色 + case '进行中': + return { backgroundColor: '#90EE90' } // 浅绿色 + default: + return {} // 未开始保持透明背景 + } +} /** 初始化 **/ onMounted(() => { getList() From e401652ec4cfc814b1f946ee4cd13c9f5d51d557 Mon Sep 17 00:00:00 2001 From: Ledo Date: Fri, 18 Jul 2025 10:59:37 +0800 Subject: [PATCH 23/34] =?UTF-8?q?=E6=B4=BE=E5=B7=A5=E6=9F=A5=E8=AF=A2sql?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaskDispatchDetailMapper.java | 92 +++++++++---------- 1 file changed, 41 insertions(+), 51 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index e01a79a..950698b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -316,63 +316,53 @@ public interface TaskDispatchDetailMapper extends BaseMapperXe.like(ProjectOrderDO::getProjectName, reqVO.getSubOrDetailName()).or().like( + ProjectOrderSubDO::getName, reqVO.getSubOrDetailName() + )); + // query.eq(" (b.project_name like '%" + reqVO.getSubOrDetailName() + "%' or c.name like '%" + reqVO.getSubOrDetailName() + "%')"); } - if (reqVO.getProcedureStatusList().size()==1 && reqVO.getProcedureStatusList().get(0)==2){ - //完工降序 - query.orderByDesc(TaskDispatchDetailDO::getDispatchId,TaskDispatchDetailDO::getSort); - }else { - //未完工升序 + query.and(wrapper -> { + wrapper.ne(ProjectOrderDO::getStatus,6); - query.eq(TaskDispatchDO::getDispatchStatus,2) - .orderByAsc(TaskDispatchDetailDO::getDispatchId,TaskDispatchDetailDO::getSort) - ; - } -// if (CollUtil.isNotEmpty(postIds)) { -// query.and(i -> i -// .and(j -> j.in(TaskDispatchDetailDO::getPostId, postIds)) -// .and(j -> j.isNull(TaskDispatchDetailDO::getOwner)) -// .or(k-> k.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner())) -// ); -// }else{ -// query.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner()); -// } - if (CollUtil.isNotEmpty(postIds)) { - query.and(i -> { - // 为每个岗位创建对应的工序查询条件 - for (String postId : postIds.keySet()) { - Long processId = postIds.get(postId); - if (ObjectUtil.isNotEmpty(processId)) { - i.or(j -> j - .eq(TaskDispatchDetailDO::getPostId, postId) - .eq(TaskDispatchDetailDO::getProcedureId, processId) - .isNull(TaskDispatchDetailDO::getOwner) - ); - }else { - i.or(j -> j - .eq(TaskDispatchDetailDO::getPostId, postId) - .isNull(TaskDispatchDetailDO::getOwner) - ); + if (CollUtil.isNotEmpty(postIds)) { + wrapper.and(i -> { + // 为每个岗位创建对应的工序查询条件 + for (String postId : postIds.keySet()) { + Long processId = postIds.get(postId); + if (ObjectUtil.isNotEmpty(processId)) { + i.or(j -> j.eq(TaskDispatchDetailDO::getPostId, postId) + .eq(TaskDispatchDetailDO::getProcedureId, processId) + .isNull(TaskDispatchDetailDO::getOwner)); + } else { + i.or(j -> j.eq(TaskDispatchDetailDO::getPostId, postId) + .isNull(TaskDispatchDetailDO::getOwner)); + } } - } - }); - // 添加所有者查询条件 - query.or(k-> k.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner())); + }); + // 添加所有者查询条件 + wrapper.or(k -> k.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner())); + } else { + wrapper.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner()); + } - }else{ - query.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner()); - } - query - .in(CollUtil.isNotEmpty(reqVO.getProcedureStatusList()), TaskDispatchDetailDO::getProcedureStatus, reqVO.getProcedureStatusList()) - .eq(reqVO.getIsReport() != null, ProcedureDO::getIsReport, reqVO.getIsReport()) - .eq(!StringUtils.isEmpty(reqVO.getDispatchType()), TaskDispatchDO::getDispatchType, reqVO.getDispatchType()) - .eq(reqVO.getTaskId() != null, TaskDispatchDO::getTaskId, reqVO.getTaskId()) - .eq(reqVO.getBomDetailId() != null, TaskDispatchDO::getBomDetailId, reqVO.getBomDetailId()) - ; + wrapper.in(CollUtil.isNotEmpty(reqVO.getProcedureStatusList()), TaskDispatchDetailDO::getProcedureStatus, reqVO.getProcedureStatusList()) + .eq(reqVO.getIsReport() != null, ProcedureDO::getIsReport, reqVO.getIsReport()) + .eq(!StringUtils.isEmpty(reqVO.getDispatchType()), TaskDispatchDO::getDispatchType, reqVO.getDispatchType()) + .eq(reqVO.getTaskId() != null, TaskDispatchDO::getTaskId, reqVO.getTaskId()) + .eq(reqVO.getBomDetailId() != null, TaskDispatchDO::getBomDetailId, reqVO.getBomDetailId()); + }); return selectPage(reqVO, query); } From b8e4cec8782208479a13222e9a0b310aebee0517 Mon Sep 17 00:00:00 2001 From: z Date: Fri, 18 Jul 2025 19:28:24 +0800 Subject: [PATCH 24/34] =?UTF-8?q?=E5=85=A5=E5=BA=93=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/material/MaterialController.java | 8 +- .../vo/MaterialPlanPageReqVO.java | 2 + .../admin/materialplan/vo/PartExcelVO.java | 12 +- .../vo/PurchaseOrderNoRespVO.java | 3 + .../admin/storage/StorageController.java | 21 ++ .../admin/storage/vo/StorageRespVO.java | 2 + .../admin/storage/vo/StorageSaveReqVO.java | 3 + .../storagelog/vo/StorageLogPageReqVO.java | 3 +- .../storagemat/StorageMatController.java | 9 +- .../admin/storagemat/vo/StorageMatRespVO.java | 4 + .../storagemat/vo/StorageMatSaveReqVO.java | 3 + .../dal/dataobject/material/MaterialDO.java | 12 + .../purchaseorderno/PurchaseOrderNoDO.java | 2 + .../dal/dataobject/storage/StorageDO.java | 2 + .../taskdispatch/TaskDispatchDetailDO.java | 2 + .../dal/mysql/material/MaterialMapper.java | 31 +++ .../MaterialPlanBoomMapper.java | 1 + .../PurchaseOrderNoMapper.java | 2 + .../TaskDispatchDetailMapper.java | 2 + .../service/material/MaterialService.java | 2 + .../service/material/MaterialServiceImpl.java | 34 +++ .../PartPurchaseOrderServiceImpl.java | 1 + .../heli/service/plan/PlanServiceImpl.java | 5 +- .../PurchaseOrderNoDetailServiceImpl.java | 6 + .../service/storage/StorageServiceImpl.java | 28 ++- .../taskdispatch/TaskDispatchServiceImpl.java | 15 ++ .../src/api/heli/material/index.ts | 3 + .../views/heli/PriceQuoteRecord/detail.vue | 9 +- .../src/views/heli/deliverorder/detail.vue | 13 +- .../src/views/heli/materialplan/part.vue | 26 +- .../src/views/heli/orderyf/OrderYfForm.vue | 2 +- .../src/views/heli/orderyf/invoivce.vue | 2 + .../src/views/heli/orderys/OrderYsForm.vue | 32 ++- .../src/views/heli/orderys/invoivce.vue | 6 +- .../src/views/heli/orderys/record.vue | 3 +- .../src/views/heli/outsourcestock/add.vue | 7 +- .../outsourcestock/purchaseorderDialog.vue | 2 +- .../src/views/heli/partpurchase/index.vue | 25 +- .../src/views/heli/plan/detail.vue | 7 +- .../src/views/heli/plan/edit.vue | 9 +- .../src/views/heli/plan/index.vue | 20 +- .../src/views/heli/plantask/edit.vue | 13 +- .../views/heli/processdesign/bomDetail.vue | 31 +-- .../src/views/heli/projectorder/detail.vue | 62 ++--- .../src/views/heli/storage/StorageForm.vue | 69 ++++- .../src/views/heli/storage/materialsin1.vue | 235 ++++++++++++++++++ .../src/views/heli/taskdispatch/detail.vue | 31 +-- 47 files changed, 684 insertions(+), 138 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/storage/materialsin1.vue diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java index 76482d0..6260ec0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java @@ -155,7 +155,13 @@ public class MaterialController { PageResult pageResult = materialService.getStorageNowPageGroupMaterial(pageReqVO); return success(pageResult); } - + @GetMapping("/page-material-group-no") + @Operation(summary = "根据采购单获得入库物料列表") + @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") + public CommonResult> getStorageNowMaterialNoPage(@Valid StorageLogPageReqVO pageReqVO) { + PageResult pageResult = materialService.getStorageNowMaterialNoPage(pageReqVO); + return success(pageResult); + } @GetMapping("/page-now-all") @Operation(summary = "获得出库物料列表") @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java index 6b6f6cb..2d1cdb5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java @@ -75,5 +75,7 @@ public class MaterialPlanPageReqVO extends PageParam { private Integer mplanStatus; @Schema(description = "责任人") private String duEmpName; + @Schema(description = "责任人") + private String blueprintNo; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/PartExcelVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/PartExcelVO.java index 6f2b1b8..afba019 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/PartExcelVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/PartExcelVO.java @@ -21,8 +21,7 @@ import java.util.Date; @NoArgsConstructor @Accessors(chain = false) // 设置 chain = false,避免BOM导入有问题 public class PartExcelVO { - @ExcelProperty("工序名称") - private String procedureName; + @ExcelProperty("项目名称") @@ -30,11 +29,14 @@ public class PartExcelVO { @ExcelProperty("子项目名称") private String projectSubName; - @ExcelProperty("客户简码") - private String customerName; + @ExcelProperty("零件号") + private String blueprintNo; +// @ExcelProperty("客户简码") +// private String customerName; @ExcelProperty("零件名称") private String materialName; - + @ExcelProperty("工序名称") + private String procedureName; @ExcelProperty("材质") private String compositionName; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/vo/PurchaseOrderNoRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/vo/PurchaseOrderNoRespVO.java index 4578d08..d4231c6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/vo/PurchaseOrderNoRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseorderno/vo/PurchaseOrderNoRespVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderno.vo; +import com.baomidou.mybatisplus.annotation.TableField; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; import com.chanko.yunxi.mes.framework.excel.core.convert.TimestampToDateConvert; @@ -109,4 +110,6 @@ public class PurchaseOrderNoRespVO { private String isPrint; @Schema(description = "收货状态") private Integer receivingStatus1; + @Schema(description = "创建人") + private String submitUserName; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java index 84bbf06..5507259 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java @@ -5,12 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.module.heli.controller.admin.outsourcestockboom.vo.OutsourceStockBoomSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagein.StorageInDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; @@ -72,6 +76,10 @@ public class StorageController { private MaterialMapper materialMapper; @Resource private StorageInventoryMapper storageInventoryMapper; + @Resource + private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper; + @Resource + private PurchaseOrderNoMapper purchaseOrderNoMapper; @PostMapping("/cancelWeiWai") @Operation(summary = "委外取消提交") @PreAuthorize("@ss.hasPermission('heli:storage:create')") @@ -184,6 +192,11 @@ public class StorageController { storageInventoryDO.setYardAmount(totalNumber); } storageInventoryMapper.insertOrUpdate(storageInventoryDO); + PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(storageMatDO.getPurchaseOrderNoDetailId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){ + purchaseOrderNoDetailDO.setPurchaseRemAmount(purchaseOrderNoDetailDO.getPurchaseRemAmount().subtract(storageMatDO.getStorageOkQty())); + purchaseOrderNoDetailMapper.updateById(purchaseOrderNoDetailDO); + } } } }else if (updateReqVO.getStockType()==2){ @@ -285,6 +298,14 @@ public class StorageController { @PreAuthorize("@ss.hasPermission('heli:storage:query')") public CommonResult getStorage(@RequestParam("id") Long id) { StorageDO storage = storageService.getStorage(id); + if (storage.getStockType()==1&&storage.getStockInType()==1){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PurchaseOrderNoDO::getPurchaseNo,storage.getHeaderNo()); + PurchaseOrderNoDO purchaseOrderNoDO = purchaseOrderNoMapper.selectOne(wrapper); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDO)){ + storage.setHeaderId(purchaseOrderNoDO.getId()); + } + } return success(BeanUtils.toBean(storage, StorageRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java index 2da2399..77c46a9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java @@ -107,5 +107,7 @@ public class StorageRespVO { @Schema(description = "子项目id") @ExcelProperty("子项目id") private Integer projectNo; + @Schema(description = "上游单号id") + private Long headerId; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java index d0d9a02..3b65b12 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagemat.vo.StorageMatSaveReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -82,4 +83,6 @@ public class StorageSaveReqVO { private Long rgId; @Schema(description = "库位id") private Long pnId; + private List matItemDOList; + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageLogPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageLogPageReqVO.java index d9dd83b..d421e4d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageLogPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageLogPageReqVO.java @@ -48,7 +48,8 @@ public class StorageLogPageReqVO extends PageParam { @Schema(description = "库位") private Long pnId; - + @Schema(description = "库位") + private Long headerId; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java index c639c81..61a5b64 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java @@ -1,15 +1,18 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storagemat; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.StorageSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper; import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; @@ -69,6 +72,8 @@ public class StorageMatController { private StorageLogNowMapper storageLogNowMapper; @Resource private SerialNumberService serialNumberService; + @Resource + private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper; @PostMapping("/create") @Operation(summary = "创建入/出库物料") @@ -99,6 +104,8 @@ public class StorageMatController { public CommonResult createStorageMat(@Valid @RequestBody List createReqVO,@RequestParam("stockid") Long stockid) { storageMatService.deleteStorageMatList(stockid); List attr3List = new ArrayList<>(); + + for (StorageMatSaveReqVO item : createReqVO) { item.setId(null); if (item.getMatCode()!=null){ @@ -137,8 +144,6 @@ public class StorageMatController { bdgzsomthingService.updateById(bdgzsomthingDO); } } - - } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatRespVO.java index b6b5939..bb669a7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatRespVO.java @@ -87,5 +87,9 @@ public class StorageMatRespVO { @Schema(description = "库存") @ExcelProperty("库存") private BigDecimal matRest; + @Schema(description = "采购单id") + private Long purchaseOrderNoId; + @Schema(description = "采购单明细id") + private Long purchaseOrderNoDetailId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatSaveReqVO.java index df42901..bd81dba 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/vo/StorageMatSaveReqVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storagemat.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -52,4 +53,6 @@ public class StorageMatSaveReqVO { private BigDecimal amount; @Schema(description = "备注", example = "你猜") private String projectSubName; + private Long purchaseOrderNoDetailId; + private Long purchaseOrderNoId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java index 253006b..2e1cb4f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java @@ -182,4 +182,16 @@ public class MaterialDO extends TenantBaseDO { private Long materialTypeId; @TableField(exist = false) private String matUnitId; + @TableField(exist = false) + private BigDecimal purchaseRemAmount; + @TableField(exist = false) + private BigDecimal estimatedPrice; + @TableField(exist = false) + private BigDecimal purchaseAmount; + @TableField(exist = false) + private BigDecimal unitPrice; + @TableField(exist = false) + private Long purchaseOrderNoDetailId; + @TableField(exist = false) + private Long purchaseOrderNoId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseorderno/PurchaseOrderNoDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseorderno/PurchaseOrderNoDO.java index 49f3be6..ab782b8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseorderno/PurchaseOrderNoDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseorderno/PurchaseOrderNoDO.java @@ -148,6 +148,8 @@ public class PurchaseOrderNoDO extends BaseDO { @TableField(exist = false) private String postalCode; @TableField(exist = false) + private String submitUserName; + @TableField(exist = false) private String deliveryAddress; @TableField(exist = false) private Integer receivingStatus1; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java index 0b5895a..6c41bf9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java @@ -138,5 +138,7 @@ public class StorageDO extends BaseDO { private String signature; @TableField(exist = false) private Date date; + @TableField(exist = false) + private Long headerId; } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java index da6c345..1242832 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java @@ -225,6 +225,8 @@ public class TaskDispatchDetailDO extends BaseDO { @TableField(exist = false) private String nameSim; @TableField(exist = false) + private String blueprintNo; + @TableField(exist = false) private String projectNameSim; @TableField(exist = false) private Long duEmpId; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java index feb8a22..9ce683c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java @@ -9,12 +9,14 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLo import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.rg.RgDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.warehouse.WarehouseDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.enums.MaterialTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.system.dal.dataobject.dict.DictDataDO; @@ -216,4 +218,33 @@ public interface MaterialMapper extends BaseMapperX { } return selectPage(pageReqVO, query); } + + default PageResult getStorageNowMaterialNoPage(StorageLogPageReqVO pageReqVO){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(MaterialDO.class) + .select("ifnull(sum(s.yard_amount),0) matRest") + .select("t.name as matName,t.code as matCode,d.label as matType,t.spec as matSpec,t.brand as matBrand") + .select("d1.label as matUnit") + .select("p.id as purchaseOrderNoDetailId,p.purchase_order_id as purchaseOrderNoId") + .select("p.purchase_amount as purchaseAmount","p.estimated_price as estimatedPrice") + .select("p.purchase_rem_amount as purchaseRemAmount","ROUND(p.estimated_price / NULLIF(p.purchase_amount, 0)) AS unitPrice") + .leftJoin(StorageInventoryDO.class, "s", StorageInventoryDO::getMaterialId, MaterialDO::getId) + .leftJoin(PurchaseOrderNoDetailDO.class,"p",PurchaseOrderNoDetailDO::getMaterialId, MaterialDO::getId) + .leftJoin(DictDataDO.class,"d",DictDataDO::getValue, MaterialDO::getMaterialType) + .leftJoin(DictDataDO.class,"d1",DictDataDO::getValue, MaterialDO::getUnit) + .disableSubLogicDel() + .groupBy(MaterialDO::getId) + .orderByDesc(MaterialDO::getId); + + query.like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatSpec()),MaterialDO::getSpec, pageReqVO.getMatSpec()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatName()), MaterialDO::getName, pageReqVO.getMatName()) + .like(!com.alibaba.druid.util.StringUtils.isEmpty(pageReqVO.getMatCode()), MaterialDO::getCode, pageReqVO.getMatCode()) + .eq(true,PurchaseOrderNoDetailDO::getPurchaseOrderId, pageReqVO.getHeaderId()) + .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .eq(MaterialDO::getStatus,1) + .eq("d.dict_type","heli_material_type") + .eq("d1.dict_type","heli_material_unit") + ; + return selectPage(pageReqVO,query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java index da8e6c9..3a82f3d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java @@ -237,6 +237,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX .disableSubLogicDel(); query .like(!StringUtils.isEmpty(pageReqVO.getProjectName()),MaterialPlanDO::getProjectName, pageReqVO.getProjectName()) + .like(!StringUtils.isEmpty(pageReqVO.getBlueprintNo()),ProcessBomDetailDO::getBlueprintNo, pageReqVO.getBlueprintNo()) .like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), MaterialPlanDO::getName, pageReqVO.getProjectSubName()) .like(!StringUtils.isEmpty(pageReqVO.getMaterialName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMaterialName()) .like(!StringUtils.isEmpty(pageReqVO.getMatName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMatName()) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java index b7b7dae..3709d24 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseorderno/PurchaseOrderNoMapper.java @@ -33,6 +33,7 @@ public interface PurchaseOrderNoMapper extends BaseMapperX { query.selectAll(PurchaseOrderNoDO.class) .select("s.name as supplierName","m.project_material_plan_no as materialPlanNo") + .select("u1.nickname as submitUserName") .select("CASE " + " WHEN COUNT(d.id) = 0 THEN 1 " + // 无子记录 " WHEN SUM(CASE d.receiving_status WHEN 3 THEN 0 ELSE 1 END) = 0 THEN 3 " + // 全部为3 @@ -43,6 +44,7 @@ public interface PurchaseOrderNoMapper extends BaseMapperX { .leftJoin(PurchaseOrderNoDetailDO.class,"d", PurchaseOrderNoDetailDO::getPurchaseOrderId, PurchaseOrderNoDO::getId) .leftJoin(MaterialPlanDO.class, "m", MaterialPlanDO::getId, PurchaseOrderNoDO::getProjectMaterialPlanId) .leftJoin(AdminUserDO.class,"u", AdminUserDO::getId, PurchaseOrderNoDetailDO::getDuEmpId) + .leftJoin(AdminUserDO.class,"u1", AdminUserDO::getId, PurchaseOrderNoDO::getCreator) .disableSubLogicDel() .groupBy(PurchaseOrderNoDO::getId) .orderByDesc(PurchaseOrderNoDO::getCreateTime); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index 950698b..403d386 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -721,6 +721,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX getStorageNowPageAll(StorageLogPageReqVO pageReqVO); PageResult getSupplementPage(StorageInventoryPageReqVO pageReqVO); + + PageResult getStorageNowMaterialNoPage(StorageLogPageReqVO pageReqVO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java index 60b317d..281f80b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java @@ -290,6 +290,40 @@ public class MaterialServiceImpl implements MaterialService { return materialMapper.getSupplementPage(pageReqVO); } + @Override + public PageResult getStorageNowMaterialNoPage(StorageLogPageReqVO pageReqVO) { + PageResult pageResult = materialMapper.getStorageNowMaterialNoPage(pageReqVO); + if (ObjectUtil.isNotEmpty(pageReqVO.getWhId())) { + if (ObjectUtil.isNotEmpty(pageResult.getList())) { + // 获取所有物料编码 + List ids = pageResult.getList().stream() + .map(MaterialDO::getId) + .collect(Collectors.toList()); + // 批量查询库存日志 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInventoryDO::getWhId, pageReqVO.getWhId()) + .in(StorageInventoryDO::getMaterialId,ids ); + List logList = storageInventoryMapper.selectList(wrapper); + + // 将库存日志按物料编码分组 + Map> logMap = logList.stream() + .collect(Collectors.groupingBy(StorageInventoryDO::getMaterialId)); + + // 计算每个物料的剩余数量并设置到对应的 StorageMaterialDO 对象中 + for (MaterialDO materialDO : pageResult.getList()) { + List logs = logMap.getOrDefault(materialDO.getId(), Collections.emptyList()); + BigDecimal matRest = logs.stream() + .map(StorageInventoryDO::getYardAmount) + .filter(Objects::nonNull) // 确保过滤掉 null 值 + .reduce(BigDecimal.ZERO, BigDecimal::add); + materialDO.setMatRest(matRest); + } + } + } + return pageResult; + + } + private void checkData(List materialExcelVOList) { // 基础校验 Set>> validate = validator.validate(materialExcelVOList, MaterialExcelVO.class); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java index b48a7de..4514520 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java @@ -130,6 +130,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ // purchaseOrderNoDetailDO.setBoomUnit(detailDO.getBoomUnit()); // purchaseOrderNoDetailDO.setBoomSpec(detailDO.getBoomSpec()); PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = BeanUtils.toBean(detailDO, PurchaseOrderNoDetailDO.class); + purchaseOrderNoDetailDO.setDuEmpId(detailDO.getDuEmpId()); purchaseOrderNoDetailDO.setId(null); purchaseOrderNoDetailDO.setCreateTime(null); purchaseOrderNoDetailDO.setUpdateTime(null); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java index 32c82fa..1c6867d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanServiceImpl.java @@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.service.plan; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; @@ -481,7 +482,9 @@ private TaskReportMapper taskReportMapper; eq(ProcessBomDO::getProjectSubId, planSubDOS.getProjectSubId()); last("LIMIT 1"); }}); - + if (processBomDO.getBomStatus() !=7){ + throw exception(new ErrorCode(400,"BOM没有审核,请先审核BOM")); + } PlanTaskDO planTaskDO = planTaskMapper.selectOne(new LambdaQueryWrapper() {{ eq(PlanTaskDO::getProjectId, planSubDOS.getProjectId()); eq(PlanTaskDO::getProjectPlanId, planSubDOS.getProjectPlanId()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java index 88d873e..cff10dd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java @@ -109,6 +109,12 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) { // 插入 PurchaseOrderNoDetailDO purchaseOrderNoDetail = BeanUtils.toBean(createReqVO, PurchaseOrderNoDetailDO.class); + PurchaseOrderNoDO purchaseOrderNoDO = purchaseOrderNoMapper.selectById(createReqVO.getPurchaseOrderId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDO)){ + if (purchaseOrderNoDO.getPurchaseType() == 2){ + purchaseOrderNoDetail.setPurchaseRemAmount(purchaseOrderNoDetail.getPurchaseAmount()); + } + } purchaseOrderNoDetailMapper.insert(purchaseOrderNoDetail); // 返回 return purchaseOrderNoDetail.getId(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java index 6c408e5..10240ad 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java @@ -5,9 +5,11 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.module.heli.controller.admin.outsourcestockboom.vo.OutsourceStockBoomSaveReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.StorageInventoryController; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagemat.vo.StorageMatSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; @@ -339,11 +341,19 @@ private StorageLogService storageLogService; @Override @Transactional(rollbackFor = Exception.class) public Long createStorage(StorageSaveReqVO createReqVO) { + if (createReqVO.getStockType()==1&&createReqVO.getStockInType()==1){ + for (StorageMatSaveReqVO item : createReqVO.getMatItemDOList()) { + PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(item.getPurchaseOrderNoDetailId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){ + if (item.getStorageOkQty().compareTo(purchaseOrderNoDetailDO.getPurchaseRemAmount())>0){ + throw exception(new ErrorCode(400,"本次入库数量"+item.getStorageOkQty()+" 大于订单剩余数量"+purchaseOrderNoDetailDO.getPurchaseRemAmount()+"请确认.")); + } + } + } + } // 插入 StorageDO storage = BeanUtils.toBean(createReqVO, StorageDO.class); - - SerialNumberDO serialNumberDO = new SerialNumberDO(); if(createReqVO.getStockType().equals(1)) { // 月度流水号 @@ -371,6 +381,20 @@ private StorageLogService storageLogService; public void updateStorage(StorageSaveReqVO updateReqVO) { // 校验存在 validateStorageExists(updateReqVO.getId()); + if (updateReqVO.getStockType()==1&&updateReqVO.getStockInType()==1){ + List storageMatDOS = storageMatMapper.selectMatByStorckID(updateReqVO.getId()); + if (ObjectUtil.isNotEmpty(storageMatDOS)){ + for (StorageMatDO item :storageMatDOS) { + PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(item.getPurchaseOrderNoDetailId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){ + if (item.getStorageOkQty().compareTo(purchaseOrderNoDetailDO.getPurchaseRemAmount())>0){ + throw exception(new ErrorCode(400,"本次入库数量"+item.getStorageOkQty()+" 大于订单剩余数量"+purchaseOrderNoDetailDO.getPurchaseRemAmount()+"请确认.")); + } + } + } + } + + } // 更新 StorageDO updateObj = BeanUtils.toBean(updateReqVO, StorageDO.class); storageMapper.updateById(updateObj); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 08a07d7..2e94ac8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -17,6 +17,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipMan import com.chanko.yunxi.mes.module.heli.dal.dataobject.fpuserdetail.FpUserDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; @@ -30,6 +31,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.fpuserdetail.FpUserDetailMappe import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.procedure.ProcedureMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper; @@ -105,6 +107,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { private ProcedureMapper procedureMapper; @Resource private ProcessBomDetailMapper processBomDetailMapper; + @Resource + private ProcessBomMapper processBomMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createTaskDispatch(TaskDispatchSaveReqVO createReqVO) { @@ -165,6 +169,17 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { throw exception(PROCESS_BOM_DETAIL_NOT_EXISTS); } } + if(operateTypeEnum == OperateTypeEnum.SUBMIT||operateTypeEnum == OperateTypeEnum.SAVE){ + ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(updateReqVO.getBomDetailId()); + if (ObjectUtil.isNotEmpty(bomDetailDO)){ + ProcessBomDO processBomDO = processBomMapper.selectById(bomDetailDO.getBomId()); + if (ObjectUtil.isNotEmpty(processBomDO)){ + if (processBomDO.getBomStatus()!=7){ + throw exception(new ErrorCode(400,"BOM没有审核,请先审核BOM")); + } + } + } + } // 更新 TaskDispatchDO updateObj = BeanUtils.toBean(updateReqVO, TaskDispatchDO.class); if(!updateObj.canOperate(operateTypeEnum)){ diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts index 63863f4..16ab424 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts @@ -84,3 +84,6 @@ export const getStorageNowMaterialGroupPage = async (params) => { export const getSupplementPage = async (params) => { return await request.get({ url: `/heli/material/getSupplementPage`, params }) } +export const getStorageNowMaterialNoPage = async (params) => { + return await request.get({ url: `/heli/material/page-material-group-no`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/PriceQuoteRecord/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/PriceQuoteRecord/detail.vue index 9a092a4..f8c1c69 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/PriceQuoteRecord/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/PriceQuoteRecord/detail.vue @@ -147,6 +147,8 @@ ref="contractUploadRef" :file-list="contractUploadFiles" multiple :action="uplo @@ -166,10 +168,9 @@ ref="contractUploadRef" :file-list="contractUploadFiles" multiple :action="uplo - + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue index 2e8bbfa..a6cb324 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue @@ -412,6 +412,19 @@ v-if="'detail' != active && (scope.row.beginProduce == 0 && scope.row.procedureS @@ -432,21 +445,9 @@ v-if="'detail' != active && (scope.row.beginProduce == 0 && scope.row.procedureS - + + +
From f132d277f68f147710da83583b7c775b3a3f40c8 Mon Sep 17 00:00:00 2001 From: z Date: Sun, 20 Jul 2025 20:38:44 +0800 Subject: [PATCH 25/34] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/storage/StorageServiceImpl.java | 18 +++++++++++++ .../views/heli/hlvuestyle/warehouseFrom.vue | 25 +++++++++--------- .../views/heli/materialplan/auditdetail.vue | 11 ++++---- .../src/views/heli/materialplan/detail.vue | 7 ++--- .../src/views/heli/materialplan/edit.vue | 17 ++++++------ .../src/views/heli/outsourcestock/edit.vue | 17 ++++++------ .../views/heli/outsourcestock/firstAdd.vue | 9 ++++--- .../outsourcestock/purchaseorderDialog.vue | 2 +- .../src/views/heli/purchaseorder/detail.vue | 7 ++--- .../src/views/heli/purchaseorder/edit.vue | 17 ++++++------ .../src/views/heli/qualityfeedback/detail.vue | 9 ++++--- .../src/views/heli/storage/StorageForm.vue | 26 +++++++++---------- .../src/views/heli/storage/StorageOut.vue | 19 +++++++------- .../src/views/heli/storage/StorageOutsp.vue | 23 ++++++++-------- .../src/views/heli/storage/materialsin1.vue | 6 +++++ .../views/heli/storagecheck/checkdetail.vue | 21 ++++++++------- .../heli/unqualifiednotification/detail.vue | 11 ++++---- 17 files changed, 141 insertions(+), 104 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java index 10240ad..abfe6e1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java @@ -341,6 +341,14 @@ private StorageLogService storageLogService; @Override @Transactional(rollbackFor = Exception.class) public Long createStorage(StorageSaveReqVO createReqVO) { + if (createReqVO.getStockType()==1){ + for (StorageMatSaveReqVO item : createReqVO.getMatItemDOList()) { + if (item.getStorageOkQty().compareTo(BigDecimal.ZERO) <= 0) { + throw exception(new ErrorCode(400, "本次入库数量小于等于0,请确认")); + } + } + } + if (createReqVO.getStockType()==1&&createReqVO.getStockInType()==1){ for (StorageMatSaveReqVO item : createReqVO.getMatItemDOList()) { PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(item.getPurchaseOrderNoDetailId()); @@ -381,6 +389,16 @@ private StorageLogService storageLogService; public void updateStorage(StorageSaveReqVO updateReqVO) { // 校验存在 validateStorageExists(updateReqVO.getId()); + if (updateReqVO.getStockType()==1){ + List storageMatDOS = storageMatMapper.selectMatByStorckID(updateReqVO.getId()); + if (ObjectUtil.isNotEmpty(storageMatDOS)) { + for (StorageMatDO item : storageMatDOS) { + if (item.getStorageOkQty().compareTo(BigDecimal.ZERO) <= 0) { + throw exception(new ErrorCode(400, "本次入库数量小于等于0,请确认")); + } + } + } + } if (updateReqVO.getStockType()==1&&updateReqVO.getStockInType()==1){ List storageMatDOS = storageMatMapper.selectMatByStorckID(updateReqVO.getId()); if (ObjectUtil.isNotEmpty(storageMatDOS)){ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/warehouseFrom.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/warehouseFrom.vue index e1c4d9f..80ca622 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/warehouseFrom.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/warehouseFrom.vue @@ -259,6 +259,16 @@ @@ -299,18 +309,9 @@ - + + + @@ -254,5 +809,33 @@ onMounted(async () => { .warning-row { background-color: #D3D3D3 !important; } - +.green-cell { + background-color: #e6f7e6 !important; +} +.yellow-cell { + background-color: #fffbe6 !important; +} +.red-cell { + background-color: #fff1f0 !important; +} +.custom-cell { + display: flex; + flex-direction: column; + width: 100%; +} + +.first-row, .second-row { + display: flex; +justify-content: flex-start; + width: 100%; + margin-bottom: 4px; /* 增加行间距 */ +} + +.status-icon { + width: 35px; /* 增大图片宽度 */ + height: 35px; /* 增大图片高度 */ + margin-left: 8px; + vertical-align: middle; + object-fit: contain; /* 确保图片比例不变形 */ +} From 7f379cf637edf4814e80bc8cd5a32f0ca10de7b5 Mon Sep 17 00:00:00 2001 From: Ledo Date: Mon, 21 Jul 2025 00:19:30 +0800 Subject: [PATCH 27/34] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/assets/imgs/checkStatus.png | Bin 0 -> 17991 bytes .../src/assets/imgs/checkstatuss.png | Bin 0 -> 8081 bytes .../src/assets/imgs/checkstatusss.png | Bin 0 -> 12996 bytes .../mes-ui-admin-vue3/src/assets/imgs/out.png | Bin 0 -> 8081 bytes .../src/assets/imgs/overCheckStatus.png | Bin 0 -> 16686 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkStatus.png create mode 100644 mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkstatuss.png create mode 100644 mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkstatusss.png create mode 100644 mes-ui/mes-ui-admin-vue3/src/assets/imgs/out.png create mode 100644 mes-ui/mes-ui-admin-vue3/src/assets/imgs/overCheckStatus.png diff --git a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkStatus.png b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkStatus.png new file mode 100644 index 0000000000000000000000000000000000000000..7b17d0cf1a9d68f786cb8a718c806780fa11cee9 GIT binary patch literal 17991 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Ð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 literal 0 HcmV?d00001 diff --git a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkstatusss.png b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/checkstatusss.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0d85fb9678d4ec1cbbf02ebc6685919bc9c849 GIT binary patch literal 12996 zcmV;#GCR$QP)PyA07*naRCr$PefM{q<-Ok%Z-~YpB_Dz~y zZE>^Btm&GGpUW9?=$fWy|L5NTQvBYX2n_$^-kn!m4veT1)8GCLgZ?)Itgh<<)SrQ- z`yYP&Sis`;#!XiFECmx1CNmNmf2>FerV6A3pOz(Ck_iu(-`Zi^~+SxDd3s5Yw!HW(>gqQm~!^ z>}&vWCqihB48xTOLer7*BtyNwyzl1AmjIKWc91`n!0y-emVbR@&#{2j<4tH5Q^I5s zYD|(M)0COiEJCSSR%_s?=YTyEIE{soof1nb0f!!kITeSl>#*u6I8re<6JfX$!O4fe zf5WlJ^PsZf8 zX3~IEQvT+Tg`a^OGk0kDY`Jh^xnN=@n=BlIwWqk4V1g_lgDc4MO|Yfna3_PPN`&Nh zO?1@%)BA2&wFVgcw8-aA9N4|O-tqm1U;iLrao2>+4pYSBK*VfEM6)7kwia338l1^6 z>SI3ntwD!16^An!!A;vX!kG-gN?DoFtELB)4+xu`czWM4ge^{aUR<*vY<3}JcFOO# ziSMEAqv;w(X z^9ps6YIvCRRE7dgND6TFl%h}q=1hfg>z1_wA_u_lUCFQjEx@Lz1XWJ4A+rlUTb%&R z%M`Fqy!`I_0xaJvp_z~pabS_}qvkAy8>`Qd$<5K>;G_56y!vvW_miUFOAhQ_U9Y|S z;WxV`Y}K^^vl|h!O(-HEEKeyuiUPxMCPHwf!tlf=aNE`Ex4TRj-HHwZ;%)oxwH02iPm z88s+4_~TvM*X#f;Txx(X8L%Jey60ODyx28pZ)hB|c@ea@5fc`tWF~T$a3#V;jTXvYQyNHv@fIpo(*dh#n#k``=WyW>SjC#1n6Osk*?q?l zG`p3FWwIhFRBe&PVJy(9WEf51A+$z@#-6xu=i=p>=D!q*lZcE<@t_mBUjLQdZ=WBq zH##Uk6@`+uDGDWcbx|K`5|eNwLind`8wFSbEDBLBD=zZF0!kr;YNm{`Rc?&Ai=Y^| zqK=sqXaq8DvLJ4VzMzR0PgMP(CLG%j!#0 zRAmF6YPM8zodIq+pHuF61|<_v0{h&1M=)ur5=zbhtn0Ap2~hqvMTcWge(#!<8-Q~c zn>AlFV2|m#?T&}u9Q50(y?zchhxJmqaU_Chh>zhLn--%sHm+DPZN{|OqU5DsG1XN9 zUhX-CZjG5<&-2M~NX2o@Dhd|CB(P8KKY{bkcKEH;S!Ix8PQ_4_6sO1VQ}^7kVyUK0 z%;ve3Tys%?J+JG|8z0#-G~jG;Q`?Q3ZOXu>_L_>ol?b3JK8f45tU*Vl51!ae##bJa zN+`ViU9!_x{C-pK5YsG(Sl#ehYw_y?XEK^L<*z7aY0*;~o4}G_Pxy)Ne}2h2O&hEP zsF|KK@4&vT>uq;FviHoOqtQBPtrD4J$kOV#9}C01`10n}B6n!q=d#@LFJJh&!oj5oWA$a0`>J@>X-F^MSP4i5> z^9C%b^!5i{Jd@UX#V)0mXlT63sW2+6m%mB5mSn6vmU(AX0_^nX%nry>%ft9QyTJ6c zkftMp+VcfxJD%Ei96_rmU-k;XF#)(WJQ)A|-8)*>YTD=wC#2-*^8)M{U3cu#TH(Ha@lpWd~-d8MW?En|JRW?{_rW za$SN3+ii@F;I_>x1zfuP4D)49Z=9jgVy|uhtH8`Z%9ufhol_Fn%HF!zf-|&dnn9zs zIy}Aqn8;nf&5Mxc5LYF=R-SkOEz#lBS(vS(@swk56Vo+ zP6GK~Hm?GKt&5K;pYF`{oDwrx&Q2|4!#V%Up9~Y_vfO!lv9yR#uU+h}hTTiqOJJYb zcT9jL;MAHKR1ldP8B9LAYe)TDJXNy-_JFQizqxzwSihs$#h|z0X)&~3f?5+BhdUX9 zU5~*ePWi&496;s1pYDDfR*|U{O!;}5vKhK9x_ssX?5XdcYxl;@cKB?y_~rXO7`8Qt z4Qznxi3e%xCjaB^?Ts5WZM-sGk$={#fZg`P=g*(?ENQ2=g@ICYG75Jxg2vbg{^iO} zG{i>4uS!b!irv8$x?{Aokn4 zcQmZkw7^WkoiVTnbiLtgkM0{}AUt4k%kvCM{pwXKK+Tu-sRX5`?suhivN zYyu=e&wzaTP;*}Rr0L(R^tZ(q;PmgS?xt9?14Gt&{Kvs_d6dgIZ$oSxOM++n-?{&m z_KOPaVO@8B*OW$e@N+R(faZJT)wDaK{_ z^ztl|UZYg{yc8ITu^?fxA*wO9xhs_JB;f;@r zCyXFxqeLoo%1Fm4H>u?o>{JPueKAIhNV$eNq-3rl9D6D%X3z_FZJm)BR57sY9(-f` zg1fz1d6djTJ*3coTi=S7=wMk&ow@P^Oj@h)+L;M-kH?^!EvR$Zu&&LE&T1Rn@ktr9 zS)U%@jP;Vz5wTW@ANR!%&!bDP5vpiS`LUtdi46@_0XKJH7T0ZyLp&E?8QkZB8n=4U zzB z05gMu;W&d1OUal@CxF*89QMvo67LU&#XUzCr9BnFvMLSRTODXOhvB4avZ&TQ6@ZY% zC35VAW4$<~D`kbDL*`F?w#AI~4YnM6Tg7-QrPy*5U7BJuGX}+>>IB#xcc%c&L#5n| z;OBQ;wPCxa9j@eAWr01Q>#pxU^omc}t2H9qXvQ=}hjIH=%Y+q^Jr)918d!CvGCN8i zygp#5!hpRQ&mZeUm+l2qX-vW?MzPW2!%Zt&gmUR~oq9}NLJS=a+MDElr}SD(T0D}` z*bwvKTE{r9UtB9W#MYws%cx%IKg!GZ(xWS!c6Beq&K+?y<7e-m$B4Z_bPRGOg4-4z z(0_OLj>bxS%4LCF|Iq7WJ+5|dZalRiI)d-6Z$xWkV1_K%@YphYUsC?2bzCspf{Mj^ zgHgQUvtiU$3r*Ki7azk$vkx~eZc~F7yzZc`n0lpQ=T2C?xZqrX-|s&q0eog^ zSo9R?qGMPZJR5rZzMYz2F*;F`P1bfOT8&q`M&Ps8 zi;VTeC$X)~h3je}a$joNTs#*a*wXZDg#3QL|D@Qt6Sms4mQ3+Cj9=ZgdCfLW`>6CC zrpb9?0{1l!JnuVMwX{YY5jpni?N=>FQ*?;g@YCJ9#CMfSSt*u5QZr$|(SnDMObA=% zK{4>nWezMePYT;4t13kWxwJ%uo6 zVAnjn$JgU(tBsl+;kf7R-JqmH2-KsZ5-X<4mebSmhFP0ROtoj^@Z< zPL#E{LSj$=6TG{1FMfG40H3Wv-rs4~phZJyF@^DkrCxMcLZYM;SH_Bu@nX_1wd65- zJ)Ycu66bQXWHEpIUH*6PzooX6tSt&G*>J~W2NM_E?HZL2l^!~RJ2tOCXRt@2H}iE= zGBHE;W;}5^iZe+UOq!16jwrs-X%TTy$q_Z%F+tO*KZLi&9SB;gM7AzzZNy|Ch{)Iw znoJQ~yK(^*TBP7g%0vuDOC_>wD)X*nWYfRB1nNx=3_4oy(?k6ju~9Fuz$G53VLW-) z=FZKUcD~qMiUNC7*PCyA{Aho_lQK<5O?(_3!LzvIsue1&B^j>3nODh_Pd%rYnKWc? z!f(zda4KvOVAoayx3%eLiutCoGqc($wc&ne3!XmIBib-cwna%FZrr$9LS^q9`Vi+6 z4!CU=+_bC?9cJbu1tceUc1BHU?lBX%4J~=tT92O{9uOUanmlVCnDN*VybwBm&-SW{ zf!+4Q=f_WamR2jJNk`Va>4z&3DHFAs9iYZl#ek(Y{GYuhobXegCb6a(_;R~R-mCPX zr)8^IjQ-aLQux3Z7o~|5`I-78Hnw_T*5eq6Tkyv&KPHnVG@HY?vaK3xz0{Zk;zKTG z{!D#tE@blqtnrL7TP;3zFTwBrdRjDlnm^D?SQzTVFYa7#yI#|##6_o2Y&v=~L`8#+ zejY86LELk>SM1hOQJdMrnG+Pvi@Id*NMN7oGvW9+BSvvtUT4M5RxUW-w2!5BNduo0 z|H}`37}Pv~oluaL^SxZtHA#$R<7&xVv9Q@fAb)F8?)BoFMR>*A5BU6XkEgOjcwJ~&}c<@|n>#&*w}~DcIwaoc9>uVw2DW4rS2~0E z?9zIP8&fIdVH7@-WxsYVh!f)pL@f^3k`ZiZuwiR^6&j<%qA`~?{mTPXntf*kQPI_4 zaGn8Y3w9qK6%NFM6%pV@^k?>F{!{`+u4exZVe&dfTV9Sj=HGIgl1b3Rf(X0$Y{{Mfe7}Fnh@5= zf+w)G-Gi;QO3N2JJSQ4OnMJ2X$l^p#(uL=`1L)V&;wTjpbLi@hI;?iZ6l-Q+K9vyG zEW!LDZpi$(Dy2(QNa>m`k*UWH4Wr-DD&m6+nKtc{cWzj4t)}(mJ}(d0>;CVvf#cQ7 zTy$meP}*=aS|k1GN^w>FHeZMG2x;j`afZ&>EQD@ERd_75rZ9m~r9YjE;M8~=Fqx#u zhb<8jaM&M$N$AaSA3nQw5n8Qrq1KO6)p+@MFNQ32B9}K*#qpU%bt0E}zM%pszqJNk zp2c@j8T`khF1*<_A}pMgYfnZ|mzu=o)jBqJHo%o6)knoGNrjS?_tR5wc_nfBdDW5C zj=Mz8asiWSJ3|*jhkx+-JhLYQES(ZpJ@{(8tE$s9o=zuK+Hj2kJ71or+?S^xnArnS z)|#4~@|&_fW_IA@z!*j&DNMu?7>NQt-67wLC}0IUtvO+d>3rPCAg)`{hE9)Jw8lT2 zn!vf3RnBd<#PHQsb)rQZEe~=l325{i%|)osDw*cM@rfk>Sf_HPQotkA|$l?i&CdeG-+#_#^xg+50M0v3;qcR{ER=kMG=Ih%<$W`Jcq z>(?LtbHo6a4j6aI462fx{kDm{wNw^^~a#w4PIEH`9!OReruOvA^+ zehh_^7zxD@)m4Q(pVt^0#lNj@5iNMkT8lS69>&3l8!X%=@=aX#)*z@w{2b}k)7Ja1nkL(07e_NC*i{LX95^WQYOZ5MQb&#X|_p`HG}qj{s?-;!srVn z1z0YGu*oTzi+mzkJArDA4oMnx~1m++ACY?Gnk?s&6_N@PO-=6<*>w+n)c+Dewg6CWd zoDq`^Ha(8|=%{GJogq5?X~?Sy&p+k{u2h4YY@(b*O;%x#YO?qoU1Tbigm=4#aWoxw zXo(Hs_RTBN67CmvNLI(mX3EQJC;QPAQIx%<4%o1;L3%R1-*pZjMeG=b6ER`GOhHwh z-AI9!6g#d(ghE@aF|4ZAaCNg?T#u});e;}Tw&!#|P6kcF4N_9fta>&|P*6{ajZKA$ zT*Vt3$GT=WHZG{m*voTKIyobTJxi+Heb|?_XEm{Bmj=#758QiWrj1Posm`AqNc6ZC zNVgAWCA5YI1Xxn7Coy?ZfGxgAB!@vLfyr#A^%}f*q8|g+1~E_gJ`D8p{TPfO_!IUT zymiixQzIc^<*S>$_)Lpca3Bn~GS?&5 zDC&2#;71<@z~3Y`Z`_a0U|;;m_dlbw%Ulxd{Kh;Sdt9!-^KKE7OKZ6dk05GPodU05Nx(nT$LPiXp|TwgX&*s!xV;+UTll z8yzN8@~A+iTO7@GmU6GB9s8pXC&ixSp@8j89{K+D84px0#a0MxehKN^tLUZz8;2P& ziv!(B4}Q}X#GtiKsDs`jI__EYMTLPA_(A_9j`#Usb$fAHXA9OirS+XmtdZHT%qrC+ zO!_5KNs=~0s$CE5Tuy{)k845CWCDNb3nFE8Vohr;I=nVfgv4K5B2Jqdm6}flv)F=| zM_>(BJl~)eFyr*fr%a>Y_RX{7I1qFSOSYH*OClo9g=U1X35nfGUAab%7!H$0kyEt~UiLCuGNqJ!Wicbz*@n zDh>gDW`LL9V`@I=a{4SsE0_=6<|PGo##MZ?TDk_s&^P>4cL--gCRIw( z)F=*$k>Me+8Ed@N7?}*EwNju(3**+sF3Egge_>O)@s}tOnGS8bIQjPtM&R<+VR4nJ zJ#y+%n3Hsss=z!K7lHj*S6oB^KVuY#*&5qgUD#5WLUnASL?FZfRsB|CS2-=q*$*?R zCM?E^J3_t5qxV!SW0&V>#k0a{1{Y~!GqN=EeP05v3~J(eYK)I!)A}oLw0|4}!y{sn zT(@I0-aFid;c!As9crGRaZh6V!fKJjG&{(O3#;+y8vM_bV;G90(CM*Z{en8QTVvw) zmEOk!fC+=nRy=Za0=>2-@gKVhY;*{pU)F$ij!?Rn#?+x@7g1J+&Hh!s@8_d~r!N zIxMOsE|oEU&Ubj^$e7s1JZj_P*y0M}`b9NUqFhrcEuR(V$8N|K(i2~fg!9&o!2y)c zpv;{DtvGZcab#}5=D+F;NV4RqiUnImVfxd#Fi!ZBVxKZp_Fpfn6T97h0hB_)1TD2ptZDWOLvG`w^n zhLEJNOyHW%T5PILh&%8Xry>}R=x9%k;h#4ylWa*+D(gylFH#&mSSQAl*x%hRC6kMq z>v46PODK*SG@rwqq34eE;u6?HfW|K)xIptXeclZp>!7J3YwO+&4HaF^GWAK|jc;e$YhNGHf?BBd@p`@x9 z86C!iNOhj08P6Wd`Ty-D?s$d$2sbiMUkkM8f4k`A+72HeIVKtU2)HkoT?Ln^fQ$imn9}QCt>h)qfxr}(Cr-yO9D@M+Piq%QBNO^^bMLDX!@YR(%qaGUJ>mi+ zB`?tYxMOXDED|nIpQ90v9T~-dMWxra#YeE~vTAWcuo~|V?{}lm+9+&ziz|TZ7kO2- zVlq;)!`qxND|4|iMrL2zg)YM90#z?#X^-EZB0>#`}pzNzb$dmsLDtXw>H zJ{Su@<+7lwkIsjEeL=kE)5SZ~VGiS;F6)p~SDGVy-Vih4Psb$SzQjC%FXjL%t26D0 zpyESt&xpq=gh5Lkk|sLI$FSY)m+VA$JSa-qv%M)C^D{Tff;KIP|Gv^KoN8adg*`pv za*j6{#2w44u-H5an`qnFEJfNf7pEw?G|F74ed(|r<*X5pZ4D3Mh3~9uzEaaNVYrNd z{GG0w|M$ah#d_RrTBU*ZnXFQA*`>R;5Y&{$vc?)52)OXxSwLhTcmMzra!Eu%R3D-FL~D06SoB!H+)*V_dglxi*fQ*S2RUHuoLqzh#mNeaz3CjpKO8 zijc)2=FIZs5WaMIhh$OE3BlBvH;$b}KyzSGjRQM7RO{J44w!Iklu6<#tn!+3Wb5>) zFY~eB%gtwQJeI(6@$py~>eGL5=LUOj;&=vFW+-0u;H%M(t2#_Z<$6nWD3d5Y=hPTc zl+*@DF_VgGvaI5TkA@I}9gQ~Nnx)NHY8qGNjA@(Ba2Pyz)Q^D4iB+btlE4}hLs#J8 zhzGBCk7CGLBfjAFaG#{n(jKMK#e(WHqapPABUswrBF+uk(Et9?Bz#FL8WMhdVNE+$ zXroi?)?&WkVwP(;pep%3_gRIhG1M1$EDHDPXTEc#CAUB;Po>@Qf1VB;uU_sNaWu#U zDw(YbZP5X#wyUfc;&d)C<+G*P!PW!soIHn6EQxln3)e4e6it|NOl_}1n@>?7wZMmu zj>}?LiBaq<-~GMeNq8VC0Usz-rL46#?QbDN*Sls%QoFEtA>0tCon2l~ND0L)4^>&;|Y6 zcQ+Q#dE(7K(Dlxn|KHIw{f^x9(=+MxQ#I-3kEy_B9OjahXqH-;m%2tUN!HrhfOT!P zXo~ybj0ZC=da`X!dQ`LGM8tt7&ol7u5bbp5nyIWfmtq)`rK~-laN>pT2?S#ata2qJ z*^QAO1`3QY8^^;5VkN*EUBfsOalx)7amO+xTeEg+jt?n!bBR12d~tytwln>7D3gAw zB3>~98$NOO_KZfHrxnYp(RI_p#||YfxY~qbRKoZL32ZYxrg#N=L85mW`C>Y=Q9U;3 z52JfLjMnyrsJF9nEF!5a^zr5)QiE?K3;6iU7 zRy5b9lf9Mv%vQSVn6!G(Yj48~2fHu|8y45PaLa4+tF-3&TgBw?KLHPhfLI*ea^cXLBwx70jVOkkHkx-Z`2TA-1AG5*LrTmri|bWYMe zvWK`Brt}{!rbJ{ZR;Iq`=%^~2}P>^ZMxNhAtEY&75$>&@sDqBL0&e(;-*ujgxRb_x`nPAxH zip8o$FxzMtpQr--cJw=2(9pusCog^})SgP=hQ$C+~wR9(*-+&b`n=!Ax*z z&oXOa*A?|>iWr5)YJdu`>9z8#P=o^IJ@5e+m34b(! zP(nv2$~deEPK$zK>;5m7FUs1Z>z9Ayv4e+v_S#Hmu;%C>zQ0bDQ7Y}Y@I`0ltjJqg#tv6G z_cRQ0simq{2wg!F_Khmm-C&LZ(IDbXc}*vh(^aXG-?(86#Bo6vWkX^D8*6~g3%saF z_{G+h49h7t?%aT#w0UvP!9?*c4A~n*Jki2v4G-d_@2p$6zQ`s`g-Z)`RNVFBcVd0c zW=xvhasz6|cdl*V8MVt0)H%pP$GrNNE|WU1b;Y&q}hUqrgq&R z_;fpxtupXHzN|7Ch0#iYRX&!yrX<{Kx*Z+I)$ML|mp0u0Wb0>^*V&=H=piFV-=9=1M}k zmSvh&?R1~LJY-G@=L2Vs*Py2*q{EQv@Wg;)v* z#uFmXsd%Z45fuf~l*%nmmQ)%^MoXv4C~29u>I_+HfKA!TOvrV$7JRPVCK`ACF*i^R zWs@$|pB@|#Ke%dD0M)7>bRl~D?j1QhCuW~s6j=67{Nm$>2aLvD#(u4;PWD`;V0bF6 zmH#BiXi)mjG{A}nsW*iqlXPgfB&TT=M#PRK7okE#r^1VeyU}H8gx^+^k>5(HDsWWJ zuPP0(>Z&xvYqP*@HNj~$%Ma5=`F*q3jcTVYTPB$!47o4{{2}206X7_Jh@;-7V{Lmq zypp`mY{r@Spi1RTk!z6~5lEI#{`Am*_{_;wjOHT$ao6URTQ%);u~{z)EW>zf9@!H+ z?_OwTw1*6+uqozjJyChUDiy5cYG9=0*$X<31TE6glF^*?)^TaL#Q*_;RURxSUg{pl zV2WA&R%z#_*kwX&Qm@^NTDt`eZX0SHCbW3nV*eR=PezT6stHo@)@+BitZAcs(M)jX z4jgJ;XxlTcD>bu4TJ@D*>ZQ++eQoV^QiRpx$~Mhp>Ez1EkK^y$ce7(g?SS|wqvV6p z9>zzFHn!hp8{5br9I5%*m80~)7ppsMv6R*5VXaoKAK#%00;wrO-3oTDLG2 zC(k07Mh7u$ zQV_Ez7(5qOXxfl8)51eB@33P1@@$_H{9^};UUUet|~@bIH7Gulguf7mde|2)3c`h>lqiOM)>+i zeK-+wqspAZw=SzkLu5!=5^$$2$;MABL`IgQV(?0H&4`Q=JuVEYD);76wVw7sWwJmD z%$k|y7?<{`8-0s^|JPGe4@SO)1I4dE~f>S7jAg?jnG+Vo1?O} zw&kX$oW#k$o_WC3di>^(b*rrK)kXf&nGis^z4#hz2zhn*|wGY*b&uUh8&@*wBG zk0iFIw-BGO)!@9N9R!w^0Zlnp%~Q563HBu3zHcXG>$IMsvcPgLfIA*~CD`rmRN*|P zVp7cJyp?8yV5d@HGd{bv!)#NN>XP`l2gpQC(1xNC32%oxpgz@3DXa$QkIz8 zay~a;Q11SshZoseypnZdG@_Ktk4L^m)cmVQeca}_TLY%`OtG* zR0>sJ3AL}Rv5}Iod0|=$4!nKePH(x*9cImnjSCt5`Ckvc68zY`$U4rpLFtl2MY$u> zQ0`3D+uz%{h3*e7_Uu;QxtkU;DrIap+8!QAzI6AF>V=x7nm*3pm@&oj-rQ#NUv}>e z_B)y_RHh2I8LedV!Wq2d-@&Q*z^X0JTm@U66>Kva9oB!gYkTchO)Cr;RWu*70+x4H z_U)^IZg;2I*cdn~bJcdEjgp`ix~Pq-D;nh`IH|nIP*Y8hn2|bQRXqj%wDx@~+&{lAd9^eup|)IZm&!{p z_ZRgMrOPRG@m(9ObJ)5d1~==6ni2A20>6~Wrwdn5ghW^>5uM%2g* zWP~NHRDE+}2kN4u669uzOR0FS?96D&HUTM@Xg${nn6K-_jc78Z>v`0)8tsFqhp;-~ zsr?^`Q=hDuhxA$2Q>cnfqBS~_`uW}0)^F0ZN>+c_*Pa((4RAL-^eTPIHbdqz9g}{} zs$@{oSa033Ryw}12U9uLT;7RZc5IjQgk0aUbgPlRjqH9?D?Z<+_Mem}4YyliUq~KI z?IESMMurkk?%G~^g{IAB>#?HaoHt+%aMwTdx^KwYSk0XynHOyAHA^4~D1rUb)^)NO zFZ)TTJz#S;39QUlbxBdH;9;tQP%@6iN?@l{CaaT532d&5&;YbL9$=nSX!kwWw_dAh zY|S%o$Gie-ywyQnU;g#o@0=KPG@5cZ5~h77En(w+X~M-#51Ha(wAYckt)dzC^ETdj zzftZoBqfp}nax23>Dl*=N=2bkELAlhkGl8-mQ0>aJoZSXu$HJeY)=Y$^*|| z=yx>LsN5-+P$b*O8X&SW3>$^qy5%zI@lYREyK7{t17;dfuMm}aIL&b08x;E7dq<>- zo+b=gvC-m>pt{+aJT{Kz=uqI%dv9)?PkCBwC>Ir21!s4q+oVcW4}aZ_%o1y)3!}Qy*0^6)JC{TLvfdBF%5dAjVh<}92t~J zE!W71d}iMXGy(%FgpfA6BK-v${4)s~pR^Yk$?nXCNM=C1G*1RS6nJ8{X~H^ z9?oimyB>Jy;Gn&}Wz6Q)gn~`Vz7zYGYDp?74Lyv_9S9yLl9YSv=F5bt>7`N&ft^vq zl6y=Ci1J)bmzj~>E=3ZvZ3-wJOgg7_`|`W*i@fA}CDLFEg{I9JrR8RI0O?R39U+xY zJbLfV>#oqW3-iojE56+&r`W?9Th2TB?-f`L4n%_}|@-xMHjp$WYLsuRn zwOa?}DD6_VjQ7STqd(cT{fh0HcB*0oF4BpgIIzaJ4(fW%eLs5USitOR8MD=BgT}6l z#tF*EmH!Nx%*mA_m6VMj3}uUDSNVGwOm8+R2Ys3qOGE11O`TLBm-OsPrKI{$IT+{% z4>7=@*F?vBKfiD1niYU=rUCJbglm~x&5QNaGWUH~*XzE$d+$dR*6R9*$*xiR6m8m+ z*FU4gT}qipb2Xb-rz2F!h*hd85t?}Lo*P!}$my;02~Ahg$9`%kw$!9BW8>c*-9I+y zXmZQGsS@qUQtzdl%;w0j{`R*ob1m1jV*9OJ%2z4-tp5)P7gPOIxyU2{0000Py9OG!jQRCr$PT?vp~RhjmOqD|oAOS4O(II5O(J`PbBO_a0Cj>|W2}vg*o%G(F-urd;Tke_q z&b{~beYfAfbia0Tt3pWky=VK*zn=g6zrcy-FJ=YAU(8HSOav#u{0rIyC%`-b=KNg& zDPNGr=(&#@0jx6r280mvdUMa~!Drf1-EUkf6*j`ePR^Wa1dUi8{CWaRt34ss&C7L} z7lW4aw-V?_tZh4nx?ABv#H6h_gqVVc2!xD46S_%pxp58&FJiJ9I=o5WMPvgO2d`Ej z3vuDRSR;$q zztZY;CY9Rfl7ez0Xu`N$g{UMO2Bzc!tk`%pg!ptt16xsplXA1v+n&X6-(I+6O#RUi zRg?!zLerwg&m<{u`jJG?6nDbGP7{C|@Xy?m{7xqSoRk_vEp&LyuSmf)h++XEvJoc* zzXYHOLVUTR)~_N4Bjx|f_RznhS~~>4b^u;608Muz0gNIzsn}s$a*@dvr=Pg=ATDa5 zOD{x%DlLGlDNX|>FwLI1Sp9?RWi3yD0a@l z>j!6n9w#Z0hFb0q~7RgBA(h@uIwQD6iOSRVX_smM6Nn+YZm2GED` zBik|D(+W2!UkbQf{qVW>smlH3VR$i+v}n_8uF68%|E@{#^JEb@Ek6kc0c5{X zz+|(=&qmFk6Wjqz9{mG`dUwK$A^7;mrhr+kE3Fu{h@nPl#|EWR8(sw=*3a4+&ss;E z_(13aX{SU9gKfp(H%$b;Nr8(L+X9xF)JDo9m{l_rm}CXV__gzAsot5X2|0jQI`MG; z2LN;c7(~2{+Vy)%tEM<`VZv0>Op{0{)DjU%ZFn`tw1^9aVcMt z(W9F&-uouJI;n6Xi4tS73Q^GnQearF!pXtQ04y{qu+{{RR7b6ne<#bZOn~GMs8eBL z>!e&#>V*0K!vMN4e)J{yT?a7QyGv23M@Hb1o&pi6`>t6CkrR^i^o_+A)xH30fVnW$(%GlN$ltQp5$eqcP3Q{83 zDdl0MQew7U5i_-7%2ZM+6{aps9Q!?{jz6o!i#z6pCS7VBsOXV1O~@5!3S18%t}My= zmkdlPI}}^(*>MkQZ~#>pHGHQ+nryWRR0O7EGnNFe0dS5&rPr`aEp4|s_`9NTD4H@2AY0Mb zazAQ?q3F=~m%;~{9J;8*n7%S0@XMv8RtAX9QIJBZKTwwLN2KEgO!Vx4Uk;iF1=6Mv zHljMPf9}9ESnFFj9@>Oz!6T}E1*DMne@hC^A1gu`)qQJ*t^zk5lX2kIAl0 zs1mIRcOHgM#v$S^2zb<*P3a3!vvFV1facwR0c0zVhwew6b`Wm*H|3O~NJCp)WooO2 zk(|zRGoQdJeynW(UPZY38C1(QO!OXvC#J)t(_j=%Fj~#VpVzzmSVIQ;cjxXR)o9S;ETr+&J_B0U4h=b z@NmvLuaBkNCVN}%L7jMCnI0N}ga=dlB8=;+v3TRRvTCc90Oqb;yHHnGhgGX60%r4Z zP-sspJaMTgl)GGt8s#w>k!PVf@MGi~i2Ct1mDMPuQ3j#j| za8_bHbBP?x1I%B_{vDf8hc@`+kecTd7GYGLfklBE0j!@l_Tv}6@C7{o{PPK{8XFt& zgCG0=*Ijp=0=4|lQ2?(bWawlMWhme>qhTho41>y~yCF$|6vCYmubjc;Ib^M1WLy}U zG|nHngK7hJ0a%-wA{kp_#^#igy=HToX9MH-@#8rC^wTjoIH;WKR(t21a}IXw*pcn? z68xSXBOZ>ELN}orhcMOAu4E`5dWxbZ$FqF7mLi#nLURK1=o{C{g{}~)mEAPm*|5GA z%|U`m_L})AC79XzO7(jSFzfFh{pd%y`|i7Eyn5)+p;?rrhXK5Vsh+11>3kd2`dCuz zQy42Spl`(T;7z74yCGwsc1~bA50xk6QVc1FF*`ZKv?B{y;<@|gx#yn4C6`>1Gyuxb zg9i^5HK=r9WT_XL)VU8soll{`^%}xGyWxvg!4)^60;6J~a=bJKxXv2^EH4hsp3vXO zIsfqGgw{BhDi*9GnhYueH!LvUPKm0Imypi(1 z@FzboErn<|CVT!(ITa>5df<)Ig{wiAMl>Mxk|k=rd32UOS|KZCj)u;WesK(%m_k(6 zt8j?M00lD@p5?RV*|C6VYHCuljzB!{zyrAW;)~O+d^XwYyjt?kJMR>E!$K8jaj{iixy9MJtyWo$y;by3(l&}Ka zEOslzij=rz1TzvkRa$YZoCL|eE^wczy=ISwE62oBUDUew-g|M|ZMWs!okitr^P-C` z!XN+m$GqDp%?DOg;CmSDc>r}{KO)CE;EfxnPu3~Rh+Kn3f%_oDnfZe$Tk3e31G@C6 zBO9wRL+P3Qhngl$3Q~{#dGg68am5u3LCNp=;upWD>`k`!`OklT4#Bj>J+0kFP3@N9 zCst&?otRR|&a{*{(Q=lo0*zb7s2LY&>{?ZR%T}7VA9>`F843#7?B>mz3+lk`JSdd9 z3+g!SM>g$NdleJCdr%egL&V(5t382aG3Nv{Etr!nE2S5G%Bw#qPCXxcl|ms3kS zk?gIVd+xb-^UXKai)4-Tt+uqZq?DIVyE0Yll?SG!-M)>f-hY7)2N63q0(YEYHPZCB zotf~sIm0$nf;kilO224_M+~dL!%^KXD;c|E*g>=Ty!P5_IRE_fle#Qc`>Z@LE$#MQ zjP~4zI`JMN$2#GS(N+c4b`FU_`D}f_JWD zB@uM`Q-A*RpW|EK;weqxkG;)TUwsvy_{1j)Z>*$WwgPw-@!n@J)xH;geG*a^kf>31 zr**1g*qzl03}=8j6gp4&U>P|O1?@_^tXyFmvZcmPpH-H0KDNf3RGCgr(xGtKWtV}9 z()#u5@!ju!H=|-yxnT0B>@`euZ-HO7BGP>T?)bFbX+Kr5v)UP8j)&IBYH>s@r6F)F zS?RoGHGAGx`=XzA+Gz-dLP>Ix-kkgIzaRAAI3GF}o_Xe(l+J)k05i2+OGW5?40Ucs zgXdL@cke+})DIUGApwNthtMDYBu?3Q6NLC!dddukJ|g|1Q}O6g{UdX3S5i~G^2#d{ z7?JvFYiqH8|9+5SUwGk#gi@4_GdRr-YXK_(%$Z{*kyv);4n+F@30~|+^k@X0xKBlD zFveQ-j&R?Gjn5?SoJBE6>BQT#E&PhfF6yxtM7BcI`)1#q^%e>?j7z z@_CBv9B(Ja`fo+8*o~>9qwvOzL>dvf7-RYwSQsQ_PG7}OVza}cjmoz43SK~kQhe$I z4?$w>%z-1{Lw`|#>#zGnR*kg}@wkD~Oa?$!ZO%^)d7c5wysMtEAw0>_tqqKuy z2a^ibg%@6kl`B`87l?}4KE-@%EUXcX`7VZf{~7h#E=;!byi-?4WKn$qrf>@C0;J5V zQ&VPm+lQrB8#1-nS`5>D6ub`-XQT#`{gy%h;ev14v?<{rU?jlHFTb4C37*P)$)u%{ z{c>aQVIOqhTN{9~_UyCI#+o&2ux#0~tbG>)U-GwhFb%CX(z^xTcrT(|N8!@Fka~@Z z=JPwE`4XrOggz(h#csGn6cJgk?n^e<&e5z6%g0`(r$o8<@sEEz@q=9LNvDS>ovgGP zwo@iI!m(q=aK{~YB&goL$OL=Ch7Gv%(n}Ex24@LeGXSjTDO6Ld?Kuc{)CW!az@!{* zM>JmoOqwJM#BMcyUgI9t*I`MJXM1bRs|BUodzo6IoD2j4i3QEa?`roDv5#k;eO4Wj zrQ3k%WG0oabf8*eC*}U+CqF63C!B31r^nk4UdS5nehM{W4<@?bhd1VjD^B+wlupwS ze0?UHb%HsfufyUDV3tc{+83CMO1YWt$#mG9OVmI%1t?cgpLpVlln#gDxtIm!W&_Ng z{qRPsps8qhEj5_T!!z1)tBQx^L;I4kCnu}0kkr1|a)5dB%{MDsku2?3zxq|igJ&ne zb{0zoi0x$a5M=|CeUMW;{`lkg{`bG1k)SLtkd5l{`#tT=y%_9x5{;hMFxLGZs$xF4 z8CD_%M&+5P4{lGU%wyZGl?$~H{0!I<(m1!=aR02HTavBab=O@Wt9Lon;b9xy+TC0Nrr3(CP>8TQD7VyC0qV!QSQBj8S; zobTltF6jg_9T#wJ3Q{R$x&1hfn;;iCoo$1q{=EatSe0V42ACg1bMUv717@ZP-gMJV zph0hc__K!|qGt+lM%meamu=ykrU}8!=SdZN>x_cPr@i#=rT~-Y%yNlInKm#L|7|%< zWzNb*nWY(AeyyaUP}-tv*REA^%%l`1&`3rw=+S6+Fgpd&D{_-n4YM#*c+>Vbje z)N%REG~L@yFv(`6O1ncZT@stEbTBzSCup=kKl;&+D&yU9-`QDkHrZzflmB1rd1iTU zmTfm>=59k~#^yPgTyV=N(9qC;ojZ3XX_vWbu=c&5k2YHx3M;ggX)vQlWAH?MO5HIi z)1d&RrpyN!H(qG(CHu}vVbpx-R(tWq7nSeUqRL!7Md=*v#ZqR;CY-V%lg(;-5IGVt zC^Mk|6`{?RchH$zw}2o^yWoNg66QgsFiGcTnAczmve{U|G?|b~P#rup)6UG*G?_~< z**6sof@hfpg|Js^4)cf2k~06nv@@r{q-o+09Gt&kIu)T}*rWXjteAGnxxtMx0_mLw zGr;WJ_II*T+leYO*Bzt3>I463o|sfl%9o%1^ruNaQhH-+C^2p=)sc~jzKRBd=anKF-TyG1V6UO_dCK(4Geq6=HQqP}v*0_EczNY}A-*Q6At zNl}wa`>_=iy#vwyyWznhM2}9w6QefEQ=Be2oX*($_Ry~OA*-H84I7+%SA z+H?1m14z!sehH~E*(@U;4xzu}Ni=z1QkQZ4yo?()g3w8Hb-}k%oM&ze$OYP7^^%bw zfj6UhIGy@tbUA#qskVzVdcaPRxi|(=wP}5q4$MN^Eo8fM9oe6jvJ6=_fOjy`wHfu= z4upI5s+-lCx_iPL)gQxxU?|(+^mOzWaCXWpBDz_PAnOIsLS|@w<5YGEWv%JJsRS@H zuOknqx0{g$y9j?vfm{iR2Gi>M!UJ;JKw` zN78k-b?a7jNL|Xu8Oc|^v&h^=oqA*PzUGUV>e&LHJcg<6!-n#s`_+9}U!X1Z#UUxT z$ibF}RnZs^hQVBJObyc*{F#|4Dz`ypdn*$)J@wR6AS<;FerX5(`q#hC8ZnTq&s4v! z95Bt$N|iFnDYV|fXx|;E({>?ztRKF(22Ixxl?&A!pr+u<>2HDcY`aV{;MO_{8MXwIeD+{>|ohz_*4VjC0&pr1Pbd^5W{?fmfN|m(Pm;JY)O6*01 z_GPR}MHA4$J{(_*lm7ZQxq~?y_NJY!&Su&(rvqZH*=#b{Hv6*gZg_-gU&ehZVWNsK z(AS}P<1^{OY!6*8o5UMNV3#sVtqf6AgfiFKDrAR}I;gSIcxNQtwbx#oQ`V4T6d#V0 z-`{e}ElG#kPB4q@qmcEO{)YDDVGOiCi6+lW7-un@NR<(lmm-kM`fi40G19VL)?%NE z%VaJCW{7GE-V7jUIuMLcOEFp6kc`61l*^~MMM*za=jGkXqD5 zjj67;Q7y++;IouIl_8B*#^T`C>|nCG?2yuGKY$w}DhCb2;F|)a(`rjW)x`kryvxG2 zEHLM8Y<5NH9gOx;i`|Wh_T%uyj6ydw7sFVMh7CNFzdSpboLJYkD`kWBR^k+8On%r* zMap|8jgYcxj<3BH10~cYU1ze3xu?t&mu#8bNolb@Rn&eu4=us`WNu(OPf=7Nef>-{ zDPL`Qi_FXhWxW3S>oX$p%5%LS-%V%a0UGXl3JYAXV7%wuB*ljZAbs+aI8|M;oxc8_ zRsphpVNX<{(tRn9&{Y8l*~-b{5z**tnr-RBxdJrI}5iv z4S1I&-BtP78JXoI*a^MoUQG0EpJuPZP<-gVGcG>|)7Ib2c!Jfw?K;_{Z8Mw*QX-0l z7{_#@#=-UceC*d6%BlS1cJ9j?(ythKe{c|y?$(4|$qhJ(Q!pTT#gdB8xoI)WdK@_r z`mBmTaAREAoe^o2zA#EB&X3X;>9!m1iqHqlRNm#PnvfaH>GW!2-S?qZdl%u(WAMe} zDiMWcS8~0Z%*@-F${c3}Q_BC4gQ~(1Pg6$JUHT{%t1?lGRH=ruAz4c~V|m}Xr`~j0 zGM)V80y6uoE%y2j;@v+(xc3cI#oTbmHMO2393w-Tk$GE)4`;+HE0`S6(QV(94R{kZ znpK>}t2&}~yCnEeCWSJ{XucLT&A#lVeZ!(iy6xV_SjTTrtI=(@$C1u^IR@o9SP{G- zBYVwinm7mFyX`Adm5ovf5{-&{sVd`?cG9J3t-R3#xk<(3nWU&Z)Oi$Dx(?_})?AG! z8dNsX#lhPlL@+0!%jqQ!gl<0L@cIK)NrBIFvD4(rIP;l8^LJY0113ufO#(0}vh!)w zy0#K(i35?*)DcyGIws_89D)2t|p45A{s#;)tSQ&?oc$UUk986aWET74i zh7$8_C4T_(?ZJ9~CPjw3jwBQwD}A?-AS8(88-I}(K6$;&A@znXma5#M7=k7_IJ?g< z6@}XKsps8Yp{rJ5-zCe)(axt)XQN1lPSPV~6d0${bGoVsEX1etTClucwpNJO85*>m z@SE2eIEa{N!l-^)nzF?I-vP~mB2}po*63!uG8LZufFw2rfyoaU&1V#P8&nj^oi!~( zuQLy_S)SM`nNj)dw)Es|FDSkr;~h_<#vPg=BaK3C4Tk+5xV0c4ivp7$lR}$ZZ^0)! zRLYsSB%5ebZoj4g0i{!6?h^Eu9-PcA&Xm0tMef5?=i~6PJQTwv^{A>jt(jRQ?Ijiq zp~$>VlXTM{h1Q5xRq56xSV~Y!7`xnQD}n@-Wu|7gX4q^4ncSaMQjrNix)E;Qib(%f z_|dHr8M@$BfmzPdip2m~G-alfp;m>Qh+Kp)mSc&c((;~z&MkP(-i>UO<6T=(qYq%T z=Ky?i7;e@bm4QBZUsag-JDFgYD90T7|{If3&e& zOOF1fc#K%Yl&R53kz)Y%W3p?LQFX8T2t4sUDY9g2)(-0A zk(*_t|2b5nJE_WfOtOT7QMIT!_-z}gM%u9X{}4bHXJd%!K}0&9$3)K#_~js6G6s$1 zt|V)E86^}+k<912eBQRj6*|I1y7UR zaB@`1xl@-1nIO2?yrE4BC8gG?%S+h?Xw@jUgPAH_j8({-hwS-Z*R$+J%EVDqK5~P$ zA=>^+jQ4Ltl^ju&$a6@`EoXUjs0dEUW;Ab1z8g|15X&Mn(+#d~$9b|&w!w#?X|^MM z(CImnHLCJCFT*Seeg!}SfTiYjh^Cz8n=ggs)M(O6mc2-y^kGDf{#hw{L%j#!6C-fT zF||=iiRxTer3kS+I_F|(@EQnlVYYpl|F9fil)VFceFRpS3efv*FwD3o$Fg-6NawMjcQn-on&2o?qMh>sbVI}mOEZ+IvVyL#Z3QLxf4 zO)u8q=4Rxb990j5F;c=fx}w&;BF__#qRFxt-)ym+4{Q%guN+nEiHpM+BVJXqKgJ2d zDnz9LCjY%WNN}CCu1UF0ily?wy=v`OBR!Jw*eQ@UqM>c`-W$+|(GOZM+It8-tph&y zKE+a5x=FAGwDkxHU3%3GW>R5IaNn#Gh7*H19{>k55c;&DR_oB)8l>S#s!Zny{pJvTCW zxkO;JBGxalzlx=>QhqzbTG{7Y@dNB{`Hb|)Ff@&a(%!Pty!fbhFNNo%ug)n5I`nRY>{f6n9A-QalxqheO!E`QAN9YP^$T$I^ zh2hrv;lV(XcAV>?(j=Oc4X6non0M=tYL4@M5>h@Uqix%j_DQ?X;Ec&$9(%p4T!EgC z@6CHK=i{Q6Ys@FWEZ54;LAxiwoP$L#SC=QiEZ54;LAxiwoP$L#SC=QiEZ54;LAxiw foP$L#SC{_>d5OJMDct4u00000NkvXXu0mjfA)kcK literal 0 HcmV?d00001 diff --git a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/overCheckStatus.png b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/overCheckStatus.png new file mode 100644 index 0000000000000000000000000000000000000000..474eca75973690dd8b816595726ea55fc9b3b096 GIT binary patch literal 16686 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 Date: Mon, 21 Jul 2025 13:53:39 +0800 Subject: [PATCH 28/34] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-ui/mes-ui-admin-vue3/src/views/heli/plan/edit.vue | 2 +- mes-ui/mes-ui-admin-vue3/src/views/heli/plan/planSchedule.vue | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/edit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/edit.vue index 595e17a..3083f41 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/edit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/edit.vue @@ -593,7 +593,7 @@ v-for="dict in mergedArray7" :key="dict.id" - +