Merge branch 'uat-temp-wj-chongqingdaqu-prod-temp-46319' into uat-temp-wj-chongqingdaqu-prod-merge-longxing-shipping

uat-temp-wj-chongqingdaqu-prod-merge-longxing-shipping
王杰 3 months ago
commit 84b898ce22

@ -298,7 +298,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
@Override
public String getProdRuleIgnoreCfg(Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap, Long id, String equipmentCode, String dataSorce) {
if (CollectionUtils.isEmpty(prodRuleIgnoreCfgMap) || StringUtils.isEmpty(id) || StringUtils.isEmpty(dataSorce)) return null;
String key = new StringJoiner(MesPcnExtConstWords.AND).add(dataSorce).add(equipmentCode).add(id.toString()).toString();
String key = new StringJoiner(MesPcnExtConstWords.AND).add(dataSorce).add(equipmentCode.toUpperCase()).add(id.toString()).toString();
return prodRuleIgnoreCfgMap.containsKey(key) ? JSONObject.toJSONString(prodRuleIgnoreCfgMap.get(key)) : null;
}

@ -235,7 +235,7 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
}
private MesRecyclablePackagePart getMesRecyclablePackagePart(List<MesRecyclablePackagePart> packagePartList, String packageTypeCode, String partNo) {
Optional<MesRecyclablePackagePart> packagePart = packagePartList.stream().filter(t -> t.getPartNo().equals(partNo)).findFirst();
Optional<MesRecyclablePackagePart> packagePart = packagePartList.stream().filter(t -> t.getPartNo().toUpperCase().equals(partNo.toUpperCase())).findFirst();
if (!packagePart.isPresent()) {
MesPcnException.throwMesBusiException("回用包装类型【%s】零件【%s】数据不存在", packageTypeCode, partNo);
}

@ -138,7 +138,7 @@ public class MesNumberRuleMatchDispatchService implements IMesNumberRuleMatchDis
if (null == productionAssemblyContext) continue;
if (!StringUtils.isEmpty(productionAssemblyContext.getAssemblySn()) && productionAssemblyContext.getAssemblySn().equals(assemblySn)) return false;
if (!StringUtils.isEmpty(productionAssemblyContext.getAssemblySn()) && productionAssemblyContext.getAssemblySn().toUpperCase().equals(assemblySn.toUpperCase())) return false;
}

