|
|
|
@ -103,8 +103,11 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
//删除上下文扫/读信息:装配件条码
|
|
|
|
|
productionDispatchContextStepService.deleteScanAssemblySnContext(reqBean);
|
|
|
|
|
|
|
|
|
|
//验证当前是否属于装配件跳过码
|
|
|
|
|
Boolean isSkip = checkIsSkip(productionProcessContext, equipVariableCollectContextList);
|
|
|
|
|
|
|
|
|
|
//处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成]
|
|
|
|
|
Boolean result = doHandleMatchAssembly(reqBean, resultBean, stepResult, prodRuleContextList, equipVariableCollectContextList);
|
|
|
|
|
Boolean result = doHandleMatchAssembly(reqBean, resultBean, stepResult, prodRuleContextList, equipVariableCollectContextList, isSkip);
|
|
|
|
|
|
|
|
|
|
//验证是否存在待绑定数据
|
|
|
|
|
hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList);
|
|
|
|
@ -122,17 +125,25 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
if (!hasUnBindAssembly)
|
|
|
|
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult,
|
|
|
|
|
(CollectionUtils.isEmpty(productionPsInContextList) || productionPsInContextList.size() >= needQty) ? true : stepResult.isCompleted(false).nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_PRODUCT_SN).isCompleted(),
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("上下文中的装配件条码%s匹配成功!当前上下文中的加工规则对应的装配件扫描项均匹配完毕!", assemblySn));
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("%s当前上下文中的加工规则对应的装配件扫描项均匹配完毕!", isSkip ? stepResult.getMsg() : String.format("上下文中的装配件条码%s匹配成功!", assemblySn)));
|
|
|
|
|
|
|
|
|
|
//单次匹配成功
|
|
|
|
|
if (result) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn),
|
|
|
|
|
stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("上下文中的装配件条码%s匹配成功!", assemblySn));
|
|
|
|
|
stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, isSkip ? stepResult.getMsg() : String.format("上下文中的装配件条码%s匹配成功!", assemblySn));
|
|
|
|
|
|
|
|
|
|
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn),
|
|
|
|
|
stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), String.format("上下文中的装配件条码%s匹配失败!%s", assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg()));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//验证当前是否属于装配件跳过码
|
|
|
|
|
private Boolean checkIsSkip(MesProductionProcessContext productionProcessContext, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
|
|
|
|
|
if (equipVariableCollectContextList.size() > 1) return false;
|
|
|
|
|
if (equipVariableCollectContextList.get(0).getMessageSource().compareTo(MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue()) != 0) return false;
|
|
|
|
|
if (!equipVariableCollectContextList.get(0).getEquipVariableValue().equals(productionProcessContext.getAssemblySkipCode())) return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断是否存在装配件清单
|
|
|
|
|
private Boolean checkIsNeedScanAssembly(List<MesProdRuleContext> prodRuleContextList) {
|
|
|
|
|
Optional<MesProdRuleContext> optional = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAssemblyDataJson()))).findFirst();
|
|
|
|
@ -154,7 +165,9 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成]
|
|
|
|
|
private Boolean doHandleMatchAssembly(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProdRuleContext> prodRuleContextList, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
|
|
|
|
|
private Boolean doHandleMatchAssembly(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<MesProdRuleContext> prodRuleContextList, List<MesEquipVariableCollectContext> equipVariableCollectContextList, Boolean isSkip) {
|
|
|
|
|
|
|
|
|
|
Boolean flag = false;
|
|
|
|
|
|
|
|
|
|
//遍历产品加工规则
|
|
|
|
|
for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
|
|
|
|
@ -165,8 +178,8 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
//获取非排序装配件清单
|
|
|
|
|
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext();
|
|
|
|
|
|
|
|
|
|
Boolean flag = false;
|
|
|
|
|
//遍历装配件清单
|
|
|
|
|
LOOP:
|
|
|
|
|
for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) {
|
|
|
|
|
|
|
|
|
|
//已装配
|
|
|
|
@ -178,6 +191,23 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
//已被消费
|
|
|
|
|
if (null == equipVariableCollectContext || equipVariableCollectContext.getIsConsume().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) continue;
|
|
|
|
|
|
|
|
|
|
//装配件跳过, 必须顺序扫描才生效
|
|
|
|
|
if (isSkip && !StringUtils.isEmpty(prodRuleContext.getIsCheckBindSeq()) && prodRuleContext.getIsCheckBindSeq().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) {
|
|
|
|
|
|
|
|
|
|
//匹配成功
|
|
|
|
|
equipVariableCollectContext.isConsume();
|
|
|
|
|
|
|
|
|
|
flag = true;
|
|
|
|
|
|
|
|
|
|
//装配件清单该数据标记跳过
|
|
|
|
|
productionAssemblyNosortContext.assemblySkip();
|
|
|
|
|
|
|
|
|
|
stepResult.msg(String.format("装配件跳过码验证成功,已跳过当前装配项!"));
|
|
|
|
|
|
|
|
|
|
break LOOP;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//匹配规则
|
|
|
|
|
List<MesProductionAssemblyNosortContext> filterList = (List<MesProductionAssemblyNosortContext>)
|
|
|
|
|
numberRuleMatchDispatchService.matchNumberRule(reqBean.getOrganizeCode(), equipVariableCollectContext.getEquipVariableValue(), Stream.of(productionAssemblyNosortContext).collect(Collectors.toList()));
|
|
|
|
@ -205,6 +235,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
//匹配成功
|
|
|
|
|
equipVariableCollectContext.isConsume();
|
|
|
|
|
|
|
|
|
|
flag = true;
|
|
|
|
|
|
|
|
|
|
//装配件清单该数据标记已装配 (如果是自制件赋值productSnId)
|
|
|
|
@ -225,7 +256,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
return flag;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|