|
|
|
@ -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<MesNumberRule> 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<MesNumberRule> 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<MesPrintedSnLog> 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()));
|
|
|
|
|