From 98786338057465c524e7ebf9d3bc6a4395a0c398 Mon Sep 17 00:00:00 2001 From: yxw Date: Fri, 27 Sep 2024 13:30:21 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81MesProductionPartContext=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0cutQty=EF=BC=88=E8=A3=81=E7=89=87=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E9=87=8F=EF=BC=89=202=E3=80=81=E8=A3=81=E7=89=87?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=BB=91=E5=AE=9A=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesWorkOrderCutService.java | 9 ++++ .../controller/base/MesWorkOrderCutController.java | 19 ++++++- .../serviceimpl/base/MesWorkOrderCutService.java | 59 +++++++++++++++------- 3 files changed, 69 insertions(+), 18 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java index 33d62e5..3650596 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java @@ -1,6 +1,9 @@ package cn.estsh.i3plus.ext.mes.api.base; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -17,6 +20,12 @@ public interface IMesWorkOrderCutService extends IBaseMesService workOrderIds, String cutCode, String remark, String organizeCode, String userName, Integer editionNumber); + @ApiOperation("分页查询裁片工单明细") + ListPager queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager); + + //@ApiOperation("分页查询裁片工单明细") + //ListPager queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager); + @ApiOperation("发布裁片工单") void doReleaseCutWorkOrder(List cutWorkOrderNos, String organizeCode, String userName); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java index 760bfc9..344cd69 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java @@ -2,17 +2,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; -import cn.hutool.core.collection.ListUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -48,6 +50,21 @@ public class MesWorkOrderCutController extends BaseMesController impl editionNumber = editionNumber == null ? 1 : editionNumber; + // 记录工单剩余未完成数量 Map workOrderUnCompleteMap = new HashMap<>(); + // 记录当前裁片工单 每个工单的计划数量 + Map workOrderQtyMap = new HashMap<>(); List workOrderCutDetailtList = new ArrayList<>(); List workOrderCuttList = new ArrayList<>(); List workOrderCutMaterialList = new ArrayList<>(); // 校验工单未完成数量是否满足计划数量 - checkQtyIsEnough(editionNumber, workOrderListMapByPartNo, cutScheme, cutSchemeFgList, workOrderUnCompleteMap); + checkQtyIsEnough(editionNumber, workOrderListMapByPartNo, cutScheme, cutSchemeFgList, workOrderUnCompleteMap, workOrderQtyMap); // 预计生成裁片工单数量 for (Integer count = 0; count < editionNumber; count++) { @@ -135,17 +141,18 @@ public class MesWorkOrderCutService extends BaseMesService impl for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) { List workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo()); - MesWorkOrder workOrder = workOrders.get(0); - MesWorkOrderCutDetail detail = new MesWorkOrderCutDetail(); - ConvertBean.serviceModelInitialize(detail, userName); - detail.setOrganizeCode(organizeCode); - detail.setCutWorkOrderNo(cutWorkOrderNo); - detail.setPartNo(workOrder.getPartNo()); - detail.setPartName(workOrder.getPartName()); - detail.setWorkOrderNo(workOrder.getWorkOrderNo()); - detail.setRemark(cutSchemeFg.getRemark()); - detail.setQty(cutSchemeFg.getQty()); - workOrderCutDetailtList.add(detail); + for (MesWorkOrder workOrder : workOrders) { + MesWorkOrderCutDetail detail = new MesWorkOrderCutDetail(); + ConvertBean.serviceModelInitialize(detail, userName); + detail.setOrganizeCode(organizeCode); + detail.setCutWorkOrderNo(cutWorkOrderNo); + detail.setPartNo(workOrder.getPartNo()); + detail.setPartName(workOrder.getPartName()); + detail.setWorkOrderNo(workOrder.getWorkOrderNo()); + detail.setRemark(cutSchemeFg.getRemark()); + detail.setQty(workOrderQtyMap.get(workOrder.getWorkOrderNo())); + workOrderCutDetailtList.add(detail); + } } } @@ -165,7 +172,18 @@ public class MesWorkOrderCutService extends BaseMesService impl } - private static void checkQtyIsEnough(Integer editionNumber, Map> workOrderListMapByPartNo, MesCutScheme cutScheme, List cutSchemeFgList, Map workOrderUnCompleteMap) { + @Override + public ListPager queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderCutDetail.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(workOrderCutDetail.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean); + pager = PagerHelper.getPager(pager, workOrderCutDetailRepository.findByHqlWhereCount(packBean)); + List list = workOrderCutDetailRepository.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + private static void checkQtyIsEnough(Integer editionNumber, Map> workOrderListMapByPartNo, + MesCutScheme cutScheme, List cutSchemeFgList, + Map workOrderUnCompleteMap, Map workOrderQtyMap) { for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) { List workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo()); @@ -179,16 +197,19 @@ public class MesWorkOrderCutService extends BaseMesService impl // 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量 Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber); - + Double srcTotalQty = totalQty.doubleValue(); Double unCompleteQty = 0.0; List needWorkOrderNoList = new ArrayList<>(); for (MesWorkOrder order : workOrders) { if (!order.getWorkCenterCode().equals(cutScheme.getWorkCenterCode())) - MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", order.getWorkCenterCode(), cutScheme.getWorkCenterCode()); + MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", + order.getWorkCenterCode(), cutScheme.getWorkCenterCode()); - if (unCompleteQty.compareTo(totalQty) > 0) - MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), workOrders.subList(needWorkOrderNoList.size(), workOrders.size())); + if (unCompleteQty.compareTo(srcTotalQty) >= 0) + MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", + order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), + workOrders.subList(needWorkOrderNoList.size(), workOrders.size())); unCompleteQty = MathOperation.add(unCompleteQty, order.getUnCompleteQty()); @@ -196,8 +217,12 @@ public class MesWorkOrderCutService extends BaseMesService impl if (order.getUnCompleteQty().compareTo(totalQty) >= 0) { workOrderUnCompleteMap.put(order.getWorkOrderNo(), MathOperation.sub(order.getUnCompleteQty(), totalQty)); + workOrderQtyMap.put(order.getWorkOrderNo(), totalQty); + totalQty = 0.0; } else { workOrderUnCompleteMap.put(order.getWorkOrderNo(), 0.0); + workOrderQtyMap.put(order.getWorkOrderNo(), order.getUnCompleteQty()); + totalQty = MathOperation.sub(totalQty, order.getUnCompleteQty()); } }