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 7363961..8f39040 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 @@ -139,7 +139,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS Optional loadingListDetailOptional = model.getDetailList().stream().filter(t -> !Objects.equals(t.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).findFirst(); if(loadingListDetailOptional.isPresent()){ MesLoadingListDetail loadingListDetail = loadingListDetailOptional.get(); - updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,MesPcnExtConstWords.SHIP_PASS,MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue()); + updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,MesPcnExtConstWords.SHIP_PASS,MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue(),userInfo); }else{ throw new ImppBusiException(String.format("【%s】明细已全部扫描完成,请检查数据!", loadingList.getOrderCode())); } @@ -153,7 +153,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS if (loadingListDetail.getShippingCode().equals(model.getShippingCode())) { if (Objects.equals(loadingListDetail.getTempStatus(), MesCommonConstant.TRUE_INTEGER)) { - throw new ImppBusiException(String.format("【%s】此发运单已经扫描过,请检查数据!", model.getShippingCode())); + throw new ImppBusiException(String.format("【%s】此发运单已经%s,请检查数据!", model.getShippingCode(),loadingListDetail.getTempStatusVal())); } //校验发运单明细顺序 if(!StringUtils.isEmpty(shippingGroup.getIsEnableLoadingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableLoadingFailSafe()){ @@ -167,14 +167,14 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS if (!StringUtils.isEmpty(loadingList.getScanSeqWay()) && loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) { //获取明细中最小的 - long minSeq = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getScanSn())).mapToLong(MesLoadingListDetail::getSeq).min().getAsLong(); + long minSeq = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getScanSn()) && !Objects.equals(k.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).mapToLong(MesLoadingListDetail::getSeq).min().getAsLong(); //若扫描的不是最小顺序 则报错 if (minSeq != loadingListDetail.getSeq()) { throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误,请检查数据!", model.getShippingCode())); } } //更新页面状态 - updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,"扫描完成",MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); + updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,"扫描完成",MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),userInfo); //根据扫描的装车单找到是否先装车配置 //若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。 @@ -213,8 +213,11 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS //装车单明细 DdlPackBean vehiclesOrderDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(loadingList.getId(), "pid", vehiclesOrderDetailPackBean); - List vehiclesOrderDetailList = vehiclesOrderDetailRepository.findByHqlWhere(vehiclesOrderDetailPackBean); + List vehiclesOrderDetailList = model.getDetailList(); vehiclesOrderDetailList.forEach(k -> { + if(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue() == k.getStatus()){ + k.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.PUBLISHED.getValue()); + } // k.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); todo 不改变为发运状态 ConvertBean.serviceModelUpdate(k, userInfo); }); @@ -235,9 +238,20 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS } } - private void updateLoadingListDetail(MesShippingLoadingCheckModel model, String userInfo, MesLoadingList loadingList, MesLoadingListDetail loadingListDetail, String tempStatusVal, Integer status) { + private void updateLoadingListDetail(MesShippingLoadingCheckModel model, String userInfo, MesLoadingList loadingList, MesLoadingListDetail loadingListDetail, String tempStatusVal, Integer status,String userName) { if(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue() == status){ loadingListDetail.setScanSn(model.getShippingCode()); + }else{ + //关闭发运单明细 + List idList = new ArrayList<>(); + idList.add(loadingList.getId()); + List mesShippingOrderManagementList = getMesShippingOrderManagementList(loadingList.getOrganizeCode(),idList); + if(!CollectionUtils.isEmpty(mesShippingOrderManagementList)){ + closeShippingOrderDetails(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.SHIP_PASS, mesShippingOrderManagementList.stream().filter(t->loadingListDetail.getShippingCode().equals(t.getShippingCode())).map(MesShippingOrderManagement::getId).collect(Collectors.toList())); + } + //关闭发运单 + closeShippingOrder(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.SHIP_PASS, mesShippingOrderManagementList.stream().filter(t->loadingListDetail.getShippingCode().equals(t.getShippingCode())).map(MesShippingOrderManagement::getId).collect(Collectors.toList())); + loadingListDetail.setRemark(tempStatusVal); } loadingListDetail.setTempStatus(MesCommonConstant.TRUE_INTEGER); loadingListDetail.setTempStatusVal(tempStatusVal); @@ -345,21 +359,22 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS //关闭装发运单明细 List mesShippingOrderManagementList = getMesShippingOrderManagementList(loadingList.getOrganizeCode(), idList); if(!CollectionUtils.isEmpty(mesShippingOrderManagementList)){ - closeShippingOrderDetails(loadingList.getOrganizeCode(), userName, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList())); + closeShippingOrderDetails(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.STRONGER_PASS, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList())); } //关闭发运单 - closeShippingOrder(loadingList.getOrganizeCode(), userName, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList())); + closeShippingOrder(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.STRONGER_PASS, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList())); //关闭装车单明细 closeLoadingDetails(loadingList.getOrganizeCode(), userName, idList); //关闭装车单 closeLoadingOrder(loadingList.getOrganizeCode(), userName, idList); } - private void closeShippingOrderDetails(String organizeCode, String userName, List idList) { + private void closeShippingOrderDetails(String organizeCode, String userName,String remark, List idList) { + if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "pid",packBean); shippingOrderManagementDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"}, - new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),MesPcnExtConstWords.STRONGER_PASS}, packBean); + new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),remark}, packBean); } private List getMesShippingOrderManagementList(String organizeCode, List idList) { @@ -368,14 +383,16 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS return shippingOrderManagementRepository.findByHqlWhere(packBean); } - private void closeShippingOrder(String organizeCode, String userName, List idList) { + private void closeShippingOrder(String organizeCode, String userName,String remark, List idList) { + if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "id",packBean); shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"}, - new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_STATUS.CLOSE.getValue(),MesPcnExtConstWords.STRONGER_PASS}, packBean); + new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_STATUS.CLOSE.getValue(),remark}, packBean); } private void closeLoadingDetails(String organizeCode, String userName, List idList) { + if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "pid",packBean); vehiclesOrderDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"}, @@ -383,6 +400,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS } private void closeLoadingOrder(String organizeCode, String userName, List idList) { + if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "id",packBean); vehiclesOrderRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"}, 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 ba5e294..7d0327e 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 @@ -106,12 +106,12 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue()); orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean); - DdlPreparedPack.getStringEqualPackOr(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean); + DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean); DdlPreparedPack.getInPackList(statusForCheckList, "status", orderManagementPackBean); int queryCount = shippingOrderManagementRepository.findByHqlWhereCount(orderManagementPackBean); if (queryCount != 0) { if(!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass()){ - updateLoadingListClose(statusForCheckList,shippingOrderManagement,shippingOrderManagement.getModifyUser()); + updateLoadingListClose(statusForCheckList,orderManagement,shippingOrderManagement.getModifyUser()); }else{ throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单,请检查数据!", orderManagement.getShippingCode(), orderManagement.getSeq())); @@ -146,29 +146,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getDescription())); } } - - //判断是否需要排序校验 默认排序则需要校验 - if (loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) { - - //获取此装车单中 状态为创建 已发布 发运中 seq最小的 - List statusList = new ArrayList<>(); - statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue()); - statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()); - statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue()); - DdlPackBean sortOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); - DdlPreparedPack.getNumEqualPack(loadingList.getId(), "loadingListId", sortOrderPackBean); - DdlPreparedPack.getInPackList(statusList, "status", sortOrderPackBean); - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, sortOrderPackBean); - MesShippingOrderManagement sortTempOrder = shippingOrderManagementRepository.getByProperty(sortOrderPackBean); - - //若没有最小的,则此装车单 没有发运单扫描完成 - if (sortTempOrder.getId().longValue() != orderManagement.getId().longValue()) { - throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误,请扫描【%s】发运单!", - shippingOrderManagement.getShippingCode(), sortTempOrder.getOrderCode())); - } - - - } } MesSortShippingCheckModel model = new MesSortShippingCheckModel(); @@ -282,7 +259,8 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); - + detail.setStatus(status); + detail.setRemark(remark); //根据是否启动记忆判断 若启用记忆,则根据保存数据库 if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { @@ -297,8 +275,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService update(orderManagement); detail.setActualQty(1); - detail.setStatus(status); - detail.setRemark(remark); ConvertBean.serviceModelUpdate(detail, userInfo); updateDetail(detail); //内部条码更新条码状态 @@ -489,20 +465,21 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } else { List mesShippingOrderManagementDetails = custInfoSeqMap.get(detail.getCustInfoSeq()); MesShippingOrderManagementDetail managementDetail = mesShippingOrderManagementDetails.get(0); - + detail.setRemark(managementDetail.getRemark()); + detail.setStatus(managementDetail.getStatus()); detail.setBarcode(StringUtil.isEmpty(managementDetail.getBarcode()) ? model.getSn() : detail.getBarcode()); DdlPreparedPack.getStringEqualPack(StringUtil.isEmpty(managementDetail.getBarcode()) ? model.getSn() : detail.getBarcode(), "productSn", packBean); } detail.setActualQty(1); - detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); ConvertBean.serviceModelUpdate(detail, userInfo); - - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); - MesProduceSn produceSn = produceSnRepository.getByProperty(packBean); - if(!Objects.isNull(produceSn)){ - produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); - ConvertBean.serviceModelUpdate(produceSn, userInfo); - produceSnList.add(produceSn); + if(!StringUtils.isEmpty(detail.getBarcode())){ + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); + MesProduceSn produceSn = produceSnRepository.getByProperty(packBean); + if(!Objects.isNull(produceSn)){ + produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); + ConvertBean.serviceModelUpdate(produceSn, userInfo); + produceSnList.add(produceSn); + } } } @@ -585,14 +562,16 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } private List getMesLoadingListList(List statusForCheckList, MesShippingOrderManagement orderManagement) { + if(StringUtils.isEmpty(orderManagement.getShippingGroupCode()) || StringUtils.isEmpty(orderManagement.getSeq())) return null; DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", packBean); - DdlPreparedPack.getStringEqualPackOr(orderManagement.getShippingGroupCode(),"shippingGroupCode",packBean); + DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",packBean); DdlPreparedPack.getInPackList(statusForCheckList, "status", packBean); return shippingOrderManagementRepository.findByHqlWhere(packBean); } private void closeShippingOrderDetails(String organizeCode, String userName, List idList) { + if(CollectionUtils.isEmpty(idList) || StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "pid",packBean); shippingOrderManagementDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"}, @@ -600,6 +579,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } private void closeShippingOrder(String organizeCode, String userName, List idList) { + if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "id",packBean); shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"}, @@ -607,6 +587,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } private void updateLoadingDetails(String organizeCode, String userName, List idList) { + if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(idList, "shippingId",packBean); vehiclesOrderDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},