Commit cf6f6c13 by 丁伟峰

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

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