forked from I3-YF/i3plus-mes-pcn-yfai
Merge remote-tracking branch 'origin/dev-wuhan-temp' into dev-wuhan-temp
commit
62eecf9af4
@ -1,158 +1,158 @@
|
||||
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.IMesProductionDispatchContextStepService;
|
||||
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.pojo.context.MesCellEquipContext;
|
||||
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.MesCavityGroupDetailCfg;
|
||||
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.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.MesCavityGroupDetailCfgRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
|
||||
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
||||
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.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description : 腔组发送加工参数
|
||||
* @Author : zxw
|
||||
**/
|
||||
@Slf4j
|
||||
@Service("mesSendCavityGroupParamsCmdStepService")
|
||||
public class MesSendCavityGroupParamsCmdStepService extends BaseStepService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private IMesEquipVariableRwExtService equipVariableRwExtService;
|
||||
@Autowired
|
||||
private MesEquipmentVariableRepository mesEquipmentVariableRepository;
|
||||
|
||||
@Autowired
|
||||
private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository;
|
||||
|
||||
|
||||
@Autowired
|
||||
private MesCavityGroupDetailCfgRepository mesCavityGroupDetailCfgRepository;
|
||||
|
||||
@Override
|
||||
public StepResult execute(StationRequestBean reqBean) {
|
||||
|
||||
StationResultBean resultBean = new StationResultBean();
|
||||
|
||||
StepResult stepResult = StepResult.getSuccessComplete();
|
||||
|
||||
//获取工步参数
|
||||
Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||
|
||||
//获取上下文信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
||||
|
||||
//当前工位使用的设备
|
||||
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
||||
|
||||
//获取腔组数据信息集合
|
||||
List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs = productionProcessContext.getCavityGroupDetailList();
|
||||
|
||||
mesCavityGroupDetailCfgs = mesCavityGroupDetailCfgs.stream().sorted(Comparator.comparingInt(MesCavityGroupDetailCfg::getSeq)).collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtils.isEmpty(mesCavityGroupDetailCfgs)) {
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到腔组信息!");
|
||||
}
|
||||
sendEquipParamsCmd(reqBean, resultBean, stepResult, stepParamMap, cellEquipContext, mesCavityGroupDetailCfgs);
|
||||
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送腔组加工参数成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送加工参数
|
||||
* @param reqBean
|
||||
* @param resultBean
|
||||
* @param stepResult
|
||||
* @param stepParamMap
|
||||
* @param cellEquipContext
|
||||
* @param mesCavityGroupDetailCfgs
|
||||
*/
|
||||
private void sendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, Optional<Map<String, MesProdRouteOptParam>> stepParamMap, MesCellEquipContext cellEquipContext, List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs) {
|
||||
int index = 0;
|
||||
|
||||
for (MesCavityGroupDetailCfg mesCavityGroupDetailCfg : mesCavityGroupDetailCfgs) {
|
||||
index ++;
|
||||
// 获取加工参数
|
||||
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||
DdlPreparedPack.getNumEqualPack(mesCavityGroupDetailCfg.getId(), "sourceId", ddlPackBean);
|
||||
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
||||
for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgs) {//
|
||||
String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule());
|
||||
AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
|
||||
|
||||
DdlPackBean paramPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||
DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", paramPackBean);
|
||||
MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(paramPackBean);
|
||||
if (mesEquipmentVariable == null) {
|
||||
continue;
|
||||
}
|
||||
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, Integer index) {
|
||||
|
||||
equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, index);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//最大重试次数[工步参数]
|
||||
private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> 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 : MesPcnExtConstWords.MAX_RETRY_TIMES_DEFAULT;
|
||||
}
|
||||
|
||||
private String getStrateClass(String value) {
|
||||
|
||||
String strategyClass = "commonWriteVariableService";
|
||||
|
||||
if (value.contains("orderNo")) {
|
||||
strategyClass = "OrderWriteVariableService";
|
||||
} else if (value.contains("partNo")) {
|
||||
strategyClass = "PartWriteVariableService";
|
||||
} else if (value.contains("sn")) {
|
||||
strategyClass = "SnWriteVariableService";
|
||||
}
|
||||
return strategyClass;
|
||||
}
|
||||
}
|
||||
//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.IMesProductionDispatchContextStepService;
|
||||
//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.pojo.context.MesCellEquipContext;
|
||||
//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.MesCavityGroupDetailCfg;
|
||||
//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.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.MesCavityGroupDetailCfgRepository;
|
||||
//import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
|
||||
//import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
|
||||
//import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
||||
//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.Comparator;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//import java.util.Optional;
|
||||
//import java.util.stream.Collectors;
|
||||
//
|
||||
///**
|
||||
// * @Description : 腔组发送加工参数
|
||||
// * @Author : zxw
|
||||
// **/
|
||||
//@Slf4j
|
||||
//@Service("mesSendCavityGroupParamsCmdStepService")
|
||||
//public class MesSendCavityGroupParamsCmdStepService extends BaseStepService {
|
||||
//
|
||||
// @Autowired
|
||||
// private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
//
|
||||
// @Autowired
|
||||
// private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
//
|
||||
//
|
||||
// @Autowired
|
||||
// private IMesEquipVariableRwExtService equipVariableRwExtService;
|
||||
// @Autowired
|
||||
// private MesEquipmentVariableRepository mesEquipmentVariableRepository;
|
||||
//
|
||||
// @Autowired
|
||||
// private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository;
|
||||
//
|
||||
//
|
||||
// @Autowired
|
||||
// private MesCavityGroupDetailCfgRepository mesCavityGroupDetailCfgRepository;
|
||||
//
|
||||
// @Override
|
||||
// public StepResult execute(StationRequestBean reqBean) {
|
||||
//
|
||||
// StationResultBean resultBean = new StationResultBean();
|
||||
//
|
||||
// StepResult stepResult = StepResult.getSuccessComplete();
|
||||
//
|
||||
// //获取工步参数
|
||||
// Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||
//
|
||||
// //获取上下文信息
|
||||
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
||||
//
|
||||
// //当前工位使用的设备
|
||||
// MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
||||
//
|
||||
// //获取腔组数据信息集合
|
||||
// List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs = productionProcessContext.getCavityGroupDetailList();
|
||||
//
|
||||
// mesCavityGroupDetailCfgs = mesCavityGroupDetailCfgs.stream().sorted(Comparator.comparingInt(MesCavityGroupDetailCfg::getSeq)).collect(Collectors.toList());
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(mesCavityGroupDetailCfgs)) {
|
||||
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到腔组信息!");
|
||||
// }
|
||||
// sendEquipParamsCmd(reqBean, resultBean, stepResult, stepParamMap, cellEquipContext, mesCavityGroupDetailCfgs);
|
||||
//
|
||||
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送腔组加工参数成功!");
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 发送加工参数
|
||||
// * @param reqBean
|
||||
// * @param resultBean
|
||||
// * @param stepResult
|
||||
// * @param stepParamMap
|
||||
// * @param cellEquipContext
|
||||
// * @param mesCavityGroupDetailCfgs
|
||||
// */
|
||||
// private void sendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, Optional<Map<String, MesProdRouteOptParam>> stepParamMap, MesCellEquipContext cellEquipContext, List<MesCavityGroupDetailCfg> mesCavityGroupDetailCfgs) {
|
||||
// int index = 0;
|
||||
//
|
||||
// for (MesCavityGroupDetailCfg mesCavityGroupDetailCfg : mesCavityGroupDetailCfgs) {
|
||||
// index ++;
|
||||
// // 获取加工参数
|
||||
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||
// DdlPreparedPack.getNumEqualPack(mesCavityGroupDetailCfg.getId(), "sourceId", ddlPackBean);
|
||||
// List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
|
||||
// for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgs) {//
|
||||
// String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule());
|
||||
// AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
|
||||
//
|
||||
// DdlPackBean paramPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||
// DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", paramPackBean);
|
||||
// MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(paramPackBean);
|
||||
// if (mesEquipmentVariable == null) {
|
||||
// continue;
|
||||
// }
|
||||
// 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, Integer index) {
|
||||
//
|
||||
// equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, index);
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //最大重试次数[工步参数]
|
||||
// private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> 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 : MesPcnExtConstWords.MAX_RETRY_TIMES_DEFAULT;
|
||||
// }
|
||||
//
|
||||
// private String getStrateClass(String value) {
|
||||
//
|
||||
// String strategyClass = "commonWriteVariableService";
|
||||
//
|
||||
// if (value.contains("orderNo")) {
|
||||
// strategyClass = "OrderWriteVariableService";
|
||||
// } else if (value.contains("partNo")) {
|
||||
// strategyClass = "PartWriteVariableService";
|
||||
// } else if (value.contains("sn")) {
|
||||
// strategyClass = "SnWriteVariableService";
|
||||
// }
|
||||
// return strategyClass;
|
||||
// }
|
||||
//}
|
||||
|
@ -1,172 +1,172 @@
|
||||
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("mesWriteMainBarcodeCmdStepService")
|
||||
public class MesWriteMainBarcodeCmdStepService 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<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||
|
||||
//获取上下文信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
||||
|
||||
//当前工位使用的设备
|
||||
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
||||
|
||||
//获取上下文加工规则数据信息集合
|
||||
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
||||
|
||||
if (CollectionUtils.isEmpty(prodRuleContextList)) {
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!");
|
||||
}
|
||||
List<MesEquipmentVariable> mesEquipmentVariableList = new ArrayList<>();
|
||||
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList = new ArrayList<>();
|
||||
Map<Integer, List<MesEquipmentProdParamCfg>> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList);
|
||||
// 过滤掉非条码的
|
||||
mesEquipmentVariableMap = filterMsg(mesEquipmentVariableMap);
|
||||
|
||||
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<Integer, List<MesEquipmentProdParamCfg>> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList) {
|
||||
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||
|
||||
Map<Integer, List<MesEquipmentProdParamCfg>> map = new HashMap<>();
|
||||
for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) {
|
||||
List<MesEquipmentProdParamCfg> 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<MesProductionAssemblyContext> assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter);
|
||||
List<Long> 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<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
||||
//最大重试次数[工步参数]
|
||||
Integer maxRetryTimes = getMaxRetryTimes(stepParamMap);
|
||||
|
||||
writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes);
|
||||
}
|
||||
|
||||
//最大重试次数[工步参数]
|
||||
private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> 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;
|
||||
}
|
||||
|
||||
private Map<Integer, List<MesEquipmentProdParamCfg>> filterMsg(Map<Integer, List<MesEquipmentProdParamCfg>> map){
|
||||
|
||||
if (CollectionUtils.isEmpty(map)) {
|
||||
return null;
|
||||
}
|
||||
map.forEach((k,v) -> {
|
||||
v = v.stream().filter(cfg -> StringUtils.isEmpty(cfg.getMatchRule()) && cfg.getMatchRule()
|
||||
.toUpperCase().startsWith("BARCODE")).collect(Collectors.toList()); });
|
||||
return map;
|
||||
}
|
||||
}
|
||||
//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("mesWriteMainBarcodeCmdStepService")
|
||||
//public class MesWriteMainBarcodeCmdStepService 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<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||
//
|
||||
// //获取上下文信息
|
||||
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
|
||||
//
|
||||
// //当前工位使用的设备
|
||||
// MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
|
||||
//
|
||||
// //获取上下文加工规则数据信息集合
|
||||
// List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(prodRuleContextList)) {
|
||||
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!");
|
||||
// }
|
||||
// List<MesEquipmentVariable> mesEquipmentVariableList = new ArrayList<>();
|
||||
// List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList = new ArrayList<>();
|
||||
// Map<Integer, List<MesEquipmentProdParamCfg>> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList);
|
||||
// // 过滤掉非条码的
|
||||
// mesEquipmentVariableMap = filterMsg(mesEquipmentVariableMap);
|
||||
//
|
||||
// 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<Integer, List<MesEquipmentProdParamCfg>> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList) {
|
||||
//
|
||||
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||
//
|
||||
// Map<Integer, List<MesEquipmentProdParamCfg>> map = new HashMap<>();
|
||||
// for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) {
|
||||
// List<MesEquipmentProdParamCfg> 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<MesProductionAssemblyContext> assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter);
|
||||
// List<Long> 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<Map<String, MesProdRouteOptParam>> stepParamMap) {
|
||||
// //最大重试次数[工步参数]
|
||||
// Integer maxRetryTimes = getMaxRetryTimes(stepParamMap);
|
||||
//
|
||||
// writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes);
|
||||
// }
|
||||
//
|
||||
// //最大重试次数[工步参数]
|
||||
// private Integer getMaxRetryTimes(Optional<Map<String, MesProdRouteOptParam>> 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;
|
||||
// }
|
||||
//
|
||||
// private Map<Integer, List<MesEquipmentProdParamCfg>> filterMsg(Map<Integer, List<MesEquipmentProdParamCfg>> map){
|
||||
//
|
||||
// if (CollectionUtils.isEmpty(map)) {
|
||||
// return null;
|
||||
// }
|
||||
// map.forEach((k,v) -> {
|
||||
// v = v.stream().filter(cfg -> StringUtils.isEmpty(cfg.getMatchRule()) && cfg.getMatchRule()
|
||||
// .toUpperCase().startsWith("BARCODE")).collect(Collectors.toList()); });
|
||||
// return map;
|
||||
// }
|
||||
//}
|
||||
|
Loading…
Reference in New Issue