From c2088d7828e7914ec3a4823a29bb5f8e6fb3a5bf Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 5 Jun 2024 10:10:25 +0800 Subject: [PATCH] step --- .../IMesProductionDispatchContextStepService.java | 22 +++++ ...MesNumberRuleMatchRegularExpressionService.java | 10 -- .../step/MesAssemblyShowNosortStepService.java | 110 ++++++++++++++++++--- .../step/MesAssemblyShowSortStepService.java | 2 + .../MesProductionDispatchContextStepService.java | 43 ++++++++ 5 files changed, 161 insertions(+), 26 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java index 4b0cfda..b91fd95 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java @@ -172,4 +172,26 @@ public interface IMesProductionDispatchContextStepService { @ApiOperation(value = "删除上下文产品加工规则信息集合") void deleteProdRuleDataContext(StationRequestBean reqBean); + + + + + + + @Deprecated + @ApiOperation(value = "获取上下文产出条码数据信息集合") + List getOutProduceSnDataContext(StationRequestBean reqBean); + + @Deprecated + @ApiOperation(value = "验证上下文产出条码数据信息集合是否存在") + Boolean checkOutProduceSnDataIsExistContext(StationRequestBean reqBean); + + @Deprecated + @ApiOperation(value = "保存上下文产出条码数据信息集合", notes = "[JSON]List") + Boolean saveOutProduceSnDataContext(StationRequestBean reqBean, List outProduceSnDataList); + + @Deprecated + @ApiOperation(value = "删除上下文产出条码数据信息集合") + void deleteOutProduceSnDataContext(StationRequestBean reqBean); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java index 7035f6b..1ae4b48 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java @@ -4,9 +4,6 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - /** * 正则表达式匹配 */ @@ -24,12 +21,5 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul } - public static void main(String[] args) { - Pattern pattern = Pattern.compile("12345*54321"); - Matcher matcher = pattern.matcher("12345*54321"); - while (matcher.find()) { - System.out.println(matcher.group()); - } - } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java index 4f4a421..f64eda7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java @@ -7,14 +7,18 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepServ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.model.AttrBean; 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.util.MesExtEnumUtil; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -73,10 +77,16 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { //根据现有数据【产出零件数据】【进料零件条码信息】比对上下文中已经存在的加工规则数据信息集合, 没有加工规则的数据进行查询 if (CollectionUtils.isEmpty(prodRuleContextList)) prodRuleContextList = new ArrayList<>(); + Integer initSize = prodRuleContextList.size(); + doHandleProdRuleData(reqBean, resultBean, stepResult, workCenter, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList); + if (prodRuleContextList.size() != initSize) productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList); + + //显示装配件信息 + showProductionAssembly(reqBean, resultBean, workCenter, cellEquipContext, prodRuleContextList); - return stepResult; + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "装配件扫描项已查询完毕,请查看!"); } private void doHandleProdRuleData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, MesCellEquipContext cellEquipContext, @@ -183,21 +193,6 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { return prodRuleNosortCfgList; } - //搜集进料零件号匹配的产品加工规则 - private List filterProdRuleNosortCfgList(List prodRuleNosortCfgList, String partNo) { - return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNo()) && o.getInPartNo().equals(partNo))).collect(Collectors.toList()); - } - - //搜集进料零件规则有值的产品加工规则 - private List filterProdRuleNosortCfgList(List prodRuleNosortCfgList) { - return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNoRule()))).collect(Collectors.toList()); - } - - //根据产出零件分组数据 - private Map> groupProdRuleNosortCfgList(List prodRuleNosortCfgList) { - return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProdRuleNosortCfg::getOutPartNo)); - } - //存在【产出零件数据】信息, 存在【进料零件条码信息】 获取匹配当前产出零件的加工规则数据 private void doHandleProdRuleDataByProductionPartAndProductSn(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, MesCellEquipContext cellEquipContext, List prodRuleContextList, List productionPartContextList, List productionPsInContextList, List outPartNoList, Integer foreignKey) { @@ -247,4 +242,87 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { } + //搜集进料零件号匹配的产品加工规则 + private List filterProdRuleNosortCfgList(List prodRuleNosortCfgList, String partNo) { + return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNo()) && o.getInPartNo().equals(partNo))).collect(Collectors.toList()); + } + + //搜集进料零件规则有值的产品加工规则 + private List filterProdRuleNosortCfgList(List prodRuleNosortCfgList) { + return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNoRule()))).collect(Collectors.toList()); + } + + //根据产出零件分组数据 + private Map> groupProdRuleNosortCfgList(List prodRuleNosortCfgList) { + return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProdRuleNosortCfg::getOutPartNo)); + } + + //显示装配件信息 + private Boolean showProductionAssembly(StationRequestBean reqBean, StationResultBean resultBean, MesWorkCenter workCenter, MesCellEquipContext cellEquipContext, List prodRuleContextList) { + + List attrBeanList = null; + + for (MesProdRuleContext prodRuleContext : prodRuleContextList) { + + if (null == prodRuleContext || StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue; + + //封装匹配当前设备的装配件信息 + List assemblyShowContextList = getAssemblyShowContextList(cellEquipContext, prodRuleContext.getAssemblyDataContext(workCenter)); + if (CollectionUtils.isEmpty(assemblyShowContextList)) continue; + + //装配件清单列表标题 + if (CollectionUtils.isEmpty(attrBeanList)) attrBeanList = dataAttrList(); + + //封装多表格 + resultBean.addStationResultBeans(new StationResultBean().dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLE.getValue()).dataAttrList(attrBeanList).resultList(assemblyShowContextList)); + + } + + if (CollectionUtils.isEmpty(resultBean.getStationResultBeans())) return false; + + resultBean.busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue()); + this.sendMessage(reqBean, resultBean); + + return true; + + } + + //封装匹配当前设备的装配件信息 + private List getAssemblyShowContextList(MesCellEquipContext cellEquipContext, List productionAssemblyContextList) { + if (CollectionUtils.isEmpty(productionAssemblyContextList)) return null; + List assemblyShowContextList = new ArrayList<>(); + for (MesProductionAssemblyContext item : productionAssemblyContextList) { + if (null == item) continue; + assemblyShowContextList.add(assemblyShowContext(item)); + } + assemblyShowContextList = assemblyShowContextList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesAssemblyShowContext::getRouteSeq)).collect(Collectors.toList()); + return assemblyShowContextList; + } + + //封装装配件信息 + private MesAssemblyShowContext assemblyShowContext(MesProductionAssemblyContext o) { + MesAssemblyShowContext assemblyShowContext = new MesAssemblyShowContext(); + BeanUtils.copyProperties(o, assemblyShowContext); + if (StringUtils.isEmpty(assemblyShowContext.getRouteSeq())) assemblyShowContext.setRouteSeq(MesPcnExtConstWords.ZERO); + if (MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue() == assemblyShowContext.getAssemblyStatus() && (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_50.getValue() == assemblyShowContext.getMatchType() || + MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_60.getValue() == assemblyShowContext.getMatchType())) assemblyShowContext.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()); + assemblyShowContext.setAssemblyStatusName(MesExtEnumUtil.ASSEMBLY_STATUS.valueOfDescription(o.getAssemblyStatus())); + if (MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue() != assemblyShowContext.getAssemblyStatus()) + assemblyShowContext.setColor(StringUtils.isEmpty(assemblyShowContext.getShowColor()) ? MesExtEnumUtil.COLOR.GREEN.getValue() : assemblyShowContext.getShowColor()); + return assemblyShowContext; + } + + //装配件清单列表标题 + private List dataAttrList() { + List attrBeanList = new ArrayList<>(); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.INDEX, "序号"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.WORK_ORDER_NO, "生产工单编号"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PART_NO, "零件编码"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.ASSEMBLY_PART_NO, "原料编码"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.ASSEMBLY_PART_NAME, "原料名称"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.ASSEMBLY_SN, "原料条码"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.ASSEMBLY_STATUS_NAME, "装配状态"); + return attrBeanList; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java index 2cdd15a..6a802f8 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java @@ -74,6 +74,8 @@ public class MesAssemblyShowSortStepService extends BaseStepService { if (!showProductionAssembly(reqBean, resultBean, workCenter, cellEquipContext, prodRuleContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前未查询到相关的装配件清单"); + productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList); + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "显示装配件扫描项成功!"); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java index 487f586..85ddecb 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java @@ -8,6 +8,7 @@ import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; @@ -388,4 +389,46 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PROD_RULE_DATA_CONTEXT); } + + + + + + + + + + + + @Deprecated + //获取上下文产出条码数据信息集合 + @Override + public List getOutProduceSnDataContext(StationRequestBean reqBean) { + String outProduceSnDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "OUT_PRODUCE_SN_DATA_CONTEXT"); + return !StringUtils.isEmpty(outProduceSnDataJson) ? JSONObject.parseArray(outProduceSnDataJson, MesProduceSn.class) : null; + } + + @Deprecated + //验证上下文产出条码数据信息集合是否存在 + @Override + public Boolean checkOutProduceSnDataIsExistContext(StationRequestBean reqBean) { + String outProduceSnDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "OUT_PRODUCE_SN_DATA_CONTEXT"); + return !StringUtils.isEmpty(outProduceSnDataJson) ? true : false; + } + + @Deprecated + //保存上下文产出条码数据信息集合 [JSON]List + @Override + public Boolean saveOutProduceSnDataContext(StationRequestBean reqBean, List outProduceSnDataList) { + if (CollectionUtils.isEmpty(outProduceSnDataList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "OUT_PRODUCE_SN_DATA_CONTEXT", JSONObject.toJSONString(outProduceSnDataList)); + } + + @Deprecated + //删除上下文产出条码数据信息集合 + @Override + public void deleteOutProduceSnDataContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "OUT_PRODUCE_SN_DATA_CONTEXT"); + } + }