From d3129d05c314a93ebb752f774abd8ec020964f7b Mon Sep 17 00:00:00 2001 From: "jiaxin.lin" Date: Tue, 18 Mar 2025 20:40:02 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=8F=91=E8=BF=90=E5=8D=95=E8=A1=A5?= =?UTF-8?q?=E6=89=93=EF=BC=8C=E5=8D=95=E5=AD=90=E4=B8=8A=E6=9C=89=E2=80=9C?= =?UTF-8?q?=E9=87=8D=E6=89=93=E5=8D=B0=E2=80=9D=E8=AE=B0=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=B8=94=E8=A6=81=E8=AE=B0=E5=BD=95=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E4=BA=BA=E3=80=81=E6=93=8D=E4=BD=9C=E6=97=B6=E9=97=B4=202?= =?UTF-8?q?=E3=80=81=E6=9D=A1=E7=A0=81=E8=A1=A5=E6=89=93=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=B8=A6=E5=87=BA=E6=9D=A5=E7=9A=84=E5=8E=86=E5=8F=B2=E9=9B=B6?= =?UTF-8?q?=E4=BB=B6=E5=8F=B7=E3=80=81=E9=9B=B6=E4=BB=B6=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E4=B8=8E=E4=BA=A7=E5=93=81=E5=8A=A0=E5=B7=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E9=9B=B6=E4=BB=B6=E4=B8=8D=E4=B8=80=E8=87=B4(?= =?UTF-8?q?=E6=9D=A1=E7=A0=81Y0671418-02S3900199)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesProduceSnPrintService.java | 57 +++++++++++++++++++--- 1 file changed, 50 insertions(+), 7 deletions(-) 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 f6a9c38..d226106 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 @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.printqueue.IPrintQueueStrategyService; @@ -111,6 +112,9 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { @Autowired private IMesPackageExtService packageExtService; + @Autowired + private IMesProdOrgExtService mesProdOrgExtService; + // 仅查询 public static final Integer CUT_QUERY_MODE_BY_QUERY = 1; // 打印 @@ -138,8 +142,25 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { @Override public MesProduceSn findMesProduceSn(MesProduceSnPrintModel mesProduceSnPrintModel) { + MesProduceSn mesProduceSn = findMesProduceSnBySnLog(mesProduceSnPrintModel); + MesWorkCenter mesWorkCenter = mesProdOrgExtService.getWorkCenterDb(mesProduceSnPrintModel.getOrganizeCode(),mesProduceSn.getWorkCenterCode()); + if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()){ + MesPrintedSnLog snLog = getMesPrintedSnLogData(mesProduceSnPrintModel.getOrganizeCode(),mesProduceSnPrintModel.getProductSn()); + if(Objects.isNull(snLog)){ + MesPcnException.throwMesBusiException("条码【%s】查询不到打印记录!", mesProduceSnPrintModel.getProductSn()); + } + if(!mesProduceSn.getPartNo().equals(snLog.getPartNo())){ + mesProduceSnPrintModel.setProductSn(snLog.getBarcode()); + return findMesProduceSnBySnLog(mesProduceSnPrintModel); + } + } + return mesProduceSn; + } + + public MesProduceSn findMesProduceSnBySnLog(MesProduceSnPrintModel mesProduceSnPrintModel){ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode()); ddlPackBean.setWhereAppend(ddlPackBean.getWhereAppend() + " and (model.productSn = '"+mesProduceSnPrintModel.getProductSn()+"' or model.custSn = '"+mesProduceSnPrintModel.getProductSn()+"' or model.workOrderNo = '"+mesProduceSnPrintModel.getProductSn()+"')"); + DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean); MesProduceSn mesProduceSn = mesProduceSnRDao.getByProperty(ddlPackBean); if (Objects.isNull(mesProduceSn)) { MesPcnException.throwMesBusiException("条码【%s】信息不存在", mesProduceSnPrintModel.getProductSn()); @@ -147,6 +168,13 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { return mesProduceSn; } + public MesPrintedSnLog getMesPrintedSnLogData(String organizeCode,String barCode){ + DdlPackBean snLogPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(barCode, "barcode", snLogPackBean); + DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), snLogPackBean); + return mesPrintedSnRao.getByProperty(snLogPackBean); + } + @Override public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) { String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); @@ -202,14 +230,28 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { return resultModel; //条码补打 } else { + MesProduceSn produceSn = findMesProduceSnBySnLog(mesProduceSnPrintModel); + //根据条码产线获取产线信息 + MesWorkCenter mesWorkCenter = mesProdOrgExtService.getWorkCenterDb(organizeCode,produceSn.getWorkCenterCode()); + MesLabelTemplate mesLabelTemplate = null; + if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()){ + //排序时取客户标签模板 + mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode); + }else if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()){ + //非排序时取零件条码匹配模板 + mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getProductLabelTemplate(), organizeCode); + }else{ + MesPcnException.throwMesBusiException("产线代码【%s】产线类型不为排序或非排序!", produceSn.getWorkCenterCode()); + } //获取打印模板信息 - mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(StringUtils.isEmpty(mesProduceSnPrintModel.getPrintTemplate()) ? mesPart.getCustLabelTemplate() : mesProduceSnPrintModel.getPrintTemplate(), organizeCode)); + mesProduceSnPrintModel.setMesLabelTemplate(mesLabelTemplate); //查找打印记录 - DdlPackBean snLogPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getProductSn(), "barcode", snLogPackBean); - MesPrintedSnLog snLog = mesPrintedSnRao.getByProperty(snLogPackBean); + MesPrintedSnLog snLog = getMesPrintedSnLogData(organizeCode,mesProduceSnPrintModel.getProductSn()); if (Objects.isNull(snLog)) { + if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()){ + MesPcnException.throwMesBusiException("条码【%s】查询不到打印记录!", mesProduceSnPrintModel.getProductSn()); + } //扫描条码 MesWorkOrder workOrder = mesWorkOrderService.getWorkOrderNoByCustSn(organizeCode, mesProduceSnPrintModel.getProductSn()); //扫描工单 @@ -220,7 +262,7 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { MesPcnException.throwMesBusiException("条码【%s】查询不到打印记录!", mesProduceSnPrintModel.getProductSn()); } //根据客户条码查询工单信息 - mesProduceSnPrintModel = getMesProduceSnPrintModel(mesProduceSnPrintModel, organizeCode, mesPart, workOrder); + mesProduceSnPrintModel = getMesProduceSnPrintModel(mesProduceSnPrintModel, organizeCode, mesPart, workOrder,mesLabelTemplate); snLog = getMesPrintedSnLog(workOrder, JSONObject.toJSONString(mesProduceSnPrintModel.getPrintContextList().iterator().next().get(MesPcnExtConstWords.TEMPLATE_DATA)),mesProduceSnPrintModel.getUserName()); } MesProduceSnPrintDataModel model = new MesProduceSnPrintDataModel(); @@ -238,10 +280,11 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { } } - private MesProduceSnPrintModel getMesProduceSnPrintModel(MesProduceSnPrintModel mesProduceSnPrintModel, String organizeCode, MesPart mesPart, MesWorkOrder workOrderNoByCustSn) { + private MesProduceSnPrintModel getMesProduceSnPrintModel(MesProduceSnPrintModel mesProduceSnPrintModel, String organizeCode, MesPart mesPart, MesWorkOrder workOrderNoByCustSn,MesLabelTemplate mesLabelTemplate) { mesProduceSnPrintModel.setSourceData(workOrderNoByCustSn); // 获取打印模板 - MesLabelTemplate mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode); + //注释掉多余查询 通过参数传输 +// MesLabelTemplate mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode); if (Objects.isNull(mesLabelTemplate) || StringUtils.isEmpty(mesLabelTemplate.getMethodCode())) { MesPcnException.throwMesBusiException(String.format("当前打印模板【%s】未维护方法名", mesProduceSnPrintModel.getPrintTemplate())); }