tags/yfai-pcn-ext-v1.0
王杰 12 months ago
parent 21211cba9d
commit 374eb511fa

@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -18,7 +19,10 @@ public interface IMesProductionProcessContextStepService {
Boolean doCacheContext(StationRequestBean reqBean, String item, Object o); Boolean doCacheContext(StationRequestBean reqBean, String item, Object o);
@ApiOperation(value = "获取上下文对象") @ApiOperation(value = "获取上下文对象")
Object getCachedContext(StationRequestBean reqBean, String item); String getCachedContext(StationRequestBean reqBean, String item);
@ApiOperation(value = "获取展示组件MODULE_CONTENT内容")
List<List<StationKvBean>> getCachedModuleContext(StationRequestBean reqBean);
@ApiOperation(value = "存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】") @ApiOperation(value = "存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】")
Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext);

@ -112,7 +112,7 @@ public class MesAssemblyReadStepService extends BaseStepService {
if (CollectionUtils.isEmpty(equipVariableCollectContextList)) if (CollectionUtils.isEmpty(equipVariableCollectContextList))
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]装配件条码,持续监听中...", cellEquipContext.getEquipmentCode())); return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]装配件条码,持续监听中...", cellEquipContext.getEquipmentCode()));
//保存设备当前一轮工序的装配件信息 //保存设备当前一轮工序待验证的装配件条码信息
productionProcessContext.assemblySnJson(equipVariableCollectContextList); productionProcessContext.assemblySnJson(equipVariableCollectContextList);
return stepResult; return stepResult;

