|
|
@ -1,6 +1,7 @@
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method;
|
|
|
|
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.api.busi.IMesProductionProcessContextStepService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPartContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
|
|
|
|
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.context.MesProductionProcessContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
@ -38,12 +39,22 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
|
|
|
|
private IPartService partService;
|
|
|
|
private IPartService partService;
|
|
|
|
|
|
|
|
|
|
|
|
//保存零件数据信息
|
|
|
|
//保存零件数据信息
|
|
|
|
|
|
|
|
public StepResult savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPartContext> productionPartContextList, Boolean isBackError, Boolean isFilter, Boolean isSave, Boolean isExt) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//从一模多腔信息中搜集零件编码并去重
|
|
|
|
|
|
|
|
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, isExt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//保存零件数据信息
|
|
|
|
public StepResult savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProductionPartContext> productionPartContextList, Boolean isBackError, Boolean isFilter, Boolean isSave) {
|
|
|
|
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());
|
|
|
|
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);
|
|
|
|
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, isSave, false);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -53,19 +64,19 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
|
|
|
|
//从一模多腔信息中搜集零件编码并去重
|
|
|
|
//从一模多腔信息中搜集零件编码并去重
|
|
|
|
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());
|
|
|
|
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);
|
|
|
|
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true, false);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件;true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件】
|
|
|
|
//保存零件数据信息
|
|
|
|
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<String> partNoList, Boolean isBackError, Boolean isFilter) {
|
|
|
|
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);
|
|
|
|
return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true, false);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件;true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件】
|
|
|
|
//保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件;true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件; isExt=false返回MesPart,true返回MesPartContext】
|
|
|
|
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<String> partNoList, Boolean isBackError, Boolean isFilter, Boolean isSave) {
|
|
|
|
public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<String> partNoList, Boolean isBackError, Boolean isFilter, Boolean isSave, Boolean isExt) {
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(partNoList)) {
|
|
|
|
if (CollectionUtils.isEmpty(partNoList)) {
|
|
|
|
stepResult.isCompleted(false).msg("获取零件信息失败,零件编码不存在!");
|
|
|
|
stepResult.isCompleted(false).msg("获取零件信息失败,零件编码不存在!");
|
|
|
@ -73,38 +84,54 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//从上下文中取出零件信息集合
|
|
|
|
//从上下文中取出零件信息集合
|
|
|
|
Map<String, MesPart> partDataMap = productionProcessContextStepService.getPartDataContext(reqBean);
|
|
|
|
Map<String, ? extends MesPart> partDataMap = productionProcessContextStepService.getPartDataContext(reqBean, isExt);
|
|
|
|
|
|
|
|
|
|
|
|
//验证上下文中取出零件信息集合是否匹配当前搜集的零件编码
|
|
|
|
//验证上下文中取出零件信息集合是否匹配当前搜集的零件编码
|
|
|
|
if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList)) return stepResult.obj(partDataMap);
|
|
|
|
if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList)) return stepResult.obj(partDataMap);
|
|
|
|
|
|
|
|
|
|
|
|
//新零件MAP
|
|
|
|
//新零件MAP
|
|
|
|
Map<String, MesPart> finalPartDataMap;
|
|
|
|
Map<String, MesPart> finalPartDataMap = null;
|
|
|
|
|
|
|
|
Map<String, MesPartContext> finalPartDataExtMap = null;
|
|
|
|
if (!isFilter) {
|
|
|
|
if (!isFilter) {
|
|
|
|
//根据物料编码集合查询物料信息
|
|
|
|
//根据物料编码集合查询物料信息
|
|
|
|
finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
|
|
|
|
if (!isExt) finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList);
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
List<MesPart> partList = partService.getPartList(reqBean.getOrganizeCode(), partNoList);
|
|
|
|
|
|
|
|
finalPartDataExtMap = getPartMap(partList);
|
|
|
|
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
//已缓存的零件号
|
|
|
|
//已缓存的零件号
|
|
|
|
List<String> containPartNoList = CollectionUtils.isEmpty(partDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && partDataMap.containsKey(o))).collect(Collectors.toList());
|
|
|
|
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());
|
|
|
|
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 (!isExt) finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), unContainPartNoList);
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
List<MesPart> partList = partService.getPartList(reqBean.getOrganizeCode(), partNoList);
|
|
|
|
|
|
|
|
finalPartDataExtMap = getPartMap(partList);
|
|
|
|
|
|
|
|
}
|
|
|
|
//合并零件号
|
|
|
|
//合并零件号
|
|
|
|
if (!CollectionUtils.isEmpty(finalPartDataMap) && !CollectionUtils.isEmpty(containPartNoList)) containPartNoList.stream().filter(o -> !StringUtils.isEmpty(o)).forEach(o -> finalPartDataMap.put(o, partDataMap.get(o)));
|
|
|
|
if ((!CollectionUtils.isEmpty(finalPartDataMap) || !CollectionUtils.isEmpty(finalPartDataExtMap)) && !CollectionUtils.isEmpty(containPartNoList)) {
|
|
|
|
|
|
|
|
for (String partNo : containPartNoList) {
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(partNo)) continue;
|
|
|
|
|
|
|
|
if (!isExt) finalPartDataMap.put(partNo, partDataMap.get(partNo));
|
|
|
|
|
|
|
|
else finalPartDataExtMap.put(partNo, (MesPartContext) partDataMap.get(partNo));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//零件信息缺失 抛出异常
|
|
|
|
//零件信息缺失 抛出异常
|
|
|
|
List<String> filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !finalPartDataMap.containsKey(o))).collect(Collectors.toList());
|
|
|
|
List<String> finalPartList = !isExt ? (CollectionUtils.isEmpty(finalPartDataMap) ? null : new ArrayList<>(finalPartDataMap.keySet())) : (CollectionUtils.isEmpty(finalPartDataExtMap) ? null : new ArrayList<>(finalPartDataExtMap.keySet()));
|
|
|
|
|
|
|
|
List<String> filterList = CollectionUtils.isEmpty(finalPartList) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !finalPartList.contains(o))).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
//保存上下文零件数据信息
|
|
|
|
//保存上下文零件数据信息
|
|
|
|
if (!CollectionUtils.isEmpty(finalPartDataMap) && CollectionUtils.isEmpty(filterList)) {
|
|
|
|
if (!CollectionUtils.isEmpty(finalPartList) && CollectionUtils.isEmpty(filterList)) {
|
|
|
|
if (isSave) productionProcessContextStepService.dispatchPartDataContext(reqBean, finalPartDataMap);
|
|
|
|
if (isSave) productionProcessContextStepService.dispatchPartDataContext(reqBean, !isExt ? finalPartDataMap : finalPartDataExtMap);
|
|
|
|
return stepResult.obj(finalPartDataMap);
|
|
|
|
return stepResult.obj(!isExt ? finalPartDataMap : finalPartDataExtMap);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//验证错误 根据isBackError判断是否抛出异常
|
|
|
|
//验证错误 根据isBackError判断是否抛出异常
|
|
|
|
stepResult.isCompleted(false).msg(String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString()));
|
|
|
|
stepResult.isCompleted(false).msg(String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(finalPartList) ? partNoList.toString() : filterList.toString()));
|
|
|
|
|
|
|
|
|
|
|
|
if (!isBackError) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.getMsg());
|
|
|
|
if (!isBackError) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.getMsg());
|
|
|
|
|
|
|
|
|
|
|
@ -160,4 +187,10 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
|
|
|
|
return dataList;
|
|
|
|
return dataList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Map<String, MesPartContext> getPartMap(List<MesPart> partList) {
|
|
|
|
|
|
|
|
partList = CollectionUtils.isEmpty(partList) ? null :
|
|
|
|
|
|
|
|
partList.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesPart::getPartNo))), ArrayList::new));
|
|
|
|
|
|
|
|
return CollectionUtils.isEmpty(partList) ? null : partList.stream().filter(o -> null != o).collect(Collectors.toMap(MesPart::getPartNo, o -> new MesPartContext(o)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|