|
|
|
@ -3,21 +3,20 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService;
|
|
|
|
|
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.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesPrintedSnLog;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
|
|
|
@ -54,6 +53,12 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnRepository mesProduceSnRao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IConfigService configService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPartDataMapSaveStepService partDataMapSaveStepService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public StepResult execute(StationRequestBean reqBean) {
|
|
|
|
|
// /**
|
|
|
|
@ -78,8 +83,14 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
|
|
|
|
|
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, String.format("打印失败:%s!", MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.codeOfDescription(productResult)));
|
|
|
|
|
|
|
|
|
|
// 根据foreign找出加工规则对应的上下文,判断是否需要打印
|
|
|
|
|
List<MesProdRuleContext> prodRuleDataContext = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
|
|
|
|
Map<Integer, List<MesProdRuleContext>> prodRuleContextMap = prodRuleDataContext.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey));
|
|
|
|
|
List<MesProdRuleContext> prodRuleDataContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
|
|
|
|
Map<Integer, List<MesProdRuleContext>> prodRuleContextMap = prodRuleDataContextList.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey));
|
|
|
|
|
|
|
|
|
|
//生产过程控制非排序打印机配置【物料级别=1, 默认打印机=2】
|
|
|
|
|
Boolean pcNosortPrinterCfg = getPcNosortPrinterCfg(reqBean.getOrganizeCode());
|
|
|
|
|
//保存零件数据信息
|
|
|
|
|
Map<String, MesPart> partDataMap = savePartDataMap(reqBean, resultBean, stepResult, prodRuleDataContextList, pcNosortPrinterCfg);
|
|
|
|
|
|
|
|
|
|
//需要打印的数据 String 是打印模板code
|
|
|
|
|
Map<String, List<MesProduceSnPrintDataModel>> resultData = new HashMap<>();
|
|
|
|
|
//用于保存客户模板代码 和 模板信息关系
|
|
|
|
@ -117,6 +128,11 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
|
|
|
|
|
mesProduceSnPrintModel.setCustPartNo(sn.getCustPartNo());
|
|
|
|
|
mesProduceSnPrintModel.setOrganizeCode(organizeCode);
|
|
|
|
|
mesProduceSnPrintModel.setUserName(reqBean.getUserInfo());
|
|
|
|
|
if (pcNosortPrinterCfg) {
|
|
|
|
|
//赋值打印机
|
|
|
|
|
String printer = filterPrinter(partDataMap, sn.getPartNo());
|
|
|
|
|
if (!StringUtils.isEmpty(printer)) mesProduceSnPrintModel.setPrinter(printer);
|
|
|
|
|
}
|
|
|
|
|
List<MesProduceSn> snList = new ArrayList<>();
|
|
|
|
|
snList.add(sn);
|
|
|
|
|
mesProduceSnPrintModel.getMesProduceSnList().addAll(snList);
|
|
|
|
@ -172,6 +188,30 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
|
|
|
|
|
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "打印成功!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取打印机
|
|
|
|
|
private String filterPrinter(Map<String, MesPart> partDataMap, String partNo) {
|
|
|
|
|
if (CollectionUtils.isEmpty(partDataMap) || !partDataMap.containsKey(partNo)) return null;
|
|
|
|
|
String priter = partDataMap.get(partNo).getProductPrinterCode();
|
|
|
|
|
return !StringUtils.isEmpty(priter) ? priter : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//保存零件数据信息
|
|
|
|
|
private Map<String, MesPart> savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProdRuleContext> prodRuleDataContextList, Boolean pcNosortPrinterCfg) {
|
|
|
|
|
if (!pcNosortPrinterCfg) return null;
|
|
|
|
|
//获取上下文零件数据信息
|
|
|
|
|
List<String> partNoList = (prodRuleDataContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getOutPartNo()))).map(MesProdRuleContext::getOutPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
|
|
|
|
|
//保存零件数据信息
|
|
|
|
|
partDataMapSaveStepService.savePartDataMap(reqBean, resultBean, stepResult, partNoList, true, false);
|
|
|
|
|
return stepResult.isCompleted() ? (Map<String, MesPart>) stepResult.getObj() : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//生产过程控制非排序打印机配置【物料级别=1, 默认打印机=2】
|
|
|
|
|
private Boolean getPcNosortPrinterCfg(String organizeCode) {
|
|
|
|
|
List<MesConfig> config = configService.doCachedConfigList(MesPcnExtConstWords.PRODUCTION_CONTROL_NOSORT_PRINTER_CFG, organizeCode);
|
|
|
|
|
if (CollectionUtils.isEmpty(config) || StringUtils.isEmpty(config.get(0).getCfgValue())) return false;
|
|
|
|
|
return config.get(0).getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//验证加工结果是否满足参数条件: 可疑/报废是否打印
|
|
|
|
|
private Boolean checkIsMatchProdResult(StationRequestBean reqBean, String productResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM prodResultEnum) {
|
|
|
|
|
|
|
|
|
|