@ -77,7 +77,7 @@ public class MesNumberRuleMatchSnService implements IMesNumberRuleMatchDispatchS
return result;
}
if (!context.getAssemblyPartNo().equals(produceSn.getPartNo())) {
if (!context.getAssemblyPartNo().toUpperCase().equals(produceSn.getPartNo().toUpperCase())) {
result.put(MesPcnExtConstWords.MESSAGE, String.format("零件条码[%s]信息零件号[%s]!", sn, produceSn.getPartNo()));
return result;
}

@ -88,7 +88,7 @@ public class MesNumberRuleMatchSortDoubleCheckService implements IMesNumberRuleM
return result;
}
if (!context.getAssemblyPartNo().equals(produceSn.getPartNo())) {
if (!context.getAssemblyPartNo().toUpperCase().equals(produceSn.getPartNo().toUpperCase())) {
result.put(MesPcnExtConstWords.MESSAGE, String.format("零件条码[%s]信息零件号[%s]!", sn, produceSn.getPartNo()));
return result;
}
@ -113,7 +113,7 @@ public class MesNumberRuleMatchSortDoubleCheckService implements IMesNumberRuleM
Optional<MesProductionAssembly> optional = CollectionUtils.isEmpty(productionAssemblyList) ? null :
productionAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) == 0)).findFirst();
if (null != optional && optional.isPresent() && !optional.get().getProductSn().equals(context.getWorkOrderNo())) {
if (null != optional && optional.isPresent() && !optional.get().getProductSn().toUpperCase().equals(context.getWorkOrderNo().toUpperCase())) {
result.put(MesPcnExtConstWords.MESSAGE, String.format("装配件条码[%s]已被加工单[%s]装配!", sn, optional.get().getProductSn()));
return result;
}

@ -92,11 +92,17 @@ public class MesTimeEfficientCfgMatchService implements IMesTimeEfficientCfgMatc
List<Object> filterList;
//时效性规则 零件号不为空或者为空 过滤数据
if (!StringUtils.isEmpty(timeliness.getPartNo()) && !StringUtils.isEmpty(timeliness.getCraftCode()))
filterList = productionRecordList.stream().filter(o -> o.getPartNo().equals(timeliness.getPartNo()) && o.getCraftCode().equals(timeliness.getCraftCode())).sorted(Comparator.comparing(MesProductionRecord::getCreateDatetime).reversed()).collect(Collectors.toList());
filterList = productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()) && !StringUtils.isEmpty(o.getCraftCode()) && !StringUtils.isEmpty(o.getCreateDatetime())
&& o.getPartNo().toUpperCase().equals(timeliness.getPartNo().toUpperCase()) && o.getCraftCode().toUpperCase().equals(timeliness.getCraftCode().toUpperCase())))
.sorted(Comparator.comparing(MesProductionRecord::getCreateDatetime).reversed()).collect(Collectors.toList());
else if (!StringUtils.isEmpty(timeliness.getCraftCode()))
filterList = productionRecordList.stream().filter(item -> item.getCraftCode().equals(timeliness.getCraftCode())).sorted(Comparator.comparing(MesProductionRecord::getCreateDatetime).reversed()).collect(Collectors.toList());
filterList = productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCraftCode()) && !StringUtils.isEmpty(o.getCreateDatetime())
&& o.getCraftCode().toUpperCase().equals(timeliness.getCraftCode().toUpperCase())))
.sorted(Comparator.comparing(MesProductionRecord::getCreateDatetime).reversed()).collect(Collectors.toList());
else
filterList = produceSnList.stream().filter(item -> item.getPartNo().equals(timeliness.getPartNo())).sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList());
filterList = produceSnList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()) && !StringUtils.isEmpty(o.getCreateDatetime())
&& o.getPartNo().toUpperCase().equals(timeliness.getPartNo().toUpperCase())))
.sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(filterList)) return backResultMap(resultMap, String.format("零件条码[%s]时效性零件号[%s]工艺[%s]验证失败,未查询到%s!",
productSn, timeliness.getPartNo(), !StringUtils.isEmpty(timeliness.getCraftCode()) ? timeliness.getCraftCode() : MesPcnExtConstWords.EMPTY, !StringUtils.isEmpty(timeliness.getCraftCode()) ? "加工记录信息" : "零件条码信息"));

