fix(andon): 修复安灯事件派工状态更新和自动分配逻辑, 当PDA使用/production/andon/mobile/call接口提交安灯呼叫时,将时间设置为安灯派工AndonEventAssignment的acceptTime,当安灯事件结束后设置时间为安灯派工AndonEventAssignment的finishTime

- 移除ACCEPTED状态下的acceptTime自动设置逻辑,仅保留DONE状态的finishTime设置
- 重命名autoCreateAssignments方法中的参数名从e改为event以提高可读性
- 在PDA调用场景下为自动创建的派工记录立即设置acceptTime表示已接单
- 更新变量名从a改为assignment,提高代码可读性
- 修复方法内部对event对象的引用保持一致性
master
zangch@mesnac.com 4 days ago
parent 41c5d56e63
commit 7f1e4425bb

@ -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());
}
}

@ -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, "根据规则创建派工记录");
}
}

Loading…
Cancel
Save