From dd0cf7f1b192532f65ff6bbf49792a76fc687967 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Wed, 12 Feb 2025 17:56:30 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=2044248=20https?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/base/MesWhiteController.java | 40 +++++++++++++++++++--- .../mes/pcn/apiservice/model/MesPictureModel.java | 10 ++++++ 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesPictureModel.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesWhiteController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesWhiteController.java index c75ac3b..6957dcb 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesWhiteController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesWhiteController.java @@ -1,20 +1,32 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.model.MesPictureModel; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.MesConfigService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.MesProduceSnExtService; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.hutool.json.JSONUtil; +import io.swagger.annotations.Api; +import jodd.util.Base64; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.nio.file.Files; @RestController @RequestMapping("/white") +@Api(tags = "白名单") +@Slf4j public class MesWhiteController { @Autowired private MesProduceSnExtService mesProduceSnExtService; + @Autowired + private MesConfigService mesConfigService; + @GetMapping("/mesPartSap/{productSn}/{organizeCode}") public ResultBean getPartNo(@PathVariable String productSn,@PathVariable String organizeCode){ @@ -27,4 +39,24 @@ public class MesWhiteController { return ResultBean.success("查询成功").setResultObject(partNo); } + + @PostMapping("/picture") + public ResultBean savePicture(@RequestBody MesPictureModel model){ + + String localUrl = mesConfigService.getCfgValue(model.getOrganizeCode(), "LOCAL_PICTURE_ABS_URL"); + File file = new File(localUrl+model.getFileName()); + byte[] decode = Base64.decode(model.getFile()); + OutputStream outputStream; + try { + outputStream = Files.newOutputStream(file.toPath()); + outputStream.write(decode); + outputStream.close(); + } catch (IOException e) { + log.error("保存图片出错:{}",e.getMessage()); + log.error("入参为:{}", model); + } + return ResultBean.success("查询成功"); + + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesPictureModel.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesPictureModel.java new file mode 100644 index 0000000..64d3d49 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesPictureModel.java @@ -0,0 +1,10 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.model; + +import lombok.Data; + +@Data +public class MesPictureModel { + private String file; + private String fileName; + private String organizeCode; +} From 3fed32bc15676929f0b59d3d5188a32eee4da985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=9D=B0?= Date: Thu, 13 Feb 2025 13:20:04 +0800 Subject: [PATCH 2/3] revert 57d8fbab914c2f099dcd0120345c7076339e5d1e MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert 45028 批量手动报工页面增加“过账日期”选择条件 --- .../ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 93081e8..81dc463 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -1014,7 +1014,6 @@ public class MesWorkOrderService implements IMesWorkOrderService { if (Objects.isNull(mesWorkOrderDb)) { MesPcnException.throwMesBusiException("工单id为【%s】工单信息不存在", mesWorkOrder.getId()); } - mesWorkOrderDb.setDescription(mesWorkOrder.getDescription()); //查询物料信息 MesPart mesPart = iMesPartService.getMesPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode()); //查询产线信息 @@ -1056,7 +1055,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { if (Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())) { //保存数据 List mesProductOffLineList = new ArrayList<>(); - String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription(); + String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime,mesBoms.size())); } From 17b7c10a7a4c8888a0948efa55e7c5a8b253c9d4 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 26 Feb 2025 15:08:32 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=89=93=E5=8D=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=90=88=E5=B9=B6test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/pcn/api/base/IMesTemplateService.java | 6 + .../mes/pcn/api/busi/IMesPrintedSnLogService.java | 5 + .../serviceimpl/base/MesTemplateServiceImpl.java | 55 ++++++++ .../busi/MesPrintedSnLogServiceImpl.java | 14 ++ .../serviceimpl/busi/MesProduceSnPrintService.java | 9 +- .../print/strategy/CustomFieldPrintStrategy.java | 156 +++++++++++++++++++++ .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 4 + 7 files changed, 247 insertions(+), 2 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesTemplateService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesTemplateService.java index 114e632..8decb81 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesTemplateService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesTemplateService.java @@ -1,8 +1,12 @@ package cn.estsh.i3plus.ext.mes.pcn.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldValue; import io.swagger.annotations.ApiOperation; +import java.util.List; +import java.util.Map; + public interface IMesTemplateService { /** @@ -16,4 +20,6 @@ public interface IMesTemplateService { @ApiOperation(value = "按条件查询", notes = "按条件查询") MesLabelTemplate getLabelTemplate(String templateCode, String organizeCode); + + Map queryMesLabelTemplateParamPartValue(String partNo, String labelTemplate, String organizeCode); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPrintedSnLogService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPrintedSnLogService.java index a4b153e..99c9830 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPrintedSnLogService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPrintedSnLogService.java @@ -4,6 +4,8 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel; import cn.estsh.i3plus.pojo.mes.bean.MesPrintedSnLog; import io.swagger.annotations.ApiOperation; +import java.util.Map; + /** * @Description : 条码打印记录表 * @Reference : @@ -16,6 +18,9 @@ public interface IMesPrintedSnLogService { @ApiOperation(value = "条码打印记录表") MesPrintedSnLog getMesPrintedSnLog(String userName, String organizeCode, MesProduceSnPrintDataModel printDataModel); + @ApiOperation(value = "条码打印记录表") + MesPrintedSnLog getMesCustomPrintedSnLog(String userName, String organizeCode, MesProduceSnPrintDataModel printDataModel, Map printContext); + @ApiOperation(value = "写入条码打印记录表") void insertMesPrintedSnLog(MesPrintedSnLog mesPrintedSnLog,String userName); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesTemplateServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesTemplateServiceImpl.java index 86eaeb7..992c00c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesTemplateServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesTemplateServiceImpl.java @@ -7,15 +7,25 @@ import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldInfo; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldValue; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateParam; +import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateFieldInfoRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateFieldValueRepository; import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateParamRepository; import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.hutool.core.util.ObjectUtil; import org.apache.shiro.util.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.TreeMap; /** * @Description : 打印模板 @@ -33,6 +43,12 @@ public class MesTemplateServiceImpl implements IMesTemplateService { @Autowired private MesLabelTemplateParamRepository mesLabelTemplateParamRDao; + @Autowired + private MesLabelTemplateFieldInfoRepository labelTemplateFieldInfoRDao; + + @Autowired + private MesLabelTemplateFieldValueRepository labelTemplateFieldValueRDao; + @Override public MesLabelTemplate getMesLabelTemplate(String templateCode,String organizeCode) { // 根据标签模板代码,查询【MES_标签模板表】,获取对应的方法代码 @@ -70,4 +86,43 @@ public class MesTemplateServiceImpl implements IMesTemplateService { } return mesLabelTemplate; } + + @Override + public Map queryMesLabelTemplateParamPartValue(String partNo, String labelTemplate, String organizeCode) { + if (StringUtil.isEmpty(labelTemplate)) { + MesPcnException.throwMesBusiException("零件号【%s】未维护\"零件条码匹配模板\"字段值", partNo); + } + + Map result = new HashMap<>(); + List templateFieldInfos = labelTemplateFieldInfoRDao.findByProperty( + new String[]{"templateCode", "templateFieldType", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesPcnConstWords.ORGANIZE_CODE}, + new Object[]{labelTemplate, MesExtEnumUtil.LABEL_TEMPLATE_FIELD_TYPE.CUSTOM.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), organizeCode}); + Map templateFieldInfoMap = new TreeMap<>(); + for (MesLabelTemplateFieldInfo info : templateFieldInfos) { + templateFieldInfoMap.putIfAbsent(info.getTemplateParam(), info); + } + + List fieldValueList = labelTemplateFieldValueRDao.findByProperty( + new String[]{"partNo", "templateCode", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesPcnConstWords.ORGANIZE_CODE}, + new Object[]{partNo, labelTemplate, CommonEnumUtil.IS_VAILD.VAILD.getValue(), + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), organizeCode}); + if (!CollectionUtils.isEmpty(fieldValueList)) { + for (MesLabelTemplateFieldValue fieldValue : fieldValueList) { + if (StringUtil.isEmpty(fieldValue.getTemplateParam())) { + continue; + } + MesLabelTemplateFieldInfo templateFieldInfo = templateFieldInfoMap.remove(fieldValue.getTemplateParam()); + if (templateFieldInfo != null) { + result.put(templateFieldInfo.getTemplateParam(), ObjectUtil.clone(fieldValue.getFieldValue())); + } + } + } + + for (Map.Entry entry : templateFieldInfoMap.entrySet()) { + MesLabelTemplateFieldInfo fieldInfo = entry.getValue(); + result.put(fieldInfo.getTemplateParam(), null); + } + return result; + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPrintedSnLogServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPrintedSnLogServiceImpl.java index 0628087..cd69a60 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPrintedSnLogServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPrintedSnLogServiceImpl.java @@ -13,6 +13,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Map; + /** * @Description : 条码打印记录表 * @Reference : @@ -39,6 +41,18 @@ public class MesPrintedSnLogServiceImpl implements IMesPrintedSnLogService { } @Override + public MesPrintedSnLog getMesCustomPrintedSnLog(String userName, String organizeCode, MesProduceSnPrintDataModel printDataModel, Map printContext) { + MesPrintedSnLog snLog = new MesPrintedSnLog(); + BeanUtil.copyProperties(printDataModel, snLog); + snLog.setOrganizeCode(organizeCode); + snLog.setPrintContext(printContext); + snLog.setPrintData(JSONObject.toJSONString(printContext)); + snLog.setPrintType(MesExtEnumUtil.PRINT_LOG_TYPE.PRINT_LOG_TYPE_10.getValue()); + ConvertBean.serviceModelInitialize(snLog, userName); + return snLog; + } + + @Override public void insertMesPrintedSnLog(MesPrintedSnLog mesPrintedSnLog, String userName) { MesPrintedSnLog snLog = new MesPrintedSnLog(); BeanUtil.copyProperties(mesPrintedSnLog, snLog, MesPcnExtConstWords.BASE_BEAN_FIELDS); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java index e85f344..14703a9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java @@ -225,8 +225,13 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { } MesProduceSnPrintDataModel model = new MesProduceSnPrintDataModel(); BeanUtil.copyProperties(snLog, model); - model.setPrintDate(TimeTool.getNowTime(true)); - mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + if (CollectionUtils.isEmpty(snLog.getPrintContext())) { + model.setPrintDate(TimeTool.getNowTime(true)); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().add(model); + } else { + snLog.getPrintContext().put(MesPcnExtConstWords.PRINT_DATE, TimeTool.getNowTime(true)); + mesProduceSnPrintModel.getPrintContextList().add(snLog.getPrintContext()); + } //记录打印日志 mesPrintedSnLogService.insertMesPrintedSnLog(snLog, model.getUserName()); return mesProduceSnPrintModel; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java new file mode 100644 index 0000000..18a8169 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java @@ -0,0 +1,156 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService; +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.busi.IMesPrintedSnLogService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +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.busi.ISyncFuncService; +import cn.estsh.i3plus.mes.pcn.util.DateUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import cn.estsh.i3plus.pojo.mes.bean.MesNumberRule; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.*; + +/** + * @Description :通用打印方式 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/9/26 18:20 + * @Modify: + **/ +@Component +@Slf4j +public class CustomFieldPrintStrategy implements IPrintTemplateStrategyService { + @Autowired + private ISyncFuncService syncFuncService; + + @Autowired + private SnowflakeIdMaker snowflakeIdMaker; + + @Autowired + private IMesPartService mesPartService; + + @Autowired + private IMesPrintedSnLogService mesPrintedSnLogService; + + @Autowired + private IMesCustomerPartService mesCustomerPartService; + + @Autowired + private IMesTemplateService mesTemplateService; + + @Override + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep) { + String organizeCode = mesProduceSnPrintModel.getOrganizeCode(); + //物料信息 + MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode); + MesCustomerPart customerPart = (!Objects.isNull(genSerialNoModel) && !CollectionUtils.isEmpty(genSerialNoModel.getDataMap()) && genSerialNoModel.getDataMap().containsKey(MesCustomerPart.class.getSimpleName())) ? (MesCustomerPart) genSerialNoModel.getDataMap().get(MesCustomerPart.class.getSimpleName()) : mesCustomerPartService.getMesCustomerPart(organizeCode,mesProduceSnPrintModel.getPartNo()); + Map customParamValue = mesTemplateService.queryMesLabelTemplateParamPartValue(mesPart.getPartNo(), mesPart.getProductLabelTemplate(), organizeCode); + if (!isStep){ + if (!Objects.isNull(customerPart)) { + genSerialNoModel.setCustPartNo(customerPart.getCustPartNo()); + } + for (int i = 0; i < mesProduceSnPrintModel.getPrintQty(); i++) { + //保存条码信息 + MesProduceSn produceSn = generateMesProduceSn(mesPart, syncFuncService.syncSerialNo(genSerialNoModel.partSnParam(mesPart.getPartSnParam()), mesProduceSnPrintModel.getUserName(), organizeCode, 1).getResultList().get(0).toString(), mesProduceSnPrintModel.getUserName(), mesProduceSnPrintModel.getQty()); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(produceSn, customerPart); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().clear(); + mesProduceSnPrintModel.getMesProduceSnList().add(produceSn); + Map printTemplateData = new HashMap<>(getPrintContextMap(produceSn, customerPart)); + printTemplateData.putAll(customParamValue); + mesProduceSnPrintModel.getPrintContextList().add(printTemplateData); + //保存打印记录 + mesProduceSnPrintModel.getMesPrintedSnLogList().add(mesPrintedSnLogService.getMesCustomPrintedSnLog(mesProduceSnPrintModel.getUserName(), organizeCode, printDataModel, printTemplateData)); + } + }else{ + MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0); + //封装打印信息 + MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, customerPart); + mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().clear(); + Map printTemplateData = new HashMap<>(getPrintContextMap(mesProduceSn, customerPart)); + printTemplateData.putAll(customParamValue); + List> printDataMapList = new ArrayList<>(); + printDataMapList.add(printTemplateData); + mesProduceSnPrintModel.getPrintContextList().add(packResultMap(mesProduceSnPrintModel, printDataMapList)); + + //保存打印记录 + mesProduceSnPrintModel.getMesPrintedSnLogList().add(mesPrintedSnLogService.getMesCustomPrintedSnLog(mesProduceSnPrintModel.getUserName(), organizeCode, printDataModel, printTemplateData)); + } + return mesProduceSnPrintModel; + } + + private MesProduceSn generateMesProduceSn(MesPart mesPart, String sn, String userName, Double qty) { + MesProduceSn mesProduceSn = new MesProduceSn(); + mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + ""); + mesProduceSn.setProductSn(sn); + mesProduceSn.setCustSn(sn); + mesProduceSn.setPartNo(mesPart.getPartNo()); + mesProduceSn.setPartName(mesPart.getPartName()); + mesProduceSn.setProcessLabelTemplate(mesPart.getProcessLabelTemplate()); + mesProduceSn.setCustLabelTemplate(mesPart.getCustLabelTemplate()); + mesProduceSn.setProdLabelTemplate(mesPart.getProductLabelTemplate()); + mesProduceSn.setQty(qty); + mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()); + mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + mesProduceSn.setLotNo(TimeTool.getToday()); + mesProduceSn.setPrintCount(MesPcnExtConstWords.ONE); + mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue()); + mesProduceSn.setOrganizeCode(mesPart.getOrganizeCode()); + ConvertBean.serviceModelInitialize(mesProduceSn, userName); + return mesProduceSn; + } + + private MesProduceSnPrintDataModel getModel(MesProduceSn produceSn, MesCustomerPart customerPart) { + MesProduceSnPrintDataModel mesProduceSnPrintDataModel = new MesProduceSnPrintDataModel(); + mesProduceSnPrintDataModel.setPartNo(produceSn.getPartNo()); + mesProduceSnPrintDataModel.setPartName(produceSn.getPartName()); + if (!Objects.isNull(customerPart)) { + mesProduceSnPrintDataModel.setCustPartNo(customerPart.getCustPartNo()); + } + mesProduceSnPrintDataModel.setBarcode(produceSn.getProductSn()); + mesProduceSnPrintDataModel.setPrintDate(TimeTool.getNowTime(true)); + mesProduceSnPrintDataModel.setUserName(produceSn.getCreateUser()); + mesProduceSnPrintDataModel.setProductDate(TimeTool.parseStringFormat(produceSn.getLotNo(), DateUtil.SHORT_FORMAT, "yyyy/MM/dd")); + return mesProduceSnPrintDataModel; + } + + private Map getPrintContextMap(MesProduceSn produceSn, MesCustomerPart customerPart) { + Map result = new HashMap<>(); + result.put(MesPcnExtConstWords.PART_NO, produceSn.getPartNo()); + result.put(MesPcnExtConstWords.PART_NAME, produceSn.getPartName()); + if (!Objects.isNull(customerPart)) { + result.put(MesPcnExtConstWords.CUST_PART_NO, customerPart.getCustPartNo()); + } + result.put(MesPcnExtConstWords.PRINT_BAR_CODE, produceSn.getProductSn()); + result.put(MesPcnExtConstWords.PRINT_DATE, TimeTool.getNowTime(true)); + result.put(MesPcnExtConstWords.USER_NAME, produceSn.getCreateUser()); + return result; + } + + private Map packResultMap(MesProduceSnPrintModel printModel, List> printTemplateDateList) { + Map resultMap = new HashMap<>(); + resultMap.put(MesPcnExtConstWords.LABEL_TEMPLATE, printModel.getMesLabelTemplate()); + resultMap.put(MesPcnExtConstWords.TEMPLATE_DATA, printTemplateDateList); + resultMap.put(MesPcnExtConstWords.TEMPLATE_CODE, printModel.getMesLabelTemplate().getTemplateCode()); + resultMap.put(MesPcnExtConstWords.PRINTER, printModel.getPrinter()); + return resultMap; + } +} 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 e9d756c..6774f19 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 @@ -707,6 +707,8 @@ public class MesPcnExtConstWords { public static final String QR_CODE = "qrCode"; //条形码 public static final String BAR_CODE = "barCode"; + //打印条形码 + public static final String PRINT_BAR_CODE = "barcode"; //竖杠 public static final String VERTICAL_BAR = "|"; @@ -736,6 +738,8 @@ public class MesPcnExtConstWords { public static final String PARAM = "param"; //成品零件号 public static final String FG_PART_NO = "fgPartNo"; + // 打印日期 + public static final String PRINT_DATE = "printDate"; // 打印时间 public static final String PRINT_TIME = "printTime"; //替换数