From 96dca4e8209ce9089e363e79635d3ab46e278aee Mon Sep 17 00:00:00 2001 From: yxw Date: Tue, 5 Mar 2024 09:55:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E4=B8=8B=E8=BE=BE=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=BD=93=E5=89=8D=E5=B7=A5=E5=8D=95=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E5=B7=A5=E5=8D=95BOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/WorkOrderExtService.java | 61 ++++++++++++++++------ .../serviceimpl/base/bu/BuWorkOrderExtService.java | 26 +++++++++ .../mes/icloud/sdk/IWmsWorkOrderBomCheckCloud.java | 19 +++++++ .../WmsWorkOrderBomCheckFallbackFactory.java | 20 +++++++ 4 files changed, 111 insertions(+), 15 deletions(-) create mode 100644 modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdk/IWmsWorkOrderBomCheckCloud.java create mode 100644 modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdkfallback/WmsWorkOrderBomCheckFallbackFactory.java diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java index b287ed9..b3a734f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java @@ -10,6 +10,7 @@ import cn.estsh.i3plus.ext.mes.api.busi.bu3.ISxPartExtService; import cn.estsh.i3plus.ext.mes.api.busi.jx.IJxPackageExtService; import cn.estsh.i3plus.ext.mes.api.busi.jx.IJxProduceSnService; import cn.estsh.i3plus.ext.mes.icloud.sdk.IWmsErpHouseCheckCloud; +import cn.estsh.i3plus.ext.mes.icloud.sdk.IWmsWorkOrderBomCheckCloud; import cn.estsh.i3plus.ext.mes.pojo.bean.*; import cn.estsh.i3plus.ext.mes.pojo.model.*; import cn.estsh.i3plus.ext.mes.pojo.repository.*; @@ -107,6 +108,9 @@ public class WorkOrderExtService implements IWorkOrderExtService { private IWmsErpHouseCheckCloud wmsErpHouseCheckCloud; @Autowired + private IWmsWorkOrderBomCheckCloud wmsWorkOrderBomCheckCloud; + + @Autowired private IConfigService configService; @Resource(name = MesExtConstWords.REDIS_MES) @@ -1824,21 +1828,11 @@ public class WorkOrderExtService implements IWorkOrderExtService { } } else if (MesExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue() == workOrderStatus) { //下达 : 校验WMS的存储区是否存在 - BaseResultBean baseResultBean = wmsErpHouseCheckCloud.getWmsZone(mesWorkOrder.getErpWarehouse(), organizeCode); - if (null == baseResultBean) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("调用校验WMS存储区微服接口失败,BaseResultBean对象为NULL") - .build(); - } - if (!baseResultBean.success) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail(baseResultBean.errorMsg) - .build(); - } + checkWmsErpHouseIsExist(organizeCode, mesWorkOrder); + + // 下达:在WMS中校验工单是否下达工单BOM + checkWorkOrderBomIsExist(organizeCode, mesWorkOrder); + } mesWorkOrder.setWorkOrderStatus(workOrderStatus); ConvertBean.serviceModelUpdate(mesWorkOrder, AuthUtil.getSessionUser().getUserName()); @@ -1853,6 +1847,43 @@ public class WorkOrderExtService implements IWorkOrderExtService { } + private void checkWorkOrderBomIsExist(String organizeCode, MesWorkOrderExt mesWorkOrder) { + if (mesWorkOrder.getWorkOrderType() != MesExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue()) return; + BaseResultBean baseResultBean = wmsWorkOrderBomCheckCloud.getWorkOrderBom(mesWorkOrder.getOrderNo(), organizeCode); + if (null == baseResultBean) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("调用校验WMS获取工单BOM微服接口失败,BaseResultBean对象为NULL") + .build(); + } + if (!baseResultBean.success) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail(baseResultBean.errorMsg) + .build(); + } + } + + private void checkWmsErpHouseIsExist(String organizeCode, MesWorkOrderExt mesWorkOrder) { + BaseResultBean baseResultBean = wmsErpHouseCheckCloud.getWmsZone(mesWorkOrder.getErpWarehouse(), organizeCode); + if (null == baseResultBean) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("调用校验WMS存储区微服接口失败,BaseResultBean对象为NULL") + .build(); + } + if (!baseResultBean.success) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail(baseResultBean.errorMsg) + .build(); + } + } + //根据物料信息 更新ep工单状态为不创建条码 private void updateEpWorkOrderCreateSn(MesWorkOrderExt mesWorkOrderExt){ diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuWorkOrderExtService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuWorkOrderExtService.java index 31b84bb..49d2248 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuWorkOrderExtService.java @@ -20,6 +20,7 @@ import cn.estsh.i3plus.ext.mes.apiservice.util.SxDateRangeUtils; import cn.estsh.i3plus.ext.mes.apiservice.util.SxMesHttpUtil; import cn.estsh.i3plus.ext.mes.icloud.sdk.IQmsReworkRangeCloud; import cn.estsh.i3plus.ext.mes.icloud.sdk.IWmsErpHouseCheckCloud; +import cn.estsh.i3plus.ext.mes.icloud.sdk.IWmsWorkOrderBomCheckCloud; import cn.estsh.i3plus.ext.mes.pojo.bean.*; import cn.estsh.i3plus.ext.mes.pojo.model.ExcelWorkOrderDto; import cn.estsh.i3plus.ext.mes.pojo.model.GenerateWorkOrderDto; @@ -116,6 +117,9 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService { private IWmsErpHouseCheckCloud wmsErpHouseCheckCloud; @Autowired + private IWmsWorkOrderBomCheckCloud wmsWorkOrderBomCheckCloud; + + @Autowired private IQmsReworkRangeCloud reworkRangeCloud; @Autowired @@ -1559,6 +1563,9 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService { //下达 : 校验WMS的存储区是否存在 checkWmsErpHouseIsExist(organizeCode, mesWorkOrder); + // 下达:在WMS中校验工单是否下达工单BOM + checkWorkOrderBomIsExist(organizeCode, mesWorkOrder); + if (StringUtils.isEmpty(mesWorkOrder.getReserved1()) || StringUtils.isEmpty(mesWorkOrder.getReserved2())) { if (CollectionUtils.isEmpty(workCenterExtMap)) workCenterExtMap = new HashMap<>(); MesWorkCenterExt workCenterExt; @@ -1646,6 +1653,25 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService { } + private void checkWorkOrderBomIsExist(String organizeCode, MesWorkOrderExt mesWorkOrder) { + if (mesWorkOrder.getWorkOrderType() != MesExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue()) return; + BaseResultBean baseResultBean = wmsWorkOrderBomCheckCloud.getWorkOrderBom(mesWorkOrder.getOrderNo(), organizeCode); + if (null == baseResultBean) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("调用校验WMS获取工单BOM微服接口失败,BaseResultBean对象为NULL") + .build(); + } + if (!baseResultBean.success) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail(baseResultBean.errorMsg) + .build(); + } + } + private void clearProdBindRecord(String organizeCode, MesWorkOrderExt mesWorkOrder, String nowTime, List serialNumberList) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(mesWorkOrder.getOrderNo(), MesExtConstWords.WORK_ORDER_NO, packBean); diff --git a/modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdk/IWmsWorkOrderBomCheckCloud.java b/modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdk/IWmsWorkOrderBomCheckCloud.java new file mode 100644 index 0000000..36d4842 --- /dev/null +++ b/modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdk/IWmsWorkOrderBomCheckCloud.java @@ -0,0 +1,19 @@ +package cn.estsh.i3plus.ext.mes.icloud.sdk; + +import cn.estsh.i3plus.ext.mes.icloud.sdkfallback.WmsWorkOrderBomCheckFallbackFactory; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient(name = "i3wms", + path = CommonConstWords.WHITELIST_URL, + fallbackFactory = WmsWorkOrderBomCheckFallbackFactory.class +) +public interface IWmsWorkOrderBomCheckCloud { + @GetMapping(value = "/ext/base/get-wms-work-order-bom") + BaseResultBean getWorkOrderBom(@RequestParam(MesExtConstWords.WORK_ORDER_NO) String workOrderNo, + @RequestParam(MesExtConstWords.ORGANIZE_CODE) String organizeCode); +} diff --git a/modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdkfallback/WmsWorkOrderBomCheckFallbackFactory.java b/modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdkfallback/WmsWorkOrderBomCheckFallbackFactory.java new file mode 100644 index 0000000..aaf408d --- /dev/null +++ b/modules/i3plus-ext-mes-icloud/src/main/java/cn/estsh/i3plus/ext/mes/icloud/sdkfallback/WmsWorkOrderBomCheckFallbackFactory.java @@ -0,0 +1,20 @@ +package cn.estsh.i3plus.ext.mes.icloud.sdkfallback; + +import cn.estsh.i3plus.ext.mes.icloud.sdk.IWmsWorkOrderBomCheckCloud; +import cn.estsh.i3plus.pojo.base.bean.BaseFallBackBean; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import feign.hystrix.FallbackFactory; +import org.springframework.stereotype.Component; + +@Component +public class WmsWorkOrderBomCheckFallbackFactory extends BaseFallBackBean implements FallbackFactory { + @Override + public IWmsWorkOrderBomCheckCloud create(Throwable throwable) { + return new IWmsWorkOrderBomCheckCloud() { + @Override + public BaseResultBean getWorkOrderBom(String workOrderBom, String organizeCode) { + return makeBaseFallBack("微服调用出错", throwable); + } + }; + } +}