|
|
|
@ -112,33 +112,32 @@ public class MesProductSnReadStepService extends BaseStepService {
|
|
|
|
|
execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false,
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality()));
|
|
|
|
|
|
|
|
|
|
//验证主条码的有效性
|
|
|
|
|
if (stepResult.isCompleted()) matchProductSnValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext);
|
|
|
|
|
|
|
|
|
|
//存储生产过程上下文对象
|
|
|
|
|
productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext);
|
|
|
|
|
|
|
|
|
|
if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
|
|
|
|
|
|
|
|
|
|
return stepResult;
|
|
|
|
|
//匹配读取的主条码的有效性
|
|
|
|
|
return matchProductSnValid(reqBean, resultBean, stepParamMap, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private StepResult matchProductSnValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesEquipLogDispatchContext equipLogDispatchContext) {
|
|
|
|
|
//匹配读取的主条码的有效性
|
|
|
|
|
private StepResult matchProductSnValid(StationRequestBean reqBean, StationResultBean resultBean, Optional<Map<String, MesProdRouteOptParam>> stepParamMap, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesEquipLogDispatchContext equipLogDispatchContext) {
|
|
|
|
|
|
|
|
|
|
//未采集到数据
|
|
|
|
|
if (!equipLogDispatchContext.getIsCollectValue())
|
|
|
|
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("当前未读取到设备[%s]主条码,持续监听中...", cellEquipContext.getEquipmentCode()));
|
|
|
|
|
execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, resultBean, stepResult.isCompleted(false).msg(String.format("当前未读取到设备[%s]主条码,持续监听中...", cellEquipContext.getEquipmentCode())),
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
|
|
|
|
|
|
|
|
|
|
//读取的主条码进行规则匹配
|
|
|
|
|
List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SN.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList());
|
|
|
|
|
|
|
|
|
|
//没有有效的数据
|
|
|
|
|
if (CollectionUtils.isEmpty(equipVariableCollectContextList))
|
|
|
|
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的主条码,持续监听中...", cellEquipContext.getEquipmentCode()));
|
|
|
|
|
execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.isCompleted(false).msg(String.format("当前未读取到设备[%s]有效的主条码,持续监听中...", cellEquipContext.getEquipmentCode())),
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
|
|
|
|
|
|
|
|
|
|
//读取主条码前置验证
|
|
|
|
|
if (!checkReadProductSnValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipVariableCollectContextList).isCompleted()) return stepResult;
|
|
|
|
|
checkReadProductSnValid(reqBean, resultBean, stepParamMap, stepResult, productionProcessContext, cellEquipContext, equipVariableCollectContextList);
|
|
|
|
|
|
|
|
|
|
//保存设备当前一轮工序的待验证的主条码信息
|
|
|
|
|
productionDispatchContextStepService.saveScanProductSnContext(reqBean, equipVariableCollectContextList);
|
|
|
|
@ -152,7 +151,7 @@ public class MesProductSnReadStepService extends BaseStepService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//读取主条码前置验证
|
|
|
|
|
private StepResult checkReadProductSnValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
|
|
|
|
|
private void checkReadProductSnValid(StationRequestBean reqBean, StationResultBean resultBean, Optional<Map<String, MesProdRouteOptParam>> stepParamMap, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, List<MesEquipVariableCollectContext> equipVariableCollectContextList) {
|
|
|
|
|
|
|
|
|
|
//剔除finishCode信息
|
|
|
|
|
List<MesEquipVariableCollectContext> filterList = equipVariableCollectContextList.stream().filter(o -> (null != o && !o.getEquipVariableValue().equals(productionProcessContext.getFinishCode()))).collect(Collectors.toList());
|
|
|
|
@ -162,18 +161,18 @@ public class MesProductSnReadStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
//验证是否存在重复条码
|
|
|
|
|
if (!CollectionUtils.isEmpty(filterList) && filterList.size() != produceSnCollectMap.size())
|
|
|
|
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前读取到设备[%s]主条码存在重复条码,持续监听中...", cellEquipContext.getEquipmentCode()));
|
|
|
|
|
execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.isCompleted(false).msg(String.format("当前读取到设备[%s]主条码存在重复条码,持续监听中...", cellEquipContext.getEquipmentCode())),
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
|
|
|
|
|
|
|
|
|
|
//验证条码数量是否满足腔数
|
|
|
|
|
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
|
|
|
|
if (!CollectionUtils.isEmpty(productionPartContextList) && equipVariableCollectContextList.size() != productionPartContextList.size())
|
|
|
|
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前读取到设备[%s]主条码数量[%s]与产出零件对应的腔数[%s]不一致,持续监听中...", cellEquipContext.getEquipmentCode(), equipVariableCollectContextList.size(), productionPartContextList.size()));
|
|
|
|
|
execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.isCompleted(false).msg(String.format("当前读取到设备[%s]主条码数量[%s]与产出零件对应的腔数[%s]不一致,持续监听中...", cellEquipContext.getEquipmentCode(), equipVariableCollectContextList.size(), productionPartContextList.size())),
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(productionPartContextList) && equipVariableCollectContextList.size() != cellEquipContext.getCavity())
|
|
|
|
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前读取到设备[%s]主条码数量[%s]与工位设备维护的腔数[%s]不一致,持续监听中...", cellEquipContext.getEquipmentCode(), equipVariableCollectContextList.size(), cellEquipContext.getCavity()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return stepResult;
|
|
|
|
|
execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.isCompleted(false).msg(String.format("当前读取到设备[%s]主条码数量[%s]与工位设备维护的腔数[%s]不一致,持续监听中...", cellEquipContext.getEquipmentCode(), equipVariableCollectContextList.size(), cellEquipContext.getCavity())),
|
|
|
|
|
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|