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

tags/yfai-pcn-ext-v2.3
臧学普 6 months ago
commit a319b05ce9

@ -107,6 +107,9 @@ public interface IMesProductionProcessContextStepService {
@ApiOperation(value = "获取上下文零件数据信息") @ApiOperation(value = "获取上下文零件数据信息")
Map<String, MesPartContext> getPartDataExtContext(StationRequestBean reqBean); Map<String, MesPartContext> getPartDataExtContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文零件数据信息")
Map<String, ? extends MesPart> getPartDataContext(StationRequestBean reqBean, Boolean isExt);
@ApiOperation(value = "保存上下文零件数据信息", notes = "[JSON]Map<String, MesPart>") @ApiOperation(value = "保存上下文零件数据信息", notes = "[JSON]Map<String, MesPart>")
Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap); Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap);

@ -215,7 +215,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
packProductionPartContextList(productionProcessContext, equipVariableCollectContextList, productionPartContextList, cutScheme, mesWorkOrderCutDetailList, workOrderList); packProductionPartContextList(productionProcessContext, equipVariableCollectContextList, productionPartContextList, cutScheme, mesWorkOrderCutDetailList, workOrderList);
//保存 上下文 零件数据信息 //保存 上下文 零件数据信息
if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true, false).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true, false, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
// 裁片方案成品配置 // 裁片方案成品配置
List<MesCutSchemeFg> mesCutSchemeFgList = workOrderCutService.queryCutSchemeFgList(cutScheme.getCutCode(), reqBean.getOrganizeCode()); List<MesCutSchemeFg> mesCutSchemeFgList = workOrderCutService.queryCutSchemeFgList(cutScheme.getCutCode(), reqBean.getOrganizeCode());
@ -228,7 +228,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
List<MesWorkOrderCutDetailModel> workOrderCutDetailModelList = new ArrayList<>(); List<MesWorkOrderCutDetailModel> workOrderCutDetailModelList = new ArrayList<>();
Map<String, MesPartContext> partDataExtContext = productionProcessContextStepService.getPartDataExtContext(reqBean); Map<String, MesPartContext> partDataExtContext = (Map<String, MesPartContext>) stepResult.getObj();
for (MesCutSchemeFg mesCutSchemeFg : mesCutSchemeFgList) { for (MesCutSchemeFg mesCutSchemeFg : mesCutSchemeFgList) {
if (StringUtils.isEmpty(mesCutSchemeFg.getPackageSnRuleCode())) if (StringUtils.isEmpty(mesCutSchemeFg.getPackageSnRuleCode()))
@ -254,7 +254,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
MesCustomerPart customerPart = customerPartService.getMesCustomerPartByPartNo(mesCutSchemeFg.getPartNo(), mesPackingDefine.getCustCode(), reqBean.getOrganizeCode()); MesCustomerPart customerPart = customerPartService.getMesCustomerPartByPartNo(mesCutSchemeFg.getPartNo(), mesPackingDefine.getCustCode(), reqBean.getOrganizeCode());
MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(mesPackingDefine.getPakcageTemplate(), reqBean.getOrganizeCode()); MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(mesPackingDefine.getPackageTemplate(), reqBean.getOrganizeCode());
if (labelTemplate == null) if (labelTemplate == null)
return stepResult.isCompleted(false).msg(String.format("请检查包装定义信息,零件号[%s]对应模板代码[%s]无效!", mesCutSchemeFg.getPartNo(), cutScheme.getCutCode())); return stepResult.isCompleted(false).msg(String.format("请检查包装定义信息,零件号[%s]对应模板代码[%s]无效!", mesCutSchemeFg.getPartNo(), cutScheme.getCutCode()));
@ -263,7 +263,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
mesPartContext.setCopies(mesPackingDefine.getPrintCopies() == null ? 1 : mesPackingDefine.getPrintCopies()); mesPartContext.setCopies(mesPackingDefine.getPrintCopies() == null ? 1 : mesPackingDefine.getPrintCopies());
mesPartContext.setPackageSnRule(mesPackingDefine.getPackageBarcodeRule()); mesPartContext.setPackageSnRule(mesPackingDefine.getPackageBarcodeRule());
mesPartContext.setPrinter(StringUtils.isEmpty(cutScheme.getPackageSnPrinter()) ? mesPackingDefine.getPrinter() : cutScheme.getPackageSnPrinter()); mesPartContext.setPrinter(StringUtils.isEmpty(cutScheme.getPackageSnPrinter()) ? mesPackingDefine.getPrinter() : cutScheme.getPackageSnPrinter());
mesPartContext.setLabelTemplate(StringUtils.isEmpty(cutScheme.getPackageLabelTemplateCode()) ? mesPackingDefine.getPakcageTemplate() : cutScheme.getPackageLabelTemplateCode()); mesPartContext.setLabelTemplate(StringUtils.isEmpty(cutScheme.getPackageLabelTemplateCode()) ? mesPackingDefine.getPackageTemplate() : cutScheme.getPackageLabelTemplateCode());
mesPartContext.setCustPartNo(customerPart == null ? "" : customerPart.getCustPartNo()); mesPartContext.setCustPartNo(customerPart == null ? "" : customerPart.getCustPartNo());
partDataExtContext.put(mesCutSchemeFg.getPartNo(), mesPartContext); partDataExtContext.put(mesCutSchemeFg.getPartNo(), mesPartContext);

@ -403,6 +403,14 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPartContext>>() {}) : null; return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPartContext>>() {}) : null;
} }
//获取上下文零件数据信息
@Override
public Map<String, ? extends MesPart> getPartDataContext(StationRequestBean reqBean, Boolean isExt) {
String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT);
return !StringUtils.isEmpty(partDataJson) ?
(!isExt ? JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPart>>() {}) : JSONObject.parseObject(partDataJson, new TypeReference<Map<String, MesPartContext>>() {})) : null;
}
//保存上下文零件数据信息 [JSON]Map<String, MesPart> //保存上下文零件数据信息 [JSON]Map<String, MesPart>
@Override @Override
public Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap) { public Boolean dispatchPartDataContext(StationRequestBean reqBean, Map<String, ? extends MesPart> partDataMap) {

@ -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)));
}
} }

Loading…
Cancel
Save