Merge remote-tracking branch 'origin/dev-wuhan-temp' into dev-wuhan-temp

tags/yfai-pcn-ext-v2.3
臧学普 7 months ago
commit 98589ffecb

@ -20,12 +20,12 @@ public interface IMesNumberRuleMatchDispatchService {
default Map<String, Object> matchNumberRule(String organizeCode, String sn, Object... params) { return null; }
@ApiOperation(value = "验证装配件条码在当前开模中的唯一性")
default Boolean checkAssemblySnUnique(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) { return true; }
default Boolean checkAssemblySnUniqueInMould(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) { return true; }
@ApiOperation(value = "验证装配件条码在当前开模中的唯一性")
default Boolean checkAssemblySnUnique(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, String assemblySn) { return true; }
default Boolean checkAssemblySnUniqueInMould(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, String assemblySn) { return true; }
@ApiOperation(value = "验证装配件条码在当前开模中的唯一性")
default Boolean checkAssemblySnUnique(List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) { return true; }
default Boolean checkAssemblySnUniqueInMould(List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) { return true; }
}

@ -1370,6 +1370,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
MesMoveRule moveRule;
//查询零件生产组的移库规则
List<MesMoveRule> moveRules = mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(mesWorkOrder.getPartProdGroupCode(), mesWorkOrder.getOrganizeCode());
if(CollectionUtils.isEmpty(moveRules)) return;
Map<String, List<MesMoveRule>> mesMoveRuleMap = moveRules.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.groupingBy(MesMoveRule::getSrcType));
List<String> itemPartNoList = mesBoms.stream().map(MesBom::getItemPartNo).collect(Collectors.toList());
//子物料SAP下发信息
@ -1486,7 +1487,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
private MesProductVersion getMesProductVersion(Map<String, List<MesProductVersion>> productVersionMap, String reportPartNo, String productVersion) {
Optional<MesProductVersion> optional = Objects.isNull(productVersionMap) || !productVersionMap.containsKey(reportPartNo) ? Optional.empty() : productVersionMap.get(reportPartNo).stream().filter(t -> t.getProductVersion().equals(productVersion)).findFirst();
if (!optional.isPresent()) {
MesPcnException.throwMesBusiException("零件:【%s】生产版本:【%s】信息存在", reportPartNo, productVersion);
MesPcnException.throwMesBusiException("零件:【%s】生产版本:【%s】信息存在", reportPartNo, productVersion);
}
return optional.get();
}

@ -96,14 +96,14 @@ public class MesNumberRuleMatchDispatchService implements IMesNumberRuleMatchDis
}
@Override
public Boolean checkAssemblySnUnique(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) {
if (!checkAssemblySnUnique(workCenter, prodRuleContextList, assemblySn)) return false;
if (!checkAssemblySnUnique(productionAssemblyContextList, assemblySn)) return false;
public Boolean checkAssemblySnUniqueInMould(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) {
if (!checkAssemblySnUniqueInMould(workCenter, prodRuleContextList, assemblySn)) return false;
if (!checkAssemblySnUniqueInMould(productionAssemblyContextList, assemblySn)) return false;
return true;
}
@Override
public Boolean checkAssemblySnUnique(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, String assemblySn) {
public Boolean checkAssemblySnUniqueInMould(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, String assemblySn) {
if (CollectionUtils.isEmpty(prodRuleContextList)) return true;
@ -111,7 +111,7 @@ public class MesNumberRuleMatchDispatchService implements IMesNumberRuleMatchDis
if (null == prodRuleContext || StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue;
if (!checkAssemblySnUnique(prodRuleContext.getProductionAssemblyContextList(workCenter), assemblySn)) return false;
if (!checkAssemblySnUniqueInMould(prodRuleContext.getProductionAssemblyContextList(workCenter), assemblySn)) return false;
}
@ -119,7 +119,7 @@ public class MesNumberRuleMatchDispatchService implements IMesNumberRuleMatchDis
}
@Override
public Boolean checkAssemblySnUnique(List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) {
public Boolean checkAssemblySnUniqueInMould(List<? extends MesProductionAssemblyContext> productionAssemblyContextList, String assemblySn) {
if (CollectionUtils.isEmpty(productionAssemblyContextList)) return true;

@ -0,0 +1,125 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function;
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.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService;
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.mes.model.ButtonDynamicModel;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
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.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
**/
@Service
public class MesFunctionChooseCavityPartService extends BaseSwsService implements IFsmModuleFunctionService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IShippingDispatchService shippingDispatchService;
@Override
public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
//暂定不需要卡控
/*//获取生产过程上下文对象
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean);
if (!productionProcessContext.getSuccess()) return false;
MesWorkCell workCell = productionProcessContext.getWorkCell();
if (StringUtils.isEmpty(workCell.getIsAllowOrder()) || CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == workCell.getIsAllowOrder()) {
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()),
String.format("生产线[%s]工位[%s]%s失败,工位未设置允许界面选产成零件!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return false;
}*/
List<StationKvBean> resultList = checkCavityPartIsValid(buttonDynamicModel.getFunctionValue());
if (CollectionUtils.isEmpty(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()),
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return false;
}
//保存手动选择的腔数及工单信息上下文
productionProcessContextStepService.dispatchFunctionChooseCavityOrderContext(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()),
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean));
reqBean.setInterfaceType(MesPcnConstWords.SHIPPING);
reqBean.setBusiType(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_DO_SCAN.getCode());
reqBean.setForceJumpProcess(true);
shippingDispatchService.sendScanQueueNextExec(reqBean);
return true;
}
//腔数=零件个数 数据格式: 腔数;零件1;零件2;零件3
private List<StationKvBean> checkCavityPartIsValid(String functionValue) {
List<String> list = !StringUtils.isEmpty(functionValue) ? new ArrayList<>(Arrays.asList(functionValue.split(MesPcnExtConstWords.SEMICOLON))) : null;
if (CollectionUtils.isEmpty(list)) return null;
List<StationKvBean> resultList = null;
try {
Integer cavity = Integer.valueOf(list.get(0));
if (cavity != list.size() - 1) return null;
return StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", list.remove(0)),
new StationKvBean(MesPcnExtConstWords.CELL_MESSAGE_SOURCE, "工位信息来源", MesExtEnumUtil.CELL_MESSAGE_SOURCE.PICK.getValueStr()),
new StationKvBean(MesPcnExtConstWords.PART_NO, "零件编码", list.stream().filter(o -> null != o).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON))));
} catch (NumberFormatException e) {
return null;
}
}
@Override
public Object doCustomApiDispatch(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
//获取生产过程上下文对象
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean);
if (!productionProcessContext.getSuccess()) return MesPcnExtConstWords.ONE;
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
if (null == cellEquipContext) return MesPcnExtConstWords.ONE;
return cellEquipContext.getCavity();
}
}