@ -159,10 +159,19 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
Optional<MesEquipVariableCollectContext> optional = equipVariableCollectContextList.stream().filter(o -> (null != o && o.getIsConsume().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst();
if (null != optional && optional.isPresent()) {
stepResult.msg(String.format("%s装配件条码%s匹配失败!%s", suffix, assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg()));
suffix = String.format("%s装配件条码%s匹配失败!", suffix, assemblySn);
this.sendMessage(reqBean, new StationResultBean().writeDbLog().scanInfo(assemblySn),
String.format("%s%s", stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
String.format("%s%s%s", suffix, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()),
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
stepResult.msg(String.format("%s%s", suffix, !StringUtils.isEmpty(stepResult.getMsg()) ? stepResult.getMsg() : (
StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : (
(!stepResult.getObj().toString().contains(MesPcnExtConstWords.EXCLAMATION) ||
stepResult.getObj().toString().indexOf(MesPcnExtConstWords.EXCLAMATION) != stepResult.getObj().toString().lastIndexOf(MesPcnExtConstWords.EXCLAMATION)
) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()))
)
);
if (!CollectionUtils.isEmpty(curProductionPsInContextList)) productionDispatchContextStepService.dispatchProductionPsInContext(reqBean, productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toList()));
@ -211,7 +220,7 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
List<MesProductionAssemblyNosortContext> assemblyNosortCfgList = productionProcessContextStepService.findAssemblyNosortCfgList(reqBean);
//获取设备的装配件规则清单
if (CollectionUtils.isEmpty(assemblyNosortCfgList) || !assemblyNosortCfgList.get(0).getEquipmentCode().equals(cellEquipContext.getEquipmentCode())) {
if (CollectionUtils.isEmpty(assemblyNosortCfgList) || !assemblyNosortCfgList.get(0).getEquipmentCode().toUpperCase().equals(cellEquipContext.getEquipmentCode().toUpperCase())) {
assemblyNosortCfgList = assemblyExtService.getProductionAssemblyNosortContextList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), prodRuleIgnoreCfgMap);
if (CollectionUtils.isEmpty(assemblyNosortCfgList))
@ -404,7 +413,7 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
Map<String, Object> result = new HashMap<>();
result.put(MesPcnExtConstWords.RESULT, true);
//根据进料零件号匹配产品加工规则
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && (StringUtils.isEmpty(prodRuleContext.getInPartNo()) || !prodRuleContext.getInPartNo().equals(productionPsInContext.getPartNo()))) {
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && (StringUtils.isEmpty(prodRuleContext.getInPartNo()) || !prodRuleContext.getInPartNo().toUpperCase().equals(productionPsInContext.getPartNo().toUpperCase()))) {
result.put(MesPcnExtConstWords.RESULT, false);
if (StringUtils.isEmpty(prodRuleContext.getInPartNo()))
result.put(MesPcnExtConstWords.MESSAGE, String.format("条码[%s]零件号[%s]匹配的加工规则ID[%s]信息未维护进料零件号!", productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), prodRuleContext.getPid()));

@ -159,10 +159,19 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
Optional<MesEquipVariableCollectContext> optional = equipVariableCollectContextList.stream().filter(o -> (null != o && o.getIsConsume().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).findFirst();
if (null != optional && optional.isPresent()) {
stepResult.msg(String.format("%s装配件条码%s匹配失败!%s", suffix, assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg()));
suffix = String.format("%s装配件条码%s匹配失败!", suffix, assemblySn);
this.sendMessage(reqBean, new StationResultBean().writeDbLog().scanInfo(assemblySn),
String.format("%s%s", stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
String.format("%s%s%s", suffix, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()),
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
stepResult.msg(String.format("%s%s", suffix, !StringUtils.isEmpty(stepResult.getMsg()) ? stepResult.getMsg() : (
StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : (
(!stepResult.getObj().toString().contains(MesPcnExtConstWords.EXCLAMATION) ||
stepResult.getObj().toString().indexOf(MesPcnExtConstWords.EXCLAMATION) != stepResult.getObj().toString().lastIndexOf(MesPcnExtConstWords.EXCLAMATION)
) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()))
)
);
if (!CollectionUtils.isEmpty(curProductionPsInContextList)) productionDispatchContextStepService.dispatchProductionPsInContext(reqBean, productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toList()));
@ -205,7 +214,7 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
List<MesProductionAssemblyNosortContext> assemblyNosortCfgList = productionProcessContextStepService.findAssemblyNosortCfgList(reqBean);
//获取设备的装配件规则清单
if (CollectionUtils.isEmpty(assemblyNosortCfgList) || !assemblyNosortCfgList.get(0).getEquipmentCode().equals(cellEquipContext.getEquipmentCode())) {
if (CollectionUtils.isEmpty(assemblyNosortCfgList) || !assemblyNosortCfgList.get(0).getEquipmentCode().toUpperCase().equals(cellEquipContext.getEquipmentCode().toUpperCase())) {
assemblyNosortCfgList = assemblyExtService.getProductionAssemblyNosortContextList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), prodRuleIgnoreCfgMap);
if (CollectionUtils.isEmpty(assemblyNosortCfgList))
@ -403,7 +412,7 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
Map<String, Object> result = new HashMap<>();
result.put(MesPcnExtConstWords.RESULT, true);
//根据进料零件号匹配产品加工规则
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && (StringUtils.isEmpty(prodRuleContext.getInPartNo()) || !prodRuleContext.getInPartNo().equals(productionPsInContext.getPartNo()))) {
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && (StringUtils.isEmpty(prodRuleContext.getInPartNo()) || !prodRuleContext.getInPartNo().toUpperCase().equals(productionPsInContext.getPartNo().toUpperCase()))) {
result.put(MesPcnExtConstWords.RESULT, false);
if (StringUtils.isEmpty(prodRuleContext.getInPartNo()))
result.put(MesPcnExtConstWords.MESSAGE, String.format("条码[%s]零件号[%s]匹配的加工规则ID[%s]信息未维护进料零件号!", productionPsInContext.getProductSn(), productionPsInContext.getPartNo(), prodRuleContext.getPid()));

@ -154,10 +154,19 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
assemblyShowNosortStepService.showProductionAssembly(reqBean, resultBean, productionProcessContext.getWorkCenter(), prodRuleContextList);
}
stepResult.msg(String.format("装配件条码%s匹配失败!%s", assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg()));
suffix = String.format("装配件条码%s匹配失败!", assemblySn);
this.sendMessage(reqBean, new StationResultBean().writeDbLog().scanInfo(assemblySn),
String.format("%s%s", stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
String.format("%s%s%s", suffix, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()),
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
stepResult.msg(String.format("%s%s", suffix, !StringUtils.isEmpty(stepResult.getMsg()) ? stepResult.getMsg() : (
StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : (
(!stepResult.getObj().toString().contains(MesPcnExtConstWords.EXCLAMATION) ||
stepResult.getObj().toString().indexOf(MesPcnExtConstWords.EXCLAMATION) != stepResult.getObj().toString().lastIndexOf(MesPcnExtConstWords.EXCLAMATION)
) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()))
)
);
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), stepResult.getMsg());

@ -140,10 +140,19 @@ public class MesAssemblyMatchSortStepService extends BaseStepService {
MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue());
}
stepResult.msg(String.format("装配件条码%s匹配失败!%s", assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg()));
suffix = String.format("装配件条码%s匹配失败!", assemblySn);
this.sendMessage(reqBean, new StationResultBean().writeDbLog().scanInfo(assemblySn),
String.format("%s%s", stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
String.format("%s%s%s", suffix, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()),
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
stepResult.msg(String.format("%s%s", suffix, !StringUtils.isEmpty(stepResult.getMsg()) ? stepResult.getMsg() : (
StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : (
(!stepResult.getObj().toString().contains(MesPcnExtConstWords.EXCLAMATION) ||
stepResult.getObj().toString().indexOf(MesPcnExtConstWords.EXCLAMATION) != stepResult.getObj().toString().lastIndexOf(MesPcnExtConstWords.EXCLAMATION)
) ? MesPcnExtConstWords.EMPTY : stepResult.getObj()))
)
);
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), stepResult.getMsg());

@ -181,7 +181,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//foreignKey有值代表已经匹配过产品加工规则
if (null == productionPartContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue;
List<MesProdRuleNosortCfg> filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null;
List<MesProdRuleNosortCfg> filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo().toUpperCase()) : null;
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) {
productionPartContextList.forEach(o -> o.busiCheckToDelete());
@ -267,7 +267,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//验证条码是否刚在当前工位下线
private Boolean checkIsOffline(MesProductionPsInContext productionPsInContext, StationRequestBean reqBean) {
if (StringUtils.isEmpty(productionPsInContext.getWorkCenterCode()) || StringUtils.isEmpty(productionPsInContext.getWorkCellCode()) || StringUtils.isEmpty(productionPsInContext.getProcessCode())) return false;
if (!productionPsInContext.getWorkCenterCode().equals(reqBean.getWorkCenterCode()) || !productionPsInContext.getWorkCellCode().equals(reqBean.getWorkCellCode()) || !productionPsInContext.getProcessCode().equals(reqBean.getProcessCode())) return false;
if (!productionPsInContext.getWorkCenterCode().toUpperCase().equals(reqBean.getWorkCenterCode().toUpperCase()) || !productionPsInContext.getWorkCellCode().toUpperCase().equals(reqBean.getWorkCellCode().toUpperCase()) || !productionPsInContext.getProcessCode().toUpperCase().equals(reqBean.getProcessCode().toUpperCase())) return false;
return true;
}
@ -301,7 +301,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
if (null == productionPartContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue;
//获取匹配产出零件的所有加工规则
List<MesProdRuleNosortCfg> outPartNoProdRuleList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null;
List<MesProdRuleNosortCfg> outPartNoProdRuleList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo().toUpperCase()) : null;
MesProductionPsInContext productSn = null;
@ -323,10 +323,10 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) continue;
//验证进出一致
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && productionPsInContext.getPartNo().equals(productionPartContext.getPartNo())) {
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && productionPsInContext.getPartNo().toUpperCase().equals(productionPartContext.getPartNo().toUpperCase())) {
//进料工单必须与产出工单一致
if (!StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) && !StringUtils.isEmpty(productionPsInContext.getWorkOrderNo()) && !productionPsInContext.getWorkOrderNo().equals(productionPartContext.getWorkOrderNo())) {
if (!StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) && !StringUtils.isEmpty(productionPsInContext.getWorkOrderNo()) && !productionPsInContext.getWorkOrderNo().toUpperCase().equals(productionPartContext.getWorkOrderNo().toUpperCase())) {
if (productionPsInContext.getMessageSource().compareTo(MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue()) == 0) productionPsInContext.busiCheckToDelete();
else productionPsInContextList.forEach(o -> o.busiCheckToDelete());
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(productionPsInContext.getProductSn()), stepResult, String.format("主条码[%s]零件号[%s]关联的加工单[%s]与产出零件[%s]关联的加工单[%s]不一致!",
@ -399,7 +399,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//搜集进料零件号匹配的产品加工规则
private List<MesProdRuleNosortCfg> filterProdRuleNosortCfgList(List<MesProdRuleNosortCfg> prodRuleNosortCfgList, String partNo) {
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNo()) && o.getInPartNo().equals(partNo))).collect(Collectors.toList());
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNo()) && o.getInPartNo().toUpperCase().equals(partNo.toUpperCase()))).collect(Collectors.toList());
}
//搜集进料零件规则有值的产品加工规则
@ -409,7 +409,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//根据产出零件分组数据
private Map<String, List<MesProdRuleNosortCfg>> groupProdRuleNosortCfgList(List<MesProdRuleNosortCfg> prodRuleNosortCfgList) {
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProdRuleNosortCfg::getOutPartNo));
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> o.getOutPartNo().toUpperCase()));
}
//显示或者匹配装配件信息 公共调用

