|
|
@ -4,25 +4,30 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnPrintService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnPrintService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
|
|
|
|
|
|
|
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.model.MesProduceSnPrintModel;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
|
|
|
|
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineDetailsRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineDetailsRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Objects;
|
|
|
|
import java.util.Objects;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
@ -58,6 +63,9 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IMesTemplateService mesTemplateService;
|
|
|
|
private IMesTemplateService mesTemplateService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesCustomerPartRepository mesCustomerPartRDao;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesProduceSnPrintModel findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
public MesProduceSnPrintModel findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
//查询SAP下发物料信息
|
|
|
|
//查询SAP下发物料信息
|
|
|
@ -91,36 +99,90 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
|
|
|
|
String organizeName = AuthUtil.getOrganize().getName();
|
|
|
|
//物料信息
|
|
|
|
//物料信息
|
|
|
|
MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode());
|
|
|
|
MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode());
|
|
|
|
//条码生成
|
|
|
|
//条码生成
|
|
|
|
if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) {
|
|
|
|
if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) {
|
|
|
|
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getSnRule(), "条码规则不能为空");
|
|
|
|
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getSnRule(), "条码规则不能为空");
|
|
|
|
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPrintTemplate(), "打印模板不能为空");
|
|
|
|
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPrintTemplate(), "打印模板不能为空");
|
|
|
|
//生成条码
|
|
|
|
//流水码
|
|
|
|
List<String> snList = getStringList(mesProduceSnPrintModel);
|
|
|
|
List<String> resultList = getStringList(mesProduceSnPrintModel);
|
|
|
|
for (String sn : snList) {
|
|
|
|
//条码模板
|
|
|
|
mesProduceSnPrintModel.getMesProduceSnList().add(generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(),mesProduceSnPrintModel.getQty()));
|
|
|
|
StringBuilder template = getTemplate(mesProduceSnPrintModel);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MesProduceSn> mesMesProduceSnList = new ArrayList<>();
|
|
|
|
|
|
|
|
for (String no : resultList) {
|
|
|
|
|
|
|
|
String reportSn = no;
|
|
|
|
|
|
|
|
if (MesPcnEnumUtil.PRINT_TEMPLATE.GQXNY.getCode().equals(mesProduceSnPrintModel.getPrintTemplate())) {
|
|
|
|
|
|
|
|
no = no.replace(MesPcnEnumUtil.PRINT_TEMPLATE.GQXNY.getValue(), "");
|
|
|
|
|
|
|
|
reportSn = template.toString().replace("serialNo", no);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//保存条码信息
|
|
|
|
|
|
|
|
MesProduceSn produceSn = generateMesProduceSn(mesPart, reportSn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty());
|
|
|
|
|
|
|
|
mesMesProduceSnList.add(produceSn);
|
|
|
|
|
|
|
|
//封装打印信息
|
|
|
|
|
|
|
|
mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(produceSn, no, organizeName));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mesProduceSnRDao.saveAll(mesProduceSnPrintModel.getMesProduceSnList());
|
|
|
|
mesProduceSnRDao.saveAll(mesMesProduceSnList);
|
|
|
|
//条码补打
|
|
|
|
//条码补打
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
ValidatorBean.checkNotNull(mesPart.getProductLabelTemplate(), "打印模板不能为空");
|
|
|
|
ValidatorBean.checkNotNull(mesPart.getProductLabelTemplate(), "打印模板不能为空");
|
|
|
|
mesProduceSnPrintModel.setPrintTemplate(mesPart.getProductLabelTemplate());
|
|
|
|
mesProduceSnPrintModel.setPrintTemplate(mesPart.getProductLabelTemplate());
|
|
|
|
mesProduceSnPrintModel.getMesProduceSnList().add(findMesProduceSn(mesProduceSnPrintModel));
|
|
|
|
MesProduceSn mesProduceSn = findMesProduceSn(mesProduceSnPrintModel);
|
|
|
|
|
|
|
|
String no = "";
|
|
|
|
|
|
|
|
if (MesPcnEnumUtil.PRINT_TEMPLATE.GQXNY.getCode().equals(mesProduceSnPrintModel.getPrintTemplate())
|
|
|
|
|
|
|
|
&& !Objects.isNull(mesProduceSn.getProductSn())
|
|
|
|
|
|
|
|
&& mesProduceSn.getProductSn().length() >= 40) {
|
|
|
|
|
|
|
|
no = mesProduceSn.getProductSn().substring(36, 40);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(mesProduceSn, no, organizeName));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//获取打印模板信息
|
|
|
|
//获取打印模板信息
|
|
|
|
mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate()));
|
|
|
|
mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate()));
|
|
|
|
return mesProduceSnPrintModel;
|
|
|
|
return mesProduceSnPrintModel;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private StringBuilder getTemplate(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
|
|
|
|
StringBuilder template = new StringBuilder();
|
|
|
|
|
|
|
|
//广乘 GQXNY.btw
|
|
|
|
|
|
|
|
if (MesPcnEnumUtil.PRINT_TEMPLATE.GQXNY.getCode().equals(mesProduceSnPrintModel.getPrintTemplate())) {
|
|
|
|
|
|
|
|
//获取客户零件号
|
|
|
|
|
|
|
|
MesCustomerPart mesCustomerPart = getMesCustomerPart(mesProduceSnPrintModel);
|
|
|
|
|
|
|
|
//零件号(17)+扩展位(2)+供应商代码(7)+扩展位(3)+产线(1)+年月日(6位)+流水号(4)+扩展位(4)+"+"
|
|
|
|
|
|
|
|
template.append(stringFormat(mesCustomerPart.getCustPartNo(), 17)).append("00").append(stringFormat("VD501", 7)).append("000").append("1").append(TimeTool.getNowTime("yyMMdd")).append("serialNo").append("0000").append("+");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return template;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesProduceSnPrintDataModel getModel(MesProduceSn produceSn, String no, String factoryName) {
|
|
|
|
|
|
|
|
MesProduceSnPrintDataModel mesProduceSnPrintDataModel = new MesProduceSnPrintDataModel();
|
|
|
|
|
|
|
|
mesProduceSnPrintDataModel.setFactoryName(factoryName);
|
|
|
|
|
|
|
|
mesProduceSnPrintDataModel.setPartNo(produceSn.getPartNo());
|
|
|
|
|
|
|
|
mesProduceSnPrintDataModel.setPartName(produceSn.getPartName());
|
|
|
|
|
|
|
|
mesProduceSnPrintDataModel.setNo(no);
|
|
|
|
|
|
|
|
mesProduceSnPrintDataModel.setBarcode(produceSn.getProductSn());
|
|
|
|
|
|
|
|
mesProduceSnPrintDataModel.setProductDate(TimeTool.getDateTimeShort());
|
|
|
|
|
|
|
|
return mesProduceSnPrintDataModel;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<String> getStringList(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
private List<String> getStringList(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(mesProduceSnPrintModel.getSnRule());
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(mesProduceSnPrintModel.getSnRule());
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getOrganizeCode(), mesProduceSnPrintModel.getPrintQty()).getResultList();
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getOrganizeCode(), mesProduceSnPrintModel.getPrintQty()).getResultList();
|
|
|
|
return resultList;
|
|
|
|
return resultList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private MesProduceSn generateMesProduceSn(MesPart mesPart, String sn, String userName,Double qty) {
|
|
|
|
private MesCustomerPart getMesCustomerPart(MesProduceSnPrintModel mesProduceSnPrintModel) {
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getPartNo(), "erpPartNo", ddlPackBean);
|
|
|
|
|
|
|
|
MesCustomerPart mesCustomerPart = mesCustomerPartRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesCustomerPart)) {
|
|
|
|
|
|
|
|
MesPcnException.throwMesBusiException("物料【%s】客户零件关系未维护", mesProduceSnPrintModel.getPartNo());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return mesCustomerPart;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesProduceSn generateMesProduceSn(MesPart mesPart, String sn, String userName, Double qty) {
|
|
|
|
MesProduceSn mesProduceSn = new MesProduceSn();
|
|
|
|
MesProduceSn mesProduceSn = new MesProduceSn();
|
|
|
|
mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + "");
|
|
|
|
mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + "");
|
|
|
|
mesProduceSn.setProductSn(sn);
|
|
|
|
mesProduceSn.setProductSn(sn);
|
|
|
@ -140,4 +202,17 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
|
|
|
|
ConvertBean.serviceModelInitialize(mesProduceSn, userName);
|
|
|
|
ConvertBean.serviceModelInitialize(mesProduceSn, userName);
|
|
|
|
return mesProduceSn;
|
|
|
|
return mesProduceSn;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String stringFormat(String data, Integer length) {
|
|
|
|
|
|
|
|
//数据长途大于填充位数直接返回
|
|
|
|
|
|
|
|
if (data.length() >= length) {
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
StringBuilder dataBuffer = new StringBuilder();
|
|
|
|
|
|
|
|
dataBuffer.append(data);
|
|
|
|
|
|
|
|
for (int i = 0; i < length - data.length(); i++) {
|
|
|
|
|
|
|
|
dataBuffer.append('*');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return dataBuffer.toString();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|