@ -296,7 +296,7 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? equipVariableCollectContext.getEquipVariableValue() : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
//验证规则且唯一/自制件 在当前开模内是否存在重复
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRule(productionAssemblyNosortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUnique(workCenter, prodRuleContextList, productionAssemblyNosortContextList, assemblySn)) {
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRuleInMould(productionAssemblyNosortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUniqueInMould(workCenter, prodRuleContextList, productionAssemblyNosortContextList, assemblySn)) {
stepResult.msg(String.format("%s[%s]不能重复装配!", StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), assemblySn));
continue;
}

@ -297,7 +297,7 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? equipVariableCollectContext.getEquipVariableValue() : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
//验证规则且唯一/自制件 在当前开模内是否存在重复
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRule(productionAssemblyNosortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUnique(workCenter, prodRuleContextList, productionAssemblyNosortContextList, assemblySn)) {
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRuleInMould(productionAssemblyNosortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUniqueInMould(workCenter, prodRuleContextList, productionAssemblyNosortContextList, assemblySn)) {
stepResult.msg(String.format("%s[%s]不能重复装配!", StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), assemblySn));
continue;
}

@ -301,7 +301,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? equipVariableCollectContext.getEquipVariableValue() : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
//验证规则且唯一/自制件 在当前开模内是否存在重复
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRule(productionAssemblyNosortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUnique(workCenter, prodRuleContextList, assemblySn)) {
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRuleInMould(productionAssemblyNosortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUniqueInMould(workCenter, prodRuleContextList, assemblySn)) {
stepResult.msg(String.format("%s[%s]不能重复装配!", StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), assemblySn));
continue;
}

@ -269,7 +269,7 @@ public class MesAssemblyMatchSortStepService extends BaseStepService {
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? equipVariableCollectContext.getEquipVariableValue() : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
//验证规则且唯一/自制件 在当前开模内是否存在重复
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRule(productionAssemblySortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUnique(workCenter, prodRuleContextList, assemblySn)) {
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRuleInMould(productionAssemblySortContext.getMatchType()) && !numberRuleMatchDispatchService.checkAssemblySnUniqueInMould(workCenter, prodRuleContextList, assemblySn)) {
stepResult.msg(String.format("%s[%s]不能重复装配!", StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), assemblySn));
continue;
}

