From 078f86e8d3fe7ed22315bbc0e14025b2949f15fa Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 19 Feb 2025 17:12:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecockpit=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IMesShippingOrderManagementDetailService.java | 3 + ...MesShippingOrderManagementDetailController.java | 14 ++++ .../MesShippingOrderManagementDetailService.java | 82 ++++++++++++++++++++++ 3 files changed, 99 insertions(+) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java index 62002ab..24c2104 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import cn.estsh.impp.framework.boot.util.ResultBean; @@ -45,4 +46,6 @@ public interface IMesShippingOrderManagementDetailService extends IBaseMesServic @ApiOperation("查询发运零件子零件明细") ListPager queryDetailMesWorkOrderPart(MesWorkOrderPart bean, Pager pager); + + void doHandleCockpitShippingError(MesShippingOrderManagementDetail detail, MesWorkOrder workOrder); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java index bc5af0f..0a7d297 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java @@ -6,6 +6,7 @@ import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import cn.estsh.impp.framework.boot.auth.AuthUtil; @@ -67,6 +68,19 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle } } + @ApiOperation(value = "cockpit发运处理", notes = "cockpit发运处理") + @PostMapping("/handle-cockpit-shipping-error") + public ResultBean handleCockpitShippingError(MesShippingOrderManagementDetail detail, MesWorkOrder workOrder) { + try { + shippingOrderManagementDetailService.doHandleCockpitShippingError(detail, workOrder); + return ResultBean.success("处理成功"); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @ApiOperation(value = "根据客户零件匹配零件号", notes = "根据客户零件匹配零件号") @GetMapping("/master/part/supplyBycustPartNo") public ResultBean supplyBycustPartNo(Long[] ids) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java index 3242344..d441446 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java @@ -13,6 +13,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; @@ -59,10 +60,18 @@ public class MesShippingOrderManagementDetailService extends BaseMesService queryDetailMesWorkOrderPart(MesWorkOrderPart bean, Pager pager) { List modelList=new ArrayList<>(); List shippingDetails = shippingOrderManagementDetailDao.queryMesShippingOrderManagementDetail(bean); @@ -325,4 +335,76 @@ public class MesShippingOrderManagementDetailService extends BaseMesService(modelList, pager); } + @Override + public void doHandleCockpitShippingError(MesShippingOrderManagementDetail detail, MesWorkOrder workOrder) { + if (StringUtils.isEmpty(detail.getPartNo())) { + MesException.throwFlowException("发运单明细对应零件号为空"); + } + if (StringUtils.isEmpty(detail.getBarcode())) { + MesException.throwMesBusiException("发运单条码信息不存在"); + } + String organizeCode = AuthUtil.getOrganizeCode(); + String userName = AuthUtil.getSessionUser().getUserName(); + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(detail.getPid(), "id", orderPackBean); + MesShippingOrderManagement orderManagement = shippingOrderRepository.getByProperty(orderPackBean); + if (orderManagement == null || StringUtils.isEmpty(orderManagement.getShippingGroupCode())) { + MesException.throwFlowException("发运单主表不存在"); + } + + DdlPackBean partShippingGroupPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringLikerPack(orderManagement.getShippingGroupCode(), "shippingGroupCode", partShippingGroupPackBean); + MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupRDao.getByProperty(partShippingGroupPackBean); + if (mesPartShippingGroup == null || StringUtils.isEmpty(mesPartShippingGroup.getConfirmPartType()) || Integer.parseInt(mesPartShippingGroup.getConfirmPartType()) != MesExtEnumUtil.SHIPPING_GROUP_CONFIRM_PART_TYPE.SHIPPING_GROUP_CONFIRM_PART_TYPE_30.getValue()) { + MesException.throwFlowException("零件发运组【%s】,扫描确认零件方式应为【装配目视单和客户零件条码】", orderManagement.getShippingGroupCode()); + } + + DdlPackBean workOrderPartPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrder.getWorkOrderNo(), "workOrderNo", workOrderPartPackBean); + List workOrderParts = mesWorkOrderPartRepository.findByHqlWhere(workOrderPartPackBean); + if (!CollectionUtils.isEmpty(workOrderParts)) { + List shippingList = new ArrayList<>(); + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue(), "groupType", ddlPackBean); + DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(), "code", ddlPackBean); + List mesMoveRuleList = mesMoveRuleRepository.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(mesMoveRuleList)) { + MesException.throwFlowException(String.format("移库规则不存在:发运单编号:%s,发运组代码:%s,", orderManagement.getShippingCode(), orderManagement.getShippingGroupCode())); + } + Map mesMoveRuleMap = mesMoveRuleList.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.toMap(MesMoveRule::getSrcType, Function.identity(), (x, y) -> y)); + + for (MesWorkOrderPart orderPart : workOrderParts) { + MesPart itemPart = mesPartService.getPartByPartNo(orderPart.getPartNo(), organizeCode); + MesMoveRule moveRule = mesMoveRuleMap.get(itemPart.getEsd()); + if (Objects.equals(moveRule.getMoveNum(), MesExtEnumUtil.MOVE_RULE_MOVE_NUM.MOVE_RULE_MOVE_NUM_20.getValue()) && MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.SHIPPING.getValue() == moveRule.getReportType()) { + shippingList.add(getMesJisShipping(orderManagement, detail, moveRule.getErpSrcLocateNo(), orderPart, userName)); + } else { + log.info("客供品移库零件【{}】在零件发运组【{}】的移库规则中,汇报类型未维护或不为发运", orderPart.getPartNo(), workOrder.getPartProdGroupCode()); + } + } + + jisShippingRepository.saveAll(shippingList); + } + + List mesProduceSnList = mesProduceSnService.findMesProduceSn(organizeCode, detail.getBarcode()); + for (MesProduceSn mesProduceSn : mesProduceSnList) { + //更新条码状态为完成 + mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); + mesProduceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(mesProduceSn, userName); + mesProduceSnRepository.update(mesProduceSn); + } + + workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.SHIPPING.getValue()); + workOrder.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(workOrder, userName); + mesWorkOrderRDao.update(workOrder); + + detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); + detail.setSystemSyncStatus(CommonEnumUtil.FALSE); + detail.setRemark("cockpit发运处理"); + ConvertBean.serviceModelUpdate(detail, userName); + shippingOrderDetailRepository.update(detail); + } } From f29bef72a0d80fb716af3be83a9893915e8b6fed Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 20 Feb 2025 17:33:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecockpit=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesShippingOrderManagementDetailController.java | 12 ++++++++++-- .../MesShippingOrderManagementDetailService.java | 21 ++++++++++++++------- .../mes/pojo/model/MesHandleShippingErrorModel.java | 11 +++++++++++ 3 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesHandleShippingErrorModel.java diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java index 0a7d297..4ddc33e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.model.MesHandleShippingErrorModel; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; @@ -70,9 +71,16 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle @ApiOperation(value = "cockpit发运处理", notes = "cockpit发运处理") @PostMapping("/handle-cockpit-shipping-error") - public ResultBean handleCockpitShippingError(MesShippingOrderManagementDetail detail, MesWorkOrder workOrder) { + public ResultBean handleCockpitShippingError(@RequestBody MesHandleShippingErrorModel request) { try { - shippingOrderManagementDetailService.doHandleCockpitShippingError(detail, workOrder); + MesShippingOrderManagementDetail detail = shippingOrderManagementDetailService.get(request.getDetail().getId()); + if (detail == null) { + return ResultBean.fail("无效发运单明细"); + } + if (detail.getPid() == null) { + return ResultBean.fail("发运单明细未关联有效发运单"); + } + shippingOrderManagementDetailService.doHandleCockpitShippingError(detail, request.getWorkOrder()); return ResultBean.success("处理成功"); } catch (ImppBusiException e) { return ResultBean.fail(e); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java index d441446..271e932 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesShippingOrderManagementDetailDao; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; @@ -239,8 +240,8 @@ public class MesShippingOrderManagementDetailService extends BaseMesService mesProduceSnList = mesProduceSnService.findMesProduceSn(organizeCode, detail.getBarcode()); - for (MesProduceSn mesProduceSn : mesProduceSnList) { + MesProduceSn mesProduceSn = mesProduceSnService.getMesProduceSnByCustSn(organizeCode, workOrder.getCustSn()); + if (mesProduceSn != null) { //更新条码状态为完成 mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); mesProduceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); @@ -401,6 +407,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService