diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java index 5e79f0f..eac46c4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java @@ -32,7 +32,7 @@ import java.util.stream.Collectors; /** * @Description : 发送加工参数 - * @Author : zxw + * @Author : wangjie **/ @Slf4j @Service("mesSendEquipParamsCmdStepService") @@ -74,7 +74,7 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { //获取生产线信息 MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - //搜集加工参数关联ID集合 + //搜集加工参数关联ID集合 根据生产线类型区分 List sourceIdList = getEquipmentProdParamCfgSourceIdList(productionProcessContext, prodRuleContextList, workCenter); //根据来源ID查询设备加工参数信息 @@ -119,7 +119,7 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { productionPsOutContexts.stream().filter(i -> (null != i && !StringUtils.isEmpty(i.getForeignKey()) && i.getForeignKey().compareTo(o.getForeignKey()) == 0)).findFirst(); - doSendEquipParamsCmd(reqBean, resultBean, o, workCenter, cellEquipContext, eppcMap2SourceId, evMap, productionProcessContext, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); + doSendEquipParamsCmd(reqBean, resultBean, o, cellEquipContext, eppcMap2SourceId, evMap, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); }); @@ -129,8 +129,10 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { //搜集加工参数关联ID集合 private List getEquipmentProdParamCfgSourceIdList(MesProductionProcessContext productionProcessContext, List prodRuleContextList, MesWorkCenter workCenter) { if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()) { + //非排序 return prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPid()))).map(MesProdRuleContext::getPid).collect(Collectors.toList()); } else { + //排序 List sourceIdList = null; for (MesProdRuleContext prodRuleContext : prodRuleContextList) { if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue; @@ -144,18 +146,8 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { } //发送设备加工参数 - private void doSendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesWorkCenter workCenter, MesCellEquipContext cellEquipContext, - Map> eppcMap2SourceId, Map evMap, MesProductionProcessContext productionProcessContext, String productResult, - Optional productionPartContextOp, Optional productionPsInContextOp, Optional productionPsOutContextOp) { - if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()) - doSendEquipParamsCmdNosort(reqBean, resultBean, prodRuleContext, cellEquipContext, eppcMap2SourceId, evMap, productionProcessContext, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); - else - doSendEquipParamsCmdSort(reqBean, resultBean, prodRuleContext, cellEquipContext, eppcMap2SourceId, evMap, productionProcessContext, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); - } - - //发送设备加工参数【非排序】 - private void doSendEquipParamsCmdNosort(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesCellEquipContext cellEquipContext, - Map> eppcMap2SourceId, Map evMap, MesProductionProcessContext productionProcessContext, String productResult, + private void doSendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesCellEquipContext cellEquipContext, + Map> eppcMap2SourceId, Map evMap, String productResult, Optional productionPartContextOp, Optional productionPsInContextOp, Optional productionPsOutContextOp) { //当前加工规则的PID对应的设备加工参数 @@ -183,7 +175,7 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { evMap.remove(equipmentProdParamCfgOp.get().getId()); //数据转换 - String matchValue = transferValue(matchRule, reqBean, prodRuleContext, productionProcessContext, productResult, productionPartContext, productionPsInContext, productionPsOutContext); + String matchValue = transferValue(matchRule, reqBean, prodRuleContext, productResult, productionPartContext, productionPsInContext, productionPsOutContext); if (StringUtils.isEmpty(matchValue)) { this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("发送设备加工参数:[%s]未匹配到业务数据", matchRule), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); @@ -210,14 +202,8 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { } - //发送设备加工参数【排序】 - private void doSendEquipParamsCmdSort(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesCellEquipContext cellEquipContext, - Map> eppcMap2SourceId, Map evMap, MesProductionProcessContext productionProcessContext, String productResult, - Optional productionPartContextOp, Optional productionPsInContextOp, Optional productionPsOutContextOp) { - } - //数据转换 - private String transferValue(String matchRule, StationRequestBean reqBean, MesProdRuleContext prodRuleContext, MesProductionProcessContext productionProcessContext, String productResult, + private String transferValue(String matchRule, StationRequestBean reqBean, MesProdRuleContext prodRuleContext, String productResult, MesProductionPartContext productionPartContext, MesProductionPsInContext productionPsInContext, MesProductionPsOutContext productionPsOutContext) { switch (matchRule) { case "%RESULT%" : diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepServiceBak.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepServiceBak.java deleted file mode 100644 index 7f50af7..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepServiceBak.java +++ /dev/null @@ -1,162 +0,0 @@ -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.api.busi.IWriteVariableService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; -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.MesEquipmentProdParamCfg; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; -import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; -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.MesEquipmentProdParamCfgRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository; -import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * @Description : 发送加工参数 - * @Author : zxw - **/ -@Slf4j -@Service("mesSendEquipParamsCmdStepServiceBak") -public class MesSendEquipParamsCmdStepServiceBak extends BaseStepService { - - @Autowired - private IMesProductionProcessContextStepService productionProcessContextStepService; - - @Autowired - private IMesProductionDispatchContextStepService productionDispatchContextStepService; - - @Autowired - private IWriteVariableService writeVariableService; - - @Autowired - private MesEquipmentVariableRepository mesEquipmentVariableRepository; - - @Autowired - private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository; - - - @Override - public StepResult execute(StationRequestBean reqBean) { - - StationResultBean resultBean = new StationResultBean(); - - StepResult stepResult = StepResult.getSuccessComplete(); - - //获取工步参数 - Optional> stepParamMap = getStepParams(reqBean); - - //获取上下文信息 - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap); - - //当前工位使用的设备 - MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); - - //获取上下文加工规则数据信息集合 - List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); - - if (CollectionUtils.isEmpty(prodRuleContextList)) { - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!"); - } - List mesEquipmentVariableList = new ArrayList<>(); - List mesEquipmentProdParamCfgList = new ArrayList<>(); - Map> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList); - - - mesEquipmentVariableMap.forEach((k, v) -> { - v.stream().forEach(mesEquipmentProdParamCfg -> { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean); - MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean); - if (mesEquipmentVariable == null) { - return; - } - mesEquipmentVariableList.add(mesEquipmentVariable); - mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg); - execSendEquipParamsCmd(reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), k, stepParamMap); - }); - }); - - - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送加工参数成功!"); - } - - /** - * 根据排序和非排序 获取对应的加工参数 - * @param reqBean - * @param prodRuleContextList - * @param mesEquipmentProdParamCfgList - * @return - */ - private Map> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List prodRuleContextList, List mesEquipmentProdParamCfgList) { - - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean); - - Map> map = new HashMap<>(); - for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) { - List mesEquipmentProdParamCfgs= new ArrayList<>(); - //从上下文中取出生产线对象 - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - // 获取加工参数 - if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()){ - - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(mesProdRuleContext.getPid(), "sourceId", ddlPackBean); - mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); - } else { - MesWorkCenter mesWorkCenter = new MesWorkCenter(); - mesWorkCenter.setWorkCenterCode(reqBean.getWorkCenterCode()); - List assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter); - List sourceIds = assemblyDataContext.stream().map(MesProductionAssemblyContext::getSourceId).collect(Collectors.toList()); - - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getInPackList(sourceIds, "sourceId", ddlPackBean); - mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); - } - if (!CollectionUtils.isEmpty(mesEquipmentProdParamCfgs)) { - mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgs.stream().distinct().collect(Collectors.toList()); - } - map.put(mesProdRuleContext.getForeignKey(), mesEquipmentProdParamCfgs); - } - return map; - } - - private void execSendEquipParamsCmd(StationRequestBean reqBean, - String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Optional> stepParamMap) { - //最大重试次数[工步参数] - Integer maxRetryTimes = getMaxRetryTimes(stepParamMap); - - writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes); - } - - //最大重试次数[工步参数] - private Integer getMaxRetryTimes(Optional> stepParamMap) { - Integer maxRetryTimes = null; - try { - maxRetryTimes = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.MAX_RETRY_TIMES)) ? Integer.valueOf(stepParamMap.get().get(MesPcnExtConstWords.MAX_RETRY_TIMES).getParamValue()) : null; - } catch (NumberFormatException e) { - } - return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : 3; - } - - -}