广乘-仪表打印模板

tags/yfai-pcn-ext-v1.0
jun 11 months ago
parent dc667158a1
commit 32eecc1d49

@ -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);
} }
mesProduceSnRDao.saveAll(mesProduceSnPrintModel.getMesProduceSnList()); //保存条码信息
MesProduceSn produceSn = generateMesProduceSn(mesPart, reportSn, mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty());
mesMesProduceSnList.add(produceSn);
//封装打印信息
mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(getModel(produceSn, no, organizeName));
}
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();
}
} }

@ -0,0 +1,39 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/20 11:40
* @Modify:
**/
@Data
@NoArgsConstructor
public class MesProduceSnPrintDataModel {
@ApiParam("物料号")
private String partNo;
@ApiParam("物料名称")
private String partName;
@ApiParam("生产厂家名称")
private String factoryName;
@ApiParam("流水号")
private String no;
@ApiParam("二维码")
private String barcode;
@ApiParam("生产日期")
private String productDate;
@ApiParam("供应商代码")
private String supplierCode;
}

@ -2,7 +2,6 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine; import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
@ -59,7 +58,7 @@ public class MesProduceSnPrintModel {
private MesLabelTemplate mesLabelTemplate; private MesLabelTemplate mesLabelTemplate;
@ApiParam(name = "产品条码信息") @ApiParam(name = "产品条码信息")
private List<MesProduceSn> mesProduceSnList = new ArrayList<>(); private List<MesProduceSnPrintDataModel> mesProduceSnPrintDataModelList = new ArrayList<>();
public Double getQty() { public Double getQty() {
return qty == null || qty <= 0d ? 1d : qty; return qty == null || qty <= 0d ? 1d : qty;

Loading…
Cancel
Save