diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPullingOrderInfoService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPullingOrderInfoService.java index 848e524..641acc0 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPullingOrderInfoService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPullingOrderInfoService.java @@ -22,7 +22,7 @@ public interface IMesPullingOrderInfoService { void doMesPullingOrderInfoScan(MesPullingOrderInfo mesPullingOrderInfo, String userName); MesPullingOrderPartInfo doMesPullingOrderInfoJisScan(MesPullingOrderPartInfo mesPullingOrderPartInfo, String userName); - List doMesPullingOrderInfoPrint(MesPullingOrderInfo mesPullingOrderInfo, String userName); + List doMesPullingOrderInfoPrint(MesPullingOrderInfo mesPullingOrderInfo); ListPager queryMesPullingOrderPartInfoByPager(MesPullingOrderInfo mesPullingOrderInfo, Pager pager); diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreDispatchService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreDispatchService.java index e4e66bf..f17e131 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreDispatchService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/IMesWorkOrderOfflineRestoreDispatchService.java @@ -14,6 +14,6 @@ public interface IMesWorkOrderOfflineRestoreDispatchService { void saveWorkOrderOffline(MesWorkOrderOffline workOrderOffline, Boolean result); @Transactional(propagation = Propagation.REQUIRES_NEW, noRollbackFor = {ImppBusiException.class, Exception.class}) - Boolean doRestoreWorkOrderOfflineData(String organizeCode, MesWorkOrderOffline workOrderOffline, List workOrderAssemblyOfflineList, String now); + Boolean doRestoreWorkOrderOfflineData(String organizeCode, MesWorkOrderOffline workOrderOffline, List workOrderAssemblyOfflineList, String now, Boolean flag); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java index ff04762..60e3d4a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java @@ -150,15 +150,14 @@ public class MesProduceSnPrintController { ValidatorBean.checkNotNull(printQueue.getPrintQueueType(), "打印队列类型不能为空"); ValidatorBean.checkNotNull(printQueue.getOrganizeCode(), "工厂代码不能为空"); ValidatorBean.checkNotNull(printQueue.getModifyUser(), "操作人不能为空"); - if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()) { + if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.PRINT_WORK_ORDER_ASSEMBLY.getValue()) { ValidatorBean.checkNotNull(printQueue.getWorkCenterCodeQuery(), "产线代码不能为空"); ValidatorBean.checkNotNull(printQueue.getPartProdGroupCodeQuery(), "零件生产组代码不能为空"); } String moduleKey = new StringJoiner(MesPcnExtConstWords.COLON) .add(printQueue.getOrganizeCode()) - .add(MesExtEnumUtil.PRINT_QUEUE_TYPE.class.getSimpleName()) - .add(printQueue.getPrintQueueType().toString()) + .add(MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfType(printQueue.getPrintQueueType()).name()) .add(printQueue.getWorkCenterCodeQuery()).add(printQueue.getPartProdGroupCodeQuery()).toString(); synchronized (moduleKey.intern()) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPullingOrderInfoController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPullingOrderInfoController.java index a66ebc0..ecc9636 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPullingOrderInfoController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPullingOrderInfoController.java @@ -3,11 +3,13 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPullingOrderInfoService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesPrintQueue; import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo; import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderPartInfo; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -20,9 +22,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.StringJoiner; /** * 拉动单 @@ -73,14 +77,36 @@ public class MesPullingOrderInfoController { @ApiOperation(value = "打印未打印拉动单后修改状态") public ResultBean doMesPullingOrderInfoPrint(@RequestBody MesPullingOrderInfo mesPullingOrderInfo) { try { + + if (StringUtils.isEmpty(mesPullingOrderInfo.getOrganizeCode())) { + throw new ImppBusiException("工厂不能为空"); + } + if (StringUtils.isEmpty(mesPullingOrderInfo.getWorkCenterCode())) { throw new ImppBusiException("产线不能为空"); } - mesPullingOrderInfo.setOrganizeCode(StringUtil.isEmpty(mesPullingOrderInfo.getOrganizeCode()) ? AuthUtil.getOrganizeCode() : mesPullingOrderInfo.getOrganizeCode()); - List pullingOrderInfos = mesPullingOrderInfoService.doMesPullingOrderInfoPrint(mesPullingOrderInfo, AuthUtil.getSessionUser().getUserName()); - return ResultBean.success("拉动单打印成功") - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) - .setResultList(pullingOrderInfos); + + if (StringUtils.isEmpty(mesPullingOrderInfo.getPullCode())) { + throw new ImppBusiException("拉动组不能为空"); + } + + if (StringUtils.isEmpty(mesPullingOrderInfo.getModifyUser())) { + throw new ImppBusiException("操作人不能为空"); + } + + String moduleKey = new StringJoiner(MesPcnExtConstWords.COLON) + .add(mesPullingOrderInfo.getOrganizeCode()) + .add("PRINT_PULLING_ORDER_INFO") + .add(mesPullingOrderInfo.getWorkCenterCode()).add(mesPullingOrderInfo.getPullCode()).toString(); + + synchronized (moduleKey.intern()) { + + List pullingOrderInfos = mesPullingOrderInfoService.doMesPullingOrderInfoPrint(mesPullingOrderInfo); + + return ResultBean.success(CollectionUtils.isEmpty(pullingOrderInfos) ? "查询暂无可打印数据!!!" : "打印队列查询成功!!!").setResultList(pullingOrderInfos); + + } + } catch (ImppBusiException e) { return ResultBean.fail(e).build(); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index c204bb1..b04a64d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -286,10 +286,10 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer private void checkSerialNumber(MesPackageDetail mesPackageDetail) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean); +// DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean); DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), "serialNumber", ddlPackBean); if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) { - MesPcnException.throwMesBusiException("零件条码【%s】已存在该箱,不允许重复扫描,请检查数据!", mesPackageDetail.getSerialNumber()); + MesPcnException.throwMesBusiException("零件条码【%s】已装箱,请检查数据!", mesPackageDetail.getSerialNumber()); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index b06ef49..6e3d9f5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -328,6 +328,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService detail.setId(null); detail.setOrganizeCode(org); detail.setPid(model.getPartInspection().getId()); + setSystemSyncStatus(detail); ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName()); } @@ -402,6 +403,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService detail.setId(null); detail.setOrganizeCode(org); detail.setPid(partInspection.getId()); + setSystemSyncStatus(detail); ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName()); } @@ -429,7 +431,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService } //查询条码所在库位 // 20241010不找当前所在库位,先找生产版本库位,再找2000 - // srcLocateNo = getDestLocateNo(model, org); + // srcLocateNo = getDestLocateNo(model, org); } if (Objects.isNull(srcLocateNo)) { srcLocateNo = configService.getCfgValue(org, "LGORT"); @@ -477,6 +479,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService detail.setId(null); detail.setOrganizeCode(org); detail.setPid(model.getPartInspection().getId()); + setSystemSyncStatus(detail); ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName()); } @@ -506,7 +509,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService //移库 if (model.getOptType() != 2) { - String srcLocateNo = configService.getCfgValue(org, "LGORT"); + String srcLocateNo = configService.getCfgValue(org, "LGORT"); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); DdlPreparedPack.getStringEqualPack(model.getPartNo(), "partNo", ddlPackBean); @@ -610,6 +613,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService List resultDetailList = partInspectionDetailRepository.findByHqlWhere(packBean); resultDetailList.forEach(k -> { k.setIsDeleted(MesCommonConstant.TRUE_INTEGER); + setSystemSyncStatus(k); ConvertBean.serviceModelUpdate(model.getPartInspection(), AuthUtil.getSessionUser().getUserName()); }); @@ -977,9 +981,8 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService private List checkPartInspectionDetail(MesPartInspection partInspection, String org) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); DdlPreparedPack.getNumEqualPack(partInspection.getId(), MesPcnExtConstWords.PID, packBean); - List detailList = partInspectionDetailRepository.findByHqlWhere(packBean); - return detailList; + return partInspectionDetailRepository.findByHqlWhere(packBean); } @Override @@ -1071,7 +1074,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService } produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); ConvertBean.serviceModelUpdate(produceSn, userName); - produceSnExtService.update(produceSn); + produceSnExtService.update(produceSn); produceSnLog.setProductSn(produceSn.getProductSn()); produceSnLog.setCustSn(produceSn.getCustSn()); @@ -1081,4 +1084,9 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService ConvertBean.serviceModelInitialize(produceSnLog, userName); produceSnLogRepository.save(produceSnLog); } + + private void setSystemSyncStatus(MesPartInspectionDetail detail) { + detail.setSystemSyncStatus(CommonEnumUtil.FALSE); + detail.setSystemSyncDatetime(MesPcnExtConstWords.EMPTY); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java index 3b77d8b..e85f344 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java @@ -35,6 +35,7 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.StopWatch; import org.springframework.util.StringUtils; import java.util.*; @@ -395,14 +396,29 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { @Override public List findMesPrintQueueList(MesPrintQueue printQueue) { + StopWatch stopWatch = new StopWatch(); + + stopWatch.start(); + String clazz = MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfClazz(printQueue.getPrintQueueType()); List printQueueList = null; + try { + IPrintQueueStrategyService strategyService = (IPrintQueueStrategyService) SpringContextsUtil.getBean(clazz); + printQueueList = strategyService.execute(printQueue); + } catch (Exception e) { + log.info("打印队列查询 --- {} --- 执行异常 --- {}", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(printQueue.getPrintQueueType()), e.toString()); + + } finally { + + stopWatch.stop(); + + if (!CollectionUtils.isEmpty(printQueueList)) log.info("打印队列查询 --- {} --- 执行耗时: {} ms ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(printQueue.getPrintQueueType()), stopWatch.getTotalTimeMillis()); } return printQueueList; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java index 23607bd..014aa5a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java @@ -169,19 +169,27 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { } @Override - public List doMesPullingOrderInfoPrint(MesPullingOrderInfo bean, String userName) { + public List doMesPullingOrderInfoPrint(MesPullingOrderInfo bean) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); - //多选 - if (!StringUtil.isEmpty(bean.getPullCode())) { - DdlPreparedPack.getInPackList(Arrays.asList(bean.getPullCode().split(",")), "pullCode", packBean); - } - if (!StringUtil.isEmpty(bean.getWorkCenterCode())) { - DdlPreparedPack.getInPackList(Arrays.asList(bean.getWorkCenterCode().split(",")), "workCenterCode", packBean); - } - DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean); - DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue(), "printStatus", packBean); - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime", "custOrderNo"}, packBean); + + List pullCodeList = Arrays.asList(bean.getPullCode().split(MesPcnExtConstWords.COMMA)); + List workCenterCodeList = Arrays.asList(bean.getWorkCenterCode().split(MesPcnExtConstWords.COMMA)); + + if (pullCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(pullCodeList.get(0), MesPcnExtConstWords.PULL_CODE, packBean); + else DdlPreparedPack.getInPackList(pullCodeList, MesPcnExtConstWords.PULL_CODE, packBean); + + if (workCenterCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(workCenterCodeList.get(0), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + else DdlPreparedPack.getInPackList(workCenterCodeList, MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + + DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), MesPcnExtConstWords.PULLING_ORDER_NO, packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue(), MesPcnExtConstWords.PRINT_STATUS, packBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.CUST_ORDER_NO}, packBean); + List pullingOrderInfos = mesPullingOrderInfoRepository.findByHqlTopWhere(packBean, MesPcnExtConstWords.THREE); + + log.info("打印队列查询 --- 拉动单 --- 查询到打印数据: {} ---", CollectionUtils.isEmpty(pullingOrderInfos) ? "[]" : + pullingOrderInfos.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).map(MesPullingOrderInfo::getWorkOrderNo).collect(Collectors.toList()).toString()); + if (!CollectionUtils.isEmpty(pullingOrderInfos)) { //根据车型代码查询车型信息 Map> mesCustomerCarModelMap = getMesCustomerCarModelMap(bean.getOrganizeCode(), pullingOrderInfos.stream().map(MesPullingOrderInfo::getCarModelCode).distinct().collect(Collectors.toList())); @@ -190,7 +198,7 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { for (MesPullingOrderInfo pullingOrderInfo : pullingOrderInfos) { //查询拉动组明细 DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(pullingOrderInfo.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(pullingOrderInfo.getPullingOrderNo(), "pullingOrderNo", partPackBean); + DdlPreparedPack.getStringEqualPack(pullingOrderInfo.getPullingOrderNo(), MesPcnExtConstWords.PULLING_ORDER_NO, partPackBean); List pullingOrderPartInfos = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean); if (!CollectionUtils.isEmpty(pullingOrderPartInfos)) { pullingOrderInfo.setPartCount(pullingOrderPartInfos.size()); @@ -210,7 +218,7 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { pullingOrderInfo.setPrintTime(TimeTool.getNowTime(true)); pullingOrderInfo.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue()); pullingOrderInfo.setIsPrint(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - ConvertBean.serviceModelUpdate(pullingOrderInfo, userName); + ConvertBean.serviceModelUpdate(pullingOrderInfo, bean.getModifyUser()); //10-12 打印补打拉动单新增log表 MesPrintedSnLog snLog = new MesPrintedSnLog(); @@ -219,7 +227,7 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { snLog.setWorkOrderNo(pullingOrderInfo.getWorkOrderNo()); snLog.setPartNo(pullingOrderInfo.getPartNo()); snLog.setPartName(pullingOrderInfo.getPartName()); - ConvertBean.serviceModelInitialize(snLog, userName); + ConvertBean.serviceModelInitialize(snLog, bean.getModifyUser()); snLog.setOrganizeCode(bean.getOrganizeCode()); snLogList.add(snLog); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 7df1d5e..e717b0e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -208,12 +208,11 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //校验点检单 checkSpotCheckOrder(model.getSpotCheckOrder()); - //点检单类型为产品首检时 需要判断单据的条码是否都扫描完成 - if (model.getSpotCheckOrder().getSpotCheckOrderType() == MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.FIRST_PRODUCT_INSPECTION.getValue()) { - - List partNoList = model.getOrderPartList().stream().filter(k -> StringUtils.isEmpty(k.getSn())).map(k -> k.getPartNo()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(partNoList)) { - throw new ImppBusiException(String.format("剩余物料号【%s】对应的条码未扫描,请扫描完成后再完成质检", partNoList)); + //点检单类型为产品首检,产品末检时 需要判断单据的条码是否都扫描完成 + if (Stream.of(MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.FIRST_INSPECTION.getValue(),MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.END_INSPECTION.getValue()).collect(Collectors.toList()).contains(model.getSpotCheckOrder().getSpotCheckOrderType())) { + Optional orderPartOptional = model.getOrderPartList().stream().filter(k -> !StringUtils.isEmpty(k.getSn())).findFirst(); + if (!orderPartOptional.isPresent()) { + throw new ImppBusiException("未扫描条码,请扫描条码后再查询设备数据,请检查数据"); } } //根据设备代码获取EQUIP_ID @@ -313,12 +312,11 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //校验点检单 MesSpotCheckOrder spotCheckOrder = checkSpotCheckOrder(model.getSpotCheckOrder()); - //点检单类型为产品首检时 需要判断单据的条码是否都扫描完成 - if (model.getSpotCheckOrder().getSpotCheckOrderType() == MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.FIRST_PRODUCT_INSPECTION.getValue()) { - - List partNoList = model.getOrderPartList().stream().filter(k -> StringUtils.isEmpty(k.getSn())).map(k -> k.getPartNo()).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(partNoList)) { - throw new ImppBusiException(String.format("剩余物料号【%s】对应的条码未扫描,请扫描完成后再完成质检", partNoList)); + //点检单类型为产品首检,产品末检时 需要判断单据的条码是否都扫描完成 + if (Stream.of(MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.FIRST_INSPECTION.getValue(),MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.END_INSPECTION.getValue()).collect(Collectors.toList()).contains(model.getSpotCheckOrder().getSpotCheckOrderType())) { + Optional orderPartOptional = model.getOrderPartList().stream().filter(k -> !StringUtils.isEmpty(k.getSn())).findFirst(); + if (!orderPartOptional.isPresent()) { + throw new ImppBusiException("未扫描条码,请扫描条码后再查询设备数据,请检查数据"); } } model.getOrderPartList().forEach(k -> { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index ae320d4..84250bb 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -441,10 +441,6 @@ public class MesWorkOrderService implements IMesWorkOrderService { try { LOGGER.info("此次报工的条码【{}】,工单【{}】", productionRecord.getProductSn(), productionRecord.getWorkOrderNo()); List oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode); - if (CollectionUtils.isEmpty(oldMesWorkOrders)) { - updateProductionRecord(organizeCode, userName, productionRecord.getId()); - return; - } // 工单加工记录报表-试制工单,汇报状态修改成"无需汇报" if (Objects.equals(productionRecord.getReportStatus(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue())) { LOGGER.warn("报工条码:{}工单为试制单,更新成无需报工", productionRecord.getProductSn()); @@ -454,6 +450,10 @@ public class MesWorkOrderService implements IMesWorkOrderService { new Object[]{userName, TimeTool.getNowTime(true), productionRecord.getReportStatus()}, ddlPackBean); return; } + if (CollectionUtils.isEmpty(oldMesWorkOrders)) { + updateProductionRecord(organizeCode, userName, productionRecord.getId()); + return; + } report(productionRecord, organizeCode, userName, oldMesWorkOrders); } catch (Exception e) { String msg = e.getMessage(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java index 8ec323a..03eb78e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java @@ -264,7 +264,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt if (workCenterCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(partProdGroupCodeCodeList.get(0), MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean); else DdlPreparedPack.getInPackList(partProdGroupCodeCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean); - DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue(), MesPcnExtConstWords.PRINT_QUEUE_TYPE, packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_QUEUE_TYPE.PRINT_WORK_ORDER_ASSEMBLY.getValue(), MesPcnExtConstWords.PRINT_QUEUE_TYPE, packBean); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue(), MesPcnExtConstWords.PRINT_STATUS, packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); return printQueueRepository.findByHqlTopWhere(packBean, MesPcnExtConstWords.FOUR); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java index c4dcce1..802af73 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java @@ -164,6 +164,10 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr if (mesShippingSnUniqueService.checkMesShippingSnUnique(model.getOrganizeCode(),model.getSn())) { throw new ImppBusiException(String.format("【%s】条码唯一性校验数据已存在,请检查数据!", model.getSn())); } + //发运组代码不存在 + if (Objects.isNull(model.getMesPartShippingGroup())) { + MesPcnException.throwMesBusiException("发运组信息不存在,请检查数据!"); + } List detailList = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getCustPartNo()) && StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).collect(Collectors.toList()); MesShippingOrderManagementDetail mesShippingOrderManagementDetail = null; for (MesShippingOrderManagementDetail managementDetail : detailList) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreDispatchService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreDispatchService.java index ec72b45..958ac49 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreDispatchService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreDispatchService.java @@ -4,7 +4,6 @@ import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreDispatchSe import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProductionRecordOfflineModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.*; @@ -72,7 +71,7 @@ public class MesWorkOrderOfflineRestoreDispatchService implements IMesWorkOrderO } @Override - public Boolean doRestoreWorkOrderOfflineData(String organizeCode, MesWorkOrderOffline workOrderOffline, List workOrderAssemblyOfflineList, String now) { + public Boolean doRestoreWorkOrderOfflineData(String organizeCode, MesWorkOrderOffline workOrderOffline, List workOrderAssemblyOfflineList, String now, Boolean flag) { //写入工单; 写入条码 if (StringUtils.isEmpty(workOrderOffline.getWorkOrderId())) { @@ -84,15 +83,18 @@ public class MesWorkOrderOfflineRestoreDispatchService implements IMesWorkOrderO insertOrderPart(organizeCode, workOrderOffline, now); } + //写入加工记录, 工单装配件, 装配件装配记录 insertAssemblyRecord(organizeCode, workOrderOffline, workOrderAssemblyOfflineList, now); + //补偿修改加工记录的汇报状态: 此前已经标记了汇报工位,但缺失工单零件信息 未进行标记汇报处理状态的数据 if (!StringUtils.isEmpty(workOrderOffline.getReportCellCode()) && !StringUtils.isEmpty(workOrderOffline.getOrderPartStatus()) && workOrderOffline.getOrderPartStatus().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && (StringUtils.isEmpty(workOrderOffline.getReportCellStatus()) || workOrderOffline.getReportCellStatus().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)) { saveProductionRecordReportStatus(organizeCode, workOrderOffline); } - return (StringUtils.isEmpty(workOrderOffline.getReportCellStatus()) || workOrderOffline.getReportCellStatus().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) ? false : true; + //补偿处理的默认返回true, 否则根据已经标记了汇报处理状态的返回true + return flag ? true : ((StringUtils.isEmpty(workOrderOffline.getReportCellStatus()) || workOrderOffline.getReportCellStatus().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) ? false : true); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java index 857753c..f73efd2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java @@ -18,8 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -44,43 +43,51 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe //参数 处理数据量 Integer qty = paramMap.containsKey(MesPcnExtConstWords.QTY) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.QTY)) : MesPcnExtConstWords.ONE_HUNDRED; - //查询工单离线数据 + //查询工单离线数据 [未处理] List workOrderOfflineList = getWorkOrderOfflineList(organizeCode, qty); + //搜集工单号 [未处理] List workOrderNoList = CollectionUtils.isEmpty(workOrderOfflineList) ? null : workOrderOfflineList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).map(MesWorkOrderOffline::getWorkOrderNo).collect(Collectors.toList()); log.info("补录离线生产工单数据JOB --- 查询到未补录完成的生产工单包含: {} ---", CollectionUtils.isEmpty(workOrderNoList) ? "[]" : workOrderNoList.toString()); - //查询工单装配件离线数据 + //查询工单装配件离线数据 [未处理] List workOrderAssemblyOfflineList = getWorkOrderAssemblyOfflineList(organizeCode, qty); if (CollectionUtils.isEmpty(workOrderNoList) && CollectionUtils.isEmpty(workOrderAssemblyOfflineList)) return; String now = TimeTool.getNowTime(true); - if (CollectionUtils.isEmpty(workOrderNoList)) { + //[未处理] + if (!CollectionUtils.isEmpty(workOrderNoList)) { //查询排序工单装配件离线数据[未同步的数据] 根据工单号分组 Map> workOrderAssemblyOfflineMap = getWorkOrderAssemblyOfflineMap(organizeCode, workOrderNoList); - //补录生产数据 - workOrderOfflineList.forEach(o -> doRestoreWorkOrderOfflineData(organizeCode, o, getWorkOrderAssemblyOfflineList(workOrderAssemblyOfflineMap, o.getWorkOrderNo()), now)); + //补录生产数据 [未处理] + workOrderOfflineList.forEach(o -> doRestoreWorkOrderOfflineData(organizeCode, o, getWorkOrderAssemblyOfflineList(workOrderAssemblyOfflineMap, o.getWorkOrderNo()), now, false)); } + //剔除上面已经处理过的工单的 装配件数据 [补偿处理] workOrderAssemblyOfflineList = CollectionUtils.isEmpty(workOrderAssemblyOfflineList) ? null : workOrderAssemblyOfflineList.stream().filter(o -> (null != o && !workOrderNoList.contains(o.getWorkOrderNo()))).collect(Collectors.toList()); if (CollectionUtils.isEmpty(workOrderAssemblyOfflineList)) return; + //根据工单号分组 [补偿处理] + Map> workOrderAssemblyOfflineMap = backWorkOrderAssemblyMap(workOrderAssemblyOfflineList); + //查询工单离线数据 [已处理] + workOrderOfflineList = getWorkOrderOfflineMap(organizeCode, new ArrayList<>(workOrderAssemblyOfflineMap.keySet())); + if (CollectionUtils.isEmpty(workOrderOfflineList)) return; - - + //补录生产数据 [补偿处理] + workOrderOfflineList.forEach(o -> doRestoreWorkOrderOfflineData(organizeCode, o, getWorkOrderAssemblyOfflineList(workOrderAssemblyOfflineMap, o.getWorkOrderNo()), now, true)); } - //查询工单离线数据 + //查询工单离线数据 [未处理] private List getWorkOrderOfflineList(String organizeCode, Integer qty) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); @@ -89,7 +96,18 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe return workOrderOfflineList; } - //查询工单装配件离线数据 + //查询工单离线数据 [已处理] + private List getWorkOrderOfflineMap(String organizeCode, List workOrderNoList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); + DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + List workOrderOfflineList = workOrderOfflineRepository.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(workOrderOfflineList)) return null; + workOrderOfflineList = workOrderOfflineList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesWorkOrderOffline::getModifyDatetime).reversed()).collect(Collectors.toList()); + return workOrderOfflineList.stream().filter(o -> null != o).distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesWorkOrderOffline::getWorkOrderNo))), ArrayList::new)); + } + + //查询工单装配件离线数据 [未处理] private List getWorkOrderAssemblyOfflineList(String organizeCode, Integer qty) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); @@ -105,20 +123,27 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); List workOrderAssemblyOfflineList = workOrderAssemblyOfflineRepository.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(workOrderAssemblyOfflineList)) log.info("--- 异常 --- 补录离线生产工单数据JOB --- 当前没有需要补录的工单装配件离线数据 ---"); - return workOrderAssemblyOfflineList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssemblyOffline::getWorkOrderNo)); + return backWorkOrderAssemblyMap(workOrderAssemblyOfflineList); } + //搜集数据 private List getWorkOrderAssemblyOfflineList(Map> workOrderAssemblyOfflineMap, String workOrderNo) { return CollectionUtils.isEmpty(workOrderAssemblyOfflineMap) ? null : workOrderAssemblyOfflineMap.get(workOrderNo); } + //根据工单号分组 + private Map> backWorkOrderAssemblyMap(List workOrderAssemblyOfflineList) { + return workOrderAssemblyOfflineList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssemblyOffline::getWorkOrderNo)); + } + //补录生产数据 - private void doRestoreWorkOrderOfflineData(String organizeCode, MesWorkOrderOffline workOrderOffline, List workOrderAssemblyOfflineList, String now) { + private void doRestoreWorkOrderOfflineData(String organizeCode, MesWorkOrderOffline workOrderOffline, List workOrderAssemblyOfflineList, String now, Boolean flag) { log.info("补录离线生产工单数据JOB --- 工单:{} --- START ---", workOrderOffline.getWorkOrderNo()); Boolean result = false; try { - result = workOrderOfflineRestoreDispatchService.doRestoreWorkOrderOfflineData(organizeCode, workOrderOffline, workOrderAssemblyOfflineList, now); + result = workOrderOfflineRestoreDispatchService.doRestoreWorkOrderOfflineData(organizeCode, workOrderOffline, workOrderAssemblyOfflineList, now, flag); } catch (Exception e) { + if (flag) result = true; log.info("--- 异常 --- 补录离线生产工单数据JOB --- 工单:{} --- ERROR --- {}", workOrderOffline.getWorkOrderNo(), e.toString()); } finally { workOrderOfflineRestoreDispatchService.saveWorkOrderOffline(workOrderOffline, result); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 32136e9..11b704e 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -271,6 +271,10 @@ public class MesPcnExtConstWords { public static final String EFFECT_NUM = "effectNum"; //组件类型 public static final String MODULE_TYPE = "moduleType"; + //拉动组代码 + public static final String PULL_CODE = "pullCode"; + //拉动单号 + public static final String PULLING_ORDER_NO = "pullingOrderNo"; //BaseBean字段不包含工厂, 用于对象复制剔除属性BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties)