|
|
|
@ -1,9 +1,6 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
|
|
|
|
|
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.api.busi.*;
|
|
|
|
|
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.serviceimpl.fsm.BaseStepService;
|
|
|
|
@ -48,6 +45,9 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesNumberRuleMatchDispatchService numberRuleMatchDispatchService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesProductionRecordService productionRecordService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public StepResult execute(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
|
@ -86,7 +86,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
//封装非排序加工规则
|
|
|
|
|
doHandleProdRuleData(reqBean, resultBean, stepResult, workCenter, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList);
|
|
|
|
|
|
|
|
|
|
if (!stepResult.isCompleted()) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
|
|
|
|
|
if (!stepResult.isCompleted() && doBusiCheckToDelete(reqBean, productionPartContextList, productionPsInContextList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
|
|
|
|
|
|
|
|
|
|
if (prodRuleContextList.size() != initSize) {
|
|
|
|
|
//保存上下文产品加工规则信息集合
|
|
|
|
@ -152,8 +152,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
List<MesProdRuleNosortCfg> filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null;
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), String.format(
|
|
|
|
|
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]进料零件[空]进料零件规则[空]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
|
|
|
|
|
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) {
|
|
|
|
|
productionPartContext.busiCheckToDelete();
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format(
|
|
|
|
|
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]进料零件[空]进料零件规则[空]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//【非排序线】获取产品加工规则对应的装配件信息
|
|
|
|
|
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
|
|
|
|
@ -186,11 +189,18 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
//进料零件条码匹配进料零件规则
|
|
|
|
|
else filterList = (List<MesProdRuleNosortCfg>) numberRuleMatchDispatchService.matchNumberRule(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), filterProdRuleNosortCfgList(prodRuleNosortCfgList));
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), String.format(
|
|
|
|
|
"请检查非排序产品加工规则信息,根据设备[%s]进料零件条码[%s]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPsInContext.getProductSn(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
|
|
|
|
|
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) {
|
|
|
|
|
productionPsInContext.busiCheckToDelete();
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format(
|
|
|
|
|
"请检查非排序产品加工规则信息,根据设备[%s]进料零件条码[%s]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPsInContext.getProductSn(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
|
|
|
|
|
|
|
|
|
|
//TODO 验证时效性
|
|
|
|
|
//if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !时效性接口(productionPsInContext.produceSn, filterList.get(0).getId))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !(Boolean) productionRecordService.checkSnTimeliness(
|
|
|
|
|
reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), filterList.get(0).getId(), MesExtEnumUtil.TIME_DATA_SOURCE.DATA_SOURCE20.getValue(), false).get(MesPcnExtConstWords.RESULT)) {
|
|
|
|
|
productionPsInContext.busiCheckToDelete();
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("请检查进料主条码信息,进料主条码[%s]时效性验证不通过!", productionPsInContext.getProductSn()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//【非排序线】获取产品加工规则对应的装配件信息
|
|
|
|
|
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
|
|
|
|
@ -249,8 +259,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) continue;
|
|
|
|
|
|
|
|
|
|
//TODO 验证时效性
|
|
|
|
|
//if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !checkTimeEfficientCfg(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), filter.getId(), dataSource, stepResult).isComplete()) return stepResult;
|
|
|
|
|
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !(Boolean) productionRecordService.checkSnTimeliness(
|
|
|
|
|
reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), innerfilterList.get(0).getId(), MesExtEnumUtil.TIME_DATA_SOURCE.DATA_SOURCE20.getValue(), false).get(MesPcnExtConstWords.RESULT)) {
|
|
|
|
|
productionPsInContext.busiCheckToDelete();
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("请检查进料主条码信息,进料主条码[%s]时效性验证不通过!", productionPsInContext.getProductSn()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
productionPartContext.foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey());
|
|
|
|
|
|
|
|
|
@ -260,10 +273,18 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), String.format(
|
|
|
|
|
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]匹配任意一个主条码%s查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(),
|
|
|
|
|
productionPsInContextList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getForeignKey()) && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).map(MesProductionPsInContext::getProductSn).collect(Collectors.toList()).toString(),
|
|
|
|
|
CollectionUtils.isEmpty(innerfilterList) ? MesPcnExtConstWords.ZERO : innerfilterList.size()));
|
|
|
|
|
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) {
|
|
|
|
|
|
|
|
|
|
productionPsInContextList.forEach(o -> {
|
|
|
|
|
if (StringUtils.isEmpty(o.getForeignKey()) || o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) o.busiCheckToDelete();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format(
|
|
|
|
|
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]匹配任意一个主条码%s查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(),
|
|
|
|
|
productionPsInContextList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getForeignKey()) && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).map(MesProductionPsInContext::getProductSn).collect(Collectors.toList()).toString(),
|
|
|
|
|
CollectionUtils.isEmpty(innerfilterList) ? MesPcnExtConstWords.ZERO : innerfilterList.size()));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//【非排序线】获取产品加工规则对应的装配件信息
|
|
|
|
|
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
|
|
|
|
@ -283,7 +304,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
//搜集进料零件规则有值的产品加工规则
|
|
|
|
|
private List<MesProdRuleNosortCfg> filterProdRuleNosortCfgList(List<MesProdRuleNosortCfg> prodRuleNosortCfgList) {
|
|
|
|
|
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNoRule()))).collect(Collectors.toList());
|
|
|
|
|
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getInPartNo()) && !StringUtils.isEmpty(o.getInPartNoRule()))).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//根据产出零件分组数据
|
|
|
|
@ -367,4 +388,12 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
|
|
|
|
|
return attrBeanList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Boolean doBusiCheckToDelete(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, List<MesProductionPsInContext> productionPsInContextList) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(productionPsInContextList)) productionDispatchContextStepService.saveProductionPsInContext(reqBean,
|
|
|
|
|
productionPsInContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList()));
|
|
|
|
|
else if (!CollectionUtils.isEmpty(productionPartContextList)) productionDispatchContextStepService.saveProductionPartContext(reqBean,
|
|
|
|
|
productionPartContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList()));
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|