@ -1,17 +1,17 @@
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.base.I EquipmentExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.I Mes EquipmentExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.I EquipmentLo gExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.I MesProdOr gExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.b ase.IProdOr gExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.b usi.IMesEquipmentLo gExtService;
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.pojo.context.MesCellEquipContext ;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext ;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectLogContext ;
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.actor.shipping.dispatch.IFsmRouteDataService ;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService ;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService ;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService ;
import cn.estsh.i3plus.pojo.mes.bean.* ;
import cn.estsh.i3plus.pojo.mes.bean.* ;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean ;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean ;
import com.alibaba.fastjson.JSONObject ;
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 ;
@ -33,16 +33,19 @@ import java.util.stream.Collectors;
public class MesProductionProcessContextStepService extends BaseStepService implements IMesProductionProcessContextStepService {
public class MesProductionProcessContextStepService extends BaseStepService implements IMesProductionProcessContextStepService {
@Autowired
@Autowired
private I ProdOrgExtService prodOrgExtService ;
private I Mes ProdOrgExtService prodOrgExtService ;
@Autowired
@Autowired
private I EquipmentExtService equipmentExtService ;
private I Mes EquipmentExtService equipmentExtService ;
@Autowired
@Autowired
private IFsmRouteDataService fsmRouteDataService ;
private IFsmRouteDataService fsmRouteDataService ;
@Autowired
@Autowired
private IEquipmentLogExtService equipmentLogExtService ;
private IMesEquipmentLogExtService equipmentLogExtService ;
@Override
public Boolean doCacheContext ( StationRequestBean reqBean , Object o ) { return saveFsmBusiData ( reqBean . getOrganizeCode ( ) , getFsmBusikey ( reqBean , o . getClass ( ) . getSimpleName ( ) ) , JSONObject . toJSONString ( o ) ) ; }
@Override
@Override
public MesProductionProcessContext getProductionProcessContext ( StationRequestBean reqBean ) {
public MesProductionProcessContext getProductionProcessContext ( StationRequestBean reqBean ) {
@ -179,7 +182,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
}
}
@Override
@Override
public List < MesEquipmentVariableCfg > filter EquipmentVariableCfgList( List < MesEquipmentVariableCfg > equipmentVariableCfgList , String . . . variableCategory ) {
public List < MesEquipmentVariableCfg > collect EquipmentVariableCfgList( List < MesEquipmentVariableCfg > equipmentVariableCfgList , String . . . variableCategory ) {
List < String > variableCategoryList = null = = variableCategory ? null : Arrays . asList ( variableCategory ) ;
List < String > variableCategoryList = null = = variableCategory ? null : Arrays . asList ( variableCategory ) ;
return ( CollectionUtils . isEmpty ( equipmentVariableCfgList ) | | CollectionUtils . isEmpty ( variableCategoryList ) ) ? null : equipmentVariableCfgList . stream ( ) . filter ( o - > ( null ! = o & & variableCategoryList . contains ( o . getVariableCategory ( ) ) ) ) . collect ( Collectors . toList ( ) ) ;
return ( CollectionUtils . isEmpty ( equipmentVariableCfgList ) | | CollectionUtils . isEmpty ( variableCategoryList ) ) ? null : equipmentVariableCfgList . stream ( ) . filter ( o - > ( null ! = o & & variableCategoryList . contains ( o . getVariableCategory ( ) ) ) ) . collect ( Collectors . toList ( ) ) ;
}
}
@ -192,7 +195,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
}
}
@Override
@Override
public List < String > filter CategoryLevelTwoList( List < MesEquipmentVariableCfg > equipmentVariableCfgList ) {
public List < String > collect CategoryLevelTwoList( List < MesEquipmentVariableCfg > equipmentVariableCfgList ) {
return CollectionUtils . isEmpty ( equipmentVariableCfgList ) ? null :
return CollectionUtils . isEmpty ( equipmentVariableCfgList ) ? null :
( equipmentVariableCfgList . stream ( ) . filter ( o - > null ! = o ) . map ( MesEquipmentVariableCfg : : getCategoryLevelTwo ) . collect ( Collectors . toList ( ) ) ) . stream ( ) . filter ( o - > StringUtils . isEmpty ( o ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
( equipmentVariableCfgList . stream ( ) . filter ( o - > null ! = o ) . map ( MesEquipmentVariableCfg : : getCategoryLevelTwo ) . collect ( Collectors . toList ( ) ) ) . stream ( ) . filter ( o - > StringUtils . isEmpty ( o ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
}
}
@ -253,136 +256,4 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
equipmentVariableList . stream ( ) . filter ( o - > ( null ! = o & & categoryLevelTwoList . contains ( o . getCategoryLevelTwo ( ) ) & & o . getVariableType ( ) . compareTo ( variableType ) = = 0 ) ) . collect ( Collectors . toList ( ) ) ;
equipmentVariableList . stream ( ) . filter ( o - > ( null ! = o & & categoryLevelTwoList . contains ( o . getCategoryLevelTwo ( ) ) & & o . getVariableType ( ) . compareTo ( variableType ) = = 0 ) ) . collect ( Collectors . toList ( ) ) ;
}
}
@Override
public List < MesEquipVariableCfgCollectLogContext > doHandleEquipmentLogList ( MesCellEquipContext cellEquipContext , List < MesEquipmentVariable > equipmentVariableList , List < MesEquipmentVariableCfg > equipmentVariableCfgList ) {
//List<MesEquipVariableCfgCollectLogContext> collectContextList = generateEquipVariableCfgCollectLogContextList(cellEquipContext, equipmentVariableList, equipmentVariableCfgList);
return null ;
}
// private List<MesEquipVariableCfgCollectLogContext> generateEquipVariableCfgCollectLogContextList(MesCellEquipContext cellEquipContext, List<MesEquipmentVariable> equipmentVariableList, List<MesEquipmentVariableCfg> equipmentVariableCfgList) {
//
// List<MesEquipVariableCfgCollectLogContext> equipVariableCollectContextList = null;
//
// Map<String, >
//
//
// for (MesEquipmentVariableCfg equipmentVariableCfg : equipmentVariableCfgList) {
//
// if (null == equipmentVariableCfg) continue;
//
// MesEquipVariableCfgCollectLogContext collectLogContext = new MesEquipVariableCfgCollectLogContext(equipmentVariable.getId());
// BeanUtils.copyProperties(equipmentVariable, collectContext);
// collectContext.needNewValue(!CollectionUtils.isEmpty(filterList) ? filterList.get(0).getNeedNewValue() : MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue());
//
// if (CollectionUtils.isEmpty(equipVariableCollectContextList)) equipVariableCollectContextList = new ArrayList<>();
// equipVariableCollectContextList.add(collectContext);
// }
//
//
//
//
// }
//
//
// public MesProductionProcessContext doHandleEquipmentLogListByIds(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) {
//
// if (!productionProcessContext.getSuccess()) return productionProcessContext;
//
// //获取缓存的生产过程上下文对象中的历史变量接口逻辑采集信息并重置采集数据
// List<MesEquipVariableCfgCollectLogContext> equipVariableCollectContextList = productionProcessContext.getEquipVariableCfgCollectList();
// if (!CollectionUtils.isEmpty(equipVariableCollectContextList)) equipVariableCollectContextList.forEach(o -> o.clear());
// else equipVariableCollectContextList = getEquipVariableCollectContext(reqBean, productionProcessContext);//封装设备数据变量平铺接口逻辑与采集信息
//
// if (!productionProcessContext.getSuccess() || CollectionUtils.isEmpty(equipVariableCollectContextList)) return productionProcessContext;
//
// //根据常变值分别获取设备ID分表的采集数据
// Map<Integer, MesEquipmentLog> needNewValue2Collect = getEquipmentLog(reqBean, equipVariableCollectContextList, MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue());
// Map<Integer, MesEquipmentLog> unNeedNewValue2Collect = getEquipmentLog(reqBean, equipVariableCollectContextList, MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue());
//
// //修改常变值配置对应的设备ID分表的采集数据的状态为1
// if (!CollectionUtils.isEmpty(needNewValue2Collect)) equipmentLogExtService.updateEquipmentLogList(reqBean.getOrganizeCode(), productionProcessContext.getCurCellEquip().getEquipId(), new ArrayList<>(needNewValue2Collect.keySet()));
//
// //采集数据的值赋予生产过程上下文对象中的变量接口逻辑采集信息
// equipVariableCollectContextList.forEach(o -> copyValue(o, needNewValue2Collect, unNeedNewValue2Collect));
//
// //生产过程上下文对象赋值设备分表采集信息
// return productionProcessContext.equipVariableCfgCollectJson(equipVariableCollectContextList);
//
// }
//
// private void copyValue(MesEquipVariableCfgCollectLogContext collectContext, Map<Integer, MesEquipmentLog> needNewValue2Collect, Map<Integer, MesEquipmentLog> unNeedNewValue2Collect) {
// if (!CollectionUtils.isEmpty(needNewValue2Collect) && needNewValue2Collect.containsKey(collectContext.getClientHandle())) BeanUtils.copyProperties(collectContext, needNewValue2Collect.get(collectContext.getClientHandle()));
// if (!CollectionUtils.isEmpty(unNeedNewValue2Collect) && unNeedNewValue2Collect.containsKey(collectContext.getClientHandle())) BeanUtils.copyProperties(collectContext, unNeedNewValue2Collect.get(collectContext.getClientHandle()));
// }
//
// private Map<Integer, MesEquipmentLog> getEquipmentLog(StationRequestBean reqBean, List<MesEquipVariableCfgCollectLogContext> equipVariableCollectContextList, Integer needNewValue) {
// List<MesEquipVariableCfgCollectLogContext> filterList = equipVariableCollectContextList.stream().filter(o -> (null != o && o.getNeedNewValue().compareTo(needNewValue) == 0)).collect(Collectors.toList());
// if (CollectionUtils.isEmpty(filterList)) return null;
// List<MesEquipmentLog> equipmentLogList = equipmentLogExtService.getEquipmentLogList(reqBean.getOrganizeCode(),
// filterList.get(0).getEquipId(), needNewValue, filterList.stream().filter(o -> (null != o)).map(MesEquipVariableCfgCollectLogContext::getClientHandle).collect(Collectors.toList()));
// return CollectionUtils.isEmpty(equipmentLogList) ? null : equipmentLogList.stream().filter(o -> null != o).collect(Collectors.toMap(o -> Integer.valueOf(o.getId().toString()), o -> o));
// }
//
// private List<MesEquipVariableCfgCollectLogContext> getEquipVariableCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) {
//
// List<MesEquipmentVariable> equipmentVariableList = productionProcessContext.getEquipVariableList();
//
// Map<String, List<MesEquipmentVariableCfg>> cfgMap = getEquipmentVariableCfgMap(reqBean, productionProcessContext);
//
// List<MesEquipVariableCfgCollectLogContext> equipVariableCollectContextList = null;
// for (MesEquipmentVariable equipmentVariable : equipmentVariableList) {
// if (null == equipmentVariable) continue;
//
// //一个数据变量如果匹配多个接口逻辑信息,验证接口逻辑信息配置的常变值是否统一
// List<MesEquipmentVariableCfg> filterList = getEquipmentVariableCfgListByMap(cfgMap, equipmentVariable.getCategoryLevelTwo(), equipmentVariable.getVariableCfgType());
// if (!CollectionUtils.isEmpty(filterList) && filterList.size() > 1 && (filterList.stream().filter(o -> null != o).map(MesEquipmentVariableCfg::getNeedNewValue).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()).size() > 1)
// return productionProcessContext.message(String.format("请检查设备[%s]的数据变量接口逻辑信息,设备变量配置类型[%s],二级变量[%s]关联的多个变量类别对应的常变值未配置统一!",
// equipmentVariable.getEquipmentCode(), equipmentVariable.getVariableCfgType(), equipmentVariable.getCategoryLevelTwo())).getEquipVariableCfgCollectList();
//
// MesEquipVariableCfgCollectLogContext collectContext = new MesEquipVariableCfgCollectLogContext(equipmentVariable.getId());
// BeanUtils.copyProperties(equipmentVariable, collectContext);
// collectContext.needNewValue(!CollectionUtils.isEmpty(filterList) ? filterList.get(0).getNeedNewValue() : MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue());
//
// if (CollectionUtils.isEmpty(equipVariableCollectContextList)) equipVariableCollectContextList = new ArrayList<>();
// equipVariableCollectContextList.add(collectContext);
// }
//
// //生产过程上下文对象赋值 设备数据变量平铺接口逻辑与采集信息
// productionProcessContext.equipVariableCfgCollectJson(equipVariableCollectContextList);
//
// return equipVariableCollectContextList;
// }
//
// public Map<String, List<MesEquipmentVariableCfg>> getEquipmentVariableCfgMap(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) {
// List<MesEquipmentVariableCfg> equipmentVariableCfgList = productionProcessContext.getEquipVariableCfgList();
// return CollectionUtils.isEmpty(equipmentVariableCfgList) ? null :
// equipmentVariableCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND).add(o.getCategoryLevelTwo()).add(o.getVariableCfgType()).toString()));
// }
//
//
// public MesEquipmentVariableCfg execMatchEquipmentVariableCfgValue(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesEquipVariableCfgCollectLogContext collectContext, Map<String, List<MesEquipmentVariableCfg>> equipmentVariableCfgMap, Boolean isNeedVariableCfgValue) {
// return null;
// }
//
// public MesEquipmentVariableCfg execMatchEquipmentVariableCfgValue(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext,
// MesEquipVariableCfgCollectLogContext collectContext, Map<String, List<MesEquipmentVariableCfg>> equipmentVariableCfgMap, Boolean isNeedVariableCfgValue) {
// List<MesEquipmentVariableCfg> equipmentVariableCfgList = getEquipmentVariableCfgListByMap(equipmentVariableCfgMap, collectContext.getCategoryLevelTwo(), collectContext.getVariableCfgType());
// if (isNeedVariableCfgValue && CollectionUtils.isEmpty(CollectionUtils.isEmpty(equipmentVariableCfgList) ? null : equipmentVariableCfgList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getValue()))).collect(Collectors.toList()))) {
// productionProcessContext.message(String.format("请检查设备数据变量接口逻辑信息,设备变量配置类型[%s],二级变量[%s]对应的信息未配置参考值", collectContext.getVariableCfgType(), collectContext.getCategoryLevelTwo()));
// return null;
// }
// Optional<MesEquipmentVariableCfg> optional = equipmentVariableCfgList.stream().filter(o -> (null != o && o.getValue().equals(collectContext.getEquipVariableValue()))).findFirst();
// return null != optional && optional.isPresent() ? optional.get() : null;
// }
//
// private List<MesEquipmentVariableCfg> getEquipmentVariableCfgListByMap(Map<String, List<MesEquipmentVariableCfg>> equipmentVariableCfgMap, String categoryLevelTwo, String variableCfgType) {
// return CollectionUtils.isEmpty(equipmentVariableCfgMap) ? null : equipmentVariableCfgMap.get(new StringJoiner(MesPcnExtConstWords.AND).add(categoryLevelTwo).add(variableCfgType).toString());
// }
}
}