From 5d1633b83304c63b8d7bc97f7a217fc94bcd7e98 Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 24 Mar 2025 13:42:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E9=83=BDVolvo=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/base/IMesPartPackageTypeService.java | 7 + .../base/MesPartPackageTypeServiceImpl.java | 27 ++++ .../ChengDuVolvoShippingPrintStrategyService.java | 164 +++++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartPackageTypeService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartPackageTypeServiceImpl.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/sortshipping/strategy/ChengDuVolvoShippingPrintStrategyService.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartPackageTypeService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartPackageTypeService.java new file mode 100644 index 0000000..c13ebf4 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartPackageTypeService.java @@ -0,0 +1,7 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesPartPackageType; + +public interface IMesPartPackageTypeService { + MesPartPackageType getMesPartPackageType(String organizeCode, String packageTypeCode); +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartPackageTypeServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartPackageTypeServiceImpl.java new file mode 100644 index 0000000..d043263 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartPackageTypeServiceImpl.java @@ -0,0 +1,27 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartPackageTypeService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesPartPackageType; +import cn.estsh.i3plus.pojo.mes.repository.IMesPartPackageTypeRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author jason + */ +@Service +@Slf4j +public class MesPartPackageTypeServiceImpl implements IMesPartPackageTypeService { + @Autowired + private IMesPartPackageTypeRepository partPackageTypeRDao; + + @Override + public MesPartPackageType getMesPartPackageType(String organizeCode, String packageTypeCode) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(packageTypeCode, "packageTypeCode", packBean); + return partPackageTypeRDao.getByProperty(packBean); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/sortshipping/strategy/ChengDuVolvoShippingPrintStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/sortshipping/strategy/ChengDuVolvoShippingPrintStrategyService.java new file mode 100644 index 0000000..449860f --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/sortshipping/strategy/ChengDuVolvoShippingPrintStrategyService.java @@ -0,0 +1,164 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.sortshipping.strategy; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartPackageTypeService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPartShippingGroupService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesPartPackageType; +import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; +import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackId; +import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackIdDetail; +import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; +import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +import cn.estsh.i3plus.pojo.mes.model.ChengDuVolvoShippingPrintModel; +import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository; +import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdDetailRepository; +import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdRepository; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.util.ResultBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description : 成都volvo发运单打印策略 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2025/03/20 16:43 + * @Modify: + **/ +@Component +@Slf4j +public class ChengDuVolvoShippingPrintStrategyService implements IPrintTemplateStrategyService { + @Autowired + private MesShippingOrderManagementDetailRepository shippingOrderDetailRDao; + @Autowired + private MesCimVolvoJisRackIdRepository rackIdRDao; + @Autowired + private MesCimVolvoJisRackIdDetailRepository rackIdDetailRDao; + @Autowired + private MesPartRepository partRDao; + @Autowired + private IMesPartShippingGroupService shippingGroupService; + @Autowired + private IMesPartPackageTypeService partPackageTypeService; + + @Override + public ResultBean execute(MesShippingOrderManagement bean, List shippingOrderManagementList) { + List modelList = new ArrayList<>(); + for (MesShippingOrderManagement loadingList : shippingOrderManagementList) { + ChengDuVolvoShippingPrintModel model = getPrintData(loadingList); + if (model != null) { + modelList.add(model); + } + } + return ResultBean.success("装车单打印成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(modelList); + } + + private ChengDuVolvoShippingPrintModel getPrintData(MesShippingOrderManagement shippingOrder) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + final String userName = AuthUtil.getSessionUser().getUserName(); + + ChengDuVolvoShippingPrintModel model = new ChengDuVolvoShippingPrintModel(); + DdlPackBean shippingDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(shippingOrder.getId(), "pid", shippingDetailPackBean); + List shippingDetails = shippingOrderDetailRDao.findByHqlWhere(shippingDetailPackBean); + if (CollectionUtils.isEmpty(shippingDetails)) { + return null; + } + + List partNos = new ArrayList<>(); + List rackDetailIdList = new ArrayList<>(); + for (MesShippingOrderManagementDetail shippingDetail : shippingDetails) { + if (shippingDetail.getSourceId() != null) { + rackDetailIdList.add(shippingDetail.getSourceId()); + } + if (!partNos.contains(shippingDetail.getPartNo())) { + partNos.add(shippingDetail.getPartNo()); + } + } + DdlPackBean rackDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(rackDetailIdList, "id", rackDetailPackBean); + List rackIdDetails = rackIdDetailRDao.findByHqlWhere(rackDetailPackBean); + if (CollectionUtils.isEmpty(rackIdDetails)) { + return null; + } + + List rackIdList = new ArrayList<>(); + for (MesCimVolvoJisRackIdDetail rackIdDetail : rackIdDetails) { + if (rackIdDetail.getJisRackIdFid() != null && !rackIdList.contains(rackIdDetail.getJisRackIdFid())) { + rackIdList.add(rackIdDetail.getJisRackIdFid()); + } + } + DdlPackBean rackPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(rackIdList, "id", rackPackBean); + List rackIds = rackIdRDao.findByHqlWhere(rackPackBean); + if (CollectionUtils.isEmpty(rackIds)) { + return null; + } + + // 净重 + double totalNetWeight = 0.0; + // 净重单位 + String netWom = ""; + // 包装重量 + double packageWeight = 0.0; + // 包装重量单位 + String tmpGwUom = ""; + DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(partNos, "partNo", rackPackBean); + List parts = partRDao.findByHqlWhere(partPackBean); + if (!CollectionUtils.isEmpty(parts)) { + for (MesPart mesPart : parts) { + if (mesPart.getNetWeight() != null) { + totalNetWeight += mesPart.getNetWeight(); + } + netWom = mesPart.getWeightUom(); + } + } + MesPartShippingGroup shippingGroup = shippingGroupService.getMesPartShippingGroup(organizeCode, shippingOrder.getShippingGroupCode()); + if (shippingGroup != null && !StringUtils.isEmpty(shippingGroup.getPackageTypeCode()) && (shippingGroup.getPackageTypeCode().startsWith("P") || shippingGroup.getPackageTypeCode().startsWith("p"))) { + MesPartPackageType partPackageType = partPackageTypeService.getMesPartPackageType(organizeCode, shippingGroup.getPackageTypeCode()); + if (partPackageType != null) { + packageWeight = partPackageType.getNetWeight() != null ? partPackageType.getNetWeight() : 0; + tmpGwUom = partPackageType.getWeightUom(); + } + } + + MesCimVolvoJisRackId rackId = rackIds.get(0); + model.setRecelver(rackId.getShipToId()); + model.setDock(rackId.getIdForPlaceOfDischarge()); + model.setAdviceNoteNo(rackId.getAsnNo()); + model.setAdviceNoteBarCode(rackId.getAsnNo()); + model.setSupplierAddress(StringUtils.isEmpty(rackId.getShipFrom()) ? rackId.getShipFromId() : rackId.getShipFrom()); + model.setNetWeight(String.format("%.2f", totalNetWeight)); + model.setNWUom(netWom); + model.setGrossWeight(String.format("%.2f", totalNetWeight + packageWeight)); + model.setGWUom(tmpGwUom); + model.setRackId(rackId.getJisRackId()); + model.setRackBarCode(rackId.getJisRackId()); + model.setFirstPreNo(rackId.getFirstSequenceNumber()); + model.setFirstPreBarCode(rackId.getFirstSequenceNumber()); + model.setLastPreNo(rackId.getLastSequenceNumber()); + model.setLastPreBarCode(rackId.getLastSequenceNumber()); + model.setSupplierID(rackId.getSellerId()); + model.setSupplierBarCode(rackId.getSellerId()); + model.setCountryOfOrigin("CN"); + model.setNoofCars(rackDetailIdList.size()); + model.setDescription(rackId.getRackReference()); + model.setPackageId(rackId.getJisRackId()); + model.setPackageBarCode(rackId.getJisRackId()); + model.setProcess("LDJIS"); + + return model; + } +}