工步重构打印

tags/yfai-pcn-ext-v1.0
administrator 1 year ago
parent 8f2d794472
commit 3a13770bc7

@ -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 -> {
//保存条码

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

@ -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;
}

@ -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;
}

@ -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;
}

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

@ -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;
}

@ -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;
}

@ -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<MesProdRuleContext> prodRuleDataContext = mesProductionDispatchContextStepService.getProdRuleDataContext(reqBean);
// Map<Integer, List<MesProdRuleContext>> prodRuleContextMap = prodRuleDataContext.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey));
// //需要打印的数据 String 是打印模板code
// Map<String, List<MesProduceSnPrintDataModel>> resultData = new HashMap<>();
// //用于保存客户模板代码 和 模板信息关系
// Map<String, MesLabelTemplate> labelTemplateMap = new HashMap<>();
// //返回打印标识 给前端
// //1. 获取上下文中生成的主条码
// List<MesProductionPsOutContext> productionPsOutContextList = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
// //2. 获取条码需要模板、模板代码、打印机 --- 循环遍历条码 封装数据
// for (MesProductionPsOutContext sn : productionPsOutContextList) {
// List<MesProdRuleContext> 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<MesProduceSnPrintDataModel> 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<String,Object>
// * valueList:List<Map<String,Object>>
// * paramInfo:{
// * templateContent:xxxx,
// * labelTemplateParamList: List<Map<String,Object>>
// * }
// *
// */
// List<Map<String, Object>> printData = new ArrayList<>();
// Set<String> labelKeys = labelTemplateMap.keySet();
// List<MesPrintedSnLog> snLogList = new ArrayList<>();
// for (String labelKey : labelKeys) {
// Map<String,Object> paramInfo = new HashMap<>();
// List<MesProduceSnPrintDataModel> 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<String, Object> 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<MesProdRuleContext> prodRuleDataContext = mesProductionDispatchContextStepService.getProdRuleDataContext(reqBean);
Map<Integer, List<MesProdRuleContext>> prodRuleContextMap = prodRuleDataContext.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey));
//需要打印的数据 String 是打印模板code
Map<String, List<MesProduceSnPrintDataModel>> resultData = new HashMap<>();
//用于保存客户模板代码 和 模板信息关系
Map<String, MesLabelTemplate> labelTemplateMap = new HashMap<>();
//返回打印标识 给前端
//1. 获取上下文中生成的主条码
List<MesProductionPsOutContext> productionPsOutContextList = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
/**
*
*/
List<MesProduceSnPrintModel> printModelList = new ArrayList<>();
//2. 获取条码需要模板、模板代码、打印机 --- 循环遍历条码 封装数据
for (MesProductionPsOutContext sn : productionPsOutContextList) {
List<MesProdRuleContext> 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<MesProduceSn> 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<MesPrintedSnLog> 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<MesLabelTemplate> 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);

Loading…
Cancel
Save