From f01f5ac86ab886778b573614232ef8204be9d14d Mon Sep 17 00:00:00 2001 From: Ledo Date: Tue, 18 Feb 2025 23:35:12 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=94=9F=E4=BA=A7=E4=BB=BB=E5=8A=A1=E5=8D=95?= =?UTF-8?q?=E8=8B=A5=E6=9C=89=E5=88=A0=E9=99=A4=E9=A1=B9=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=90=8E=E6=97=A0=E6=B3=95=E4=BF=9D=E5=AD=98=202.=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E4=BB=BB=E5=8A=A1=E6=B4=BE=E5=B7=A5=E5=8D=95=E9=A2=84?= =?UTF-8?q?=E8=AE=A1=E5=BC=80=E5=A7=8B=E6=97=B6=E9=97=B4=E5=92=8C=E9=A2=84?= =?UTF-8?q?=E8=AE=A1=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=B8=A6=E5=87=BA=203.=E7=94=9F=E4=BA=A7=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=B4=BE=E5=B7=A5=E5=8D=95=E9=A2=84=E8=AE=A1=E5=B7=A5=E6=97=B6?= =?UTF-8?q?=E5=8F=96=E6=B6=88*=204.=E7=94=9F=E4=BA=A7=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=B4=BE=E5=B7=A5=E5=8D=95=E8=AE=BE=E5=A4=87=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=205.=E5=85=A8=E9=83=A8=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E6=97=B6=E7=94=9F=E4=BA=A7=E8=AE=A1=E5=88=92=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E4=B8=BA=E5=B7=B2=E5=AE=8C=E6=88=90=206.=E7=BB=88?= =?UTF-8?q?=E6=A3=80=E8=BF=87=E7=A8=8B=E6=A3=80=E6=B7=BB=E5=8A=A0=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E7=AE=A1=E6=8E=A7=207.=E5=8F=91=E8=B4=A7=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E8=AE=A2=E5=8D=95=E6=9B=B4=E6=96=B0=E7=8A=B6=E6=80=81?= =?UTF-8?q?bug=E9=97=AE=E9=A2=98=E6=9F=A5=E6=89=BE=E5=92=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=208.=E4=BB=BB=E5=8A=A1=E6=B4=BE=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deliverorder/DeliverOrderSubDO.java | 3 + .../heli/manager/CrossOrderManager.java | 62 +++++++++++++++++++ .../deliverorder/DeliverOrderServiceImpl.java | 6 +- .../module/heli/service/plan/PlanService.java | 4 +- .../heli/service/plan/PlanServiceImpl.java | 14 ++++- .../src/views/heli/deliverorder/detail.vue | 34 +++++++--- .../src/views/heli/plantask/edit.vue | 5 +- .../views/heli/taskdispatch/detailDialog.vue | 37 ++++++++--- .../src/pages/pgMaster/pgMaster-detail.vue | 2 + .../pages/zjPgMaster/zjPgMaster-detail.vue | 1 + 10 files changed, 146 insertions(+), 22 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java index c3c0e62..8b36297 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; import java.math.BigDecimal; @@ -89,6 +90,8 @@ public class DeliverOrderSubDO extends BaseDO { /** * 销售订单子项id */ + @TableField(exist = false) + private Long saleOrderId; private Long saleOrderSubId; /** * 销售订单编号 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 b122f95..5c04e05 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 @@ -14,6 +14,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDis import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO; @@ -115,6 +116,7 @@ public class CrossOrderManager { eq(ProjectOrderDO::getId, projectOrderId); last("LIMIT 1 FOR UPDATE"); }}); + PlanDO planDO = planService.getPlanByProjectId(Long.valueOf(projectOrderId)); // 查询关联子项 List projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId(projectOrderDO.getId()); @@ -126,6 +128,7 @@ public class CrossOrderManager { .eq(DeliverOrderDO::getDeliverStatus, DeliverOrderStatusEnum.DELIVER.getCode()) .in(DeliverOrderSubDO::getSaleOrderSubId, projectOrderSubDOList.stream().map(ProjectOrderSubDO::getId).collect(Collectors.toSet())); List historyDeliveredSubList = deliverOrderSubMapper.selectList(historyDeliveredSubQuery); + //如果历史没发过 if(historyDeliveredSubList.isEmpty()) return; Map> historyDeliveredSubsGroupBySaleSubId = historyDeliveredSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); @@ -139,6 +142,8 @@ public class CrossOrderManager { if(allDone){ projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.ALL.getCode()); projectOrderDO.setDeliveryDate(deliverDate); + planDO.setStatus(3); + planService.updateById(planDO); }else{ projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.PART.getCode()); } @@ -146,6 +151,63 @@ public class CrossOrderManager { } + } + /** + * 刷新项目订单发货状态 + * @param deliverOrderSubs + */ + @Transactional(rollbackFor = Exception.class) + public void refreshProjectOrderDeliverStatusNew( List deliverOrderSubs,LocalDateTime deliverDate) { + //按销售订单号分组: + Map> groupBySaleId = deliverOrderSubs.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderId)); + for (Map.Entry> projectIdEntity : groupBySaleId.entrySet()) { + ProjectOrderDO projectOrderDO = projectOrderMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ProjectOrderDO::getId, projectIdEntity.getKey()); + last("LIMIT 1 FOR UPDATE"); + }}); + PlanDO planDO = planService.getPlanByProjectId(Long.valueOf(projectIdEntity.getKey())); + + // 查询关联子项 + List projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId(projectOrderDO.getId()); + + // 查询发货记录 + MPJLambdaWrapper historyDeliveredSubQuery = new MPJLambdaWrapper<>(); + historyDeliveredSubQuery.selectAll(DeliverOrderSubDO.class) + .leftJoin(DeliverOrderDO.class, DeliverOrderDO::getId, DeliverOrderSubDO::getDeliveryOrderId) + .eq(DeliverOrderDO::getDeliverStatus, DeliverOrderStatusEnum.DELIVER.getCode()) + .in(DeliverOrderSubDO::getSaleOrderSubId, projectOrderSubDOList.stream().map(ProjectOrderSubDO::getId).collect(Collectors.toSet())); + List historyDeliveredSubList = deliverOrderSubMapper.selectList(historyDeliveredSubQuery); + //如果历史没发过 以本次为准 + if(historyDeliveredSubList.isEmpty()) { + historyDeliveredSubList = projectIdEntity.getValue(); + }else { + historyDeliveredSubList.addAll(projectIdEntity.getValue()); + } + Map> historyDeliveredSubsGroupBySaleSubId = historyDeliveredSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); + + // 考虑变更订单情况 只需判断历史发货是否大于等于订单子项数量 + boolean allDone = projectOrderSubDOList.stream().allMatch(projectOrderSubDO -> { + List historySubList = historyDeliveredSubsGroupBySaleSubId.get(projectOrderSubDO.getId()); + int historyDeliveredAmount = historySubList == null || historySubList.isEmpty() ? 0 : historySubList.stream().mapToInt(DeliverOrderSubDO::getAmount).sum(); + return historyDeliveredAmount >= projectOrderSubDO.getAmount(); + }); + + if(allDone){ + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.ALL.getCode()); + projectOrderDO.setDeliveryDate(deliverDate); + planDO.setStatus(3); + planService.updateById(planDO); + }else{ + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.PART.getCode()); + } + projectOrderMapper.updateById(projectOrderDO); + } + // 锁定订单 + for (DeliverOrderSubDO deliverOrderSubDO : deliverOrderSubs) { + + + } + } /** diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java index 50af5ab..68fda1f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java @@ -139,8 +139,10 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs(), updateReqVO.getDeliverOrderOtherSubs()); if(updateObj.getDeliverStatus().intValue() == DeliverOrderStatusEnum.DELIVER.getCode()) { - crossOrderManager.refreshProjectOrderDeliverStatus(updateReqVO.getSaleOrderIds().split(","),updateReqVO.getDeliverDate()); - // crossOrderManager.generateStockOutOrder(updateReqVO); + // crossOrderManager.refreshProjectOrderDeliverStatus(updateReqVO.getSaleOrderIds().split(","),updateReqVO.getDeliverDate()); + crossOrderManager.refreshProjectOrderDeliverStatusNew(updateReqVO.getDeliverOrderSubs(),updateReqVO.getDeliverDate()); + + // crossOrderManager.generateStockOutOrder(updateReqVO); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanService.java index 5784939..c96b88f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plan/PlanService.java @@ -53,11 +53,13 @@ public interface PlanService { PageResult getPlanPage(PlanPageReqVO pageReqVO); PageResult getPlanPageByStatus(PlanPageReqVO pageReqVO); - + PlanDO getPlanByProjectId(Long projectId); Long generatePlanByProjectId(Long projectId); void generatePlanTaskByPlanId(Long planId ,String type); void updatePlanStatusToTerminateByProjectId(Long projectId); boolean complete(Long id); + + int updateById(PlanDO planDO); } 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 5423006..5ce9909 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 @@ -162,7 +162,14 @@ private TaskReportMapper taskReportMapper; public PageResult getPlanPageByStatus(PlanPageReqVO pageReqVO) { return planMapper.selectPageByStatus(pageReqVO); } - + @Override + public PlanDO getPlanByProjectId(Long projectId){ + return planMapper.selectOne(new LambdaQueryWrapper() {{ + eq(PlanDO::getProjectId, projectId); + orderByDesc(PlanDO::getId); + last("LIMIT 1"); + }}); + } @Override @Transactional(rollbackFor = Exception.class) public Long generatePlanByProjectId(Long projectId){ @@ -270,7 +277,10 @@ private TaskReportMapper taskReportMapper; updatePlanTaskStatusToTerminateByPlanId(planDO.getId()); } } - + @Override + public int updateById(PlanDO planDO){ + return planMapper.updateById(planDO); + } @Override public boolean complete(Long id) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue index 186251e..9d92b70 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue @@ -643,7 +643,13 @@ const submitForm = async (operate) => { item.category = 'OTHER_LIST' item.status = 1 }) - const data = formData.value as unknown as DeliverOrderApi.DeliverOrderVO + var data = formData.value as unknown as DeliverOrderApi.DeliverOrderVO + // if(data.deliverOrderSubs.length >1){ + // data.deliverOrderSubs.forEach(element => { + // element.saleOrderSubId = element.projectOrderId; + // }); + + // } const orderId = await DeliverOrderApi.operateDeliverOrder(data) message.success(t('common.operationSuccess')) // 上传附件 @@ -909,24 +915,36 @@ const queryData = async (type: string, id?: number) => { formData.value.deliverOrderSubs = [] let saleOrderIdArr = formData.value.saleOrderIds.split(',') for (let i = 0; i < saleOrderIdArr.length; i++) { - formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat( - await getProjectOrderSubListByProjectOrderId(saleOrderIdArr[i]) - ) - formData.value.deliverOrderSubs.forEach((sub) => { + var subList = await getProjectOrderSubListByProjectOrderId(saleOrderIdArr[i]); + subList.forEach((sub)=>{ + sub.saleOrderId = saleOrderIdArr[i]; sub.remark = '' sub.saleOrderSubId = sub.id sub.id = '' sub.saleOrderCode = sub.projectOrderCode sub.amounts = sub.amount - sub.deliverAmount - }) + }) + formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat( + subList + ) + // formData.value.deliverOrderSubs.forEach((sub) => { + // sub.saleOrderId = saleOrderIdArr[i]; + // sub.remark = '' + // sub.saleOrderSubId = sub.id + // sub.id = '' + // sub.saleOrderCode = sub.projectOrderCode + // sub.amounts = sub.amount - sub.deliverAmount + // }) } + // console.log(formData.value.deliverOrderSubs ) } else { // 分类发货清单与其他物料清单 formData.value.deliverOrderSubs = subArr.filter((sub) => sub.category == 'DELIVER_LIST') formData.value.deliverOrderOtherSubs = subArr.filter((sub) => sub.category == 'OTHER_LIST') } - console.log("打印发货信息"); - console.log(formData.value.deliverOrderSubs); + //console.log("打印发货信息"); + // + // console.log(formData.value.deliverOrderSubs); // 操作日志 let logParams = { pageNo: 1, diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue index 33ae62e..d5e9722 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue @@ -222,7 +222,10 @@ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue index cc068b8..d186130 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue @@ -312,9 +312,15 @@ v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" - +