@ -1,14 +1,20 @@
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.IMesProductionProcessContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
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 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.StringUtils;
import java.util.ArrayList;
import java.util.List;
/** /**
* @Description : * @Description :
@ -22,23 +28,36 @@ public class MesAssemblyScanStepService extends BaseStepService {
private IMesProductionProcessContextStepService productionProcessContextStepService; private IMesProductionProcessContextStepService productionProcessContextStepService;
@Override @Override
public StepResult guide(StationRequestBean reqBean) {
return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), "请扫描装配件条码!");
}
@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();
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); if (StringUtils.isEmpty(reqBean.getScanInfo())) execSendGuideAndThrowEx(reqBean, resultBean, "请扫描装配件条码!");
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean);
//保存设备当前一轮工序待验证的装配件条码信息
productionProcessContext.assemblySnJson(getAssemblySnJson(reqBean));
return stepResult; return stepResult;
} }
private List<MesEquipVariableCollectContext> getAssemblySnJson(StationRequestBean reqBean) {
List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>();
equipVariableCollectContextList.add(new MesEquipVariableCollectContext(reqBean.getOrganizeCode(), reqBean.getScanInfo(), TimeTool.getNowTime(true)));
return equipVariableCollectContextList;
}
} }

@ -0,0 +1,35 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesAssemblyShowStepService")
public class MesAssemblyShowStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
return stepResult;
}
}

@ -9,12 +9,13 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContex
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
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.api.iservice.base.IPartService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil;
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity;
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;
@ -26,9 +27,11 @@ 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.ArrayList;
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;
/** /**
* @Description : * @Description :
@ -50,6 +53,9 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
@Autowired @Autowired
private IMesMouldMultiCavityService mouldMultiCavityService; private IMesMouldMultiCavityService mouldMultiCavityService;
@Autowired
private IPartService partService;
@Override @Override
public StepResult execute(StationRequestBean reqBean) { public StepResult execute(StationRequestBean reqBean) {
@ -115,15 +121,63 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
String firstMouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); String firstMouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
List<MesMouldMultiCavity> mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), firstMouldNo); //验证一模多腔信息
List<MesMouldMultiCavity> mouldMultiCavityList = getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), firstMouldNo, true);
if (CollectionUtils.isEmpty(mouldMultiCavityList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("当前设备[%s]与读取到的头道模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentCode(), firstMouldNo)); //获取物料信息
Map<String, MesPart> partDataMap = getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList);
//保存设备当前一轮工序的头道模具号与一模多腔信息 //保存设备当前一轮工序的头道模具号,一模多腔信息,物料信息
productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList); productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap);
//更新展示组件MODULE_CONTENT内容
productionProcessContextStepService.doCacheContext(reqBean, MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue(), getModuleContextData(reqBean, mouldMultiCavityList, true));
return stepResult; return stepResult;
} }
public List<MesMouldMultiCavity> getMouldMultiCavityList(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, String equipmentCode, String mouldNo, Boolean isFirstMouldNo) {
List<MesMouldMultiCavity> mouldMultiCavityList = productionProcessContext.getMouldCavityList();
if (!checkCachedMouldMultiCavityValid(mouldMultiCavityList, equipmentCode, mouldNo)) mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), equipmentCode, mouldNo);
//配置错误 抛出异常
if (CollectionUtils.isEmpty(mouldMultiCavityList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("当前设备[%s]与读取到的%s模具号[%s]未维护有效的一模多腔信息!", equipmentCode, isFirstMouldNo ? "头道" : MesPcnExtConstWords.EMPTY, mouldNo));
return mouldMultiCavityList;
}
private Boolean checkCachedMouldMultiCavityValid(List<MesMouldMultiCavity> mouldMultiCavityList, String equipmentCode, String firstMouldNo) {
return (!CollectionUtils.isEmpty(mouldMultiCavityList) && mouldMultiCavityList.get(0).getEquipmentCode().equals(equipmentCode) && mouldMultiCavityList.get(0).getMouldNo().equals(firstMouldNo)) ? true : false;
}
public Map<String, MesPart> getPartDataMap(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, List<MesMouldMultiCavity> mouldMultiCavityList) {
Map<String, MesPart> partDataMap = productionProcessContext.getPartDataMap();
List<String> partNoList = (mouldMultiCavityList.stream().filter(o -> (null != o)).map(MesMouldMultiCavity::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList) && partNoList.containsAll(partDataMap.keySet())) return partDataMap;
Map<String, MesPart> finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
//物料信息缺失 抛出异常
List<String> filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (null != o && !finalPartDataMap.containsKey(o))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(partDataMap) || !CollectionUtils.isEmpty(filterList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("请检查物料信息,物料编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString()));
return finalPartDataMap;
}
public List<List<StationKvBean>> getModuleContextData(StationRequestBean reqBean, List<MesMouldMultiCavity> mouldMultiCavityList, Boolean isFirstMouldNo) {
List<List<StationKvBean>> moduleContextData = new ArrayList<>();
mouldMultiCavityList.forEach(o -> StationKvBeanUtil.addStationKvBeanList(moduleContextData,
new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.MOULD_NO, isFirstMouldNo ? "头道模具号" : "模具号", o.getMouldNo()), new StationKvBean(MesPcnConstWords.PART_NO, "物料编码", o.getPartNo()), new StationKvBean(MesPcnConstWords.PART_NAME, "物料名称", o.getPartName())));
return moduleContextData;
}
} }

@ -11,10 +11,7 @@ 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.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity;
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;
@ -50,6 +47,9 @@ public class MesMouldNoReadStepService extends BaseStepService {
@Autowired @Autowired
private IMesMouldMultiCavityService mouldMultiCavityService; private IMesMouldMultiCavityService mouldMultiCavityService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
@Override @Override
public StepResult execute(StationRequestBean reqBean) { public StepResult execute(StationRequestBean reqBean) {
@ -97,6 +97,9 @@ public class MesMouldNoReadStepService extends BaseStepService {
//验证模具号的有效性 //验证模具号的有效性
if (stepResult.isCompleted()) checkMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, collectContextList); if (stepResult.isCompleted()) checkMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, collectContextList);
//保存设备当前一轮工序的模具号
if (stepResult.isCompleted()) productionProcessContext.mouldNo((MesEquipVariableCollectContext) stepResult.getObj());
productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext);
if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
@ -115,23 +118,21 @@ public class MesMouldNoReadStepService extends BaseStepService {
String mouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); String mouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
if (StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) && !checkMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, mouldNo).isCompleted()) return stepResult; stepResult.obj(equipVariableCollectContextList.get(0));
//保存设备当前一轮工序的模具号 if (!StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) || !StringUtils.isEmpty(productionProcessContext.getWorkOrderDataJson())) return stepResult;
productionProcessContext.mouldNo(equipVariableCollectContextList.get(0));
return stepResult;
}
private StepResult checkMouldNoValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, String mouldNo) { //磨具号当头道模具号的使用
List<MesMouldMultiCavity> mouldMultiCavityList = firstMouldNoReadStepService.getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), mouldNo, false);
List<MesMouldMultiCavity> mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), mouldNo); //获取物料信息
Map<String, MesPart> partDataMap = firstMouldNoReadStepService.getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList);
if (CollectionUtils.isEmpty(mouldMultiCavityList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("当前设备[%s]与读取到的模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentCode(), mouldNo)); //保存设备当前一轮工序的一模多腔信息,物料信息
productionProcessContext.mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap);
//保存设备当前一轮工序的一模多腔信息 //更新展示组件MODULE_CONTENT内容
productionProcessContext.mouldCavityJson(mouldMultiCavityList); productionProcessContextStepService.doCacheContext(reqBean, MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue(), firstMouldNoReadStepService.getModuleContextData(reqBean, mouldMultiCavityList, false));
return stepResult; return stepResult;

@ -112,7 +112,7 @@ public class MesProductSnReadStepService extends BaseStepService {
if (CollectionUtils.isEmpty(equipVariableCollectContextList)) if (CollectionUtils.isEmpty(equipVariableCollectContextList))
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]主条码,持续监听中...", cellEquipContext.getEquipmentCode())); return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]主条码,持续监听中...", cellEquipContext.getEquipmentCode()));
//保存设备当前一轮工序的主信息 //保存设备当前一轮工序的待验证的条码信息
productionProcessContext.productSnJson(equipVariableCollectContextList); productionProcessContext.productSnJson(equipVariableCollectContextList);
return stepResult; return stepResult;

@ -10,10 +10,12 @@ 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.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
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.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
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;
@ -56,6 +58,12 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
} }
@Override @Override
public List<List<StationKvBean>> getCachedModuleContext(StationRequestBean reqBean) {
String moduleContent = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue());
return StringUtils.isEmpty(moduleContent) ? null : JSONObject.parseObject(moduleContent, new TypeReference<List<List<StationKvBean>>>() {});
}
@Override
public Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) { public Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) {
return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesProductionProcessContext.class.getSimpleName(), JSONObject.toJSONString(productionProcessContext)); return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesProductionProcessContext.class.getSimpleName(), JSONObject.toJSONString(productionProcessContext));
} }
@ -75,7 +83,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) productionProcessContext.workCenterJson(prodOrgExtService.getWorkCenterDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode())); if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) productionProcessContext.workCenterJson(prodOrgExtService.getWorkCenterDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()));
//生产过程上下文对象赋值工位信息 //生产过程上下文对象赋值工位信息
if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) productionProcessContext.workCellJson(prodOrgExtService.getWorkCellDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); if (StringUtils.isEmpty(productionProcessContext.getWorkCellJson())) productionProcessContext.workCellJson(prodOrgExtService.getWorkCellDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()));
//生产过程上下文对象赋值工序工艺信息 //生产过程上下文对象赋值工序工艺信息
if (StringUtils.isEmpty(productionProcessContext.getProcessCode()) || !productionProcessContext.getProcessCode().equals(reqBean.getProcessCode())) processContext(reqBean, productionProcessContext); if (StringUtils.isEmpty(productionProcessContext.getProcessCode()) || !productionProcessContext.getProcessCode().equals(reqBean.getProcessCode())) processContext(reqBean, productionProcessContext);

@ -6,7 +6,7 @@ import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
/** /**
* -LOG * -LOG
*/ */
@Data @Data
public class MesEquipVariableCollectContext { public class MesEquipVariableCollectContext {
@ -89,6 +89,12 @@ public class MesEquipVariableCollectContext {
this.equipVariableId = equipVariableId; this.equipVariableId = equipVariableId;
} }
public MesEquipVariableCollectContext(String organizeCode, String equipVariableValue, String equipVariableReadtime) {
this.organizeCode = organizeCode;
this.equipVariableValue = equipVariableValue;
this.equipVariableReadtime = equipVariableReadtime;
}
public void copyValue(MesEquipmentLog equipmentLog, String equipVariableReadtime) { public void copyValue(MesEquipmentLog equipmentLog, String equipVariableReadtime) {
if (null == equipmentLog) return; if (null == equipmentLog) return;
BeanUtils.copyProperties(equipmentLog, this); BeanUtils.copyProperties(equipmentLog, this);

@ -2,15 +2,13 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.context;
import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.*;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.*;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -80,7 +78,7 @@ public class MesProductionProcessContext {
private String mouldCavityJson; private String mouldCavityJson;
@ApiParam("零件信息") @ApiParam("零件信息")
private String partJson; private String partDataJson;
@ApiParam("扫描信息:生产工单号") @ApiParam("扫描信息:生产工单号")
private String workOrderNoJson; private String workOrderNoJson;
@ -335,19 +333,22 @@ public class MesProductionProcessContext {
} }
//从上下文中取出零件信息集合 //从上下文中取出零件信息集合
public List<MesPart> getPartList() { public Map<String, MesPart> getPartDataMap() {
return StringUtils.isEmpty(this.partJson) ? null : JSONObject.parseArray(this.partJson, MesPart.class); // Map<String, String> partMap = StringUtils.isEmpty(this.partDataJson) ? null : JSONObject.parseObject(this.partDataJson, Map.class);
// return CollectionUtils.isEmpty(partMap) ? null : partMap.entrySet().stream().filter(o -> null != o).collect(Collectors.toMap(Map.Entry::getKey, o -> JSONObject.parseObject(o.getValue(), MesPart.class)));
return StringUtils.isEmpty(this.partDataJson) ? null : JSONObject.parseObject(this.partDataJson, new TypeReference<Map<String, MesPart>>() {});
} }
//上下文赋值零件信息集合 //上下文赋值零件信息集合
public MesProductionProcessContext partJson(List<MesPart> partList) { public MesProductionProcessContext partDataJson(Map<String, MesPart> partDataMap) {
this.partJson = !CollectionUtils.isEmpty(partList) ? JSONObject.toJSONString(partList) : null; // Map<String, String> partDataMap = partMap.entrySet().stream().filter(o -> null != o).collect(Collectors.toMap(Map.Entry::getKey, o -> JSONObject.toJSONString(o.getValue())));
this.partDataJson = !CollectionUtils.isEmpty(partDataMap) ? JSONObject.toJSONString(partDataMap) : null;
return this; return this;
} }
//上下文清除零件信息 //上下文清除零件信息
public MesProductionProcessContext partJsonClear() { public MesProductionProcessContext partDataJsonClear() {
this.partJson = null; this.partDataJson = null;
return this; return this;
} }

@ -81,6 +81,8 @@ public class MesPcnExtConstWords {
public static final String SQUARE_BRACKETS = "[]"; public static final String SQUARE_BRACKETS = "[]";
// & // &
public static final String AND = "&"; public static final String AND = "&";
// 空
public static final String EMPTY = "";
//生产过程控制上下文 //生产过程控制上下文
public static final String PRODUCTION_PROCESS_CONTEXT = "PRODUCTION_PROCESS_CONTEXT"; public static final String PRODUCTION_PROCESS_CONTEXT = "PRODUCTION_PROCESS_CONTEXT";

Loading…
Cancel
Save