@ -169,18 +169,18 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh
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()))
return stepResult.isCompleted(false).msg(String.format("%s%s[%s]对应的工艺代码[%s]不匹配零件[%s]对应的产品工艺路线[%s]",
message, suffix, productionPsInContext.getProductSn(), productionPsInContext.getCraftCode(), productionPsInContext.getPartNo(), craftRouteDetailList.get(0).getCraftRouteCode())).isCompleted();
//验证工艺对应工序最多经过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]产品工艺路线[%s]相同工艺对应工序最多经过1个,上道工艺[%s]当前工位工艺[%s]",
message, suffix, productionPsInContext.getProductSn(), craftRouteDetailList.get(0).getCraftRouteCode(), productionPsInContext.getCraftCode(), productionProcessContext.getCraftCode())).isCompleted();
//判断条码是否在当前已完成的工序工位上重做
Boolean isPsProcessRepeat = null != optionalPs && optionalPs.isPresent() && reqBean.getProcessCode().equals(productionPsInContext.getProcessCode());
Boolean isPsProcessRepeat = null != optionalPs && optionalPs.isPresent() && reqBean.getProcessCode().toUpperCase().equals(productionPsInContext.getProcessCode().toUpperCase());
List<MesProductionRecord> productionRecordList = null;
//验证已完成工序最大重复次数: 如果当前工位的工序与主条码的当前工序一致的情况下, 根据条码+物料+工序+工艺查询加工记录, 判断加工记录条数
if (isPsProcessRepeat) {
@ -188,7 +188,10 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh
productionRecordList = productionRecordService.findProductionRecordList(reqBean.getOrganizeCode(), productionPsInContext.getProductSn());
//条码+物料+工序+工艺搜集加工记录
List<MesProductionRecord> filterList = CollectionUtils.isEmpty(productionRecordList) ? null :
productionRecordList.stream().filter(o -> (null != o && o.getPartNo().equals(productionPsInContext.getPartNo()) && o.getProcessCode().equals(reqBean.getProcessCode()) && o.getCraftCode().equals(productionProcessContext.getCraftCode()))).collect(Collectors.toList());
productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()) && !StringUtils.isEmpty(o.getProcessCode()) && !StringUtils.isEmpty(o.getCraftCode())
&& o.getPartNo().toUpperCase().equals(productionPsInContext.getPartNo().toUpperCase())
&& o.getProcessCode().toUpperCase().equals(reqBean.getProcessCode().toUpperCase())
&& o.getCraftCode().toUpperCase().equals(productionProcessContext.getCraftCode().toUpperCase()))).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(filterList) && filterList.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]已完成工序最大重复次数[%s]",
@ -196,7 +199,7 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh
}
//判断当前工位的工序对应的工艺是否包含在产品工艺路线中
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();
//根据当前工位对应的工艺 获取 所有前道工艺, 如果当前工位的工序对应工艺不在工艺路线明细内, 则默认所有明细均为所有前道工艺, 否则搜集当前工位工序对应工艺前面的所有前道工艺
List<MesCraftRouteDetail> beforeCellCraftList;
if (null == optionalCell || !optionalCell.isPresent()) beforeCellCraftList = craftRouteDetailList;
@ -228,7 +231,7 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh
//当主条码存在已做工序 且 与当前工位的工序不一致时, 判断当前工位的工序是否已经存在加工记录
if (!CollectionUtils.isEmpty(productionRecordList)
&& !StringUtils.isEmpty(productionPsInContext.getProcessCode())
&& !reqBean.getProcessCode().equals(productionPsInContext.getProcessCode())
&& !reqBean.getProcessCode().toUpperCase().equals(productionPsInContext.getProcessCode().toUpperCase())
&& isExistProductionRecord(productionRecordMap2Process(productionRecordList), reqBean.getProcessCode())) {
return stepResult.isCompleted(false).msg(String.format("%s%s[%s]已经过当前工序[%s]", message, suffix, productionPsInContext.getProductSn(), reqBean.getProcessCode())).isCompleted();
}
@ -238,15 +241,15 @@ public class MesProdCraftRouteCheckNosortStepService extends MesProdCraftRouteCh
}
private Map<String, List<MesProductionRecord>> productionRecordMap2Craft(List<MesProductionRecord> productionRecordList) {
return CollectionUtils.isEmpty(productionRecordList) ? null : productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCraftCode()))).collect(Collectors.groupingBy(MesProductionRecord::getCraftCode));
return CollectionUtils.isEmpty(productionRecordList) ? null : productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCraftCode()))).collect(Collectors.groupingBy(o -> o.getCraftCode().toUpperCase()));
}
private Map<String, List<MesProductionRecord>> productionRecordMap2Process(List<MesProductionRecord> productionRecordList) {
return CollectionUtils.isEmpty(productionRecordList) ? null : productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()))).collect(Collectors.groupingBy(MesProductionRecord::getProcessCode));
return CollectionUtils.isEmpty(productionRecordList) ? null : productionRecordList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()))).collect(Collectors.groupingBy(o -> o.getProcessCode().toUpperCase()));
}
private Boolean isExistProductionRecord(Map<String, List<MesProductionRecord>> prMapByCraft, String craftCode) {
return (CollectionUtils.isEmpty(prMapByCraft) || !prMapByCraft.containsKey(craftCode)) ? false : true;
private Boolean isExistProductionRecord(Map<String, List<MesProductionRecord>> prMapByCraft, String code) {
return (CollectionUtils.isEmpty(prMapByCraft) || !prMapByCraft.containsKey(code.toUpperCase())) ? false : true;
}
}

