1、发运单补打,单子上有“重打印”记录,并且要记录操作人、操作时间

2、条码补打时,带出来的历史零件号、零件描述与产品加工记录的零件不一致(条码Y0671418-02S3900199)
uat-temp-ljx-chongqi-dev-20250318
jiaxin.lin 4 months ago
parent 29ee1aed93
commit d3129d05c3

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.printqueue.IPrintQueueStrategyService;
@ -111,6 +112,9 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
@Autowired
private IMesPackageExtService packageExtService;
@Autowired
private IMesProdOrgExtService mesProdOrgExtService;
// 仅查询
public static final Integer CUT_QUERY_MODE_BY_QUERY = 1;
// 打印
@ -138,8 +142,25 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
@Override
public MesProduceSn findMesProduceSn(MesProduceSnPrintModel mesProduceSnPrintModel) {
MesProduceSn mesProduceSn = findMesProduceSnBySnLog(mesProduceSnPrintModel);
MesWorkCenter mesWorkCenter = mesProdOrgExtService.getWorkCenterDb(mesProduceSnPrintModel.getOrganizeCode(),mesProduceSn.getWorkCenterCode());
if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()){
MesPrintedSnLog snLog = getMesPrintedSnLogData(mesProduceSnPrintModel.getOrganizeCode(),mesProduceSnPrintModel.getProductSn());
if(Objects.isNull(snLog)){
MesPcnException.throwMesBusiException("条码【%s】查询不到打印记录!", mesProduceSnPrintModel.getProductSn());
}
if(!mesProduceSn.getPartNo().equals(snLog.getPartNo())){
mesProduceSnPrintModel.setProductSn(snLog.getBarcode());
return findMesProduceSnBySnLog(mesProduceSnPrintModel);
}
}
return mesProduceSn;
}
public MesProduceSn findMesProduceSnBySnLog(MesProduceSnPrintModel mesProduceSnPrintModel){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode());
ddlPackBean.setWhereAppend(ddlPackBean.getWhereAppend() + " and (model.productSn = '"+mesProduceSnPrintModel.getProductSn()+"' or model.custSn = '"+mesProduceSnPrintModel.getProductSn()+"' or model.workOrderNo = '"+mesProduceSnPrintModel.getProductSn()+"')");
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
MesProduceSn mesProduceSn = mesProduceSnRDao.getByProperty(ddlPackBean);
if (Objects.isNull(mesProduceSn)) {
MesPcnException.throwMesBusiException("条码【%s】信息不存在", mesProduceSnPrintModel.getProductSn());
@ -147,6 +168,13 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
return mesProduceSn;
}
public MesPrintedSnLog getMesPrintedSnLogData(String organizeCode,String barCode){
DdlPackBean snLogPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(barCode, "barcode", snLogPackBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), snLogPackBean);
return mesPrintedSnRao.getByProperty(snLogPackBean);
}
@Override
public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) {
String organizeCode = mesProduceSnPrintModel.getOrganizeCode();
@ -202,14 +230,28 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
return resultModel;
//条码补打
} else {
MesProduceSn produceSn = findMesProduceSnBySnLog(mesProduceSnPrintModel);
//根据条码产线获取产线信息
MesWorkCenter mesWorkCenter = mesProdOrgExtService.getWorkCenterDb(organizeCode,produceSn.getWorkCenterCode());
MesLabelTemplate mesLabelTemplate = null;
if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()){
//排序时取客户标签模板
mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode);
}else if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()){
//非排序时取零件条码匹配模板
mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getProductLabelTemplate(), organizeCode);
}else{
MesPcnException.throwMesBusiException("产线代码【%s】产线类型不为排序或非排序!", produceSn.getWorkCenterCode());
}
//获取打印模板信息
mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(StringUtils.isEmpty(mesProduceSnPrintModel.getPrintTemplate()) ? mesPart.getCustLabelTemplate() : mesProduceSnPrintModel.getPrintTemplate(), organizeCode));
mesProduceSnPrintModel.setMesLabelTemplate(mesLabelTemplate);
//查找打印记录
DdlPackBean snLogPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getProductSn(), "barcode", snLogPackBean);
MesPrintedSnLog snLog = mesPrintedSnRao.getByProperty(snLogPackBean);
MesPrintedSnLog snLog = getMesPrintedSnLogData(organizeCode,mesProduceSnPrintModel.getProductSn());
if (Objects.isNull(snLog)) {
if(mesWorkCenter.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()){
MesPcnException.throwMesBusiException("条码【%s】查询不到打印记录!", mesProduceSnPrintModel.getProductSn());
}
//扫描条码
MesWorkOrder workOrder = mesWorkOrderService.getWorkOrderNoByCustSn(organizeCode, mesProduceSnPrintModel.getProductSn());
//扫描工单
@ -220,7 +262,7 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
MesPcnException.throwMesBusiException("条码【%s】查询不到打印记录!", mesProduceSnPrintModel.getProductSn());
}
//根据客户条码查询工单信息
mesProduceSnPrintModel = getMesProduceSnPrintModel(mesProduceSnPrintModel, organizeCode, mesPart, workOrder);
mesProduceSnPrintModel = getMesProduceSnPrintModel(mesProduceSnPrintModel, organizeCode, mesPart, workOrder,mesLabelTemplate);
snLog = getMesPrintedSnLog(workOrder, JSONObject.toJSONString(mesProduceSnPrintModel.getPrintContextList().iterator().next().get(MesPcnExtConstWords.TEMPLATE_DATA)),mesProduceSnPrintModel.getUserName());
}
MesProduceSnPrintDataModel model = new MesProduceSnPrintDataModel();
@ -238,10 +280,11 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
}
}
private MesProduceSnPrintModel getMesProduceSnPrintModel(MesProduceSnPrintModel mesProduceSnPrintModel, String organizeCode, MesPart mesPart, MesWorkOrder workOrderNoByCustSn) {
private MesProduceSnPrintModel getMesProduceSnPrintModel(MesProduceSnPrintModel mesProduceSnPrintModel, String organizeCode, MesPart mesPart, MesWorkOrder workOrderNoByCustSn,MesLabelTemplate mesLabelTemplate) {
mesProduceSnPrintModel.setSourceData(workOrderNoByCustSn);
// 获取打印模板
MesLabelTemplate mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode);
//注释掉多余查询 通过参数传输
// MesLabelTemplate mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode);
if (Objects.isNull(mesLabelTemplate) || StringUtils.isEmpty(mesLabelTemplate.getMethodCode())) {
MesPcnException.throwMesBusiException(String.format("当前打印模板【%s】未维护方法名", mesProduceSnPrintModel.getPrintTemplate()));
}

Loading…
Cancel
Save