From c359d385abc239d2435c12e95fdd991d3f0db0c4 Mon Sep 17 00:00:00 2001 From: administrator Date: Fri, 7 Jun 2024 11:56:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E4=B8=BB=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E4=B8=BB=E5=B7=A5=E6=AD=A5=E5=AE=8C=E6=88=90,=E7=BC=BA?= =?UTF-8?q?=E5=B0=91=E5=B0=81=E8=A3=85=E6=95=B0=E6=8D=AE=E7=9A=84=E7=AD=96?= =?UTF-8?q?=E7=95=A5,=E5=BE=85=E6=A0=87=E7=AD=BE=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=90=8E=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../print/IPrintTemplateStrategyService.java | 22 +++++ .../print/strategy/GzPrintSnStrategy.java | 29 ++++++ .../step/MesProductSnPrintStepService.java | 108 +++++++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GzPrintSnStrategy.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java new file mode 100644 index 0000000..6eaf3de --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/IPrintTemplateStrategyService.java @@ -0,0 +1,22 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print; + +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; + +import java.util.List; + +/** + * @Description : 根据不同的条码,封装不同的数据来源 content 是打印模板,dataList + * @Reference : + * @Author : Castle + * @CreateDate : 2024/6/6 16:39 + * @Modify: + **/ +public interface IPrintTemplateStrategyService { + /** + * dataList + * 需要打印的数据,封装数据 + * @param sn + * @return + */ + List execute(MesProductionPsOutContext sn , String organizeCode); +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GzPrintSnStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GzPrintSnStrategy.java new file mode 100644 index 0000000..60f2920 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/GzPrintSnStrategy.java @@ -0,0 +1,29 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy; + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : 广州打印主条码使用 + * @Reference : + * @Author : Castle + * @CreateDate : 2024/6/6 17:03 + * @Modify: + **/ +@Service +@Slf4j +public class GzPrintSnStrategy implements IPrintTemplateStrategyService { + @Autowired + private MesLabelTemplateRepository labelTemplateRao; + @Override + public List execute(MesProductionPsOutContext sn, String organizeCode) { + //1.根据 templateCode + return null; + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java new file mode 100644 index 0000000..d701629 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java @@ -0,0 +1,108 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +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.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateRepository; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description : 打印主条码 + * @Reference : + * @Author : Castle + * @CreateDate : 2024/6/6 13:39 + * @Modify: + **/ +@Service +public class MesProductSnPrintStepService extends BaseStepService { + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired + private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService; + + @Autowired + private MesLabelTemplateRepository labelTemplateRao; + + @Override + public StepResult execute(StationRequestBean reqBean) { + String organizeCode = reqBean.getOrganizeCode(); + StationResultBean resultBean = new StationResultBean(); + StepResult stepResult = StepResult.getSuccessComplete(); + //需要打印的数据 + Map> resultData = new HashMap<>(); + //用于保存客户模板代码 和 模板信息关系 + Map labelTemplateMap = new HashMap<>(); + //返回打印标识 给前端 + //1. 获取上下文中生成的主条码 + List productionPsOutContextList = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean); + //2. 获取条码需要模板、模板代码、打印机 --- 循环遍历条码 封装数据 + for (MesProductionPsOutContext sn : productionPsOutContextList) { + String custLabelTemplate = sn.getCustLabelTemplate(); + MesLabelTemplate labelTemplate; + // 查模板代码 + if (!labelTemplateMap.containsKey(custLabelTemplate)) { + labelTemplate = getLabelTemplate(custLabelTemplate, organizeCode); + //模板信息丢失抛出异常 + if (labelTemplate == null) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的模板信息丢失,请配置!", sn.getPartNo(),custLabelTemplate)); + } + labelTemplateMap.put(custLabelTemplate, labelTemplate); + }else { + labelTemplate = labelTemplateMap.get(custLabelTemplate); + } + //根据反射获取策略类--封装打印数据 + String methodCode = labelTemplate.getMethodCode(); + //模板信息丢失抛出异常 + if (methodCode == null) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("零件号[%s]的模板代码[%s]的反射类丢失,请配置!", sn.getPartNo(),custLabelTemplate)); + } + IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); + List snData = strategyService.execute(sn, organizeCode); + if (resultData.containsKey(labelTemplate.getTemplateCode())){ + List printData = resultData.get(labelTemplate.getTemplateCode()); + printData.addAll(snData); + }else { + resultData.put(labelTemplate.getTemplateCode(),snData); + } + } + //前端接收到busiTyep是customComponent,并且 dataType是file类型的消息,就需要打印后续消息里的数据,一个模板对应多个打印数据 + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()); + resultBean.setResultObj(resultData); + //3. 发送数据给到前端 + this.sendMessage(reqBean,resultBean); + + return stepResult; + } + + /** + * 根据templateCode 获取模板信息 + * @param templateCode + * @param organizeCode + * @return + */ + private MesLabelTemplate getLabelTemplate(String templateCode,String organizeCode) { + DdlPackBean templatePackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(templateCode,"templateCode",templatePackBean); + List mesLabelTemplateList = labelTemplateRao.findByHqlWhere(templatePackBean); + return mesLabelTemplateList.isEmpty() ? null : mesLabelTemplateList.get(0); + } +}