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())); }