diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/AbstractWriteVariableService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/AbstractWriteVariableService.java index ff42c52..fdcb0b2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/AbstractWriteVariableService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/AbstractWriteVariableService.java @@ -22,18 +22,16 @@ public abstract class AbstractWriteVariableService { * @param equipmentVariable * @param kepwareFlag */ - public MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey) { + public MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index) { // 需要不同的策略不同的转换方式 - String newValue = transferValue(reqBean, value, foreignKey); + String newValue = transferValue(reqBean, value, foreignKey, index); MesEquipVariableRwResult mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag); - /* if (mesEquipVariableRwResult.getIsSuccessed()) { - handlerValue(); - }*/ + return mesEquipVariableRwResult; } - public abstract String transferValue(StationRequestBean reqBean, String value, Integer foreignKey); + public abstract String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index); /* public abstract void handlerValue(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/CommonWriteVariableService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/CommonWriteVariableService.java index f12f9c7..6706087 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/CommonWriteVariableService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/CommonWriteVariableService.java @@ -12,7 +12,7 @@ public class CommonWriteVariableService extends AbstractWriteVariableService{ @Override - public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey) { + public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) { return value; } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/OrderWriteVariableService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/OrderWriteVariableService.java index 8843bb3..ae635a2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/OrderWriteVariableService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/OrderWriteVariableService.java @@ -2,7 +2,9 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.strategy; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,24 +26,21 @@ public class OrderWriteVariableService extends AbstractWriteVariableService{ private String orderNo; @Override - public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey) { + public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) { List productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean); - - MesProductionPartContext mesProductionPartContext = productionPartContextList.stream().filter(pductionPartContext -> Objects.equals(pductionPartContext.getForeignKey(), foreignKey)).findFirst().orElse(null); + MesProductionPartContext mesProductionPartContext = null; + if (index != null && foreignKey == null) { + mesProductionPartContext = productionPartContextList.get(index); + if (mesProductionPartContext == null || Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesProductionPartContext.getIsFinishCode())) { + return null; + } + } + mesProductionPartContext = productionPartContextList.stream().filter(pductionPartContext -> Objects.equals(pductionPartContext.getForeignKey(), foreignKey)).findFirst().orElse(null); if (mesProductionPartContext != null) { return mesProductionPartContext.getWorkOrderNo(); } - /* - for (MesProductionPartContext mesProductionPartContext : productionPartContextList) { - - if (orderNoList.contains(mesProductionPartContext.getWorkOrderNo())) { - continue; - } - orderNo = mesProductionPartContext.getWorkOrderNo(); - return mesProductionPartContext.getWorkOrderNo(); - }*/ return null; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/PartWriteVariableService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/PartWriteVariableService.java index d28f03a..972f4e6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/PartWriteVariableService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/strategy/PartWriteVariableService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.strategy; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,7 +26,7 @@ public class PartWriteVariableService extends AbstractWriteVariableService{ private String orderNo; @Override - public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey) { + public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) { List productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index b611067..f7cd9f0 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -11,10 +11,12 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import com.google.common.base.Objects; 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.ArrayList; import java.util.List; @@ -45,6 +47,9 @@ public class MesProductSnSaveStepService extends BaseStepService { StepResult stepResult = StepResult.getSuccessComplete(); + // 获取加工结果 + String result = mesProductionDispatchContextStepService.getProductResultContext(reqBean); + List mesProduceSnContexts = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean); List mesProduceSns = new ArrayList<>(); if (CollectionUtils.isEmpty(mesProduceSnContexts)) { @@ -53,7 +58,17 @@ public class MesProductSnSaveStepService extends BaseStepService { mesProduceSnContexts.forEach(mesProduceSnContext -> { MesProduceSn mesProduceSn = new MesProduceSn(); //todo 要根据不同的加工结果,返回不同的结果 要分排序和非排序, 排序只保存工单对应的装配件、非排序要保存主条码和装配件记录。 + + // 如果是报废或者可疑,需要编辑条码状态为不合格、并且nc判定需要新增一条记录 + if (StringUtils.isEmpty(result) || Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_OK.getValue(), result)) { + mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + } else if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), result)) { + mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()); + } else if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SUSPICIOUS.getValue(), result)) { + mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); + } mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); + mesProduceSns.add(mesProduceSn); }); mesProduceSnRepository.saveAll(mesProduceSns); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java index e30af40..6e6b130 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java @@ -29,9 +29,11 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; /** * @Description : 腔组发送加工参数 @@ -79,6 +81,8 @@ public class MesSendCavityGroupParamsCmdStepService extends BaseStepService { //获取腔组数据信息集合 List mesCavityGroupDetailCfgs = productionProcessContext.getCavityGroupDetailList(); + mesCavityGroupDetailCfgs = mesCavityGroupDetailCfgs.stream().sorted((o1, o2) -> o1.getSeq() - o2.getSeq()).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(mesCavityGroupDetailCfgs)) { return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到腔组信息"); } @@ -97,7 +101,10 @@ public class MesSendCavityGroupParamsCmdStepService extends BaseStepService { * @param mesCavityGroupDetailCfgs */ private void sendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, Optional> stepParamMap, MesCellEquipContext cellEquipContext, List mesCavityGroupDetailCfgs) { + int index = 0; + for (MesCavityGroupDetailCfg mesCavityGroupDetailCfg : mesCavityGroupDetailCfgs) { + index ++; // 获取加工参数 DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); DdlPreparedPack.getNumEqualPack(mesCavityGroupDetailCfg.getId(), "sourceId", ddlPackBean); @@ -112,16 +119,16 @@ public class MesSendCavityGroupParamsCmdStepService extends BaseStepService { if (mesEquipmentVariable == null) { continue; } - execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), null); + execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), null, index); } } } private void execSendEquipParamsCmd(AbstractWriteVariableService equipVariableRwExtService, StationRequestBean reqBean, - String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey) { + String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index) { - equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey); + equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, index); } 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 4dbeb9c..c136a4c 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 @@ -8,15 +8,14 @@ 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.MesDefectWarnConfig; -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.*; import cn.estsh.i3plus.pojo.mes.model.*; 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 cn.estsh.impp.framework.boot.util.SpringContextsUtil; import com.alibaba.fastjson.JSONObject; +import com.google.common.base.Objects; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -78,32 +77,30 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { List mesEquipmentVariableList = new ArrayList<>(); List mesEquipmentProdParamCfgList = new ArrayList<>(); - for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) { - // 获取加工参数 - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(mesProdRuleContext.getPid(), "sourceId", ddlPackBean); - List mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); - for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgs) {// - - String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule()); - AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass)); - - DdlPackBean packBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean); - MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean); - if (mesEquipmentVariable == null) { - continue; - } - mesEquipmentVariableList.add(mesEquipmentVariable); - mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg); - execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), mesProdRuleContext.getForeignKey()); + + // 获取加工参数 分排序和非排序 + mesEquipmentProdParamCfgList = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList); + + for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgList) {// + + String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule()); + AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass)); + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean); + MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean); + if (mesEquipmentVariable == null) { + continue; } - } + mesEquipmentVariableList.add(mesEquipmentVariable); + mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg); + execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), null); - Map> map = mesEquipmentProdParamCfgList.stream().collect(Collectors.groupingBy(MesEquipmentProdParamCfg::getMatchRule)); + } + /* Map> map = mesEquipmentProdParamCfgList.stream().collect(Collectors.groupingBy(MesEquipmentProdParamCfg::getMatchRule)); Map> mapVariable = mesEquipmentVariableList.stream().collect(Collectors.groupingBy(mesEquipmentVariable -> mesEquipmentVariable.getId() + "")); - +*/ /* map.forEach((k, v) -> { String strategyClass = getStrateClass(k); AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass)); @@ -117,10 +114,45 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "发送加工参数成功"); } + /** + * 根据排序和非排序 获取对应的加工参数 + * @param reqBean + * @param prodRuleContextList + * @param mesEquipmentProdParamCfgList + * @return + */ + private List getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List prodRuleContextList, List mesEquipmentProdParamCfgList) { + for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) { + List mesEquipmentProdParamCfgs= new ArrayList<>(); + // 获取加工参数 + if (Objects.equal(MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue(), reqBean.getWorkCenterCode())) { + + 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()); + mesEquipmentProdParamCfgList.addAll(mesEquipmentProdParamCfgs); + } + } + mesEquipmentProdParamCfgList = mesEquipmentProdParamCfgList.stream().distinct().collect(Collectors.toList()); + return mesEquipmentProdParamCfgList; + } + private void execSendEquipParamsCmd(AbstractWriteVariableService equipVariableRwExtService, StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey) { - equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey); + equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null); }