diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java index 8731da6..e9aa4a3 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java @@ -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 prodRuleDataContext = productionDispatchContextStepService.getProdRuleDataContext(reqBean); - Map> prodRuleContextMap = prodRuleDataContext.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey)); + List prodRuleDataContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); + Map> prodRuleContextMap = prodRuleDataContextList.stream().collect(Collectors.groupingBy(MesProdRuleContext::getForeignKey)); + + //生产过程控制非排序打印机配置【物料级别=1, 默认打印机=2】 + Boolean pcNosortPrinterCfg = getPcNosortPrinterCfg(reqBean.getOrganizeCode()); + //保存零件数据信息 + Map partDataMap = savePartDataMap(reqBean, resultBean, stepResult, prodRuleDataContextList, pcNosortPrinterCfg); + //需要打印的数据 String 是打印模板code Map> 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 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 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 savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List prodRuleDataContextList, Boolean pcNosortPrinterCfg) { + if (!pcNosortPrinterCfg) return null; + //获取上下文零件数据信息 + List 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) stepResult.getObj() : null; + } + + //生产过程控制非排序打印机配置【物料级别=1, 默认打印机=2】 + private Boolean getPcNosortPrinterCfg(String organizeCode) { + List 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) { diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 3c7a89c..83b2a03 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -908,4 +908,7 @@ public class MesPcnExtConstWords { //由前端直接渲染模版的标志 public static final String TEMPLATE_CUSTOM_HTML = "TEMPLATE_CUSTOM_HTML"; + //生产过程控制非排序打印机配置【物料级别=1, 默认打印机=2】 + public static final String PRODUCTION_CONTROL_NOSORT_PRINTER_CFG = "PRODUCTION_CONTROL_NOSORT_PRINTER_CFG"; + }