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 1dae6a3..6ac1a0f 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 @@ -24,6 +24,7 @@ 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.hutool.core.bean.BeanUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -121,208 +122,228 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { String organizeName = mesConfig.getCfgValue(); //物料信息 MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); - //打印模板 - String printTemplate = mesProduceSnPrintModel.getPrintTemplate(); - //打印规则 - String snRule = mesProduceSnPrintModel.getSnRule(); - //获取条码规则,根据条码规则中的序列号长度截取序列号 - DdlPackBean mesRulePackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(snRule, "ruleCode", mesRulePackBean); - List ruleList = mesNumberRuleRDao.findByHqlWhere(mesRulePackBean); - if (ruleList.isEmpty()) { - MesPcnException.throwMesBusiException("零件号【】打印规则查询不到!", mesPart.getPartNo()); - } - MesNumberRule numberRule = ruleList.get(0); - - //打印日期格式 - String format = "yyyy/MM/dd"; - if (MesExtEnumUtil.MES_PRINT_TEMPLATE.NO_SORT_BAR_CODE_GZ.getCode().equals(printTemplate) || MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG.getCode().equals(printTemplate) || MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG_NEW.getCode().equals(printTemplate)) { - format = DateUtil.BASE_FORMAT; - } - int printQty = mesProduceSnPrintModel.getPrintQty(); - Date date = new Date(); - - //if 1B2M || GQAA_BARCODE - if (MesExtEnumUtil.MES_PRINT_TEMPLATE.B2M.getCode().equals(printTemplate) || MesExtEnumUtil.MES_PRINT_TEMPLATE.GQAA.getCode().equals(printTemplate)) { - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - //${SPILTRULE}${partNo}${SPILTRULE}${SPILTRULE}${year}${month}${day}${serialNo}${SPILTRULE} - //规格号,零件号,供应商,生产线代码,年,月,日,序列号,软件版本号 - // ----广汽 1B2M & 广新 GQAA_BARCODE 21位 - //规格号 ${SPILTRULE} + - //零件简号 {partNo} - mesPart.getPartSnParam() - genSerialNoModel.setPartNo(mesPart.getPartSnParam()); - //供应商号 supplierNo ---固定VD501 ${SPILTRULE}拼接 - //生产线代码 workCenterCode 或者 fixWorkCenterCode (取配置值) ${SPILTRULE} - //日期${dateShort} - genSerialNoModel.setYear(getYearShort(date)); - genSerialNoModel.setMonth(getMonthShort(date)); - genSerialNoModel.setDay(getDayShort(date)); - //获取客户零件号 - String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); - //供应商生产流水号 ${serialNo} 采用34进制 获取条码是十进制,需要截取转换成34位 - //软件版本号${versionNo} ${SPILTRULE} - for (int i = 0; i < printQty; 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); - //封装打印信息 - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(produceSn, serialNo, custPartNo, organizeName)); - mesProduceSnRDao.insert(produceSn); - //保存打印记录 - MesPrintedSnLog snLog = new MesPrintedSnLog(); - ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - snLog.setSn(sn); - mesPrintedSnRao.insert(snLog); + //条码生成 + if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) { + //打印模板 + String printTemplate = mesProduceSnPrintModel.getPrintTemplate(); + //打印规则 + String snRule = mesProduceSnPrintModel.getSnRule(); + //获取条码规则,根据条码规则中的序列号长度截取序列号 + DdlPackBean mesRulePackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(snRule, "ruleCode", mesRulePackBean); + List ruleList = mesNumberRuleRDao.findByHqlWhere(mesRulePackBean); + if (ruleList.isEmpty()) { + MesPcnException.throwMesBusiException("零件号【】打印规则查询不到!", mesPart.getPartNo()); } + MesNumberRule numberRule = ruleList.get(0); - } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.GQXNY.getCode().equals(printTemplate)) { - - // else if GQXNY - //----广乘 45位 GQXNY - //{custPartNo}{SPILTURE}{custCode}{spiltrure}{spiltrule}{year}{serialNo}{spilture}{spiltrule} - //客户零件号-扩展位-客户代码-预留位000-产线1-年月日-条码-扩展0000-追溯位+ - //零件长号---17位,不足17位 右边补* - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); - 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 < printQty; 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 model = getModel(produceSn, serialNo, custPartNo, organizeName); - model.setSupplierCode(supplierCode); - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); - mesProduceSnRDao.insert(produceSn); - //保存打印记录 - MesPrintedSnLog snLog = new MesPrintedSnLog(); - ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - snLog.setSn(sn); - mesPrintedSnRao.insert(snLog); + //打印日期格式 + String format = "yyyy/MM/dd"; + if (MesExtEnumUtil.MES_PRINT_TEMPLATE.NO_SORT_BAR_CODE_GZ.getCode().equals(printTemplate) || MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG.getCode().equals(printTemplate) || MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG_NEW.getCode().equals(printTemplate)) { + format = DateUtil.BASE_FORMAT; } - - } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.NO_SORT_BAR_CODE_GZ.getCode().equals(printTemplate)) { - // noSortBarCodeGz - //{partNo}{year}{month}{day}{serialNo} - //内部条码, 批量打印 NoSortBarCodeGZ - //零件号 partNo - String partNo = mesPart.getPartNo(); - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - genSerialNoModel.setPartNo(partNo); - //年月日 yyyyMMdd - //流水号 4位 每天从1开始 - for (int i = 0; i < printQty; 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); - //封装打印信息 - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(produceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName)); - mesProduceSnRDao.insert(produceSn); - //保存打印记录 - MesPrintedSnLog snLog = new MesPrintedSnLog(); - ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - snLog.setSn(sn); - mesPrintedSnRao.insert(snLog); + int printQty = mesProduceSnPrintModel.getPrintQty(); + Date date = new Date(); + + //if 1B2M || GQAA_BARCODE + if (MesExtEnumUtil.MES_PRINT_TEMPLATE.B2M.getCode().equals(printTemplate) || MesExtEnumUtil.MES_PRINT_TEMPLATE.GQAA.getCode().equals(printTemplate)) { + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + //${SPILTRULE}${partNo}${SPILTRULE}${SPILTRULE}${year}${month}${day}${serialNo}${SPILTRULE} + //规格号,零件号,供应商,生产线代码,年,月,日,序列号,软件版本号 + // ----广汽 1B2M & 广新 GQAA_BARCODE 21位 + //规格号 ${SPILTRULE} + + //零件简号 {partNo} - mesPart.getPartSnParam() + genSerialNoModel.setPartNo(mesPart.getPartSnParam()); + //供应商号 supplierNo ---固定VD501 ${SPILTRULE}拼接 + //生产线代码 workCenterCode 或者 fixWorkCenterCode (取配置值) ${SPILTRULE} + //日期${dateShort} + genSerialNoModel.setYear(getYearShort(date)); + genSerialNoModel.setMonth(getMonthShort(date)); + genSerialNoModel.setDay(getDayShort(date)); + //获取客户零件号 + String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); + //供应商生产流水号 ${serialNo} 采用34进制 获取条码是十进制,需要截取转换成34位 + //软件版本号${versionNo} ${SPILTRULE} + for (int i = 0; i < printQty; 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, custPartNo, organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + mesProduceSnRDao.insert(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(model,snLog); + mesPrintedSnRao.insert(snLog); + } + + } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.GQXNY.getCode().equals(printTemplate)) { + + // else if GQXNY + //----广乘 45位 GQXNY + //{custPartNo}{SPILTURE}{custCode}{spiltrure}{spiltrule}{year}{serialNo}{spilture}{spiltrule} + //客户零件号-扩展位-客户代码-预留位000-产线1-年月日-条码-扩展0000-追溯位+ + //零件长号---17位,不足17位 右边补* + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); + 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 < printQty; 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 model = getModel(produceSn, serialNo, custPartNo, organizeName); + model.setSupplierCode(supplierCode); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + mesProduceSnRDao.insert(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(model,snLog); + mesPrintedSnRao.insert(snLog); + } + + } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.NO_SORT_BAR_CODE_GZ.getCode().equals(printTemplate)) { + // noSortBarCodeGz + //{partNo}{year}{month}{day}{serialNo} + //内部条码, 批量打印 NoSortBarCodeGZ + //零件号 partNo + String partNo = mesPart.getPartNo(); + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + genSerialNoModel.setPartNo(partNo); + //年月日 yyyyMMdd + //流水号 4位 每天从1开始 + for (int i = 0; i < printQty; 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 model = getModel(produceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + mesProduceSnRDao.insert(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(model,snLog); + mesPrintedSnRao.insert(snLog); + } + } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG.getCode().equals(printTemplate)) { + format = DateUtil.BASE_FORMAT; + // XIAO_PENG 原客户条码.小鹏汽车 NoSortBarCodeGZ-new + //{custPartNo}{SPILTRULE}{year}{month}{day}{hour}{minute}{second}{serialNo} + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); + genSerialNoModel.setRuleCode(numberRule.getRuleCode()); + //客户零件号 + String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); + genSerialNoModel.setCustPartNo(custPartNo); + //中杠 - + //生产日期 + 时间 yyyyMMddHHmmss + //流水号 5位 每天从1开始 + for (int i = 0; i < printQty; 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 model = getModel(produceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + mesProduceSnRDao.insert(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(model,snLog); + mesPrintedSnRao.insert(snLog); + } + + } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG_NEW.getCode().equals(printTemplate)) { + format = "yyyy-MM-dd"; + //gz-xiaopeng + //客户条码-小鹏汽车 gz-xiaopeng + //{custPartNo}{year}{month}{day}{serialNo} + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); + //客户零件号 + String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); + 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 < printQty; 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 model = getModel(produceSn, serialNo, custPartNo, organizeName); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + mesProduceSnRDao.insert(produceSn); + //保存打印记录 + MesPrintedSnLog snLog = new MesPrintedSnLog(); + ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); + BeanUtil.copyProperties(model,snLog); + mesPrintedSnRao.insert(snLog); + } } - } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG.getCode().equals(printTemplate)) { - format = DateUtil.BASE_FORMAT; - // XIAO_PENG 原客户条码.小鹏汽车 NoSortBarCodeGZ-new - //{custPartNo}{SPILTRULE}{year}{month}{day}{hour}{minute}{second}{serialNo} - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); - genSerialNoModel.setRuleCode(numberRule.getRuleCode()); - //客户零件号 - String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); - genSerialNoModel.setCustPartNo(custPartNo); - //中杠 - - //生产日期 + 时间 yyyyMMddHHmmss - //流水号 5位 每天从1开始 - for (int i = 0; i < printQty; 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); - //封装打印信息 - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(produceSn, serialNo, mesProduceSnPrintModel.getCustPartNo(), organizeName)); - mesProduceSnRDao.insert(produceSn); - //保存打印记录 - MesPrintedSnLog snLog = new MesPrintedSnLog(); - ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - snLog.setSn(sn); - mesPrintedSnRao.insert(snLog); - } - - } else if (MesExtEnumUtil.MES_PRINT_TEMPLATE.XIAO_PENG_NEW.getCode().equals(printTemplate)) { - format = "yyyy-MM-dd"; - //gz-xiaopeng - //客户条码-小鹏汽车 gz-xiaopeng - //{custPartNo}{year}{month}{day}{serialNo} - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(); - //客户零件号 - String custPartNo = getMesCustomerPart(mesProduceSnPrintModel).getCustPartNo(); - 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 < printQty; 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); - //封装打印信息 - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(produceSn, serialNo, custPartNo, organizeName)); - mesProduceSnRDao.insert(produceSn); - //保存打印记录 - MesPrintedSnLog snLog = new MesPrintedSnLog(); - ConvertBean.serviceModelInitialize(snLog, mesProduceSnPrintModel.getUserName()); - snLog.setSn(sn); - mesPrintedSnRao.insert(snLog); + //条码补打 + } else { + //查找打印记录 + DdlPackBean snLogPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getProductSn(),"barcode",snLogPackBean); + List snLogList = mesPrintedSnRao.findByHqlWhere(snLogPackBean); + if (snLogList.isEmpty()){ + MesPcnException.throwMesBusiException("条码【】查询不到打印记录!", mesProduceSnPrintModel.getProductSn()); } + MesPrintedSnLog mesPrintedSnLog = snLogList.get(0); + MesProduceSnPrintDataModel model = new MesProduceSnPrintDataModel(); + BeanUtil.copyProperties(mesPrintedSnLog,model); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); } //获取打印模板信息 mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate()));