|
|
|
@ -64,6 +64,8 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
private static final String TODO_MSG_TRANS_TYPE = "ExM"; |
|
|
|
private static final String TODO_MSG_TRANS_TYPE_FALLBACK = "ExR"; |
|
|
|
private static final String TODO_MSG_SOURCE_PREFIX = "过站采集-创建分卷"; |
|
|
|
private static final String FLAG_Y = "Y"; |
|
|
|
private static final String FLAG_N = "N"; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ScheduleMapper scheduleMapper; |
|
|
|
@ -3579,6 +3581,27 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
ScheduleTodoMessageEntity pendingLockTodo = getLatestPendingLockTodo(inData); |
|
|
|
if (pendingLockTodo != null) { |
|
|
|
resultMap.put("todoInfoCode", pendingLockTodo.getInfoCode()); |
|
|
|
if (FLAG_N.equalsIgnoreCase(pendingLockTodo.getAuditFlag())) { |
|
|
|
resultMap.put("matched", true); |
|
|
|
resultMap.put("action", ACTION_LOCK_PAGE); |
|
|
|
resultMap.put("lockPage", FLAG_Y); |
|
|
|
resultMap.put("message", "当前异常代办尚未审核,已锁定创建分卷操作。"); |
|
|
|
resultMap.put("pendingAudit", true); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
if (FLAG_Y.equalsIgnoreCase(pendingLockTodo.getAuditFlag())) { |
|
|
|
resultMap.put("matched", false); |
|
|
|
resultMap.put("lockPage", FLAG_N); |
|
|
|
resultMap.put("action", ACTION_NONE); |
|
|
|
resultMap.put("bypassByAudit", true); |
|
|
|
resultMap.put("message", "异常代办已审核,允许继续执行本次创建分卷操作。"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<SysSceneExceptionRuleEntity> ruleList = sysSceneExceptionRuleMapper.getEnabledRuleListByApply( |
|
|
|
inData.getSite(), inData.getBuNo(), SPLIT_RULE_APPLY_PAGE, SPLIT_RULE_APPLY_BUTTON); |
|
|
|
if (CollectionUtils.isEmpty(ruleList)) { |
|
|
|
@ -3623,7 +3646,7 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
} |
|
|
|
fillSplitRuleMatchResult(resultMap, rule, child); |
|
|
|
resultMap.put("matchedRollIndex", metricContext.rollIndex); |
|
|
|
saveSplitRuleMatchedData(inData); |
|
|
|
saveSplitRuleMatchedData(inData, String.valueOf(resultMap.get("action"))); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -3633,6 +3656,63 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Map<String, Object> getSplitRuleLockStatus(SearchScheduleData inData) { |
|
|
|
Map<String, Object> resultMap = new HashMap<>(); |
|
|
|
resultMap.put("locked", false); |
|
|
|
resultMap.put("lockPage", FLAG_N); |
|
|
|
resultMap.put("bypassByAudit", false); |
|
|
|
|
|
|
|
if (inData == null || !StringUtils.hasText(inData.getSite()) || !StringUtils.hasText(inData.getBuNo()) |
|
|
|
|| !StringUtils.hasText(inData.getOrderNo()) || !StringUtils.hasText(inData.getSeqNo())) { |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
ScheduleTodoMessageEntity pendingLockTodo = getLatestPendingLockTodo(inData); |
|
|
|
if (pendingLockTodo == null) { |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
resultMap.put("todoInfoCode", pendingLockTodo.getInfoCode()); |
|
|
|
if (FLAG_N.equalsIgnoreCase(pendingLockTodo.getAuditFlag())) { |
|
|
|
resultMap.put("locked", true); |
|
|
|
resultMap.put("lockPage", FLAG_Y); |
|
|
|
resultMap.put("pendingAudit", true); |
|
|
|
resultMap.put("message", "当前异常代办尚未审核,已锁定创建分卷操作。"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
if (FLAG_Y.equalsIgnoreCase(pendingLockTodo.getAuditFlag())) { |
|
|
|
resultMap.put("locked", false); |
|
|
|
resultMap.put("lockPage", FLAG_N); |
|
|
|
resultMap.put("bypassByAudit", true); |
|
|
|
resultMap.put("message", "异常代办已审核,允许继续执行本次创建分卷操作。"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void completeSplitRuleTodoOperation(SearchScheduleData inData) { |
|
|
|
if (inData == null || !StringUtils.hasText(inData.getSite()) || !StringUtils.hasText(inData.getBuNo()) |
|
|
|
|| !StringUtils.hasText(inData.getOrderNo()) || !StringUtils.hasText(inData.getSeqNo())) { |
|
|
|
return; |
|
|
|
} |
|
|
|
int updatedRows = scheduleTodoMessageMapper.markLatestAuditedLockTodoOperated( |
|
|
|
inData.getSite(), |
|
|
|
inData.getBuNo(), |
|
|
|
inData.getOrderNo(), |
|
|
|
inData.getSeqNo(), |
|
|
|
TODO_MSG_SOURCE_PREFIX + "%"); |
|
|
|
if (updatedRows <= 0) { |
|
|
|
return; |
|
|
|
} |
|
|
|
Integer seqNo = parseSeqNo(inData.getSeqNo()); |
|
|
|
if (seqNo != null) { |
|
|
|
shiftChangeProductionReportMapper.deleteUnprocessedData(inData.getSite(), inData.getOrderNo(), seqNo); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private List<SplitRollMetricContext> buildSplitRollMetricContexts(SearchScheduleData inData) { |
|
|
|
List<SplitRollMetricContext> contextList = new ArrayList<>(); |
|
|
|
List<Map<String, Object>> rollRows = inData.getRollRows(); |
|
|
|
@ -3823,9 +3903,9 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
resultMap.put("message", "触发异常规则,但触发事件未配置。"); |
|
|
|
} |
|
|
|
|
|
|
|
private void saveSplitRuleMatchedData(SearchScheduleData inData) { |
|
|
|
private void saveSplitRuleMatchedData(SearchScheduleData inData, String action) { |
|
|
|
saveSplitRuleCacheData(inData); |
|
|
|
saveSplitRuleTodoMessage(inData); |
|
|
|
saveSplitRuleTodoMessage(inData, ACTION_LOCK_PAGE.equals(action)); |
|
|
|
} |
|
|
|
|
|
|
|
private void saveSplitRuleCacheData(SearchScheduleData inData) { |
|
|
|
@ -3875,7 +3955,7 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void saveSplitRuleTodoMessage(SearchScheduleData inData) { |
|
|
|
private void saveSplitRuleTodoMessage(SearchScheduleData inData, boolean lockRequired) { |
|
|
|
if (inData == null || !StringUtils.hasText(inData.getSite()) || !StringUtils.hasText(inData.getBuNo()) |
|
|
|
|| !StringUtils.hasText(inData.getOrderNo()) || !StringUtils.hasText(inData.getSeqNo())) { |
|
|
|
return; |
|
|
|
@ -3901,11 +3981,25 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
entity.setOrderNo(inData.getOrderNo()); |
|
|
|
entity.setCreatedBy(StringUtils.hasText(inData.getOperatorId()) ? inData.getOperatorId() : inData.getCreatedBy()); |
|
|
|
entity.setMessageSource(buildTodoMessageSource(inData.getFunctionName())); |
|
|
|
entity.setAuditFlag("N"); |
|
|
|
entity.setOperateFlag("N"); |
|
|
|
entity.setAuditFlag(FLAG_N); |
|
|
|
entity.setOperateFlag(FLAG_N); |
|
|
|
entity.setLockFlag(lockRequired ? FLAG_Y : FLAG_N); |
|
|
|
scheduleTodoMessageMapper.insertTodoMessage(entity); |
|
|
|
} |
|
|
|
|
|
|
|
private ScheduleTodoMessageEntity getLatestPendingLockTodo(SearchScheduleData inData) { |
|
|
|
if (inData == null || !StringUtils.hasText(inData.getSite()) || !StringUtils.hasText(inData.getBuNo()) |
|
|
|
|| !StringUtils.hasText(inData.getOrderNo()) || !StringUtils.hasText(inData.getSeqNo())) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
return scheduleTodoMessageMapper.getLatestPendingLockTodo( |
|
|
|
inData.getSite(), |
|
|
|
inData.getBuNo(), |
|
|
|
inData.getOrderNo(), |
|
|
|
inData.getSeqNo(), |
|
|
|
TODO_MSG_SOURCE_PREFIX + "%"); |
|
|
|
} |
|
|
|
|
|
|
|
private Integer parseSeqNo(String seqNo) { |
|
|
|
if (!StringUtils.hasText(seqNo)) { |
|
|
|
return null; |
|
|
|
@ -4010,6 +4104,11 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<Map<String, Object>> createSplitSfdcRoll(SearchScheduleData inData) { |
|
|
|
ScheduleTodoMessageEntity pendingLockTodo = getLatestPendingLockTodo(inData); |
|
|
|
if (pendingLockTodo != null && FLAG_N.equalsIgnoreCase(pendingLockTodo.getAuditFlag())) { |
|
|
|
throw new XJException("当前异常代办尚未审核,创建分卷操作已锁定。"); |
|
|
|
} |
|
|
|
|
|
|
|
//公共参数 |
|
|
|
String site = inData.getSite(); |
|
|
|
String orderNo = inData.getOrderNo(); |
|
|
|
|