diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java index 27d0b7c..f516a34 100644 --- a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java @@ -88,9 +88,8 @@ public class AndonEventAssignmentServiceImpl implements IAndonEventAssignmentSer // 根据状态补充派工自身的里程碑时间 if (andonEventAssignment.getStatus() != null) { String status = andonEventAssignment.getStatus(); - if (AnDonConstants.AssignmentStatus.ACCEPTED.equals(status) && andonEventAssignment.getAcceptTime() == null) { - andonEventAssignment.setAcceptTime(DateUtils.getNowDate()); - } else if (AnDonConstants.AssignmentStatus.DONE.equals(status) && andonEventAssignment.getFinishTime() == null) { + // 当状态变为DONE时,设置finishTime为当前时间(安灯事件结束) + if (AnDonConstants.AssignmentStatus.DONE.equals(status) && andonEventAssignment.getFinishTime() == null) { andonEventAssignment.setFinishTime(DateUtils.getNowDate()); } } diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java index fd2b664..81d82c9 100644 --- a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java @@ -182,12 +182,12 @@ public class AndonEventServiceImpl implements IAndonEventService /** * 根据规则为事件生成派工记录(优先 NOTIFY_USERS,其次 NOTIFY_ROLES)。 */ - private void autoCreateAssignments(AndonEvent e) { - if (e == null || e.getEventId() == null) return; + private void autoCreateAssignments(AndonEvent event) { + if (event == null || event.getEventId() == null) return; AndonRule query = new AndonRule(); - query.setCallTypeCode(e.getCallTypeCode()); + query.setCallTypeCode(event.getCallTypeCode()); query.setIsFlag(AnDonConstants.FLAG_VALID); - AndonRule rule = pickBestRule(andonRuleMapper.selectAndonRuleList(query), e); + AndonRule rule = pickBestRule(andonRuleMapper.selectAndonRuleList(query), event); if (rule == null) return; Date now = DateUtils.getNowDate(); @@ -199,18 +199,20 @@ public class AndonEventServiceImpl implements IAndonEventService if (notEmpty(rule.getNotifyUsers())) { String[] ids = rule.getNotifyUsers().split(","); for (int i = 0; i < ids.length; i++) { - String t = ids[i] == null ? null : ids[i].trim(); - if (!notEmpty(t)) continue; + String userIdStr = ids[i] == null ? null : ids[i].trim(); + if (!notEmpty(userIdStr)) continue; try { - Long uid = Long.valueOf(t); - AndonEventAssignment a = new AndonEventAssignment(); - a.setEventId(e.getEventId()); - a.setAssigneeUserId(uid); - a.setAssignedTime(now); - a.setStatus(AnDonConstants.AssignmentStatus.ASSIGNED); - a.setIsFlag(AnDonConstants.FLAG_VALID); - a.setCreateTime(now); - andonEventAssignmentMapper.insertAndonEventAssignment(a); + Long uid = Long.valueOf(userIdStr); + AndonEventAssignment assignment = new AndonEventAssignment(); + assignment.setEventId(event.getEventId()); + assignment.setAssigneeUserId(uid); + assignment.setAssignedTime(now); + assignment.setStatus(AnDonConstants.AssignmentStatus.ASSIGNED); + // PDA调用时立即设置acceptTime(表示PDA已接单) + assignment.setAcceptTime(now); + assignment.setIsFlag(AnDonConstants.FLAG_VALID); + assignment.setCreateTime(now); + andonEventAssignmentMapper.insertAndonEventAssignment(assignment); created = true; if ("single".equals(mode)) break; // 单人模式:仅创建一个派工 } catch (Exception ignore) { } @@ -222,20 +224,22 @@ public class AndonEventServiceImpl implements IAndonEventService for (int i = 0; i < roles.length; i++) { String rk = roles[i] == null ? null : roles[i].trim(); if (!notEmpty(rk)) continue; - AndonEventAssignment a = new AndonEventAssignment(); - a.setEventId(e.getEventId()); - a.setAssigneeRoleKey(rk); - a.setAssignedTime(now); - a.setStatus(AnDonConstants.AssignmentStatus.ASSIGNED); - a.setIsFlag(AnDonConstants.FLAG_VALID); - a.setCreateTime(now); - andonEventAssignmentMapper.insertAndonEventAssignment(a); + AndonEventAssignment assignment = new AndonEventAssignment(); + assignment.setEventId(event.getEventId()); + assignment.setAssigneeRoleKey(rk); + assignment.setAssignedTime(now); + assignment.setStatus(AnDonConstants.AssignmentStatus.ASSIGNED); + // PDA调用时立即设置acceptTime(表示PDA已接单) + assignment.setAcceptTime(now); + assignment.setIsFlag(AnDonConstants.FLAG_VALID); + assignment.setCreateTime(now); + andonEventAssignmentMapper.insertAndonEventAssignment(assignment); created = true; if ("single".equals(mode)) break; } } if (created) { - logEvent(e.getEventId(), AnDonConstants.Operation.ASSIGN, "根据规则创建派工记录"); + logEvent(event.getEventId(), AnDonConstants.Operation.ASSIGN, "根据规则创建派工记录"); } }