From 2623fb0b660ec30133e81551ff64add71272a5ce Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 14 Aug 2024 08:17:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=8F=91=E8=BF=90=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesJisShippingService.java | 2 +- .../busi/MesShippingLoadingCheckService.java | 30 ++++--- .../busi/MesSortShippingCheckService.java | 92 ++++++++++++++++------ 3 files changed, 88 insertions(+), 36 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesJisShippingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesJisShippingService.java index 9fa75f7..f14cd5d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesJisShippingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesJisShippingService.java @@ -52,7 +52,7 @@ public class MesJisShippingService implements IMesJisShippingService { jisShipping.setDock(orderManagement.getSendDockCode()); jisShipping.setCusCode(orderManagement.getCustCode()); jisShipping.setCusDock(orderManagement.getCustDockCode()); - jisShipping.setCustOrderNo(k.getCustOrderNo()); + jisShipping.setCustOrderNo(orderManagement.getOrderCode()); jisShipping.setSerialNumber(k.getBarcode()); jisShipping.setQuantityPerCar(1); jisShipping.setOffTime(TimeTool.getNowTime(true)); 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 8c7f915..b33a89a 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 @@ -331,24 +331,34 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS loadingListStatusList.add(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue()); loadingListStatusList.add(MesExtEnumUtil.MES_LOADING_STATUS.CREATE_ASN.getValue()); loadingListStatusList.add(MesExtEnumUtil.MES_LOADING_STATUS.LOADING.getValue()); + List statusList = new ArrayList<>(); + statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.LOADING.getValue()); + statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()); + statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue()); + //最后一个扫描完成的装车单信息 + orderPackBean = DdlPackBean.getDdlPackBean(loadingList.getOrganizeCode()); + DdlPreparedPack.getStringSmallerNotEqualPack(loadingList.getSeq(), "seq", orderPackBean); + DdlPreparedPack.getStringEqualPack(loadingList.getPartShippingGroupCode(),"partShippingGroupCode",orderPackBean); + DdlPreparedPack.getInPackList(statusList, "status", orderPackBean); + DdlPreparedPack.getOrderBy("seq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(),orderPackBean); + MesLoadingList mesLoadingList = vehiclesOrderRepository.getByProperty(orderPackBean); orderPackBean = DdlPackBean.getDdlPackBean(org); DdlPreparedPack.getStringSmallerNotEqualPack(loadingList.getSeq(), "seq", orderPackBean); + if(!Objects.isNull(mesLoadingList)){ + DdlPreparedPack.getStringBiggerNotEqualPack(mesLoadingList.getSeq(), "seq", orderPackBean); + } DdlPreparedPack.getStringEqualPack(loadingList.getPartShippingGroupCode(),"partShippingGroupCode",orderPackBean); DdlPreparedPack.getInPackList(loadingListStatusList, "status", orderPackBean); boolean exit = vehiclesOrderRepository.isExitByHql(orderPackBean); if (exit) { - List statusList = new ArrayList<>(); - statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.LOADING.getValue()); - statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()); - //查询是否存在比当前seq大的数据是装车中或者已完成的 - orderPackBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringBiggerNotEqualPack(loadingList.getSeq(), "seq", orderPackBean); - DdlPreparedPack.getStringEqualPack(loadingList.getPartShippingGroupCode(),"partShippingGroupCode",orderPackBean); - DdlPreparedPack.getInPackList(statusList, "status", orderPackBean); - exit = vehiclesOrderRepository.isExitByHql(orderPackBean); //强过 - if((!Objects.isNull(isPass) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isPass) || exit){ + if((!Objects.isNull(isPass) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isPass)){ //updateLoadingListClose(loadingListStatusList,loadingList,userName); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(loadingList.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(loadingList.getId(), "id",packBean); + vehiclesOrderRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","remark"}, + new Object[]{userName, TimeTool.getNowTime(true),MesPcnExtConstWords.STRONGER_PASS}, packBean); + }else { throw new ImppBusiException(String.format("【%s】装车单对应排序【%s】前存在未扫描发运的装车单,请检查数据!", orderCode, loadingList.getSeq())); 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 dd52fb9..d799725 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 @@ -104,31 +104,56 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()); statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue()); statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue()); + List status = new ArrayList<>(); + status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue()); + status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue()); + status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); + status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()); + status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICSING.getValue()); + status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICS.getValue()); + //最后一个扫描完成的发运单信息 orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean); DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean); + DdlPreparedPack.getInPackList(status, "status", orderManagementPackBean); + DdlPreparedPack.getOrderBy("seq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(),orderManagementPackBean); + MesShippingOrderManagement management = shippingOrderManagementRepository.getByProperty(orderManagementPackBean); + //是否存在 + orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); + DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean); + if(!Objects.isNull(management)){ + DdlPreparedPack.getNumberBiggerPack(management.getSeq(), "seq", orderManagementPackBean); + } + DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean); DdlPreparedPack.getInPackList(statusForCheckList, "status", orderManagementPackBean); boolean exists = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean); if (exists) { - List status = new ArrayList<>(); - status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue()); - status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue()); - status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); - status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()); - status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICSING.getValue()); - status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICS.getValue()); - orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); - DdlPreparedPack.getNumberBiggerPack(orderManagement.getSeq(), "seq", orderManagementPackBean); - DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean); - DdlPreparedPack.getInPackList(status, "status", orderManagementPackBean); - exists = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean); - if((!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass()) || exists){ + if((!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass())){ //updateLoadingListClose(statusForCheckList,orderManagement,shippingOrderManagement.getModifyUser()); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "id",packBean); + shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","remark"}, + new Object[]{shippingOrderManagement.getModifyUser(), TimeTool.getNowTime(true),MesPcnExtConstWords.STRONGER_PASS}, packBean); }else{ throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单,请检查数据!", orderManagement.getShippingCode(), orderManagement.getSeq())); } } + //根据发运单查询装车单明细信息 + boolean isUpdate = false; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(),"shippingCode",packBean); + MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean); + if(!Objects.isNull(listDetail)){ + packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean); + MesLoadingList loadingList = listRepository.getByProperty(packBean); + if(!Objects.isNull(loadingList)){ + orderManagement.setOrderCode(loadingList.getOrderCode()); + orderManagement.setLoadingListId(loadingList.getId()); + isUpdate = true; + } + } //根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据! @@ -178,7 +203,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } }); - Long count = detailList.stream().filter(k -> k.getIsScanFlg() == MesCommonConstant.TRUE_INTEGER).count(); + Long count = detailList.stream().filter(k -> Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).count(); model.setIsScanCount(count.intValue()); //查询最近扫描完成的装车单号 @@ -193,6 +218,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService model.setRecentlyScanShippingCode(recentlyVehiclesOrder.getShippingCode()); } + //发运单关联装车单字段赋值 + if(isUpdate){ + ConvertBean.serviceModelUpdate(orderManagement,shippingOrderManagement.getModifyUser()); + update(orderManagement); + } return model; } @@ -239,6 +269,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误,请检查数据!", model.getSn())); } } + //校验客户零件信息是否存在 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(detail.getPartNo(), "erpPartNo", packBean); + DdlPreparedPack.getStringEqualPack(detail.getCustPartNo(), "custPartNo", packBean); + if(!mesCustomerPartRepository.isExitByHql(packBean)){ + throw new ImppBusiException(String.format("零件号【%s】客户零件号【%s】关系不存在,请检查数据!", detail.getPartNo(),detail.getCustPartNo())); + } scanFlg = true; updateOrderManagementDetails(userInfo, produceSn, orderManagement, detail,MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"扫描完成"); @@ -427,9 +464,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService private void checkStatus(MesSortShippingCheckModel model, MesProduceSn produceSn) { //校验产品条码状态 必须是状态为已下线条码 - if (produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) { - throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】状态的条码", model.getSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()), - MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getDescription())); + if (produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue() && produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()) { + throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】或【%s】状态的条码", model.getSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()), + MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getDescription(),MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getDescription())); } //校验产品质量状态 必须是状态为合格条码 if (produceSn.getQcStatus() != MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) { @@ -471,20 +508,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService for (MesShippingOrderManagementDetail detail : orderManagementDetailList) { //根据扫描的条码查询条码是否存在 DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - if (orderManagement.getIsEnableMemory() == MesCommonConstant.TRUE_INTEGER) { - detail.setBarcode(StringUtil.isEmpty(detail.getBarcode()) ? model.getSn() : detail.getBarcode()); - DdlPreparedPack.getStringEqualPack(StringUtil.isEmpty(detail.getBarcode()) ? model.getSn() : detail.getBarcode(), "productSn", packBean); + if (Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { + DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean); } 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.setBarcode(managementDetail.getBarcode()); + DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean); } detail.setActualQty(1); ConvertBean.serviceModelUpdate(detail, userInfo); - if(!StringUtils.isEmpty(detail.getBarcode())){ + if(!StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){ DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); MesProduceSn produceSn = produceSnRepository.getByProperty(packBean); if(!Objects.isNull(produceSn)){ @@ -510,12 +546,18 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService ConvertBean.serviceModelUpdate(vehiclesOrderDetail, userInfo); vehiclesOrderDetailRepository.save(vehiclesOrderDetail); } - if(StringUtils.isEmpty(orderManagement.getOrderCode())){ + if(StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())){ //保存当前发运单明细报工 jisShippingRepository.saveAll(getMesJisShippings(organizeCode, orderManagement)); }else{ + //查询装车单明细 DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(orderManagement.getOrderCode(), "orderCode", orderManagementPackBean); + DdlPreparedPack.getNumEqualPack(orderManagement.getLoadingListId(),"pid",orderManagementPackBean); + DdlPreparedPack.getNumberSmallerEqualPack(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"status",orderManagementPackBean); + List listDetails = vehiclesOrderDetailRepository.findByHqlWhere(orderManagementPackBean); + if(CollectionUtils.isEmpty(listDetails)) return; + orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(listDetails.stream().map(MesLoadingListDetail::getShippingCode).collect(Collectors.toList()), "shippingCode", orderManagementPackBean); DdlPreparedPack.getNumNOEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean); boolean exitByHql = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean); //2.装车单中所有发运单全部变成发运回传