diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java index 07970c4..3e3aee4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java @@ -13,6 +13,7 @@ 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.MesJisShipping; +import cn.estsh.i3plus.pojo.mes.bean.MesLoadingGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail; @@ -28,6 +29,8 @@ import org.springframework.util.StringUtils; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.LongStream; /** * @Description : @@ -54,6 +57,8 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS @Autowired private MesPartShippingGroupService mesPartShippingGroupService; + @Autowired + private IMesLoadingGroupRepository mesLoadingGroupRDao; @Autowired private IMesSortShippingCheckService mesSortShippingCheckService; @@ -142,6 +147,9 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS if (StringUtils.isEmpty(loadingList)) { throw new ImppBusiException(String.format("【%s】此装车单不存在,请检查数据!", model.getOrderCode())); } + DdlPackBean loadingGroupPackBean = DdlPackBean.getDdlPackBean(loadingList.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(loadingList.getLoadingGroupNo(), "loadingGroupNo", loadingGroupPackBean); + MesLoadingGroup loadingGroup = mesLoadingGroupRDao.getByProperty(loadingGroupPackBean); //MesLoadingList loadingList = checkLoadingList(model.getOrderCode(), organizeCode,model.getIsPass(),userInfo); //根据扫描的发运单以及前端传的发运单明细,进行匹配,若没有找到扫描的发运单,则提示扫描的发运单号不在此装车单中,请检查数据!。 @@ -202,6 +210,23 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误,请检查数据!", model.getShippingCode())); } } + if (loadingGroup != null && loadingGroup.getLoadingSeq() != null) { + IntStream scanSeqStream = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getScanSn()) && !Objects.equals(k.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).mapToInt(MesLoadingListDetail::getScanSeq); + if (loadingGroup.getLoadingSeq() == MesExtEnumUtil.LOADING_SEQ_TYPE.POSITIVE_SEQ.getValue()) { + Integer minSeq = scanSeqStream.min().orElse(0); + //若扫描的不是最小顺序 则报错 + if (!Objects.equals(minSeq, loadingListDetail.getScanSeq())) { + throw new ImppBusiException(String.format("【%s】此发运单应按装车扫描顺序正序扫描,请检查数据!", model.getShippingCode())); + } + } else if (loadingGroup.getLoadingSeq() == MesExtEnumUtil.LOADING_SEQ_TYPE.REVERSE_SEQ.getValue()) { + Integer maxSeq = scanSeqStream.max().orElse(0); + //若扫描的不是最小顺序 则报错 + if (!Objects.equals(maxSeq, loadingListDetail.getScanSeq())) { + throw new ImppBusiException(String.format("【%s】此发运单应按装车扫描顺序倒序扫描,请检查数据!", model.getShippingCode())); + } + } + + } //根据扫描的装车单找到是否先装车配置 //若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index a744efe..3cc5710 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -175,8 +175,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService public MesSortShippingCheckModel saveRackNo(MesSortShippingCheckModel model, String organizeCode, String userInfo) { checkVolvoRack(model, organizeCode); MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model); - orderManagement.setRackNo(model.getVolvoRackNo()); - shippingOrderManagementRepository.update(orderManagement); + //根据是否启动记忆判断 若启用记忆,则根据保存数据库 + if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { + orderManagement.setRackNo(model.getVolvoRackNo()); + shippingOrderManagementRepository.update(orderManagement); + } return model; } @@ -311,7 +314,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService String tmpMidStr = tmpAfterBarCode.replace("[)>061B", ""); String[] splitStrArray = tmpMidStr.split("1Y"); if (splitStrArray.length > 0) { - if (StringUtils.isEmpty(orderManagement.getRackNo()) || !orderManagement.getRackNo().contains(splitStrArray[0])) { + if (StringUtils.isEmpty(model.getVolvoRackNo()) || !model.getVolvoRackNo().contains(splitStrArray[0])) { throw new ImppBusiException(String.format("料箱类型与顺序不一致,请检查数据")); } } @@ -332,7 +335,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService // detail.setBarcode(detail.getBarcode() + "," + model.getLocationCode()); detail.setPartPosition(model.getLocationCode()); // detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue()); - shippingOrderManagementDetailRepository.update(detail); + //根据是否启动记忆判断 若启用记忆,则根据保存数据库 + if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { + shippingOrderManagementDetailRepository.update(detail); + } break; } } @@ -598,7 +604,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService throw new ImppBusiException(String.format("【%s】此产品条码不存在,请检查数据!", model.getSn())); } //校验状态 - checkStatus(model, produceSn); +// checkStatus(model, produceSn); return produceSn; } @@ -674,6 +680,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); orderManagement.setEndScanTime(TimeTool.getNowTime(true)); + orderManagement.setRackNo(model.getVolvoRackNo()); //发运单明细状态修改为校验完成 DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl.java similarity index 84% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl.java index c3a839d..6dc9118 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl.java @@ -17,7 +17,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; -import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackIdDetail; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesCustSortInfo; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; @@ -46,7 +45,7 @@ import java.util.stream.Stream; **/ @Service @Slf4j -public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements IMesShippingScanStrategyService { +public class MesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements IMesShippingScanStrategyService { @Autowired private MesShippingOrderManagementRepository shippingOrderManagementRepository; @Autowired @@ -86,8 +85,8 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements boolean scanFlg = false; for (MesShippingOrderManagementDetail detail : model.getDetailList()) { if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) { - if (Objects.equals(detail.getVin(), workOrder.getVinCode())) { - throw new ImppBusiException(String.format("产品条码明细【%s】与发运单明细不匹配,请重新扫描!", model.getSn())); + if (!Objects.equals(detail.getVin(), workOrder.getVinCode())) { + throw new ImppBusiException(String.format("产品条码【%s】对应工单Vince号与发运单明细的Vin号不匹配,请重新扫描!", model.getSn())); } checkDetailScanSeq(orderManagement, detail, workOrder); //校验发运明细 @@ -177,7 +176,7 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements throw new ImppBusiException(String.format("【%s】此条码已经扫描过,请检查数据!", model.getSn())); } DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(model.getSn(), "productSn", packBean); + DdlPreparedPack.getStringEqualPack(model.getSn(), "custSn", packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); MesProduceSn produceSn = produceSnRepository.getByProperty(packBean); if (!StringUtils.isEmpty(produceSn)) { @@ -242,54 +241,41 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements } private void updateOrderManagementDetails(MesProduceSn produceSn, MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesWorkOrder workOrder, String userInfo) { -// if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { - detail.setBarcode(produceSn.getProductSn()); - detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); - detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); - detail.setRemark("扫描完成"); - updateDetail(detail); - orderManagement.setCheckSeqCode("1"); - update(orderManagement); + detail.setBarcode(produceSn.getCustSn()); + detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); + detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); + detail.setRemark("扫描完成"); + orderManagement.setCheckSeqCode("1"); + //根据是否启动记忆判断 若启用记忆,则根据保存数据库 + if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { -// MesCustSortInfo custSoftInfo = custSoftInfoRDao.getById(Long.parseLong(workOrder.getWorkOrderSource())); -// if (custSoftInfo != null) { -// MesCimVolvoJisRackIdDetail rackIdDetail = rackIdDetailRDao.getById(custSoftInfo.getSourceId()); -// if (rackIdDetail != null) { -// detail.setPartPosition(rackIdDetail.getPosition()); -// } -// } - - //根据是否启动记忆判断 若启用记忆,则根据保存数据库 - if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { - - //若发运单状态为创建或发布 则写入开始扫描时间 - if (!StringUtils.isEmpty(orderManagement.getStatus()) && (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() || - orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue())) { - orderManagement.setStartScanTime(TimeTool.getNowTime(true)); - } + //若发运单状态为创建或发布 则写入开始扫描时间 + if (!StringUtils.isEmpty(orderManagement.getStatus()) && (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() || + orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue())) { + orderManagement.setStartScanTime(TimeTool.getNowTime(true)); + } - orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue()); - orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); - ConvertBean.serviceModelUpdate(orderManagement, userInfo); - update(orderManagement); + orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue()); + orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(orderManagement, userInfo); + update(orderManagement); - detail.setActualQty(1); - detail.setSystemSyncStatus(CommonEnumUtil.FALSE); - detail.setVisualOrderNo(workOrder.getWorkOrderNo()); - ConvertBean.serviceModelUpdate(detail, userInfo); - updateDetail(detail); - //内部条码更新条码状态 - if (!Objects.isNull(produceSn.getId())) { - produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); - produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); - ConvertBean.serviceModelUpdate(produceSn, userInfo); - produceSnExtService.update(produceSn); - }else{ - //记录唯一性校验表 - mesShippingSnUniqueService.insertMesShippingSnUnique(orderManagement.getOrganizeCode(),detail.getBarcode(),orderManagement.getShippingCode(),userInfo); - } + detail.setActualQty(1); + detail.setSystemSyncStatus(CommonEnumUtil.FALSE); + detail.setVisualOrderNo(workOrder.getWorkOrderNo()); + ConvertBean.serviceModelUpdate(detail, userInfo); + updateDetail(detail); + //内部条码更新条码状态 + if (!Objects.isNull(produceSn.getId())) { + produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); + produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(produceSn, userInfo); + produceSnExtService.update(produceSn); + }else{ + //记录唯一性校验表 + mesShippingSnUniqueService.insertMesShippingSnUnique(orderManagement.getOrganizeCode(),detail.getBarcode(),orderManagement.getShippingCode(),userInfo); } -// } + } } @MonitorLog diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/mesShippingScanOrderStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanOrderStrategyServiceImpl.java similarity index 99% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/mesShippingScanOrderStrategyServiceImpl.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanOrderStrategyServiceImpl.java index d1d12de..56145e0 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/mesShippingScanOrderStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanOrderStrategyServiceImpl.java @@ -44,7 +44,7 @@ import java.util.stream.Stream; **/ @Service @Slf4j -public class mesShippingScanOrderStrategyServiceImpl implements IMesShippingScanStrategyService { +public class MesShippingScanOrderStrategyServiceImpl implements IMesShippingScanStrategyService { @Autowired private MesShippingOrderManagementRepository shippingOrderManagementRepository; @Autowired