@ -127,32 +127,32 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec
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()))
return stepResult.isCompleted(false).msg(String.format("%s产品条码[%s]对应的工艺代码[%s]不匹配零件[%s]对应的产品工艺路线[%s]",
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())
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();
//验证工艺对应工序最多经过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]",
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();
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]",
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());
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]",
@ -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());
//验证首工艺: 当前产品条码的工艺字段有值,并且当前工位的工艺不等于产品条码的当前工艺。 如果等于已经在【验证工艺对应工序最多经过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();
//执行首道工艺 当前产品条码验证通过
@ -177,7 +177,7 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec
List<MesCraftRouteDetail> unCompleteCraftList;
if (StringUtils.isEmpty(productionPsInContext.getCraftCode())) unCompleteCraftList = beforeCellCraftList;
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()) //在工位对应的工艺之前的所有前道工艺中未找到产品条码的当前工艺则表示产品条码已经过当前工艺
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());

@ -197,9 +197,9 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
String priter = null;
if (!CollectionUtils.isEmpty(workCellPartPrinterCfgList)) {
Optional<MesWorkCellPartPrinterCfg> optional = workCellPartPrinterCfgList.stream().filter(o -> (null != o
&& !StringUtils.isEmpty(o.getWorkCenterCode()) && o.getWorkCenterCode().equals(reqBean.getWorkCenterCode())
&& !StringUtils.isEmpty(o.getWorkCellCode()) && o.getWorkCellCode().equals(reqBean.getWorkCellCode())
&& !StringUtils.isEmpty(o.getPartNo()) && o.getPartNo().equals(partNo) && !StringUtils.isEmpty(o.getPrinterCode()))).findFirst();
&& !StringUtils.isEmpty(o.getWorkCenterCode()) && o.getWorkCenterCode().toUpperCase().equals(reqBean.getWorkCenterCode().toUpperCase())
&& !StringUtils.isEmpty(o.getWorkCellCode()) && o.getWorkCellCode().toUpperCase().equals(reqBean.getWorkCellCode().toUpperCase())
&& !StringUtils.isEmpty(o.getPartNo()) && o.getPartNo().toUpperCase().equals(partNo.toUpperCase()) && !StringUtils.isEmpty(o.getPrinterCode()))).findFirst();
if (null != optional && optional.isPresent()) priter = optional.get().getPrinterCode();
}
if (StringUtils.isEmpty(priter) && !CollectionUtils.isEmpty(partDataMap) && partDataMap.containsKey(partNo)) {

@ -221,7 +221,7 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
if (null == productionPsInContext) return false;
if (StringUtils.isEmpty(productionPsInContext.getPartNo())) return false;
if (null == productionPsOutContext) return false;
if (!productionPsInContext.getPartNo().equals(productionPsOutContext.getPartNo())) return false;
if (!productionPsInContext.getPartNo().toUpperCase().equals(productionPsOutContext.getPartNo().toUpperCase())) return false;
return true;
}

