forked from I3-YF/i3plus-mes-pcn-yfai
离线版本
parent
5830b0452b
commit
7767805389
@ -1,158 +1,158 @@
|
|||||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||||
|
//
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService;
|
//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
//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.IMesProductionProcessContextStepService;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.strategy.AbstractWriteVariableService;
|
//import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.strategy.AbstractWriteVariableService;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
|
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
//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.serviceimpl.fsm.BaseStepService;
|
||||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
//import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||||
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesCavityGroupDetailCfg;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesCavityGroupDetailCfg;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
//import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
//import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
//import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
||||||
import cn.estsh.i3plus.pojo.mes.repository.MesCavityGroupDetailCfgRepository;
|
//import cn.estsh.i3plus.pojo.mes.repository.MesCavityGroupDetailCfgRepository;
|
||||||
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
|
//import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
|
||||||
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
|
//import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
|
||||||
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
//import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
//import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
//import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
//import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
//import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
//import org.springframework.util.StringUtils;
|
||||||
|
//
|
||||||
import java.util.Comparator;
|
//import java.util.Comparator;
|
||||||
import java.util.List;
|
//import java.util.List;
|
||||||
import java.util.Map;
|
//import java.util.Map;
|
||||||
import java.util.Optional;
|
//import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
//import java.util.stream.Collectors;
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* @Description : 腔组发送加工参数
|
// * @Description : 腔组发送加工参数
|
||||||
* @Author : zxw
|
// * @Author : zxw
|
||||||
**/
|
// **/
|
||||||
@Slf4j
|
//@Slf4j
|
||||||
@Service("mesSendCavityGroupParamsCmdStepService")
|
//@Service("mesSendCavityGroupParamsCmdStepService")
|
||||||
public class MesSendCavityGroupParamsCmdStepService extends BaseStepService {
|
//public class MesSendCavityGroupParamsCmdStepService extends BaseStepService {
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
// private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
// private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||||
|
//
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private IMesEquipVariableRwExtService equipVariableRwExtService;
|
// private IMesEquipVariableRwExtService equipVariableRwExtService;
|
||||||
@Autowired
|
// @Autowired
|
||||||
private MesEquipmentVariableRepository mesEquipmentVariableRepository;
|
// private MesEquipmentVariableRepository mesEquipmentVariableRepository;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository;
|
// private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository;
|
||||||
|
//
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private MesCavityGroupDetailCfgRepository mesCavityGroupDetailCfgRepository;
|
// private MesCavityGroupDetailCfgRepository mesCavityGroupDetailCfgRepository;
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public StepResult execute(StationRequestBean reqBean) {
|
// public StepResult execute(StationRequestBean reqBean) {
|
||||||
|
//
|
||||||
StationResultBean resultBean = new StationResultBean();
|
// StationResultBean resultBean = new StationResultBean();
|
||||||
|
//
|
||||||
StepResult stepResult = StepResult.getSuccessComplete();
|
// StepResult stepResult = StepResult.getSuccessComplete();
|
||||||
|
//
|
||||||
//获取工步参数
|
// //获取工步参数
|
||||||
Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
// Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||||
|
//
|
||||||
//获取上下文信息
|
// //获取上下文信息
|
||||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
||||||
|
//
|
||||||
//当前工位使用的设备
|
// //当前工位使用的设备
|
||||||
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
// MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
||||||
|
//
|
||||||
//获取腔组数据信息集合
|
// //获取腔组数据信息集合
|
||||||
List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs = productionProcessContext.getCavityGroupDetailList();
|
// List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs = productionProcessContext.getCavityGroupDetailList();
|
||||||
|
//
|
||||||
mesCavityGroupDetailCfgs = mesCavityGroupDetailCfgs.stream().sorted(Comparator.comparingInt(MesCavityGroupDetailCfg::getSeq)).collect(Collectors.toList());
|
// mesCavityGroupDetailCfgs = mesCavityGroupDetailCfgs.stream().sorted(Comparator.comparingInt(MesCavityGroupDetailCfg::getSeq)).collect(Collectors.toList());
|
||||||
|
//
|
||||||
if (CollectionUtils.isEmpty(mesCavityGroupDetailCfgs)) {
|
// if (CollectionUtils.isEmpty(mesCavityGroupDetailCfgs)) {
|
||||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到腔组信息!");
|
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到腔组信息!");
|
||||||
}
|
// }
|
||||||
sendEquipParamsCmd(reqBean, resultBean, stepResult, stepParamMap, cellEquipContext, mesCavityGroupDetailCfgs);
|
// sendEquipParamsCmd(reqBean, resultBean, stepResult, stepParamMap, cellEquipContext, mesCavityGroupDetailCfgs);
|
||||||
|
//
|
||||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送腔组加工参数成功!");
|
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送腔组加工参数成功!");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 发送加工参数
|
// * 发送加工参数
|
||||||
* @param reqBean
|
// * @param reqBean
|
||||||
* @param resultBean
|
// * @param resultBean
|
||||||
* @param stepResult
|
// * @param stepResult
|
||||||
* @param stepParamMap
|
// * @param stepParamMap
|
||||||
* @param cellEquipContext
|
// * @param cellEquipContext
|
||||||
* @param mesCavityGroupDetailCfgs
|
// * @param mesCavityGroupDetailCfgs
|
||||||
*/
|
// */
|
||||||
private void sendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, Optional<Map<String, MesProdRouteOptParam>> stepParamMap, MesCellEquipContext cellEquipContext, List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs) {
|
// private void sendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, Optional<Map<String, MesProdRouteOptParam>> stepParamMap, MesCellEquipContext cellEquipContext, List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs) {
|
||||||
int index = 0;
|
// int index = 0;
|
||||||
|
//
|
||||||
for (MesCavityGroupDetailCfg mesCavityGroupDetailCfg : mesCavityGroupDetailCfgs) {
|
// for (MesCavityGroupDetailCfg mesCavityGroupDetailCfg : mesCavityGroupDetailCfgs) {
|
||||||
index ++;
|
// index ++;
|
||||||
// 获取加工参数
|
// // 获取加工参数
|
||||||
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||||
DdlPreparedPack.getNumEqualPack(mesCavityGroupDetailCfg.getId(), "sourceId", ddlPackBean);
|
// DdlPreparedPack.getNumEqualPack(mesCavityGroupDetailCfg.getId(), "sourceId", ddlPackBean);
|
||||||
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
// List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
||||||
for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgs) {//
|
// for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgs) {//
|
||||||
String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule());
|
// String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule());
|
||||||
AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
|
// AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
|
||||||
|
//
|
||||||
DdlPackBean paramPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
// DdlPackBean paramPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||||
DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", paramPackBean);
|
// DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", paramPackBean);
|
||||||
MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(paramPackBean);
|
// MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(paramPackBean);
|
||||||
if (mesEquipmentVariable == null) {
|
// if (mesEquipmentVariable == null) {
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), null, index);
|
// execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), null, index);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
private void execSendEquipParamsCmd(AbstractWriteVariableService equipVariableRwExtService, StationRequestBean reqBean,
|
// private void execSendEquipParamsCmd(AbstractWriteVariableService equipVariableRwExtService, StationRequestBean reqBean,
|
||||||
String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index) {
|
// String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index) {
|
||||||
|
//
|
||||||
equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, index);
|
// equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, index);
|
||||||
|
//
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
//最大重试次数[工步参数]
|
// //最大重试次数[工步参数]
|
||||||
private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
// private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
||||||
Integer maxRetryTimes = null;
|
// Integer maxRetryTimes = null;
|
||||||
try {
|
// try {
|
||||||
maxRetryTimes = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.MAX_RETRY_TIMES)) ? Integer.valueOf(stepParamMap.get().get(MesPcnExtConstWords.MAX_RETRY_TIMES).getParamValue()) : null;
|
// 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) {
|
// } catch (NumberFormatException e) {
|
||||||
}
|
// }
|
||||||
return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : MesPcnExtConstWords.MAX_RETRY_TIMES_DEFAULT;
|
// return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : MesPcnExtConstWords.MAX_RETRY_TIMES_DEFAULT;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private String getStrateClass(String value) {
|
// private String getStrateClass(String value) {
|
||||||
|
//
|
||||||
String strategyClass = "commonWriteVariableService";
|
// String strategyClass = "commonWriteVariableService";
|
||||||
|
//
|
||||||
if (value.contains("orderNo")) {
|
// if (value.contains("orderNo")) {
|
||||||
strategyClass = "OrderWriteVariableService";
|
// strategyClass = "OrderWriteVariableService";
|
||||||
} else if (value.contains("partNo")) {
|
// } else if (value.contains("partNo")) {
|
||||||
strategyClass = "PartWriteVariableService";
|
// strategyClass = "PartWriteVariableService";
|
||||||
} else if (value.contains("sn")) {
|
// } else if (value.contains("sn")) {
|
||||||
strategyClass = "SnWriteVariableService";
|
// strategyClass = "SnWriteVariableService";
|
||||||
}
|
// }
|
||||||
return strategyClass;
|
// return strategyClass;
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
@ -1,172 +1,172 @@
|
|||||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
//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.IMesProductionDispatchContextStepService;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
|
//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.api.busi.IWriteVariableService;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
|
//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.MesProdRuleContext;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext;
|
//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.context.MesProductionProcessContext;
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
//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.serviceimpl.fsm.BaseStepService;
|
||||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
//import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||||
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
|
//import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
//import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
//import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
//import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
||||||
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
|
//import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
|
||||||
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
|
//import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
|
||||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
//import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
//import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
//import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
//import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
//import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
//import org.springframework.util.StringUtils;
|
||||||
|
//
|
||||||
import java.util.*;
|
//import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
//import java.util.stream.Collectors;
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* @Description : 发送客户端主条码
|
// * @Description : 发送客户端主条码
|
||||||
* @Author : zxw
|
// * @Author : zxw
|
||||||
**/
|
// **/
|
||||||
@Slf4j
|
//@Slf4j
|
||||||
@Service("mesWriteMainBarcodeCmdStepService")
|
//@Service("mesWriteMainBarcodeCmdStepService")
|
||||||
public class MesWriteMainBarcodeCmdStepService extends BaseStepService {
|
//public class MesWriteMainBarcodeCmdStepService extends BaseStepService {
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
// private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
// private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private IWriteVariableService writeVariableService;
|
// private IWriteVariableService writeVariableService;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private MesEquipmentVariableRepository mesEquipmentVariableRepository;
|
// private MesEquipmentVariableRepository mesEquipmentVariableRepository;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository;
|
// private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository;
|
||||||
|
//
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public StepResult execute(StationRequestBean reqBean) {
|
// public StepResult execute(StationRequestBean reqBean) {
|
||||||
|
//
|
||||||
StationResultBean resultBean = new StationResultBean();
|
// StationResultBean resultBean = new StationResultBean();
|
||||||
|
//
|
||||||
StepResult stepResult = StepResult.getSuccessComplete();
|
// StepResult stepResult = StepResult.getSuccessComplete();
|
||||||
|
//
|
||||||
//获取工步参数
|
// //获取工步参数
|
||||||
Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
// Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||||
|
//
|
||||||
//获取上下文信息
|
// //获取上下文信息
|
||||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
||||||
|
//
|
||||||
//当前工位使用的设备
|
// //当前工位使用的设备
|
||||||
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
// MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
||||||
|
//
|
||||||
//获取上下文加工规则数据信息集合
|
// //获取上下文加工规则数据信息集合
|
||||||
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
// List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
||||||
|
//
|
||||||
if (CollectionUtils.isEmpty(prodRuleContextList)) {
|
// if (CollectionUtils.isEmpty(prodRuleContextList)) {
|
||||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!");
|
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!");
|
||||||
}
|
// }
|
||||||
List<MesEquipmentVariable> mesEquipmentVariableList = new ArrayList<>();
|
// List<MesEquipmentVariable> mesEquipmentVariableList = new ArrayList<>();
|
||||||
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList = new ArrayList<>();
|
// List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList = new ArrayList<>();
|
||||||
Map<Integer, List<MesEquipmentProdParamCfg>> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList);
|
// Map<Integer, List<MesEquipmentProdParamCfg>> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList);
|
||||||
// 过滤掉非条码的
|
// // 过滤掉非条码的
|
||||||
mesEquipmentVariableMap = filterMsg(mesEquipmentVariableMap);
|
// mesEquipmentVariableMap = filterMsg(mesEquipmentVariableMap);
|
||||||
|
//
|
||||||
mesEquipmentVariableMap.forEach((k, v) -> {
|
// mesEquipmentVariableMap.forEach((k, v) -> {
|
||||||
v.stream().forEach(mesEquipmentProdParamCfg -> {
|
// v.stream().forEach(mesEquipmentProdParamCfg -> {
|
||||||
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
|
// DdlPackBean packBean = DdlPackBean.getDdlPackBean();
|
||||||
DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean);
|
// DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean);
|
||||||
MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean);
|
// MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean);
|
||||||
if (mesEquipmentVariable == null) {
|
// if (mesEquipmentVariable == null) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
mesEquipmentVariableList.add(mesEquipmentVariable);
|
// mesEquipmentVariableList.add(mesEquipmentVariable);
|
||||||
mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg);
|
// mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg);
|
||||||
execSendEquipParamsCmd(reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), k, stepParamMap);
|
// 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, "发送加工参数成功!");
|
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送加工参数成功!");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 根据排序和非排序 获取对应的加工参数
|
// * 根据排序和非排序 获取对应的加工参数
|
||||||
* @param reqBean
|
// * @param reqBean
|
||||||
* @param prodRuleContextList
|
// * @param prodRuleContextList
|
||||||
* @param mesEquipmentProdParamCfgList
|
// * @param mesEquipmentProdParamCfgList
|
||||||
* @return
|
// * @return
|
||||||
*/
|
// */
|
||||||
private Map<Integer, List<MesEquipmentProdParamCfg>> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList) {
|
// private Map<Integer, List<MesEquipmentProdParamCfg>> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList) {
|
||||||
|
//
|
||||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||||
|
//
|
||||||
Map<Integer, List<MesEquipmentProdParamCfg>> map = new HashMap<>();
|
// Map<Integer, List<MesEquipmentProdParamCfg>> map = new HashMap<>();
|
||||||
for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) {
|
// for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) {
|
||||||
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs= new ArrayList<>();
|
// List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs= new ArrayList<>();
|
||||||
//从上下文中取出生产线对象
|
// //从上下文中取出生产线对象
|
||||||
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
|
// MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
|
||||||
// 获取加工参数
|
// // 获取加工参数
|
||||||
if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()){
|
// if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()){
|
||||||
|
//
|
||||||
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
|
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
|
||||||
DdlPreparedPack.getNumEqualPack(mesProdRuleContext.getPid(), "sourceId", ddlPackBean);
|
// DdlPreparedPack.getNumEqualPack(mesProdRuleContext.getPid(), "sourceId", ddlPackBean);
|
||||||
mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
// mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
||||||
} else {
|
// } else {
|
||||||
MesWorkCenter mesWorkCenter = new MesWorkCenter();
|
// MesWorkCenter mesWorkCenter = new MesWorkCenter();
|
||||||
mesWorkCenter.setWorkCenterCode(reqBean.getWorkCenterCode());
|
// mesWorkCenter.setWorkCenterCode(reqBean.getWorkCenterCode());
|
||||||
List<MesProductionAssemblyContext> assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter);
|
// List<MesProductionAssemblyContext> assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter);
|
||||||
List<Long> sourceIds = assemblyDataContext.stream().map(MesProductionAssemblyContext::getSourceId).collect(Collectors.toList());
|
// List<Long> sourceIds = assemblyDataContext.stream().map(MesProductionAssemblyContext::getSourceId).collect(Collectors.toList());
|
||||||
|
//
|
||||||
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
|
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
|
||||||
DdlPreparedPack.getInPackList(sourceIds, "sourceId", ddlPackBean);
|
// DdlPreparedPack.getInPackList(sourceIds, "sourceId", ddlPackBean);
|
||||||
mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
// mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
||||||
}
|
// }
|
||||||
if (!CollectionUtils.isEmpty(mesEquipmentProdParamCfgs)) {
|
// if (!CollectionUtils.isEmpty(mesEquipmentProdParamCfgs)) {
|
||||||
mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgs.stream().distinct().collect(Collectors.toList());
|
// mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgs.stream().distinct().collect(Collectors.toList());
|
||||||
}
|
// }
|
||||||
map.put(mesProdRuleContext.getForeignKey(), mesEquipmentProdParamCfgs);
|
// map.put(mesProdRuleContext.getForeignKey(), mesEquipmentProdParamCfgs);
|
||||||
}
|
// }
|
||||||
return map;
|
// return map;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private void execSendEquipParamsCmd(StationRequestBean reqBean,
|
// private void execSendEquipParamsCmd(StationRequestBean reqBean,
|
||||||
String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
// String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
||||||
//最大重试次数[工步参数]
|
// //最大重试次数[工步参数]
|
||||||
Integer maxRetryTimes = getMaxRetryTimes(stepParamMap);
|
// Integer maxRetryTimes = getMaxRetryTimes(stepParamMap);
|
||||||
|
//
|
||||||
writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes);
|
// writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
//最大重试次数[工步参数]
|
// //最大重试次数[工步参数]
|
||||||
private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
// private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
||||||
Integer maxRetryTimes = null;
|
// Integer maxRetryTimes = null;
|
||||||
try {
|
// try {
|
||||||
maxRetryTimes = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.MAX_RETRY_TIMES)) ? Integer.valueOf(stepParamMap.get().get(MesPcnExtConstWords.MAX_RETRY_TIMES).getParamValue()) : null;
|
// 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) {
|
// } catch (NumberFormatException e) {
|
||||||
}
|
// }
|
||||||
return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : 3;
|
// return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : 3;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private Map<Integer, List<MesEquipmentProdParamCfg>> filterMsg(Map<Integer, List<MesEquipmentProdParamCfg>> map){
|
// private Map<Integer, List<MesEquipmentProdParamCfg>> filterMsg(Map<Integer, List<MesEquipmentProdParamCfg>> map){
|
||||||
|
//
|
||||||
if (CollectionUtils.isEmpty(map)) {
|
// if (CollectionUtils.isEmpty(map)) {
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
map.forEach((k,v) -> {
|
// map.forEach((k,v) -> {
|
||||||
v = v.stream().filter(cfg -> StringUtils.isEmpty(cfg.getMatchRule()) && cfg.getMatchRule()
|
// v = v.stream().filter(cfg -> StringUtils.isEmpty(cfg.getMatchRule()) && cfg.getMatchRule()
|
||||||
.toUpperCase().startsWith("BARCODE")).collect(Collectors.toList()); });
|
// .toUpperCase().startsWith("BARCODE")).collect(Collectors.toList()); });
|
||||||
return map;
|
// return map;
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
Loading…
Reference in New Issue