|
|
@ -127,32 +127,32 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec
|
|
|
|
String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON;
|
|
|
|
String message = StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg() + MesPcnExtConstWords.SEMICOLON;
|
|
|
|
|
|
|
|
|
|
|
|
//判断产品条码的当前工艺是否包含在产品工艺路线中
|
|
|
|
//判断产品条码的当前工艺是否包含在产品工艺路线中
|
|
|
|
Optional<MesCraftRouteDetail> optionalPs = StringUtils.isEmpty(productionPsInContext.getCraftCode()) ? null : craftRouteDetailList.stream().filter(o -> (null != o && o.getCraftCode().equals(productionPsInContext.getCraftCode()))).findFirst();
|
|
|
|
Optional<MesCraftRouteDetail> optionalPs = StringUtils.isEmpty(productionPsInContext.getCraftCode()) ? null : craftRouteDetailList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCraftCode()) && o.getCraftCode().toUpperCase().equals(productionPsInContext.getCraftCode().toUpperCase()))).findFirst();
|
|
|
|
if (!StringUtils.isEmpty(productionPsInContext.getCraftCode()) && (null == optionalPs || !optionalPs.isPresent()))
|
|
|
|
if (!StringUtils.isEmpty(productionPsInContext.getCraftCode()) && (null == optionalPs || !optionalPs.isPresent()))
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]对应的工艺代码[%s]不匹配零件[%s]对应的产品工艺路线[%s]",
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]对应的工艺代码[%s]不匹配零件[%s]对应的产品工艺路线[%s]",
|
|
|
|
message, productionPsInContext.getProductSn(), productionPsInContext.getCraftCode(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode())).isCompleted();
|
|
|
|
message, productionPsInContext.getProductSn(), productionPsInContext.getCraftCode(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode())).isCompleted();
|
|
|
|
|
|
|
|
|
|
|
|
//判断当前工位的工序对应的工艺是否包含在产品工艺路线中
|
|
|
|
//判断当前工位的工序对应的工艺是否包含在产品工艺路线中
|
|
|
|
Optional<MesCraftRouteDetail> optionalCell = craftRouteDetailList.stream().filter(o -> (null != o && o.getCraftCode().equals(productionProcessContext.getCraftCode()))).findFirst();
|
|
|
|
Optional<MesCraftRouteDetail> optionalCell = craftRouteDetailList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCraftCode()) && o.getCraftCode().toUpperCase().equals(productionProcessContext.getCraftCode().toUpperCase()))).findFirst();
|
|
|
|
if (null == optionalCell || !optionalCell.isPresent())
|
|
|
|
if (null == optionalCell || !optionalCell.isPresent())
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]零件[%s]对应的产品工艺路线[%s]不包含当前工位[%s]对应的工艺[%s]工序[%s]",
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]零件[%s]对应的产品工艺路线[%s]不包含当前工位[%s]对应的工艺[%s]工序[%s]",
|
|
|
|
message, productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
message, productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
|
|
|
|
|
|
|
|
//验证工艺对应工序最多经过1个: 当前产品条码的工艺字段有值, 对应的工艺路线明细信息设置了【true】, 当前工位的工艺与产品条码的当前工艺相同, 当前工位的工序与产品条码的当前工序不相同
|
|
|
|
//验证工艺对应工序最多经过1个: 当前产品条码的工艺字段有值, 对应的工艺路线明细信息设置了【true】, 当前工位的工艺与产品条码的当前工艺相同, 当前工位的工序与产品条码的当前工序不相同
|
|
|
|
if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getAtMostProcess().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionProcessContext.getCraftCode().equals(productionPsInContext.getCraftCode()) && !reqBean.getProcessCode().equals(productionPsInContext.getProcessCode()))
|
|
|
|
if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getAtMostProcess().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionProcessContext.getCraftCode().toUpperCase().equals(productionPsInContext.getCraftCode().toUpperCase()) && !reqBean.getProcessCode().toUpperCase().equals(productionPsInContext.getProcessCode().toUpperCase()))
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]产品工艺路线[%s]相同工艺对应工序最多经过1个,上道工艺[%s]当前工位工艺[%s]",
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]产品工艺路线[%s]相同工艺对应工序最多经过1个,上道工艺[%s]当前工位工艺[%s]",
|
|
|
|
message, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
message, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
|
|
|
|
|
|
|
|
//验证是否捆绑后道工艺: 如果当前工位的工艺与产品条码的当前工艺不一致的情况下, 根据产品条码的当前工艺获取在工艺路线明细的下一个工艺, 判断当前工位的工艺与下个工艺是否一致
|
|
|
|
//验证是否捆绑后道工艺: 如果当前工位的工艺与产品条码的当前工艺不一致的情况下, 根据产品条码的当前工艺获取在工艺路线明细的下一个工艺, 判断当前工位的工艺与下个工艺是否一致
|
|
|
|
if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getIsBindNextCraft().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && !productionProcessContext.getCraftCode().equals(productionPsInContext.getCraftCode())) {
|
|
|
|
if (null != optionalPs && optionalPs.isPresent() && optionalPs.get().getIsBindNextCraft().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && !productionProcessContext.getCraftCode().toUpperCase().equals(productionPsInContext.getCraftCode().toUpperCase())) {
|
|
|
|
Optional<MesCraftRouteDetail> optional = craftRouteDetailList.stream().filter(o -> (null != o && o.getSeq().compareTo(optionalPs.get().getSeq()) > 0)).findFirst();
|
|
|
|
Optional<MesCraftRouteDetail> optional = craftRouteDetailList.stream().filter(o -> (null != o && o.getSeq().compareTo(optionalPs.get().getSeq()) > 0)).findFirst();
|
|
|
|
if (null != optionalCell && optionalCell.isPresent() && !productionProcessContext.getCraftCode().equals(optional.get().getCraftCode()))
|
|
|
|
if (null != optionalCell && optionalCell.isPresent() && !productionProcessContext.getCraftCode().toUpperCase().equals(optional.get().getCraftCode().toUpperCase()))
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]产品工艺路线[%s]捆绑后道工艺,上道工艺[%s]下道工艺[%s]当前工位工艺[%s]",
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]产品工艺路线[%s]捆绑后道工艺,上道工艺[%s]下道工艺[%s]当前工位工艺[%s]",
|
|
|
|
message, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), optional.get().getCraftCode(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
message, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), optional.get().getCraftCode(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//验证已完成工序最大重复次数: 如果当前工位的工序与产品条码的当前工序一致的情况下, 根据条码+物料+工序+工艺查询加工记录, 判断加工记录条数
|
|
|
|
//验证已完成工序最大重复次数: 如果当前工位的工序与产品条码的当前工序一致的情况下, 根据条码+物料+工序+工艺查询加工记录, 判断加工记录条数
|
|
|
|
if (null != optionalPs && optionalPs.isPresent() && reqBean.getProcessCode().equals(productionPsInContext.getProcessCode())) {
|
|
|
|
if (null != optionalPs && optionalPs.isPresent() && reqBean.getProcessCode().toUpperCase().equals(productionPsInContext.getProcessCode().toUpperCase())) {
|
|
|
|
List<MesProductionRecord> productionRecordList = productionRecordService.findProductionRecordList(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), reqBean.getProcessCode(), productionProcessContext.getCraftCode());
|
|
|
|
List<MesProductionRecord> productionRecordList = productionRecordService.findProductionRecordList(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), reqBean.getProcessCode(), productionProcessContext.getCraftCode());
|
|
|
|
if (!CollectionUtils.isEmpty(productionRecordList) && productionRecordList.size() >= ((!StringUtils.isEmpty(optionalPs.get().getRepeatTimes()) && optionalPs.get().getRepeatTimes().compareTo(MesPcnExtConstWords.ZERO) > 0) ? optionalPs.get().getRepeatTimes() : MesPcnExtConstWords.ONE))
|
|
|
|
if (!CollectionUtils.isEmpty(productionRecordList) && productionRecordList.size() >= ((!StringUtils.isEmpty(optionalPs.get().getRepeatTimes()) && optionalPs.get().getRepeatTimes().compareTo(MesPcnExtConstWords.ZERO) > 0) ? optionalPs.get().getRepeatTimes() : MesPcnExtConstWords.ONE))
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]当前工序[%s]产品工艺路线[%s]已完成工序最大重复次数[%s]",
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]当前工序[%s]产品工艺路线[%s]已完成工序最大重复次数[%s]",
|
|
|
@ -163,7 +163,7 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec
|
|
|
|
List<MesCraftRouteDetail> beforeCellCraftList = craftRouteDetailList.stream().filter(o -> (null != o && o.getSeq().compareTo(optionalCell.get().getSeq()) < 0)).collect(Collectors.toList());
|
|
|
|
List<MesCraftRouteDetail> beforeCellCraftList = craftRouteDetailList.stream().filter(o -> (null != o && o.getSeq().compareTo(optionalCell.get().getSeq()) < 0)).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
//验证首工艺: 当前产品条码的工艺字段有值,并且当前工位的工艺不等于产品条码的当前工艺。 如果等于已经在【验证工艺对应工序最多经过1个】与【 验证已完成工序最大重复次数】 中验证通过,所以这边只考虑不相等
|
|
|
|
//验证首工艺: 当前产品条码的工艺字段有值,并且当前工位的工艺不等于产品条码的当前工艺。 如果等于已经在【验证工艺对应工序最多经过1个】与【 验证已完成工序最大重复次数】 中验证通过,所以这边只考虑不相等
|
|
|
|
if (CollectionUtils.isEmpty(beforeCellCraftList) && !StringUtils.isEmpty(productionPsInContext.getCraftCode()) && !productionProcessContext.getCraftCode().equals(productionPsInContext.getCraftCode()))
|
|
|
|
if (CollectionUtils.isEmpty(beforeCellCraftList) && !StringUtils.isEmpty(productionPsInContext.getCraftCode()) && !productionProcessContext.getCraftCode().toUpperCase().equals(productionPsInContext.getCraftCode().toUpperCase()))
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]已经过首道工艺[%s]", message, productionPsInContext.getProductSn(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]已经过首道工艺[%s]", message, productionPsInContext.getProductSn(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
|
|
|
|
|
|
|
|
//执行首道工艺 当前产品条码验证通过
|
|
|
|
//执行首道工艺 当前产品条码验证通过
|
|
|
@ -177,7 +177,7 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec
|
|
|
|
List<MesCraftRouteDetail> unCompleteCraftList;
|
|
|
|
List<MesCraftRouteDetail> unCompleteCraftList;
|
|
|
|
if (StringUtils.isEmpty(productionPsInContext.getCraftCode())) unCompleteCraftList = beforeCellCraftList;
|
|
|
|
if (StringUtils.isEmpty(productionPsInContext.getCraftCode())) unCompleteCraftList = beforeCellCraftList;
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
Optional<MesCraftRouteDetail> optional = beforeCellCraftList.stream().filter(o -> (null != o && o.getCraftCode().equals(productionPsInContext.getCraftCode()))).findFirst();
|
|
|
|
Optional<MesCraftRouteDetail> optional = beforeCellCraftList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCraftCode()) && o.getCraftCode().toUpperCase().equals(productionPsInContext.getCraftCode().toUpperCase()))).findFirst();
|
|
|
|
if (null == optional || !optional.isPresent()) //在工位对应的工艺之前的所有前道工艺中未找到产品条码的当前工艺则表示产品条码已经过当前工艺
|
|
|
|
if (null == optional || !optional.isPresent()) //在工位对应的工艺之前的所有前道工艺中未找到产品条码的当前工艺则表示产品条码已经过当前工艺
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]已经过当前工艺[%s]", message, productionPsInContext.getProductSn(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]已经过当前工艺[%s]", message, productionPsInContext.getProductSn(), productionProcessContext.getCraftCode())).isCompleted();
|
|
|
|
unCompleteCraftList = beforeCellCraftList.stream().filter(o -> (null != o && o.getSeq().compareTo(optional.get().getSeq()) > 0)).collect(Collectors.toList());
|
|
|
|
unCompleteCraftList = beforeCellCraftList.stream().filter(o -> (null != o && o.getSeq().compareTo(optional.get().getSeq()) > 0)).collect(Collectors.toList());
|
|
|
|