@ -159,7 +159,7 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService
//foreignKey有值代表已经匹配过产品加工规则
if (null == productionPartContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue;
List<MesProdRuleNosortCfg> filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null;
List<MesProdRuleNosortCfg> filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo().toUpperCase()) : null;
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) {
productionPartContextList.forEach(o -> o.busiCheckToDelete());
@ -188,7 +188,7 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService
//根据产出零件分组数据
private Map<String, List<MesProdRuleNosortCfg>> groupProdRuleNosortCfgList(List<MesProdRuleNosortCfg> prodRuleNosortCfgList) {
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null :
prodRuleNosortCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProdRuleNosortCfg::getOutPartNo));
prodRuleNosortCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> o.getOutPartNo().toUpperCase()));
}
}

@ -222,7 +222,7 @@ public class MesProductionCustomContextStepService extends BaseStepService imple
//根据设备代码获取可复用条码的个数
@Override
public Integer getRepeatAssemblySnCount(String organizeCode, String workCenterCode, String workCellCode, String equipmentCode) {
String countStr = getFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), equipmentCode);
String countStr = getFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), equipmentCode.toUpperCase());
return !StringUtils.isEmpty(countStr) ? Integer.valueOf(countStr) : MesPcnExtConstWords.ZERO;
}
@ -231,8 +231,8 @@ public class MesProductionCustomContextStepService extends BaseStepService imple
public Boolean dispatchRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext) {
String repeatKey = productionAssemblyContext.repeatKeyToString();
if (StringUtils.isEmpty(getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, repeatKey))) {
Integer count = getRepeatAssemblySnCount(organizeCode, workCenterCode, workCellCode, productionAssemblyContext.getEquipmentCode()) + 1;
dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), productionAssemblyContext.getEquipmentCode(), count.toString());
Integer count = getRepeatAssemblySnCount(organizeCode, workCenterCode, workCellCode, productionAssemblyContext.getEquipmentCode().toUpperCase()) + 1;
dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), productionAssemblyContext.getEquipmentCode().toUpperCase(), count.toString());
}
return dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), repeatKey, productionAssemblyContext.getAssemblySn());
}

