扫描产成零件工步

tags/yfai-pcn-ext-v2.3
王杰 7 months ago
parent b5ccdf6521
commit d693da28c8

@ -2,14 +2,12 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesRawPartCharging;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
/**
* BUSI
@ -88,18 +86,6 @@ public interface IMesProductionDispatchContextStepService {
@ApiOperation(value = "删除上下文产出零件信息")
Boolean removeProductionPartContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文零件数据信息")
Map<String, MesPart> getPartDataContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文零件数据信息")
Map<String, MesPartContext> getPartDataExtContext(StationRequestBean reqBean);
@ApiOperation(value = "保存上下文零件数据信息", notes = "[JSON]Map<String, MesPart>")
Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap);
@ApiOperation(value = "删除上下文零件数据信息")
void removePartDataContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文模具号")
MesEquipVariableCollectContext getMouldNoContext(StationRequestBean reqBean);

@ -1,13 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesScanMonitorContext;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
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.util.MesExtEnumUtil;
@ -107,6 +101,18 @@ public interface IMesProductionProcessContextStepService {
@ApiOperation(value = "存储设备的装配件清单")
Boolean dispatchAssemblyNosortCfgContext(StationRequestBean reqBean, List<MesProductionAssemblyNosortContext> assemblyNosortCfgList);
@ApiOperation(value = "获取上下文零件数据信息")
Map<String, MesPart> getPartDataContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文零件数据信息")
Map<String, MesPartContext> getPartDataExtContext(StationRequestBean reqBean);
@ApiOperation(value = "保存上下文零件数据信息", notes = "[JSON]Map<String, MesPart>")
Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap);
@ApiOperation(value = "删除上下文零件数据信息")
void removePartDataContext(StationRequestBean reqBean);
@ApiOperation(value = "获取手动选择的腔数及工单信息上下文")
List<StationKvBean> getFunctionChooseCavityOrderContext(StationRequestBean reqBean);
@ -116,6 +122,15 @@ public interface IMesProductionProcessContextStepService {
@ApiOperation(value = "删除手动选择的腔数及工单信息上下文")
void removeFunctionChooseCavityOrderContext(StationRequestBean reqBean);
@ApiOperation(value = "获取手动选择的腔数及零件信息上下文")
List<StationKvBean> getFunctionChooseCavityPartContext(StationRequestBean reqBean);
@ApiOperation(value = "保存选择/扫描/读取的腔数及零件信息上下文", notes = "[StationKvBean(key=cavity, name=腔数, value=3, seq=0), StationKvBean(key=cellMessageSource, name=工位信息来源, value=10, seq=1), StationKvBean(key=workOrderNo, name=零件编码, value=零件1;零件2;零件3, seq=2)]")
Boolean dispatchFunctionChooseCavityPartContext(StationRequestBean reqBean, List<StationKvBean> resultList);
@ApiOperation(value = "删除手动选择的腔数及零件信息上下文")
void removeFunctionChooseCavityPartContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文工位扫描监控信息")
MesScanMonitorContext dispatchScanMonitorContext(StationRequestBean reqBean, Boolean isSave);

@ -62,8 +62,8 @@ public class MesFunctionChooseCavityPartService extends BaseSwsService implement
return false;
}
//保存手动选择的腔数及工单信息上下文
productionProcessContextStepService.dispatchFunctionChooseCavityOrderContext(reqBean, resultList);
//保存手动选择的腔数及零件信息上下文
productionProcessContextStepService.dispatchFunctionChooseCavityPartContext(reqBean, resultList);
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()),
String.format("生产线[%s]工位[%s]%s成功,请等待验证!提交信息[%s]", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName(), buttonDynamicModel.getFunctionValue()),

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesAssemblySaveSortStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;

@ -1,9 +1,9 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService;
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.step.method.MesAssemblySaveSortStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
@ -50,9 +50,6 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
@Autowired
private IFsmCommonService fsmCommonService;
@Autowired
public IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -2,15 +2,14 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
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.util.StationKvBeanUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
@ -58,7 +57,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
private IMesMouldMultiCavityService mouldMultiCavityService;
@Autowired
private IPartService partService;
private MesPartDataMapSaveStepService partDataMapSaveStepService;
@Override
public void title(StationRequestBean reqBean) {
@ -172,10 +171,10 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
productionCustomContextStepService.sendStepContextMessage(reqBean, firstMouldNo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ);
//验证一模多腔信息
List<MesProductionPartContext> productionPartContextList = getProductionPartList(reqBean, resultBean, productionProcessContext, cellEquipContext, firstMouldNo, true);
List<MesProductionPartContext> productionPartContextList = getProductionPartList(reqBean, resultBean, cellEquipContext, firstMouldNo, true);
//保存零件数据信息
savePartDataMap(reqBean, resultBean, stepResult, productionProcessContext, productionPartContextList, false);
savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, false, false);
//保存设备当前一轮工序的头道模具号,产出零件(一模多腔)信息
productionDispatchContextStepService.dispatchFirstMouldNoContext(reqBean, equipVariableCollectContextList.get(0));
@ -190,76 +189,47 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
}
public List<MesProductionPartContext> getProductionPartList(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, String mouldNo, Boolean isFirstMouldNo) {
//从上下文中取出产出零件(一模多腔)信息集合
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
//验证产出零件(一模多腔)信息是否跟当前对设备及模具匹配; 根据设备代码,模具号查询一模多腔信息
if (!checkCachedProductionPartValid(productionPartContextList, cellEquipContext.getEquipmentCode(), mouldNo)) productionPartContextList = mouldMultiCavityService.getProductionPartList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), mouldNo);
//配置错误 抛出异常
if (CollectionUtils.isEmpty(productionPartContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog().scanInfo(mouldNo), String.format("当前设备[%s]与读取到的%s模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentName(), isFirstMouldNo ? "头道" : MesPcnExtConstWords.EMPTY, mouldNo));
return productionPartContextList;
}
//验证产出零件(一模多腔)信息是否跟当前对设备及模具匹配
private Boolean checkCachedProductionPartValid(List<MesProductionPartContext> productionPartContextList, String equipmentCode, String firstMouldNo) {
return (!CollectionUtils.isEmpty(productionPartContextList) && productionPartContextList.get(0).getEquipmentCode().equals(equipmentCode) && productionPartContextList.get(0).getMouldNo().equals(firstMouldNo)) ? true : false;
}
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList, Boolean isBackError) {
//从一模多腔信息中搜集零件编码并去重
List<String> partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError);
//封装展示组件MODULE_CONTENT内容
private List<List<StationKvBean>> getModuleContextData(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, Boolean isFirstMouldNo) {
List<List<StationKvBean>> dataList = new ArrayList<>();
AtomicReference<Integer> index = new AtomicReference<>(0);
productionPartContextList.forEach(o -> StationKvBeanUtil.addStationKvBeanList(dataList, new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.MOULD_NO, isFirstMouldNo ? "头道模具号" : "模具号", o.getMouldNo()), new StationKvBean(MesPcnExtConstWords.PART_NO, "零件编码", o.getPartNo()),
new StationKvBean(MesPcnExtConstWords.PART_NAME, "零件名称", o.getPartName()), new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", index.updateAndGet(v -> v + 1) + "/" + productionPartContextList.size())));
return dataList;
}
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<String> partNoList, Boolean isBackError) {
if (CollectionUtils.isEmpty(partNoList)) return stepResult;
//从上下文中取出零件信息集合
Map<String, MesPart> partDataMap = productionDispatchContextStepService.getPartDataContext(reqBean);
//验证上下文中取出零件信息集合是否匹配一模多腔信息中搜集零件编码
if (!CollectionUtils.isEmpty(partDataMap) && !CollectionUtils.isEmpty(partNoList) && partDataMap.keySet().containsAll(partNoList) && partNoList.containsAll(partDataMap.keySet())) return stepResult.obj(partDataMap);
//根据物料编码集合查询物料信息
Map<String, MesPart> finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
//保存零件数据信息
public void savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPartContext> productionPartContextList, Boolean isBackError, Boolean isFilter) {
//保存零件数据信息
partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, false, false);
}
//零件信息缺失 抛出异常
List<String> filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (null != o && !finalPartDataMap.containsKey(o))).collect(Collectors.toList());
//验证一模多腔信息
public List<MesProductionPartContext> getProductionPartList(StationRequestBean reqBean, StationResultBean resultBean, MesCellEquipContext cellEquipContext, String mouldNo, Boolean isFirstMouldNo) {
//保存上下文零件数据信息
if (!CollectionUtils.isEmpty(finalPartDataMap) && CollectionUtils.isEmpty(filterList))
return stepResult.isCompleted(productionDispatchContextStepService.dispatchPartDataContext(reqBean, finalPartDataMap)).obj(finalPartDataMap).msg(!stepResult.isCompleted() ? "零件数据信息保存上下文操作执行失败,请重试!" : null);
//从上下文中取出产出零件(一模多腔)信息集合
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
//验证错误 根据isBackError判断是否抛出异常
stepResult.isCompleted(false).msg(String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString()));
//验证产出零件(一模多腔)信息是否跟当前对设备及模具匹配; 根据设备代码,模具号查询一模多腔信息
if (!checkCachedProductionPartValid(productionPartContextList, cellEquipContext.getEquipmentCode(), mouldNo)) productionPartContextList = mouldMultiCavityService.getProductionPartList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), mouldNo);
if (!isBackError) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.getMsg());
//配置错误 抛出异常
if (CollectionUtils.isEmpty(productionPartContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog().scanInfo(mouldNo), String.format("当前设备[%s]与读取到的%s模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentName(), isFirstMouldNo ? "头道" : MesPcnExtConstWords.EMPTY, mouldNo));
return stepResult;
return productionPartContextList;
}
//更新展示组件MODULE_CONTENT内容
public void doCacheMoudleContext(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, Boolean isFirstMouldNo) {
//存储展示组件MODULE_CONTENT内容
productionDispatchContextStepService.dispatchModuleContentContext(reqBean, getModuleContextData(reqBean, productionPartContextList, isFirstMouldNo));
}
//封装展示组件MODULE_CONTENT内容
private List<List<StationKvBean>> getModuleContextData(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, Boolean isFirstMouldNo) {
List<List<StationKvBean>> dataList = new ArrayList<>();
AtomicReference<Integer> index = new AtomicReference<>(0);
productionPartContextList.forEach(o -> StationKvBeanUtil.addStationKvBeanList(dataList, new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.MOULD_NO, isFirstMouldNo ? "头道模具号" : "模具号", o.getMouldNo()), new StationKvBean(MesPcnExtConstWords.PART_NO, "零件编码", o.getPartNo()),
new StationKvBean(MesPcnExtConstWords.PART_NAME, "零件名称", o.getPartName()), new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", index.updateAndGet(v -> v + 1) + "/" + productionPartContextList.size())));
return dataList;
}
}

@ -1,6 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -48,9 +47,6 @@ public class MesMouldNoReadStepService extends BaseStepService {
private IMesEquipVariableCfgRuleMatchDispatchService equipVariableCfgRuleMatchService;
@Autowired
private IMesMouldMultiCavityService mouldMultiCavityService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
@Override
@ -183,18 +179,18 @@ public class MesMouldNoReadStepService extends BaseStepService {
stepResult.obj(equipVariableCollectContextList.get(0));
//存在模具号读一模多腔配置[工步参数]
if (!StringUtils.isEmpty(isReadMultiCavityCfg)) doHandleFirstMouldNo(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, mouldNo);
if (!StringUtils.isEmpty(isReadMultiCavityCfg)) doHandleFirstMouldNo(reqBean, resultBean, stepResult, cellEquipContext, mouldNo);
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.READ.getValue()).scanInfo(mouldNo), stepResult, String.format("当前已读取到设备[%s]模具号信息[%s]!", cellEquipContext.getEquipmentName(), mouldNo));
}
private void doHandleFirstMouldNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, String mouldNo) {
private void doHandleFirstMouldNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesCellEquipContext cellEquipContext, String mouldNo) {
//磨具号当头道模具号的使用
List<MesProductionPartContext> productionPartContextList = firstMouldNoReadStepService.getProductionPartList(reqBean, resultBean, productionProcessContext, cellEquipContext, mouldNo, false);
List<MesProductionPartContext> productionPartContextList = firstMouldNoReadStepService.getProductionPartList(reqBean, resultBean, cellEquipContext, mouldNo, false);
//保存零件数据信息
firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, productionProcessContext, productionPartContextList, false);
firstMouldNoReadStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, false, false);
//保存设备当前一轮工序的产出零件(一模多腔)信息
productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList);

@ -1,7 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -15,7 +13,6 @@ 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;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@ -31,12 +28,6 @@ import java.util.stream.Collectors;
@Service("mesProdCraftRouteCheckNosortStepService")
public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCheckStepService {
@Autowired
private IMesProductionRecordService productionRecordService;
@Autowired
private IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -1,7 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -14,7 +12,6 @@ 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;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@ -30,12 +27,6 @@ import java.util.stream.Collectors;
@Service("mesProdCraftRouteCheckSortStepService")
public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteCheckStepService {
@Autowired
private IMesProductionRecordService productionRecordService;
@Autowired
private IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -1,7 +1,9 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
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.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
@ -39,6 +41,12 @@ public class MesProdCraftRouteCheckStepService extends BaseStepService {
public IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
public IMesProductionRecordService productionRecordService;
@Autowired
public IMesAssemblyExtService assemblyExtService;
@Autowired
private IFsmRouteDataService fsmRouteDataService;
@Override

@ -1,8 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -16,7 +13,6 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
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;
@ -32,15 +28,6 @@ import java.util.stream.Collectors;
@Service("mesProductSeqCheckCustOrderNoStepService")
public class MesProductSeqCheckCustOrderNoStepService extends MesProductSeqCheckStepService {
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private IMesProduceSnExtService produceSnExtService;
@Autowired
private IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -1,8 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -16,7 +13,6 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
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;
@ -33,15 +29,6 @@ import java.util.stream.Collectors;
@Service("mesProductSeqCheckNosortStepService")
public class MesProductSeqCheckNosortStepService extends MesProductSeqCheckStepService {
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private IMesProduceSnExtService produceSnExtService;
@Autowired
private IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -1,8 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -16,7 +13,6 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
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;
@ -35,15 +31,6 @@ import java.util.stream.Collectors;
@Service("mesProductSeqCheckSortStepService")
public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepService {
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private IMesProduceSnExtService produceSnExtService;
@Autowired
private IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -1,7 +1,6 @@
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.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService;
@ -34,6 +33,15 @@ public class MesProductSeqCheckStepService extends BaseStepService {
@Autowired
public IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
public IMesWorkOrderExtService workOrderExtService;
@Autowired
public IMesProduceSnExtService produceSnExtService;
@Autowired
public IMesAssemblyExtService assemblyExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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.step.method.MesPartDataMapSaveStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
@ -56,7 +57,7 @@ public class MesProductSnGenerateStepService extends BaseStepService {
private IMesProductionCustomContextStepService productionCustomContextStepService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
private MesPartDataMapSaveStepService partDataMapSaveStepService;
@Autowired
private ISyncFuncService syncFuncService;
@ -116,7 +117,7 @@ public class MesProductSnGenerateStepService extends BaseStepService {
//获取上下文零件数据信息
List<String> partNoList = (prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getOutPartNo()))).map(MesProdRuleContext::getOutPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, partNoList, false);
partDataMapSaveStepService.savePartDataMap(reqBean, resultBean, stepResult, partNoList, false, false);
//从上下文中取出工位对象
MesWorkCell workCell = productionProcessContext.getWorkCell();
@ -125,12 +126,12 @@ public class MesProductSnGenerateStepService extends BaseStepService {
Map<Integer, MesProductionPartContext> ppMap = CollectionUtils.isEmpty(productionPartContextList) ? null : productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPartContext::getForeignKey, o -> o));
Map<Integer, MesProductionPsInContext> psMap = CollectionUtils.isEmpty(productionPsInContextList) ? null : productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPsInContext::getForeignKey, o -> o));
Map<String, MesPart> partMap = (Map<String, MesPart>) stepResult.getObj();
Map<String, MesPart> partDataMap = (Map<String, MesPart>) stepResult.getObj();
//循环生成零件条码,并写入产出零件
List<MesProductionPsOutContext> productionPsOutContextList = new ArrayList<>();
prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()) && !StringUtils.isEmpty(o.getOutPartNo()))).forEach(o -> {
MesProductionPsOutContext productionPsOutContext = insertProduceSnData(reqBean, resultBean, stepResult, productionProcessContext, workCell, o, ppMap, psMap, partMap, prodShiftContext, productResult);
MesProductionPsOutContext productionPsOutContext = insertProduceSnData(reqBean, resultBean, stepResult, productionProcessContext, workCell, o, ppMap, psMap, partDataMap, prodShiftContext, productResult);
if (null != productionPsOutContext) productionPsOutContextList.add(productionPsOutContext);
});
@ -143,14 +144,14 @@ public class MesProductSnGenerateStepService extends BaseStepService {
//生成零件条码
private MesProductionPsOutContext insertProduceSnData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesWorkCell workCell, MesProdRuleContext prodRuleContext,
Map<Integer, MesProductionPartContext> ppMap, Map<Integer, MesProductionPsInContext> psMap, Map<String, MesPart> partMap, MesProdShiftContext prodShiftContext, String productResult) {
Map<Integer, MesProductionPartContext> ppMap, Map<Integer, MesProductionPsInContext> psMap, Map<String, MesPart> partDataMap, MesProdShiftContext prodShiftContext, String productResult) {
//产出零件数据信息
MesProductionPartContext productionPartContext = !CollectionUtils.isEmpty(ppMap) ? ppMap.get(prodRuleContext.getForeignKey()) : null;
//进料零件条码
MesProductionPsInContext productionPsInContext = !CollectionUtils.isEmpty(psMap) ? psMap.get(prodRuleContext.getForeignKey()) : null;
//零件信息
MesPart part = partMap.get(prodRuleContext.getOutPartNo());
MesPart part = partDataMap.get(prodRuleContext.getOutPartNo());
//加工规则中进料零件与产出零件是否一致
Boolean isSamePart = isSamePart(productionPsInContext, productionPartContext);

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
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.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel;
@ -44,6 +45,9 @@ import java.util.stream.Collectors;
public class MesProductSnPrintSortStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
@ -94,7 +98,7 @@ public class MesProductSnPrintSortStepService extends BaseStepService {
Map<String, MesWorkOrder> workOrderMap = getMesWorkOrderMap(reqBean, productionPartContextList);
// 获取零件信息上下文
Map<String, MesPart> partDataContext = productionDispatchContextStepService.getPartDataContext(reqBean);
Map<String, MesPart> partDataContext = productionProcessContextStepService.getPartDataContext(reqBean);
List<MesPrintedSnLog> snLogList = new ArrayList<>();

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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.step.method.MesPartDataMapSaveStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
@ -51,7 +52,7 @@ public class MesProductSnSaveStepService extends BaseStepService {
private IMesProductionCustomContextStepService productionCustomContextStepService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
private MesPartDataMapSaveStepService partDataMapSaveStepService;
@Autowired
private IMesProduceSnExtService produceSnExtService;
@ -87,7 +88,7 @@ public class MesProductSnSaveStepService extends BaseStepService {
//获取上下文零件数据信息
List<String> partNoList = (productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPsOutContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, partNoList, false);
partDataMapSaveStepService.savePartDataMap(reqBean, resultBean, stepResult, partNoList, false, false);
//获取上下文加工结果
String productResult = productionDispatchContextStepService.getProductResultContext(reqBean);

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
@ -52,6 +53,9 @@ public class MesProductionPartNoReadStepService extends BaseStepService {
private IMesProductionCustomContextStepService productionCustomContextStepService;
@Autowired
private MesPartDataMapSaveStepService partDataMapSaveStepService;
@Autowired
private IMesEquipmentLogExtService equipmentLogExtService;
@Autowired
@ -98,8 +102,8 @@ public class MesProductionPartNoReadStepService extends BaseStepService {
//获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean, stepParamMap);
//当前工序已存在产出零件号跟产出零件信息
if (productionDispatchContextStepService.checkProductionPartNoIsExistContext(reqBean) && productionDispatchContextStepService.checkProductionPartIsExistContext(reqBean)) return stepResult;
//当前工序已存在产出零件信息
if (productionDispatchContextStepService.checkProductionPartIsExistContext(reqBean)) return stepResult;
//获取生产过程上下文对象有异常信息 抛出异常
if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
@ -168,18 +172,31 @@ public class MesProductionPartNoReadStepService extends BaseStepService {
MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
}
//发送工步内容
String scanInfo = equipVariableCollectContextList.stream().filter(o -> null != o).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON));
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ);
//从读取信息中搜集零件编码并去重
List<String> partNoList = (equipVariableCollectContextList.stream().filter(o -> (null != o)).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
if (!partDataMapSaveStepService.savePartDataMap(reqBean, resultBean, stepResult, partNoList, true, false).isCompleted()) {
this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.READ.getValue()).checkRepeat(),
String.format("当前未读取到设备[%s]有效的产出零件号,%s持续监听中...%s", cellEquipContext.getEquipmentName(), stepResult.getMsg(), JSONObject.toJSONString(equipLogDispatchContext)), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
stepThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, resultBean,
stepResult.isCompleted(false).msg(String.format("当前未读取到设备[%s]有效的产出零件号,%s持续监听中...", cellEquipContext.getEquipmentName(), stepResult.getMsg())),
MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
}
Map<String, MesPart> partDataMap = (Map<String, MesPart>) stepResult.getObj();
//根据设备ID,设备数据变量ID集合 修改设备ID分表采集数据的状态
equipmentLogExtService.updateEquipmentLogList(reqBean.getOrganizeCode(), cellEquipContext.getEquipId(), equipLogDispatchContext.getResetEquipmentLogIdMap());
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.READ.getValue()),
String.format("读取到设备[%s]产出零件号的详细JSON内容: %s", cellEquipContext.getEquipmentName(), JSONObject.toJSONString(equipLogDispatchContext)), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
//发送工步内容
String scanInfo = equipVariableCollectContextList.stream().filter(o -> null != o).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON));
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ);
//获取产出零件信息 获取零件信息
List<MesProductionPartContext> productionPartContextList = getProductionPartContext(reqBean, resultBean, productionProcessContext, equipVariableCollectContextList);
//获取产出零件信息信息
List<MesProductionPartContext> productionPartContextList = getProductionPartContext(reqBean, resultBean, partDataMap, equipVariableCollectContextList);
//更新展示组件MODULE_CONTENT内容
doCacheMoudleContext(reqBean, productionPartContextList);
@ -188,42 +205,20 @@ public class MesProductionPartNoReadStepService extends BaseStepService {
}
private List<MesProductionPartContext> getProductionPartContext(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
//从上下文中取出零件信息集合
Map<String, MesPart> partDataMap = productionDispatchContextStepService.getPartDataContext(reqBean);
//从读取信息中搜集零件编码并去重
List<String> partNoList = (equipVariableCollectContextList.stream().filter(o -> (null != o)).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
//获取产出零件信息信息
private List<MesProductionPartContext> getProductionPartContext(StationRequestBean reqBean, StationResultBean resultBean, Map<String, MesPart> partDataMap, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
//验证上下文中取出零件信息集合是否匹配一模多腔信息中搜集零件编码
if (CollectionUtils.isEmpty(partDataMap) || (!partDataMap.keySet().containsAll(partNoList) || !partNoList.containsAll(partDataMap.keySet()))) partDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
//零件信息缺失 抛出异常
List<MesProductionPartContext> productionPartContextList = getProductionPartContext(reqBean, resultBean, partNoList, partDataMap, equipVariableCollectContextList);
List<MesProductionPartContext> productionPartContextList = new ArrayList<>();
equipVariableCollectContextList.stream().filter(o -> null != o).forEach(o -> productionPartContextList.add(new MesProductionPartContext().copyPartNo(reqBean.getOrganizeCode(), o.getEquipVariableValue(), partDataMap.get(o.getEquipVariableValue()).getPartName())));
//保存设备当前一轮工序的产出零件号,产出零件信息,零件信息
productionDispatchContextStepService.dispatchProductionPartNoContext(reqBean, equipVariableCollectContextList);
productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList);
productionDispatchContextStepService.dispatchPartDataContext(reqBean, partDataMap);
return productionPartContextList;
}
private List<MesProductionPartContext> getProductionPartContext(StationRequestBean reqBean, StationResultBean resultBean, List<String> partNoList, Map<String, MesPart> partDataMap, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
List<String> filterList = CollectionUtils.isEmpty(partDataMap) ? null : partNoList.stream().filter(o -> (null != o && !partDataMap.containsKey(o))).collect(Collectors.toList());
//验证错误 抛出异常
if (CollectionUtils.isEmpty(partDataMap) || !CollectionUtils.isEmpty(filterList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(partDataMap) ? partNoList.toString() : filterList.toString()));
List<MesProductionPartContext> productionPartContextList = new ArrayList<>();
equipVariableCollectContextList.stream().filter(o -> null != o).forEach(o -> productionPartContextList.add(new MesProductionPartContext().copyPartNo(reqBean.getOrganizeCode(), o.getEquipVariableValue(), partDataMap.get(o.getEquipVariableValue()).getPartName())));
return productionPartContextList;
}
//更新展示组件MODULE_CONTENT内容
private void doCacheMoudleContext(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList) {
//存储展示组件MODULE_CONTENT内容
productionDispatchContextStepService.dispatchModuleContentContext(reqBean, getModuleContextData(reqBean, productionPartContextList));

@ -3,12 +3,13 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
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.api.iservice.base.IPartService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
@ -23,6 +24,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -42,6 +44,9 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
@Autowired
private IMesProductionCustomContextStepService productionCustomContextStepService;
@Autowired
private IPartService partService;
@Override
public StepResult guide(StationRequestBean reqBean) {
@ -58,9 +63,6 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
StepResult stepResult = StepResult.getSuccessComplete();
//扫描信息置空
String scanInfo = reqBean.resetScanInfo(reqBean.getScanInfo());
//获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
@ -70,69 +72,67 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
//存储生产过程上下文对象
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
//从上下文中取出生产线对象
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
//扫描信息置空
String scanInfo = reqBean.resetScanInfo(reqBean.getScanInfo());
//如果没有扫描信息, 取手选工单信息, 封装扫/读信息:加工单信息
List<MesEquipVariableCollectContext> equipVariableCollectContextList;
//优先验证扫描加工单
if (!StringUtils.isEmpty(scanInfo)) equipVariableCollectContextList = doHandleScanWorkOrderNoContext(reqBean, stepResult, scanInfo);
//选择加工单
else equipVariableCollectContextList = doHandleScanWorkOrderNoContext(reqBean, stepResult, workCenter);
//获取手动选择的腔数及零件信息上下文
List<StationKvBean> chooseCavityPart = productionProcessContextStepService.getFunctionChooseCavityPartContext(reqBean);
//扫描信息为空
if (CollectionUtils.isEmpty(equipVariableCollectContextList)) stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描加工单!");
List<MesProductionPartContext> productionPartContextList = null;
//保存上下文扫/读信息:加工单
productionDispatchContextStepService.dispatchScanWorkOrderNoContext(reqBean, equipVariableCollectContextList);
if (CollectionUtils.isEmpty(chooseCavityPart) && StringUtils.isEmpty(scanInfo)) stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描产成零件!");
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.SCAN.getValue()).scanInfo(scanInfo), stepResult, stepResult.getMsg());
//从上下文中取出零件信息集合
Map<String, MesPart> partDataMap = productionProcessContextStepService.getPartDataContext(reqBean);
}
if (!CollectionUtils.isEmpty(chooseCavityPart)) {
//封装扫/读信息:加工单信息 (扫描)
private List<MesEquipVariableCollectContext> doHandleScanWorkOrderNoContext(StationRequestBean reqBean, StepResult stepResult, String scanInfo) {
String cellMessageSorce = chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).findFirst().get().getValue();
List<String> chooseList = new ArrayList<>(Arrays.asList(chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.PART_NO))).findFirst().get().getValue().split(MesPcnExtConstWords.SEMICOLON)));
List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>();
//发送工步内容
scanInfo = chooseCavityPart.stream().filter(o -> (null != o && !o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).map(o -> o.getName() + MesPcnExtConstWords.SQUARE_BRACKETS_L + o.getValue() + MesPcnExtConstWords.SQUARE_BRACKETS_R).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON));
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.getByValue(Integer.valueOf(cellMessageSorce)));
equipVariableCollectContextList.add(new MesEquipVariableCollectContext(reqBean.getOrganizeCode(), scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue()));
//零件编码去重
List<String> partNoList = chooseList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
//发送工步内容
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN);
//验证上下文中取出零件信息集合是否读取信息中搜集零件编码
if (CollectionUtils.isEmpty(partDataMap) || !partDataMap.keySet().containsAll(partNoList)) partDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
//零件信息缺失 抛出异常
productionPartContextList = getProductionPartContext(reqBean, resultBean, partNoList, partDataMap, chooseList);
} else {
productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
stepResult.msg(String.format("当前扫描信息加工单[%s]!", scanInfo));
return equipVariableCollectContextList;
}
//封装扫/读信息:加工单信息 (选择)
private List<MesEquipVariableCollectContext> doHandleScanWorkOrderNoContext(StationRequestBean reqBean, StepResult stepResult, MesWorkCenter workCenter) {
//排序线不支持选择加工单
if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()) != 0) return null;
//获取手动选择的腔数及工单信息上下文, 扫描的加工单也会存入其中
List<StationKvBean> chooseCavityOrder = productionProcessContextStepService.getFunctionChooseCavityOrderContext(reqBean);
if (CollectionUtils.isEmpty(chooseCavityOrder)) return null;
String cellMessageSorce = chooseCavityOrder.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).findFirst().get().getValue();
String isConsume = chooseCavityOrder.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CRAFT_JUMP_CODE))).findFirst().get().getValue();
List<String> chooseList = new ArrayList<>(Arrays.asList(chooseCavityOrder.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.WORK_ORDER_NO))).findFirst().get().getValue().split(MesPcnExtConstWords.SEMICOLON)));
List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>();
chooseList.stream().filter(o -> !StringUtils.isEmpty(o)).forEach(o ->
equipVariableCollectContextList.add(new MesEquipVariableCollectContext(reqBean.getOrganizeCode(), o, Integer.valueOf(cellMessageSorce)).isConsume(Integer.valueOf(isConsume))));
}
// stepResult.msg(String.format("当前%s%s!", MesExtEnumUtil.CELL_MESSAGE_SOURCE.valueOfDescription(Integer.valueOf(cellMessageSorce)), scanInfo));
return null;
}
//发送工步内容
String scanInfo = chooseCavityOrder.stream().filter(o -> (null != o && !o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).map(o -> o.getName() + MesPcnExtConstWords.SQUARE_BRACKETS_L + o.getValue() + MesPcnExtConstWords.SQUARE_BRACKETS_R).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON));
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.getByValue(Integer.valueOf(cellMessageSorce)));
private List<MesProductionPartContext> getProductionPartContext(StationRequestBean reqBean, StationResultBean resultBean, List<String> partNoList, Map<String, MesPart> partDataMap, List<String> chooseList) {
List<String> filterList = CollectionUtils.isEmpty(partDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !partDataMap.containsKey(o))).collect(Collectors.toList());
stepResult.msg(String.format("当前%s%s!", MesExtEnumUtil.CELL_MESSAGE_SOURCE.valueOfDescription(Integer.valueOf(cellMessageSorce)), scanInfo));
//验证错误 抛出异常
if (CollectionUtils.isEmpty(partDataMap) || !CollectionUtils.isEmpty(filterList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(partDataMap) ? partNoList.toString() : filterList.toString()));
return equipVariableCollectContextList;
List<MesProductionPartContext> productionPartContextList = new ArrayList<>();
chooseList.stream().filter(o -> !StringUtils.isEmpty(o)).forEach(o -> productionPartContextList.add(new MesProductionPartContext().copyPartNo(reqBean.getOrganizeCode(), o, partDataMap.get(o).getPartName())));
return productionPartContextList;
}
}

@ -1,6 +1,5 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
@ -36,14 +35,8 @@ import java.util.stream.Collectors;
public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepService {
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private IFsmCommonService fsmCommonService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -115,7 +108,7 @@ public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepSer
if (checkIsAllFinishCode(reqBean, productionPartContextList)) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工单信息全部为空腔,已清除当前的空腔数据!");
//保存零件数据信息
if (!firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, productionProcessContext, productionPartContextList, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
//保存上下文产出零件信息
productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList);

@ -1,9 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
@ -17,7 +15,6 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
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;
@ -34,15 +31,6 @@ import java.util.stream.Collectors;
@Service("mesWorkOrderCheckSortStepService")
public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepService {
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private IFsmCommonService fsmCommonService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -131,7 +119,7 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
if (checkPartProdGroupCodeIsExistRepeat(reqBean, productionPartContextList, cachedProductionPartContextList)) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "不支持生产相同的零件生产组的加工单,已清除当前的加工单数据!");
//保存零件数据信息
if (!firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, productionProcessContext, productionPartContextList, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
//保存上下文产出零件信息
productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList);

@ -2,6 +2,8 @@ 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.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
@ -34,6 +36,12 @@ public class MesWorkOrderCheckStepService extends BaseStepService {
@Autowired
public IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
public MesPartDataMapSaveStepService partDataMapSaveStepService;
@Autowired
public IMesWorkOrderExtService workOrderExtService;
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPackingDefineService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -45,13 +46,13 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private IMesWorkOrderExtService workOrderExtService;
private MesPartDataMapSaveStepService partDataMapSaveStepService;
@Autowired
private IMesWorkOrderCutService workOrderCutService;
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private MesFirstMouldNoReadStepService firstMouldNoReadStepService;
private IMesWorkOrderCutService workOrderCutService;
@Autowired
private IMesProduceSnExtService produceSnExtService;
@ -93,29 +94,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
MesWorkCell workCell = productionProcessContext.getWorkCell();
////获取上下文产出零件信息
//List<MesProductionPartContext> cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
////获取工单对应的条码数据信息
//List<MesProductionPsInContext> cachedProductionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean);
//验证扫描信息是否属于工艺强过码
//Boolean isCraftJumpCode = matchCraftJumpCode(productionProcessContext, equipVariableCollectContextList);
//
////验证是否支持跳过
//Boolean isAllowJump = checkIsAllowJump(cachedProductionPartContextList, cachedProductionPsInContextList);
////当前不允许跳过
//if (isCraftJumpCode && !isAllowJump)
// return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.SCAN.getValue()).
// scanInfo(equipVariableCollectContextList.get(0).getEquipVariableValue()), stepResult, String.format("当前扫描信息工艺强过码[%s],当前没有可以跳过的裁片工单信息!", equipVariableCollectContextList.get(0).getEquipVariableValue()));
//
////允许跳过,先更新数据
//if (isCraftJumpCode && isAllowJump) {
// updateProductionPartAndPsInContextList(reqBean, cachedProductionPartContextList, cachedProductionPsInContextList, equipVariableCollectContextList.get(0).getEquipVariableValue());
// return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.SCAN.getValue()).
// scanInfo(equipVariableCollectContextList.get(0).getEquipVariableValue()), stepResult, String.format("当前扫描信息工艺强过码[%s]!", equipVariableCollectContextList.get(0).getEquipVariableValue()));
//}
//验证工单的有效性
List<MesProductionPartContext> productionPartContextList = new ArrayList<>();
List<MesProductionPsInContext> productionPsInContextList = new ArrayList<>();
@ -125,9 +103,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
equipVariableCollectContextList, productionPartContextList, productionPsInContextList,
productionPsOutContextList, workCell).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
////保存零件数据信息
//if (!firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, productionProcessContext, productionPartContextList, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
//保存上下文零件信息
productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList);
//保存上下文产出零件信息
@ -156,22 +131,12 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
}
//public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List<MesProductionPartContext> productionPartContextList, Boolean isBackError) {
//
// //从一模多腔信息中搜集零件编码并去重
// List<String> partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
//
// return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError);
//
//}
//封装展示组件MODULE_CONTENT内容
private List<List<StationKvBean>> getModuleContextData(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList) {
List<List<StationKvBean>> dataList = new ArrayList<>();
List<MesProductionPartContext> orderList = filterProductionPartContext(productionPartContextList, true);
//List<MesProductionPartContext> finishCodeList = filterProductionPartContext(productionPartContextList, false);
AtomicReference<Integer> index = new AtomicReference<>(0);
@ -188,10 +153,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", new StringJoiner(MesPcnExtConstWords.SLANT_R).add(String.valueOf(index.updateAndGet(v -> v + 1))).add(String.valueOf(cavityQty)).toString())));
}
//if (!CollectionUtils.isEmpty(finishCodeList)) {
// StationKvBeanUtil.addStationKvBeanList(dataList, new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.CAVITY_FINISH_CODE, "空腔数", String.valueOf(finishCodeList.size())));
//}
return dataList;
}
@ -254,7 +215,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
packProductionPartContextList(productionProcessContext, equipVariableCollectContextList, productionPartContextList, cutScheme, mesWorkOrderCutDetailList, workOrderList);
//保存 上下文 零件数据信息
if (!firstMouldNoReadStepService.savePartDataMap(reqBean, resultBean, stepResult, productionProcessContext, productionPartContextList, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true, false).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
// 裁片方案成品配置
List<MesCutSchemeFg> mesCutSchemeFgList = workOrderCutService.queryCutSchemeFgList(cutScheme.getCutCode(), reqBean.getOrganizeCode());
@ -267,7 +228,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
List<MesWorkOrderCutDetailModel> workOrderCutDetailModelList = new ArrayList<>();
Map<String, MesPartContext> partDataExtContext = productionDispatchContextStepService.getPartDataExtContext(reqBean);
Map<String, MesPartContext> partDataExtContext = productionProcessContextStepService.getPartDataExtContext(reqBean);
for (MesCutSchemeFg mesCutSchemeFg : mesCutSchemeFgList) {
if (StringUtils.isEmpty(mesCutSchemeFg.getPackageSnRuleCode()))
@ -310,7 +271,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
}
productionDispatchContextStepService.dispatchPartDataContext(reqBean, partDataExtContext);
productionProcessContextStepService.dispatchPartDataContext(reqBean, partDataExtContext);
productionDispatchContextStepService.dispatchMesWorkOrderCutFgDataContext(reqBean, workOrderCutDetailModelList);
@ -357,7 +318,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
MesProductionPartContext productionPartContext = new MesProductionPartContext()
.copyPartNo(o, workOrderCutDetailMap.get(o.getWorkOrderNo()).getQty(), workOrderCutDetailMap.get(o.getWorkOrderNo()).getCutWorkOrderNo(), equipVariableCollectContextList.get(0).getMessageSource())
.isCheck(productionProcessContext.getWorkCell());
//if (equipVariableCollectContextList.get(0).getIsConsume().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) productionPartContext.checkSeqResult(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
productionPartContext.setCutCode(cutScheme.getCutCode());
productionPartContextList.add(productionPartContext);
});

@ -70,7 +70,7 @@ public class MesWorkOrderCutPackageSnSaveStepService extends BaseStepService {
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
// 获取产成零件信息
Map<String, MesPartContext> partDataContext = productionDispatchContextStepService.getPartDataExtContext(reqBean);
Map<String, MesPartContext> partDataContext = productionProcessContextStepService.getPartDataExtContext(reqBean);
//从上下文中取出工位对象
MesWorkCell workCell = productionProcessContext.getWorkCell();

@ -115,7 +115,7 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService {
Map<String, MesProdRuleContext> prodRuleContextMapByOutPartNo = prodRuleContextList.stream().collect(Collectors.toMap(MesProdRuleContext::getOutPartNo, Function.identity(), (x, y) -> y));
// 获取产成零件信息
Map<String, MesPart> partDataContext = productionDispatchContextStepService.getPartDataContext(reqBean);
Map<String, MesPart> partDataContext = productionProcessContextStepService.getPartDataContext(reqBean);
//从上下文中取出工位对象
MesWorkCell workCell = productionProcessContext.getWorkCell();

@ -6,7 +6,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel;
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.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesRawPartCharging;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
@ -18,7 +17,6 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
/**
@ -194,33 +192,6 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
return true;
}
//获取上下文零件数据信息
@Override
public Map<String, MesPart> getPartDataContext(StationRequestBean reqBean) {
String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPart>>() {}) : null;
}
//获取上下文零件数据信息
@Override
public Map<String, MesPartContext> getPartDataExtContext(StationRequestBean reqBean) {
String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPartContext>>() {}) : null;
}
//保存上下文零件数据信息 [JSON]Map<String, MesPart>
@Override
public Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap) {
if (CollectionUtils.isEmpty(partDataMap)) return false;
return dispatchFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT, JSONObject.toJSONString(partDataMap));
}
//删除上下文零件数据信息
@Override
public void removePartDataContext(StationRequestBean reqBean) {
removeFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
}
//获取上下文模具号
@Override
public MesEquipVariableCollectContext getMouldNoContext(StationRequestBean reqBean) {

@ -3,10 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.context;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
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.MesProductionAssemblyNosortContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesScanMonitorContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
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.api.iservice.base.IConfigService;
@ -392,6 +389,33 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
return dispatchFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.ASSEMBLY_NOSORT_CFG_CONTEXT, JSONObject.toJSONString(assemblyNosortCfgList));
}
//获取上下文零件数据信息
@Override
public Map<String, MesPart> getPartDataContext(StationRequestBean reqBean) {
String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPart>>() {}) : null;
}
//获取上下文零件数据信息
@Override
public Map<String, MesPartContext> getPartDataExtContext(StationRequestBean reqBean) {
String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPartContext>>() {}) : null;
}
//保存上下文零件数据信息 [JSON]Map<String, MesPart>
@Override
public Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap) {
if (CollectionUtils.isEmpty(partDataMap)) return false;
return dispatchFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT, JSONObject.toJSONString(partDataMap));
}
//删除上下文零件数据信息
@Override
public void removePartDataContext(StationRequestBean reqBean) {
removeFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
}
//获取手动选择的腔数及工单信息上下文
@Override
public List<StationKvBean> getFunctionChooseCavityOrderContext(StationRequestBean reqBean) {
@ -412,6 +436,25 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
removeFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_ORDER);
}
//获取手动选择的腔数及零件信息上下文
@Override
public List<StationKvBean> getFunctionChooseCavityPartContext(StationRequestBean reqBean) {
String chooseCavityPartJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_PART);
return !StringUtils.isEmpty(chooseCavityPartJson) ? JSONObject.parseArray(chooseCavityPartJson, StationKvBean.class) : null;
}
//保存选择/扫描/读取的腔数及零件信息上下文 腔数=工单个数 数据格式: [StationKvBean(key=cavity, name=腔数, value=3, seq=0), StationKvBean(key=cellMessageSource, name=工位信息来源, value=10, seq=1), StationKvBean(key=partNo, name=零件编码, value=零件1;零件2;零件3, seq=2)]
@Override
public Boolean dispatchFunctionChooseCavityPartContext(StationRequestBean reqBean, List<StationKvBean> resultList) {
if (CollectionUtils.isEmpty(resultList)) return false;
return dispatchFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_PART, JSONObject.toJSONString(resultList));
}
//删除手动选择的腔数及工单信息上下文
@Override
public void removeFunctionChooseCavityPartContext(StationRequestBean reqBean) {
removeFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_PART);
}
//获取上下文工位扫描监控信息, 没有就重新封装工位扫描监控信息, 同时处理基础上下文信息 【其他地方调用 isSave 必须传 true 】
@Override

@ -3,12 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.context;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.process.BaseProcessMonitorService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.swslog.ISwsWriteDbLogService;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,20 +23,13 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
@Autowired
private IMesProductionCustomContextStepService productionCustomContextStepService;
@Autowired
private IFsmCommonService fsmCommonService;
@Autowired
private ISwsWriteDbLogService writeDbLogService;
//工序开始
@Override
public Boolean doProcessStart(StationRequestBean requestBean) {
//保存上下文工位扫描监控信息
productionProcessContextStepService.dispatchScanMonitorContext(requestBean);
//清除工步客制化区域数据【装配件清单】
this.sendMessage(requestBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CUSTOM_CONTENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLES.getValue()));
return true;
//父类清除工步客制化区域数据【装配件清单】
return super.doProcessStart(requestBean);
}
//工序结束
@ -54,9 +42,8 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
}
//清除上下文中的所有业务数据
productionDispatchContextStepService.flushProductionDispatchContext(requestBean);
//发送工序完成音
this.sendMessage(requestBean, new StationResultBean().resultObj(MesPcnExtConstWords.PROCESS_COMPLETE).busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.SOUND.getValue()));
return true;
//父类发送工序完成音
return super.doProcessComplete(requestBean);
}
//重置工序
@ -64,14 +51,14 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
public Boolean doJumpProcess(StationRequestBean requestBean) {
//清除上下文中的所有业务数据
productionDispatchContextStepService.flushProductionDispatchContext(requestBean);
return true;
return super.doJumpProcess(requestBean);
}
//客户端上线
@Override
public Boolean doOnLine(StationRequestBean requestBean) {
//删除当前工步集
fsmCommonService.flushCache(requestBean);
//父类删除当前工步集
super.doOnLine(requestBean);
//清除上下文中的所有业务数据
productionDispatchContextStepService.flushProductionDispatchContext(requestBean);
//清除上下文中的所有基础数据
@ -83,16 +70,16 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
//客户端下线
@Override
public Boolean doOffLine(StationRequestBean requestBean) { return true; }
public Boolean doOffLine(StationRequestBean requestBean) { return super.doOffLine(requestBean); }
//工位流程重置 【父类已经调用: 删除当前工步集; 清除工位工序流程; TASK_COMPLETE】
//工位流程重置 【父类调度方法已经调用: 删除当前工步集; 清除工位工序流程; TASK_COMPLETE】
@Override
public Boolean fsmReset(StationRequestBean requestBean) {
//清除上下文中的所有业务数据
productionDispatchContextStepService.flushProductionDispatchContext(requestBean);
//清除上下文中的所有基础数据
productionProcessContextStepService.flushProductionProcessContext(requestBean);
return true;
return super.fsmReset(requestBean);
}
}

@ -1,4 +1,4 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;

@ -0,0 +1,107 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IPartService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
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;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesPartDataMapSaveStepService")
public class MesPartDataMapSaveStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IPartService partService;
//保存零件数据信息
public StepResult savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPartContext> productionPartContextList, Boolean isBackError, Boolean isFilter, Boolean isSave) {
//从一模多腔信息中搜集零件编码并去重
List<String> partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, isSave);
}
//保存零件数据信息
public StepResult savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPartContext> productionPartContextList, Boolean isBackError, Boolean isFilter) {
//从一模多腔信息中搜集零件编码并去重
List<String> partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true);
}
//保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件】
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<String> partNoList, Boolean isBackError, Boolean isFilter) {
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true);
}
//保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件】
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<String> partNoList, Boolean isBackError, Boolean isFilter, Boolean isSave) {
if (CollectionUtils.isEmpty(partNoList)) return stepResult;
//从上下文中取出零件信息集合
Map<String, MesPart> partDataMap = productionProcessContextStepService.getPartDataContext(reqBean);
//验证上下文中取出零件信息集合是否匹配当前搜集的零件编码
if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList)) return stepResult.obj(partDataMap);
//新零件MAP
Map<String, MesPart> finalPartDataMap;
if (!isFilter) {
//根据物料编码集合查询物料信息
finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
} else {
//已缓存的零件号
List<String> containPartNoList = CollectionUtils.isEmpty(partDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && partDataMap.containsKey(o))).collect(Collectors.toList());
//未缓存的零件号
List<String> unContainPartNoList = CollectionUtils.isEmpty(partDataMap) ? partNoList : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !partDataMap.containsKey(o))).collect(Collectors.toList());
//根据未缓存的零件号集合查询物料信息
finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), unContainPartNoList);
//合并零件号
if (!CollectionUtils.isEmpty(finalPartDataMap) && !CollectionUtils.isEmpty(containPartNoList)) containPartNoList.stream().filter(o -> !StringUtils.isEmpty(o)).forEach(o -> finalPartDataMap.put(o, partDataMap.get(o)));
}
//零件信息缺失 抛出异常
List<String> filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !finalPartDataMap.containsKey(o))).collect(Collectors.toList());
//保存上下文零件数据信息
if (!CollectionUtils.isEmpty(finalPartDataMap) && CollectionUtils.isEmpty(filterList)) {
if (isSave) productionProcessContextStepService.dispatchPartDataContext(reqBean, finalPartDataMap);
return stepResult.obj(finalPartDataMap);
}
//验证错误 根据isBackError判断是否抛出异常
stepResult.isCompleted(false).msg(String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString()));
if (!isBackError) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.getMsg());
return stepResult;
}
}

@ -366,6 +366,8 @@ public class MesPcnExtConstWords {
public static final String FUNCTION_RESET_CELL_CONTEXT = "FUNCTION_RESET_CELL_CONTEXT";
// 工位参数按钮事件: 选择工单(先选腔数, 再选工单)
public static final String FUNCTION_CHOOSE_CAVITY_ORDER = "FUNCTION_CHOOSE_CAVITY_ORDER";
// 工位参数按钮事件: 选择产成零件(先选腔数, 再选零件)
public static final String FUNCTION_CHOOSE_CAVITY_PART = "FUNCTION_CHOOSE_CAVITY_PART";
// 工位参数按钮事件: 切换工位
public static final String FUNCTION_SWITCH_CELL = "FUNCTION_SWITCH_CELL";
// 工位参数按钮事件: 锁定
@ -380,9 +382,6 @@ public class MesPcnExtConstWords {
// 自定义触发事件: 产出零件
public static final String NEXT_TRIGGER_EVENT_PART_NO = "PART_NO";
// 工序完成
public static final String PROCESS_COMPLETE = "processComplete";
// 0
public static final String ZERO_STR = "0";
// 0

Loading…
Cancel
Save