Commit cf6f6c13 by 丁伟峰

虚拟指派,如果后面还有一个工单,可能会影响下一个工单的在途时间和里程,修改原有工单

1 parent ce9530f3
...@@ -175,7 +175,7 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -175,7 +175,7 @@ public class OrderCreateServiceImpl implements OrderCreateService {
if (teamIds == null || teamIds.isEmpty()) { if (teamIds == null || teamIds.isEmpty()) {
return Result.failed("没有找到匹配的工作队"); return Result.failed("没有找到匹配的工作队");
} }
// 选择一个工作队(理论上,只有1个合适的工作队),然后遍历下面的各个技术员,从符合技能的技术员中,汇总相关的容量 // 选择一个工作队(理论上,只有1个合适的工作队),然后遍历下面的符合技能的技术员
// 遍历工作队,每个工作队 // 遍历工作队,每个工作队
String teamId = teamIds.get(0); String teamId = teamIds.get(0);
OrgTeamEntity teamEntity = orgTeamDao.getByTeamId(teamId); OrgTeamEntity teamEntity = orgTeamDao.getByTeamId(teamId);
...@@ -199,19 +199,18 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -199,19 +199,18 @@ public class OrderCreateServiceImpl implements OrderCreateService {
return Result.success(null); return Result.success(null);
} }
private void tryVirtualAppointment(OrderInfoEntity entity, String source, String teamId) { private void tryVirtualAppointment(OrderInfoEntity thisOrderEntity, String source, String teamId) {
// todo 等王力那边修改后,这边再进行整合,需要返回当前工单、后面的一个工单的数据情况,这边再进行修改
try { try {
List<String> engineerCodes = engineerUtils.getEngineersByLevel("team", teamId).stream() List<String> engineerCodes = engineerUtils.getEngineersByLevel("team", teamId).stream()
.map(EngineerInfoEntity::getEngineerCode).collect(Collectors.toList()); .map(EngineerInfoEntity::getEngineerCode).collect(Collectors.toList());
List<String> matchEngineerCodes = engineerSkillDao.findAllByBrandAndTypeAndSkillAndEngineerCodeIn(entity.getBrand(), entity.getType(), entity.getSkill(), engineerCodes).stream() List<String> matchEngineerCodes = engineerSkillDao.findAllByBrandAndTypeAndSkillAndEngineerCodeIn(thisOrderEntity.getBrand(), thisOrderEntity.getType(), thisOrderEntity.getSkill(), engineerCodes).stream()
.map(EngineerSkillEntity::getEngineerCode).collect(Collectors.toList()); .map(EngineerSkillEntity::getEngineerCode).collect(Collectors.toList());
String assignEngineerCode = null; String assignEngineerCode = null;
OrderAssignCheck.Result checkResult = null; OrderAssignCheck.Result checkResult = null;
log.info("=== 准备调用指派,候选的技术员列表: {}", matchEngineerCodes); log.info("=== 准备调用指派,候选的技术员列表: {}", matchEngineerCodes);
for (String engineerCode : matchEngineerCodes) { for (String engineerCode : matchEngineerCodes) {
checkResult = orderAssignCheck.orderAssignCheck(entity.getOrderId(), entity.getDt(), engineerCode); checkResult = orderAssignCheck.orderAssignCheck(thisOrderEntity.getOrderId(), thisOrderEntity.getDt(), engineerCode);
log.info("orderAssignCheck ===> orderId[{}]engineerCode[{}] ==> result[{}]", entity.getOrderId(), engineerCode, checkResult); log.info("orderAssignCheck ===> orderId[{}]engineerCode[{}] ==> result[{}]", thisOrderEntity.getOrderId(), engineerCode, checkResult);
if (checkResult.getIndex() < 0) { if (checkResult.getIndex() < 0) {
assignEngineerCode = engineerCode; assignEngineerCode = engineerCode;
break; break;
...@@ -223,22 +222,33 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -223,22 +222,33 @@ public class OrderCreateServiceImpl implements OrderCreateService {
// 修改当前工单 // 修改当前工单
OrderAssignCheck.OrderNode insertNode = checkResult.getCurOrderNode(); OrderAssignCheck.OrderNode insertNode = checkResult.getCurOrderNode();
entity.setEngineerCode(assignEngineerCode); thisOrderEntity.setEngineerCode(assignEngineerCode);
EngineerInfoEntity engineerInfo = engineerInfoDao.getByEngineerCode(assignEngineerCode); EngineerInfoEntity engineerInfo = engineerInfoDao.getByEngineerCode(assignEngineerCode);
entity.setEngineerName(engineerInfo.getName()); thisOrderEntity.setEngineerName(engineerInfo.getName());
entity.setEngineerPhone(engineerInfo.getPhone()); thisOrderEntity.setEngineerPhone(engineerInfo.getPhone());
entity.setAppointmentStatus("PRE"); thisOrderEntity.setAppointmentStatus("PRE");
entity.setDispatcher("AUTO_NOW"); thisOrderEntity.setDispatcher("AUTO_NOW");
entity.setPlanStartTime(insertNode.getPlanStartTime()); thisOrderEntity.setPlanStartTime(insertNode.getPlanStartTime());
entity.setPlanEndTime(insertNode.getPlanEndTime()); thisOrderEntity.setPlanEndTime(insertNode.getPlanEndTime());
entity.setArriveDistance(checkResult.getAdditionDistance()); thisOrderEntity.setArriveDistance(checkResult.getAdditionDistance());
entity.setArriveElapsed(checkResult.getAdditionElapsed()); thisOrderEntity.setArriveElapsed(checkResult.getAdditionElapsed());
orderInfoDao.save(entity); orderInfoDao.save(thisOrderEntity);
// 如果影响到原有工单,修改原有工单
if (checkResult.getPostOrderNode() != null) {
// 如果后面还有一个工单,可能会影响下一个工单的在途时间和里程,修改原有工单
OrderAssignCheck.OrderNode postNode = checkResult.getPostOrderNode();
OrderInfoEntity postOrderEntity = orderInfoDao.getByOrderId(checkResult.getPostOrderId());
if (postOrderEntity == null) {
log.error("受影响的原有工单信息不存在!orderId[{}]", checkResult.getPostOrderId());
// todo 可能需要抛出异常
} else {
postOrderEntity.setArriveDistance(postNode.getArriveDistance());
postOrderEntity.setArriveElapsed(postNode.getArriveElapsed());
orderInfoDao.save(postOrderEntity);
}
}
// 登记 // 登记
commonService.addOrderEvent(entity.getOrderId(), entity.getSubId(), source, "API", "虚拟指派", "虚拟指派", ""); commonService.addOrderEvent(thisOrderEntity.getOrderId(), thisOrderEntity.getSubId(), source, "API", "虚拟指派", "虚拟指派", "");
} }
log.info("==== 已经完成虚拟指派 ===="); log.info("==== 已经完成虚拟指派 ====");
} catch (Exception e) { } catch (Exception e) {
...@@ -250,8 +260,8 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -250,8 +260,8 @@ public class OrderCreateServiceImpl implements OrderCreateService {
return String.format("%s_%s", orderId, DateUtils.formatDateTime(LocalDateTime.now(), "MMdd")); return String.format("%s_%s", orderId, DateUtils.formatDateTime(LocalDateTime.now(), "MMdd"));
} }
private String fixBrand(String brand){ private String fixBrand(String brand) {
if (!brand.equals("嘉格纳")){ if (!brand.equals("嘉格纳")) {
return "博世/西门子以及其他品牌"; return "博世/西门子以及其他品牌";
} else { } else {
return brand; return brand;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!