@ -638,8 +638,8 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
public Map<String, List<MesProdRuleIgnoreCfg>> getProdRuleIgnoreCfgContextMap(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) {
List<MesProdRuleIgnoreCfg> prodRuleIgnoreCfgList = getProdRuleIgnoreCfgContext(reqBean, productionProcessContext);
return CollectionUtils.isEmpty(prodRuleIgnoreCfgList) ? null :
prodRuleIgnoreCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getDataSource()) && !StringUtils.isEmpty(o.getSourceId())))
.collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND).add(o.getDataSource().toString()).add(o.getEquipmentCode()).add(o.getSourceId().toString()).toString()));
prodRuleIgnoreCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getDataSource()) && !StringUtils.isEmpty(o.getEquipmentCode()) && !StringUtils.isEmpty(o.getSourceId())))
.collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND).add(o.getDataSource().toString()).add(o.getEquipmentCode().toUpperCase()).add(o.getSourceId().toString()).toString()));
}
//处理排序线推单配置上下文, 返回推送工位类型对应的配置信息

@ -137,10 +137,10 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService {
if (null == productionPsInContext) return false;
if (StringUtils.isEmpty(productionPsInContext.getPartNo())) return false;
if (null != productionPartContext) {
if (!productionPsInContext.getPartNo().equals(productionPartContext.getPartNo())) return false;
if (!productionPsInContext.getPartNo().toUpperCase().equals(productionPartContext.getPartNo().toUpperCase())) return false;
else return true;
} else {
if (!productionPsInContext.getPartNo().equals(prodRuleContext.getOutPartNo())) return false;
if (!productionPsInContext.getPartNo().toUpperCase().equals(prodRuleContext.getOutPartNo().toUpperCase())) return false;
else return true;
}
}

