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 ca2a6cf..e81acb3 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 @@ -11,7 +11,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.INumberRulePackAttributeStrategyService; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; -import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -25,7 +24,6 @@ import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.hutool.core.bean.BeanUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +31,9 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -162,7 +162,7 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { genSerialNoModel.setCustPartNo(mesCustomerPart.getCustPartNo()); IPrintTemplateStrategyService templateStrategy = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); - MesProduceSnPrintModel resultModel = templateStrategy.execute(genSerialNoModel, mesProduceSnPrintModel, numberRule); + MesProduceSnPrintModel resultModel = templateStrategy.execute(genSerialNoModel, mesProduceSnPrintModel, numberRule,null,null,false); resultModel.getMesProduceSnList().forEach(mesProduceSn -> { //保存条码 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java index 97c6e7e..8b04448 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java @@ -1,16 +1,11 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; import cn.estsh.i3plus.pojo.mes.bean.MesNumberRule; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; -import java.util.List; -import java.util.Map; - /** * @Description : 根据不同的条码,封装不同的数据来源 content 是打印模板,dataList * @Reference : @@ -34,5 +29,5 @@ public interface IPrintTemplateStrategyService { * @param mesProduceSnPrintModel * @return */ - MesProduceSnPrintModel execute(GenSerialNoModel model , MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule); + MesProduceSnPrintModel execute(GenSerialNoModel model , MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AionPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AionPrintStrategy.java index 3264411..9476172 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AionPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AionPrintStrategy.java @@ -17,10 +17,13 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -55,7 +58,7 @@ public class AionPrintStrategy implements IPrintTemplateStrategyService { @Override - public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) { + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule , StepResult stepResult, StationRequestBean reqBean, Boolean isStep) { // 获取工厂名称 String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); MesConfig mesConfig = configService.getMesConfigByCfgCode(MesPcnExtConstWords.ORGANIZE_NAME, organizeCode); @@ -64,29 +67,54 @@ public class AionPrintStrategy implements IPrintTemplateStrategyService { } //获取工厂名称 String organizeName = mesConfig.getCfgValue(); - String format ="yyyy/MM/dd"; - MesCustomerPart mesCustomerPart = getMesCustomerPart(mesProduceSnPrintModel); //物料信息 MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); - for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { - ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); - String sn = resultBean.getResultList().get(0).toString(); - int versionNoLength = numberRule.getSpiltRule().substring(numberRule.getSpiltRule().lastIndexOf(",") + 1).length(); - Integer serialNoLength = numberRule.getSerialnoLength(); - String snPrefix = sn.substring(0, sn.length() - versionNoLength - serialNoLength); - String snSuffix = sn.substring(sn.length() - versionNoLength); - String serialNo = sn.substring(sn.length() - versionNoLength - serialNoLength, sn.length() - versionNoLength); - String serialNo34 = toBase34(Integer.parseInt(serialNo)); - serialNo34 = stringFormat(serialNo34, 4, false, "0"); - sn = snPrefix + serialNo34 + snSuffix; - //保存条码信息 - MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); - //封装打印信息 - MesProduceSnPrintDataModel model = getModel(produceSn, serialNo, mesCustomerPart.getCustPartNo(), organizeName); - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); - mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + if (!isStep){ + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); + String sn = resultBean.getResultList().get(0).toString(); + int versionNoLength = numberRule.getSpiltRule().substring(numberRule.getSpiltRule().lastIndexOf(",") + 1).length(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String snPrefix = sn.substring(0, sn.length() - versionNoLength - serialNoLength); + String snSuffix = sn.substring(sn.length() - versionNoLength); + String serialNo = sn.substring(sn.length() - versionNoLength - serialNoLength, sn.length() - versionNoLength); + String serialNo34 = toBase34(Integer.parseInt(serialNo)); + serialNo34 = stringFormat(serialNo34, 4, false, "0"); + sn = snPrefix + serialNo34 + snSuffix; + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, mesCustomerPart.getCustPartNo(), organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } + }else { + String sn = mesProduceSnPrintModel.getProductSn(); + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); + int versionNoLength = numberRule.getSpiltRule().substring(numberRule.getSpiltRule().lastIndexOf(",") + 1).length(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String snPrefix = sn.substring(0, sn.length() - versionNoLength - serialNoLength); + String snSuffix = sn.substring(sn.length() - versionNoLength); + String serialNo = sn.substring(sn.length() - versionNoLength - serialNoLength, sn.length() - versionNoLength); + String serialNo34 = toBase34(Integer.parseInt(serialNo)); + serialNo34 = stringFormat(serialNo34, 4, false, "0"); + sn = snPrefix + serialNo34 + snSuffix; + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, serialNo, mesCustomerPart.getCustPartNo(), organizeName); + printDataModel.setBarcode(sn); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); } return mesProduceSnPrintModel; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqaaPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqaaPrintStrategy.java index ada0d89..80baa80 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqaaPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqaaPrintStrategy.java @@ -17,14 +17,16 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.Objects; @@ -56,7 +58,7 @@ public class GqaaPrintStrategy implements IPrintTemplateStrategyService { @Override - public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) { + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep) { // 获取工厂名称 String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); MesConfig mesConfig = configService.getMesConfigByCfgCode(MesPcnExtConstWords.ORGANIZE_NAME, organizeCode); @@ -65,15 +67,37 @@ public class GqaaPrintStrategy implements IPrintTemplateStrategyService { } //获取工厂名称 String organizeName = mesConfig.getCfgValue(); - String format ="yyyy/MM/dd"; - MesCustomerPart mesCustomerPart = getMesCustomerPart(mesProduceSnPrintModel); //物料信息 MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); - for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { - ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); - String sn = resultBean.getResultList().get(0).toString(); + if (!isStep){ + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); + String sn = resultBean.getResultList().get(0).toString(); + int versionNoLength = numberRule.getSpiltRule().substring(numberRule.getSpiltRule().lastIndexOf(",") + 1).length(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String snPrefix = sn.substring(0, sn.length() - versionNoLength - serialNoLength); + String snSuffix = sn.substring(sn.length() - versionNoLength); + String serialNo = sn.substring(sn.length() - versionNoLength - serialNoLength, sn.length() - versionNoLength); + String serialNo34 = toBase34(Integer.parseInt(serialNo)); + serialNo34 = stringFormat(serialNo34, 4, false, "0"); + sn = snPrefix + serialNo34 + snSuffix; + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, mesCustomerPart.getCustPartNo(), organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } + }else { + String sn = mesProduceSnPrintModel.getProductSn(); + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); int versionNoLength = numberRule.getSpiltRule().substring(numberRule.getSpiltRule().lastIndexOf(",") + 1).length(); Integer serialNoLength = numberRule.getSerialnoLength(); String snPrefix = sn.substring(0, sn.length() - versionNoLength - serialNoLength); @@ -82,13 +106,16 @@ public class GqaaPrintStrategy implements IPrintTemplateStrategyService { String serialNo34 = toBase34(Integer.parseInt(serialNo)); serialNo34 = stringFormat(serialNo34, 4, false, "0"); sn = snPrefix + serialNo34 + snSuffix; - //保存条码信息 - MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); //封装打印信息 - MesProduceSnPrintDataModel model = getModel(produceSn, serialNo, mesCustomerPart.getCustPartNo(), organizeName); - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); - mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); - } + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, serialNo, mesCustomerPart.getCustPartNo(), organizeName); + printDataModel.setBarcode(sn); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } return mesProduceSnPrintModel; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqxnyPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqxnyPrintStrategy.java index 1190233..743555d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqxnyPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GqxnyPrintStrategy.java @@ -3,7 +3,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; @@ -23,21 +22,15 @@ import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.Date; -import java.util.HashMap; -import java.util.Map; import java.util.Objects; /** @@ -66,7 +59,9 @@ public class GqxnyPrintStrategy implements IPrintTemplateStrategyService { private MesCustomerPartRepository mesCustomerPartRDao; @Override - public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) { + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule,StepResult stepResult, StationRequestBean reqBean,Boolean isStep) { + //获取客户零件号 + String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); String format = DateUtil.BASE_FORMAT; // 获取工厂名称 String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); @@ -76,53 +71,73 @@ public class GqxnyPrintStrategy implements IPrintTemplateStrategyService { } //获取工厂名称 String organizeName = mesConfig.getCfgValue(); - //物料信息 - MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); - Date date = new Date(); - //----广乘 45位 GQXNY - //{custPartNo}{SPILTURE}{custCode}{spiltrure}{spiltrule}{year}{serialNo}{spilture}{spiltrule} - //客户零件号-扩展位-客户代码-预留位000-产线1-年月日-条码-扩展0000-追溯位+ - //零件长号---17位,不足17位 右边补* - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - //获取客户零件号 - String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); - String custPartNoFormat = stringFormat(custPartNo, 17); - genSerialNoModel.setCustPartNo(custPartNoFormat); - //拓展位 2位 00 包含0~9,A~Z 不使用时,补“0”填充 {SPILTRULE} - //供应商代码 7位 供应商代码 0~9,A~Z;不足7位 右测补* - MesConfig supplierConfig = configService.getMesConfigByCfgCodeKeyOrg(MesPcnExtConstWords.SUPPLIER_CODE, MesExtEnumUtil.MES_PRINT_TEMPLATE.GQXNY.getValue(), organizeCode); - String supplierCode = supplierConfig.getCfgValue(); - String supplierCodeFormat = stringFormat(supplierCode, 7); - genSerialNoModel.setCustCode(supplierCodeFormat); - //扩展位 3位 预留扩展位0~9 A~Z 不使用时,补 0 {SPILTRULE} - //产线 1位 供应商产线号,表示由数字1~9 和字母A~Z(I/O除外)组成; {SPILTRULE} - //年月日 6位 yyMMdd 零部件生产日期,年月日各2位 - String year = TimeTool.pareDateToString("yyMMdd", date); - genSerialNoModel.setYear(year); - //流水号 4位 采用34进制 0001~ZZZZ (I、O除外)顺位进行标注 (同广汽 & 广新) {serialNo} - //扩展位 4位 预留扩展位信息,包含0~9和字母A~Z,不使用时,补“0” 填充; {SPILTRULE} - //追溯标识 1位 + 代表精确按件追溯,$标识按批追溯, % 代表按生产方式追溯 {SPILTRULE} - for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { - ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); - String sn = resultBean.getResultList().get(0).toString(); - String snPrefix = sn.substring(0, sn.length() - 12); - String snSuffix = sn.substring(sn.length() - 5); - String serialNo = sn.substring(sn.length() - 12, sn.length() - 5); + if (!isStep){ + //物料信息 + MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); + Date date = new Date(); + //----广乘 45位 GQXNY + //{custPartNo}{SPILTURE}{custCode}{spiltrure}{spiltrule}{year}{serialNo}{spilture}{spiltrule} + //客户零件号-扩展位-客户代码-预留位000-产线1-年月日-条码-扩展0000-追溯位+ + //零件长号---17位,不足17位 右边补* + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + String custPartNoFormat = stringFormat(custPartNo, 17); + genSerialNoModel.setCustPartNo(custPartNoFormat); + //拓展位 2位 00 包含0~9,A~Z 不使用时,补“0”填充 {SPILTRULE} + //供应商代码 7位 供应商代码 0~9,A~Z;不足7位 右测补* + MesConfig supplierConfig = configService.getMesConfigByCfgCodeKeyOrg(MesPcnExtConstWords.SUPPLIER_CODE, MesExtEnumUtil.MES_PRINT_TEMPLATE.GQXNY.getValue(), organizeCode); + String supplierCode = supplierConfig.getCfgValue(); + String supplierCodeFormat = stringFormat(supplierCode, 7); + genSerialNoModel.setCustCode(supplierCodeFormat); + //扩展位 3位 预留扩展位0~9 A~Z 不使用时,补 0 {SPILTRULE} + //产线 1位 供应商产线号,表示由数字1~9 和字母A~Z(I/O除外)组成; {SPILTRULE} + //年月日 6位 yyMMdd 零部件生产日期,年月日各2位 + String year = TimeTool.pareDateToString("yyMMdd", date); + genSerialNoModel.setYear(year); + //流水号 4位 采用34进制 0001~ZZZZ (I、O除外)顺位进行标注 (同广汽 & 广新) {serialNo} + //扩展位 4位 预留扩展位信息,包含0~9和字母A~Z,不使用时,补“0” 填充; {SPILTRULE} + //追溯标识 1位 + 代表精确按件追溯,$标识按批追溯, % 代表按生产方式追溯 {SPILTRULE} + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); + String sn = resultBean.getResultList().get(0).toString(); + String snPrefix = sn.substring(0, sn.length() - 12); + String snSuffix = sn.substring(sn.length() - 5); + String serialNo = sn.substring(sn.length() - 12, sn.length() - 5); + String serialNo34 = toBase34(Integer.parseInt(serialNo)); + serialNo34 = stringFormat(serialNo34, 4, false, "0"); + sn = snPrefix + serialNo34 + snSuffix; + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, custPartNo, organizeName); + printDataModel.setSupplierCode(supplierCode); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel, snLog); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + } + }else { + String sn = mesProduceSnPrintModel.getProductSn(); + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); + int versionNoLength = numberRule.getSpiltRule().substring(numberRule.getSpiltRule().lastIndexOf(",") + 1).length(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String snPrefix = sn.substring(0, sn.length() - versionNoLength - serialNoLength); + String snSuffix = sn.substring(sn.length() - versionNoLength); + String serialNo = sn.substring(sn.length() - versionNoLength - serialNoLength, sn.length() - versionNoLength); String serialNo34 = toBase34(Integer.parseInt(serialNo)); serialNo34 = stringFormat(serialNo34, 4, false, "0"); sn = snPrefix + serialNo34 + snSuffix; - //保存条码信息 - MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); //封装打印信息 - MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, custPartNo, organizeName); - printDataModel.setSupplierCode(supplierCode); + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, serialNo, custPartNo, organizeName); + printDataModel.setBarcode(sn); mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); - //保存打印记录 MesPrintedSnLog snLog = new MesPrintedSnLog(); ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - BeanUtil.copyProperties(printDataModel, snLog); - mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); } return mesProduceSnPrintModel; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/NoSortBarCodeGzStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/NoSortBarCodeGzStrategy.java index fd403c6..e3d596c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/NoSortBarCodeGzStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/NoSortBarCodeGzStrategy.java @@ -2,7 +2,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; @@ -12,12 +11,15 @@ import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.repository.MesNumberRuleRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; @@ -25,13 +27,9 @@ import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.Map; +import java.util.List; /** * @Description : @@ -54,9 +52,11 @@ public class NoSortBarCodeGzStrategy implements IPrintTemplateStrategyService { @Autowired private SnowflakeIdMaker snowflakeIdMaker; + @Autowired + private MesNumberRuleRepository mesNumberRuleRDao; @Override - public MesProduceSnPrintModel execute(GenSerialNoModel model, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) { + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule,StepResult stepResult, StationRequestBean reqBean,Boolean isStep) { // noSortBarCodeGz String format = DateUtil.BASE_FORMAT; //{partNo}{year}{month}{day}{serialNo} @@ -64,26 +64,46 @@ public class NoSortBarCodeGzStrategy implements IPrintTemplateStrategyService { MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); String partNo = mesPart.getPartNo(); MesConfig mesConfig = configService.getMesConfigByCfgCode(MesPcnExtConstWords.ORGANIZE_NAME, organizeCode); - if (null == mesConfig || StringUtils.isEmpty(mesConfig.getCfgValue())) { - throw ImppExceptionBuilder.newInstance().setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()).setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()).setErrorDetail("没有维护当前工厂的系统参数!").build(); - } - String organizeName = mesConfig.getCfgValue(); - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - genSerialNoModel.setPartNo(partNo); - //年月日 yyyyMMdd - //流水号 4位 每天从1开始 - for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { - ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); - String sn = resultBean.getResultList().get(0).toString(); - Integer serialNoLength = numberRule.getSerialnoLength(); + if (!isStep){ + if (null == mesConfig || StringUtils.isEmpty(mesConfig.getCfgValue())) { + throw ImppExceptionBuilder.newInstance().setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()).setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()).setErrorDetail("没有维护当前工厂的系统参数!").build(); + } + String organizeName = mesConfig.getCfgValue(); + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + genSerialNoModel.setPartNo(partNo); + //年月日 yyyyMMdd + //流水号 4位 每天从1开始 + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); + String sn = resultBean.getResultList().get(0).toString(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String serialNo = sn.substring(sn.length() - serialNoLength); + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } + }else { + //获取条码规则,根据条码规则中的序列号长度截取序列号 + DdlPackBean mesRulePackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(mesPart.getProductMatchRule(), "ruleCode", mesRulePackBean); + List ruleList = mesNumberRuleRDao.findByHqlWhere(mesRulePackBean); + MesNumberRule mesNumberRule = ruleList.get(0); + String organizeName = mesConfig.getCfgValue(); + String sn = mesProduceSnPrintModel.getProductSn(); + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); + Integer serialNoLength = mesNumberRule.getSerialnoLength(); String serialNo = sn.substring(sn.length() - serialNoLength); - //保存条码信息 - MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); //封装打印信息 - MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName); + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName); mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); - mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); //保存打印记录 MesPrintedSnLog snLog = new MesPrintedSnLog(); ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengNewPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengNewPrintStrategy.java index b8c4436..81de828 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengNewPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengNewPrintStrategy.java @@ -10,17 +10,16 @@ import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; @@ -57,7 +56,7 @@ public class XiaoPengNewPrintStrategy implements IPrintTemplateStrategyService { private IConfigService configService; @Override - public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) { + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep) { String format = DateUtil.BASE_FORMAT; Date date = new Date(); String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); @@ -66,40 +65,49 @@ public class XiaoPengNewPrintStrategy implements IPrintTemplateStrategyService { //{custPartNo}{year}{month}{day}{serialNo} //客户零件号 String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); - genSerialNoModel.setCustPartNo(custPartNo); - //年月日缩写 - genSerialNoModel.setYear(getYearShort(date)); - genSerialNoModel.setMonth(getMonthShort(date)); - genSerialNoModel.setDay(getDayShort(date)); - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); - MesConfig mesConfig = configService.getMesConfigByCfgCode(MesPcnExtConstWords.ORGANIZE_NAME, organizeCode); - if (null == mesConfig || StringUtils.isEmpty(mesConfig.getCfgValue())) { - throw ImppExceptionBuilder.newInstance().setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()).setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()).setErrorDetail("没有维护当前工厂的系统参数!").build(); - } String organizeName = mesConfig.getCfgValue(); - - //流水号 5位 每天从1开始 - for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { - ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); - String sn = resultBean.getResultList().get(0).toString(); + if (!isStep){ + genSerialNoModel.setCustPartNo(custPartNo); + //年月日缩写 + genSerialNoModel.setYear(getYearShort(date)); + genSerialNoModel.setMonth(getMonthShort(date)); + genSerialNoModel.setDay(getDayShort(date)); + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + //流水号 5位 每天从1开始 + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); + String sn = resultBean.getResultList().get(0).toString(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String serialNo = sn.substring(sn.length() - serialNoLength); + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); + produceSn.setCustPartNo(custPartNo); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, custPartNo, organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } + }else { + String sn = mesProduceSnPrintModel.getProductSn(); + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); Integer serialNoLength = numberRule.getSerialnoLength(); String serialNo = sn.substring(sn.length() - serialNoLength); - //保存条码信息 - MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); - produceSn.setCustPartNo(custPartNo); //封装打印信息 - MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, custPartNo, organizeName); + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, serialNo, custPartNo, organizeName); mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); - mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); //保存打印记录 MesPrintedSnLog snLog = new MesPrintedSnLog(); ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); BeanUtil.copyProperties(printDataModel,snLog); mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); - } + } return mesProduceSnPrintModel; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengPrintStrategy.java index c787282..166ad8c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/XiaoPengPrintStrategy.java @@ -10,17 +10,16 @@ import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; @@ -57,7 +56,7 @@ public class XiaoPengPrintStrategy implements IPrintTemplateStrategyService { private IConfigService configService; @Override - public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) { + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep) { String format = DateUtil.BASE_FORMAT; Date date = new Date(); String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); @@ -66,40 +65,50 @@ public class XiaoPengPrintStrategy implements IPrintTemplateStrategyService { //{custPartNo}{year}{month}{day}{serialNo} //客户零件号 String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); - genSerialNoModel.setCustPartNo(custPartNo); - //年月日缩写 - genSerialNoModel.setYear(getYearShort(date)); - genSerialNoModel.setMonth(getMonthShort(date)); - genSerialNoModel.setDay(getDayShort(date)); - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); - MesConfig mesConfig = configService.getMesConfigByCfgCode(MesPcnExtConstWords.ORGANIZE_NAME, organizeCode); - if (null == mesConfig || StringUtils.isEmpty(mesConfig.getCfgValue())) { - throw ImppExceptionBuilder.newInstance().setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()).setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()).setErrorDetail("没有维护当前工厂的系统参数!").build(); - } String organizeName = mesConfig.getCfgValue(); - - //流水号 5位 每天从1开始 - for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { - ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); - String sn = resultBean.getResultList().get(0).toString(); - Integer serialNoLength = numberRule.getSerialnoLength(); - String serialNo = sn.substring(sn.length() - serialNoLength); - //保存条码信息 - MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); - produceSn.setCustPartNo(custPartNo); - //封装打印信息 - MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, custPartNo, organizeName); - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); - mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); - //保存打印记录 - MesPrintedSnLog snLog = new MesPrintedSnLog(); - ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - BeanUtil.copyProperties(printDataModel,snLog); - mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); - } + if (!isStep){ + //年月日缩写 + genSerialNoModel.setYear(getYearShort(date)); + genSerialNoModel.setMonth(getMonthShort(date)); + genSerialNoModel.setDay(getDayShort(date)); + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + genSerialNoModel.setCustPartNo(custPartNo); + + //流水号 5位 每天从1开始 + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + ResultBean resultBean = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), organizeCode, 1); + String sn = resultBean.getResultList().get(0).toString(); + Integer serialNoLength = numberRule.getSerialnoLength(); + String serialNo = sn.substring(sn.length() - serialNoLength); + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty(), format); + produceSn.setCustPartNo(custPartNo); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, serialNo, custPartNo, organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } + }else { + String sn = mesProduceSnPrintModel.getProductSn(); + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); + Integer serialNoLength = numberRule.getSerialnoLength(); + String serialNo = sn.substring(sn.length() - serialNoLength); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, serialNo, custPartNo, organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(printDataModel); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(printDataModel,snLog); + mesProduceSnPrintModel.getMesPrintedSnLogList().add(snLog); + } return mesProduceSnPrintModel; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java index 464f63e..1dbd77e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java @@ -1,13 +1,12 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; @@ -15,19 +14,23 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateParam; import cn.estsh.i3plus.pojo.mes.bean.MesPrintedSnLog; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.IMesPrintedSnLogRepository; import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateParamRepository; import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; -import cn.hutool.core.bean.BeanUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -52,6 +55,9 @@ public class MesProductSnPrintStepService extends BaseStepService { @Autowired private IMesPrintedSnLogRepository snLogRao; + @Autowired + private MesProduceSnRepository mesProduceSnRao; + @Override public StepResult execute(StationRequestBean reqBean) { // /** @@ -65,111 +71,81 @@ public class MesProductSnPrintStepService extends BaseStepService { // * 根据foreign找出加工规则对应的上下文,判断是否需要打印 // * // */ -// String organizeCode = reqBean.getOrganizeCode(); -// StationResultBean resultBean = new StationResultBean(); -// StepResult stepResult = StepResult.getSuccessComplete(); -// // 根据foreign找出加工规则对应的上下文,判断是否需要打印 -// List prodRuleDataContext = mesProductionDispatchContextStepService.getProdRuleDataContext(reqBean); -// Map> prodRuleContextMap = prodRuleDataContext.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey)); -// //需要打印的数据 String 是打印模板code -// Map> resultData = new HashMap<>(); -// //用于保存客户模板代码 和 模板信息关系 -// Map labelTemplateMap = new HashMap<>(); -// //返回打印标识 给前端 -// //1. 获取上下文中生成的主条码 -// List productionPsOutContextList = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean); -// //2. 获取条码需要模板、模板代码、打印机 --- 循环遍历条码 封装数据 -// for (MesProductionPsOutContext sn : productionPsOutContextList) { -// List mesProdRuleContexts = prodRuleContextMap.get(sn.getForeignKey()); -// if (mesProdRuleContexts == null || mesProdRuleContexts.isEmpty()) { -// execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的加工规则丢失,请配置!", sn.getPartNo())); -// } -// MesProdRuleContext mesProdRuleContext = mesProdRuleContexts.get(0); -// Integer isPrint = mesProdRuleContext.getIsPrint(); -// if (isPrint == null || isPrint == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) { -// continue; -// } -// String prodLabelTemplate = sn.getProdLabelTemplate(); -// if (prodLabelTemplate == null) { -// execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的模板信息丢失,请配置!", sn.getPartNo(), prodLabelTemplate)); -// } -// MesLabelTemplate labelTemplate; -// // 查模板代码 -// if (!labelTemplateMap.containsKey(prodLabelTemplate)) { -// labelTemplate = getLabelTemplate(prodLabelTemplate, organizeCode); -// //模板信息丢失抛出异常 -// if (labelTemplate == null) { -// execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的模板信息丢失,请配置!", sn.getPartNo(), prodLabelTemplate)); -// } -// labelTemplateMap.put(prodLabelTemplate, labelTemplate); -// } else { -// labelTemplate = labelTemplateMap.get(prodLabelTemplate); -// } -// //根据反射获取策略类--封装打印数据 -// String methodCode = labelTemplate.getMethodCode(); -// //模板信息丢失抛出异常 -// if (methodCode == null) { -// execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的反射类丢失,请配置!", sn.getPartNo(), prodLabelTemplate)); -// } -// IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); -// MesProduceSnPrintDataModel model = strategyService.execute(stepResult, reqBean, sn, organizeCode); -// if (!stepResult.isCompleted()){ -// execExpSendMsgAndThrowEx(reqBean, resultBean, stepResult.getMsg()); -// } -// List printData; -// if (resultData.containsKey(labelTemplate.getTemplateCode())) { -// printData = resultData.get(labelTemplate.getTemplateCode()); -// printData.add(model); -// } else { -// printData = new ArrayList<>(); -// printData.add(model); -// resultData.put(labelTemplate.getTemplateCode(), printData); -// } -// } -// -// /** Map -// * valueList:List> -// * paramInfo:{ -// * templateContent:xxxx, -// * labelTemplateParamList: List> -// * } -// * -// */ -// List> printData = new ArrayList<>(); -// Set labelKeys = labelTemplateMap.keySet(); -// List snLogList = new ArrayList<>(); -// for (String labelKey : labelKeys) { -// Map paramInfo = new HashMap<>(); -// List dataMaps = resultData.get(labelKey); -// for (MesProduceSnPrintDataModel dataModel : dataMaps) { -// MesPrintedSnLog snLog = new MesPrintedSnLog(); -// BeanUtil.copyProperties(dataModel,snLog); -// snLog.setOrganizeCode(reqBean.getOrganizeCode()); -// ConvertBean.saveOrUpdate(snLog,reqBean.getUserInfo()); -// snLogList.add(snLog); -// } -// MesLabelTemplate mesLabelTemplate = labelTemplateMap.get(labelKey); -// String templateContent = mesLabelTemplate.getTemplateContent(); -// paramInfo.put("templateContent",templateContent); -// paramInfo.put("labelTemplateParamList",mesLabelTemplate.getLabelTemplateParamList()); -// Map data = new HashMap<>(); -// data.put("paramInfo", paramInfo); -// data.put("valueList", dataMaps); -// printData.add(data); -// } -// -// //前端接收到busiTyep是customComponent,并且 dataType是file类型的消息,就需要打印后续消息里的数据,一个模板对应多个打印数据 -// resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()); -// resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()); -// resultBean.setResultObj(printData); -// //3. 发送数据给到前端 -// this.sendMessage(reqBean, resultBean); -// -// //todo 更新打印状态 -// //保存打印条码记录 -// snLogRao.saveAll(snLogList); - // return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesExtEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "执行打印成功!"); - return null; + String organizeCode = reqBean.getOrganizeCode(); + StationResultBean resultBean = new StationResultBean(); + StepResult stepResult = StepResult.getSuccessComplete(); + // 根据foreign找出加工规则对应的上下文,判断是否需要打印 + List prodRuleDataContext = mesProductionDispatchContextStepService.getProdRuleDataContext(reqBean); + Map> prodRuleContextMap = prodRuleDataContext.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey)); + //需要打印的数据 String 是打印模板code + Map> resultData = new HashMap<>(); + //用于保存客户模板代码 和 模板信息关系 + Map labelTemplateMap = new HashMap<>(); + //返回打印标识 给前端 + //1. 获取上下文中生成的主条码 + List productionPsOutContextList = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean); + /** + * 重构,返回给前端打印数据 + */ + List printModelList = new ArrayList<>(); + //2. 获取条码需要模板、模板代码、打印机 --- 循环遍历条码 封装数据 + for (MesProductionPsOutContext sn : productionPsOutContextList) { + List mesProdRuleContexts = prodRuleContextMap.get(sn.getForeignKey()); + if (mesProdRuleContexts == null || mesProdRuleContexts.isEmpty()) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的加工规则丢失,请配置!", sn.getPartNo())); + } + MesProdRuleContext mesProdRuleContext = mesProdRuleContexts.get(0); + Integer isPrint = mesProdRuleContext.getIsPrint(); + if (isPrint == null || isPrint == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) { + continue; + } + String prodLabelTemplate = sn.getProdLabelTemplate(); + if (prodLabelTemplate == null) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的模板信息丢失,请配置!", sn.getPartNo(), prodLabelTemplate)); + } + + MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel(); + // 查模板代码 + MesLabelTemplate labelTemplate = getLabelTemplate(prodLabelTemplate, organizeCode); + mesProduceSnPrintModel.setMesLabelTemplate(labelTemplate); + mesProduceSnPrintModel.setProductSn(sn.getProductSn()); + mesProduceSnPrintModel.setOrganizeCode(organizeCode); + List snList = new ArrayList<>(); + snList.add(sn); + mesProduceSnPrintModel.getMesProduceSnList().addAll(snList); + //模板信息丢失抛出异常 + if (labelTemplate == null) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的模板信息丢失,请配置!", sn.getPartNo(), prodLabelTemplate)); + } + //根据反射获取策略类--封装打印数据 + String methodCode = labelTemplate.getMethodCode(); + //模板信息丢失抛出异常 + if (methodCode == null) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的反射类丢失,请配置!", sn.getPartNo(), prodLabelTemplate)); + } + IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); + // GenSerialNoModel model , MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep + MesProduceSnPrintModel printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, true); + printModelList.add(printModel); + } + + //前端接收到busiTyep是customComponent,并且 dataType是file类型的消息,就需要打印后续消息里的数据,一个模板对应多个打印数据 + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()); + resultBean.setResultObj(printModelList); + //3. 发送数据给到前端 + this.sendMessage(reqBean, resultBean); + List snLogList = printModelList.stream().map(MesProduceSnPrintModel::getMesPrintedSnLogList).flatMap(List::stream).collect(Collectors.toList()); + //更新打印状态 + for (MesProductionPsOutContext outSn : productionPsOutContextList) { + Long id = outSn.getId(); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(outSn.getOrganizeCode()); + DdlPreparedPack.getNumberSmallerEqualPack(id,"id",ddlPackBean); + mesProduceSnRao.updateByProperties("printStatus",MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue(),ddlPackBean); + } + //保存打印条码记录 + snLogRao.saveAll(snLogList); + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesExtEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "执行打印成功!"); } /** @@ -184,8 +160,8 @@ public class MesProductSnPrintStepService extends BaseStepService { DdlPreparedPack.getStringEqualPack(templateCode, "templateCode", templatePackBean); List mesLabelTemplateList = labelTemplateRao.findByHqlWhere(templatePackBean); MesLabelTemplate mesLabelTemplate = null; - if (!mesLabelTemplateList.isEmpty()){ - mesLabelTemplate = mesLabelTemplateList.get(0); + if (!mesLabelTemplateList.isEmpty()) { + mesLabelTemplate = mesLabelTemplateList.get(0); //级联获取labelTemplateParam DdlPackBean templateParamPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(mesLabelTemplate.getId(), "templateId", templateParamPackBean);