@ -16,7 +16,6 @@ import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -129,6 +128,8 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
}
prodRuleContext.assemblyDataJson(productionAssemblySortContextList);
}
if (!CollectionUtils.isEmpty(productSnIdList)) produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), productSnIdList);
@ -152,7 +153,7 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
}
private void saveProductionAssemblyUnique(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) {
if (productionAssemblySortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) != 0 || StringUtils.isEmpty(productionAssemblySortContext.getAssemblySn())) return;
if (!MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRuleInDb(productionAssemblySortContext.getMatchType()) || StringUtils.isEmpty(productionAssemblySortContext.getAssemblySn())) return;
if (productionAssemblySortContext.getIsClosedCheck()) return;//离线生产不写[装配件规则唯一绑定记录表]
MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique();
BeanUtils.copyProperties(productionAssemblySortContext, productionAssemblyUnique, MesPcnExtConstWords.ID);

@ -0,0 +1,138 @@
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.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesProductionPartNoScanStepService")
public class MesProductionPartNoScanStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private IMesProductionCustomContextStepService productionCustomContextStepService;
@Override
public StepResult guide(StationRequestBean reqBean) {
productionCustomContextStepService.sendStepContextMessage(reqBean);
return stepSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描产成零件!");
}
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//扫描信息置空
String scanInfo = reqBean.resetScanInfo(reqBean.getScanInfo());
//获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
//获取生产过程上下文对象有异常信息 抛出异常
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
//存储生产过程上下文对象
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
//从上下文中取出生产线对象
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
//如果没有扫描信息, 取手选工单信息, 封装扫/读信息:加工单信息
List<MesEquipVariableCollectContext> equipVariableCollectContextList;
//优先验证扫描加工单
if (!StringUtils.isEmpty(scanInfo)) equipVariableCollectContextList = doHandleScanWorkOrderNoContext(reqBean, stepResult, scanInfo);
//选择加工单
else equipVariableCollectContextList = doHandleScanWorkOrderNoContext(reqBean, stepResult, workCenter);
//扫描信息为空
if (CollectionUtils.isEmpty(equipVariableCollectContextList)) stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描加工单!");
//保存上下文扫/读信息:加工单
productionDispatchContextStepService.dispatchScanWorkOrderNoContext(reqBean, equipVariableCollectContextList);
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.SCAN.getValue()).scanInfo(scanInfo), stepResult, stepResult.getMsg());
}
//封装扫/读信息:加工单信息 (扫描)
private List<MesEquipVariableCollectContext> doHandleScanWorkOrderNoContext(StationRequestBean reqBean, StepResult stepResult, String scanInfo) {
List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>();
equipVariableCollectContextList.add(new MesEquipVariableCollectContext(reqBean.getOrganizeCode(), scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue()));
//发送工步内容
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN);
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))));
//发送工步内容
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)));
stepResult.msg(String.format("当前%s%s!", MesExtEnumUtil.CELL_MESSAGE_SOURCE.valueOfDescription(Integer.valueOf(cellMessageSorce)), scanInfo));
return equipVariableCollectContextList;
}
}

@ -258,6 +258,9 @@ public class MesProductionProcessContext implements Serializable {
public MesProductionProcessContext equipVariableCfgJson(List<MesEquipmentVariableCfg> equipmentVariableCfgList) {
if (CollectionUtils.isEmpty(equipmentVariableCfgList)) return this;
if (!StringUtils.isEmpty(this.equipVariableCfgJson)) equipmentVariableCfgList.addAll(getEquipVariableCfgList());
equipmentVariableCfgList.stream().filter(o -> null != o).forEach(o -> {
if (StringUtils.isEmpty(o.getModifyDatetime())) o.setModifyDatetime(o.getCreateDatetime());
});
equipmentVariableCfgList = equipmentVariableCfgList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesEquipmentVariableCfg::getModifyDatetime).reversed()).collect(Collectors.toList());
equipmentVariableCfgList = equipmentVariableCfgList.stream().filter(o -> null != o).distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesEquipmentVariableCfg::getId))), ArrayList::new));
this.equipVariableCfgJson = JSONObject.toJSONString(equipmentVariableCfgList);
@ -289,6 +292,9 @@ public class MesProductionProcessContext implements Serializable {
equipmentVariableList = CollectionUtils.isEmpty(equipmentVariableList) ? null : equipmentVariableList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCategoryLevelTwo()))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(equipmentVariableList)) return this;
if (!StringUtils.isEmpty(this.equipVariableJson)) equipmentVariableList.addAll(getEquipVariableList());
equipmentVariableList.stream().filter(o -> null != o).forEach(o -> {
if (StringUtils.isEmpty(o.getModifyDatetime())) o.setModifyDatetime(o.getCreateDatetime());
});
equipmentVariableList = equipmentVariableList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesEquipmentVariable::getModifyDatetime).reversed()).collect(Collectors.toList());
equipmentVariableList = equipmentVariableList.stream().filter(o -> null != o).distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesEquipmentVariable::getId))), ArrayList::new));
this.equipVariableJson = JSONObject.toJSONString(equipmentVariableList);

Loading…
Cancel
Save