@ -130,10 +130,10 @@ public class MesProductionAssemblyContext implements Serializable {
public String repeatKeyToString() {
if (StringUtils.isEmpty(this.equipmentCode) || StringUtils.isEmpty(this.matchType) || (StringUtils.isEmpty(this.matchRule) && StringUtils.isEmpty(this.assemblyPartNo))) return null;
return String.format("%s:%s&%s:%s&%s:%s&%s:%s",
MesPcnExtConstWords.EQUIPMENT_CODE, this.equipmentCode,
MesPcnExtConstWords.EQUIPMENT_CODE, this.equipmentCode.toUpperCase(),
MesPcnExtConstWords.MATCH_TYPE, this.matchType,
MesPcnExtConstWords.MATCH_RULE, StringUtils.isEmpty(this.matchRule) ? MesPcnExtConstWords.EMPTY : this.matchRule,
MesPcnExtConstWords.ASSEMBLY_PART_NO, StringUtils.isEmpty(this.assemblyPartNo) ? MesPcnExtConstWords.EMPTY : this.assemblyPartNo);
MesPcnExtConstWords.ASSEMBLY_PART_NO, StringUtils.isEmpty(this.assemblyPartNo) ? MesPcnExtConstWords.EMPTY : this.assemblyPartNo.toUpperCase());
}
}

@ -606,6 +606,8 @@ public class MesPcnExtConstWords {
public static final String DECIMAL_POINT = ".";
// #
public static final String WELL_NO = "#";
// !
public static final String EXCLAMATION = "!";
// 自动初始化工位按钮URL
public static final String AUTO_INIT_WORK_CELL_MODULE_URL = "AUTO_INIT_WORK_CELL_MODULE_URL";

Loading…
Cancel
Save