Commit a7a23fc9 by chamberone

Merge branch 'develop' of https://zhangguoping@gitlab.dituhui.com/bsh/project/pr…

…oject.git into develop
2 parents df788d87 eba01e5e
...@@ -26,7 +26,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; ...@@ -26,7 +26,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
*/ */
@SpringBootApplication @SpringBootApplication
@EnableScheduling @EnableScheduling
@EnableFeignClients(basePackages = {"com.dituhui.pea.user", "com.dituhui.pea.order"}) @EnableFeignClients(basePackages = {"com.dituhui.pea.user", "com.dituhui.pea.order", "com.dituhui.pea.dispatch"})
public class OrderServiceApplication { public class OrderServiceApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
...@@ -150,7 +150,7 @@ public class PeaApiController { ...@@ -150,7 +150,7 @@ public class PeaApiController {
@RequestParam("beginDate") Date beginDate, @RequestParam("beginDate") Date beginDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
Date endDate) { Date endDate) {
CapacityQueryDTO.PersonalResult result = capacityQueryService.queryEngineerCapacity(engineerCode, CapacityQueryDTO.PersonalResult result = capacityQueryService.queryEngineerCapacity(engineerCode,
beginDate.toInstant().atZone(ZoneId.of("+8")).toLocalDate(), beginDate.toInstant().atZone(ZoneId.of("+8")).toLocalDate(),
...@@ -233,6 +233,27 @@ public class PeaApiController { ...@@ -233,6 +233,27 @@ public class PeaApiController {
if (StringUtils.isBlank(request.getOrderId())) { if (StringUtils.isBlank(request.getOrderId())) {
return Result.failed(StatusCodeEnum.COMMON_PARAM_EMPTY); return Result.failed(StatusCodeEnum.COMMON_PARAM_EMPTY);
} }
if (StringUtils.isNotBlank(request.getBrand())) {
TypeCodeCheckTableEntity brand = tableCodeCheckDao.findByTypeAndCode("BRAND", request.getBrand());
if (Objects.isNull(brand)) {
throw new BusinessException("查询不到:" + request.getBrand() + "对应的品牌");
}
request.setBrand(brand.getName());
}
if (StringUtils.isNotBlank(request.getProductType())) {
TypeCodeCheckTableEntity type = tableCodeCheckDao.findByTypeAndCode("TYPE", request.getProductType());
if (Objects.isNull(type)) {
throw new BusinessException("查询不到:" + request.getProductType() + "对应的产品类型");
}
request.setProductType(type.getName());
}
if (StringUtils.isNotBlank(request.getServiceType())) {
TypeCodeCheckTableEntity skill = tableCodeCheckDao.findByTypeAndCode("SKILL", request.getServiceType());
if (Objects.isNull(skill)) {
throw new BusinessException("查询不到:" + request.getServiceType() + "对应的技能");
}
request.setServiceType(skill.getName());
}
return orderInfoService.orderStageChanged(request); return orderInfoService.orderStageChanged(request);
} }
......
package com.dituhui.pea.order.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class OrderSegment {
private String orderId;
private LocalDateTime start;
private LocalDateTime end;
private double x;
private double y;
private int takeTime;
private int elapsed;
private int distance;
public OrderSegment() {
}
public OrderSegment(LocalDateTime start, LocalDateTime end, double x, double y, int takeTime, int elapsed, int distance) {
this.start = start;
this.end = end;
this.x = x;
this.y = y;
this.takeTime = takeTime;
this.elapsed = elapsed;
this.distance = distance;
}
}
...@@ -90,4 +90,14 @@ public class OrderServiceList { ...@@ -90,4 +90,14 @@ public class OrderServiceList {
* bean同步地址id * bean同步地址id
*/ */
private String addressId; private String addressId;
/**
* 是否是cutoff,0否 1是 默认0
*/
private Integer isCutoff;
/**
* 改约原因
*/
private String reschedulingReason;
} }
...@@ -98,4 +98,14 @@ public class OrderInfo { ...@@ -98,4 +98,14 @@ public class OrderInfo {
* 是否是特殊时间段,0否 1是 默认0 * 是否是特殊时间段,0否 1是 默认0
*/ */
private Integer isSpecialTime; private Integer isSpecialTime;
/**
* 是否是cutoff,0否 1是 默认0
*/
private Integer isCutoff;
/**
* 改约原因
*/
private String reschedulingReason;
} }
\ No newline at end of file
...@@ -3,8 +3,13 @@ package com.dituhui.pea.order.service; ...@@ -3,8 +3,13 @@ package com.dituhui.pea.order.service;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.OrderReschedule; import com.dituhui.pea.order.dto.OrderReschedule;
import com.dituhui.pea.order.dto.param.OrderDTO; import com.dituhui.pea.order.dto.param.OrderDTO;
import com.dituhui.pea.order.entity.EngineerInfoEntity;
import com.dituhui.pea.order.entity.OrderInfoEntity;
import com.dituhui.pea.order.entity.OrgTeamEntity;
import com.dituhui.pea.order.entity.SkillInfoEntity;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* 订单相关 * 订单相关
...@@ -51,4 +56,17 @@ public interface OrderInfoService { ...@@ -51,4 +56,17 @@ public interface OrderInfoService {
* @return * @return
*/ */
Result<?> orderReschedulingReason(); Result<?> orderReschedulingReason();
/**
* 根据工程师当日订单插入订单
*
* @param skillInfo 待指派订单技能
* @param engineerOrders 待指派工程师当日工单
* @param insertOrder 待指派订单
* @param orgTeam 待指派工程师团队
* @param engineer 指派工程师
* @return
*/
public Result<OrderInfoEntity> insterEngineerOrders(List<OrderInfoEntity> engineerOrders, OrderInfoEntity insertOrder, SkillInfoEntity skillInfo, OrgTeamEntity orgTeam, EngineerInfoEntity engineer);
} }
...@@ -3,6 +3,7 @@ package com.dituhui.pea.order.service.impl; ...@@ -3,6 +3,7 @@ package com.dituhui.pea.order.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.dituhui.pea.common.BusinessException; import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.common.ResultEnum;
import com.dituhui.pea.enums.StatusCodeEnum; import com.dituhui.pea.enums.StatusCodeEnum;
import com.dituhui.pea.order.common.ListUtils; import com.dituhui.pea.order.common.ListUtils;
import com.dituhui.pea.order.common.TimeUtils; import com.dituhui.pea.order.common.TimeUtils;
...@@ -15,6 +16,7 @@ import com.dituhui.pea.order.entity.*; ...@@ -15,6 +16,7 @@ import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.*; import com.dituhui.pea.order.enums.*;
import com.dituhui.pea.order.service.CommonService; import com.dituhui.pea.order.service.CommonService;
import com.dituhui.pea.order.service.DispatchService; import com.dituhui.pea.order.service.DispatchService;
import com.dituhui.pea.order.service.OrderInfoService;
import com.dituhui.pea.order.utils.CommonUtil; import com.dituhui.pea.order.utils.CommonUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -69,6 +71,9 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -69,6 +71,9 @@ public class DispatchServiceImpl implements DispatchService {
@Autowired @Autowired
private CommonService commonService; private CommonService commonService;
@Autowired
private OrderInfoService orderInfoService;
@Transactional @Transactional
@Override @Override
public Result<?> getDispatchOrderList(DispatchOrderListReq reqDTO) { public Result<?> getDispatchOrderList(DispatchOrderListReq reqDTO) {
...@@ -275,7 +280,6 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -275,7 +280,6 @@ public class DispatchServiceImpl implements DispatchService {
@Override @Override
public Result<?> dispatchOrderConfirm(String engineerCode, String date, List<String> orderIds) throws BusinessException { public Result<?> dispatchOrderConfirm(String engineerCode, String date, List<String> orderIds) throws BusinessException {
// 派工台确认派单 // 派工台确认派单
LocalDate localDate = TimeUtils.IsoDate2LocalDate(date); LocalDate localDate = TimeUtils.IsoDate2LocalDate(date);
EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(engineerCode); EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(engineerCode);
...@@ -286,11 +290,11 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -286,11 +290,11 @@ public class DispatchServiceImpl implements DispatchService {
if (ListUtils.isEmpty(orders)) { if (ListUtils.isEmpty(orders)) {
return Result.failed("订单不存在"); return Result.failed("订单不存在");
} }
List<OrgTeamEngineerEntity> orgTeamEngineers = orgTeamEngineerDao.findByEngineerCode(engineer.getEngineerCode()); List<OrgTeamEngineerEntity> orgTeamEngineers = orgTeamEngineerDao.findByEngineerCode(engineer.getEngineerCode());
if (CollectionUtils.isEmpty(orgTeamEngineers)) { if (CollectionUtils.isEmpty(orgTeamEngineers)) {
return Result.failed(StatusCodeEnum.TEAM_UNMATCHED); return Result.failed(StatusCodeEnum.TEAM_UNMATCHED);
} }
//判断工程师订单当日工单时间安排
OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId()); OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId());
for (OrderInfoEntity entity : orders) { for (OrderInfoEntity entity : orders) {
...@@ -298,6 +302,14 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -298,6 +302,14 @@ public class DispatchServiceImpl implements DispatchService {
return Result.failed(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName())); return Result.failed(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName()));
} }
SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill()); SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill());
List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(localDate, engineer.getEngineerCode());
if (CollectionUtils.isNotEmpty(engineerOrders)) {
Result<OrderInfoEntity> entityResult = orderInfoService.insterEngineerOrders(engineerOrders, entity, skill, byTeamId, engineer);
if (!entityResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
return Result.failed("当前工程师工单已满");
}
entity = entityResult.getResult();
}
entity.setTakeTime(skill.getTakeTime()); entity.setTakeTime(skill.getTakeTime());
entity.setPlanStartTime(entity.getExpectTimeBegin()); entity.setPlanStartTime(entity.getExpectTimeBegin());
entity.setPlanEndTime(entity.getExpectTimeBegin().plusMinutes(skill.getTakeTime())); entity.setPlanEndTime(entity.getExpectTimeBegin().plusMinutes(skill.getTakeTime()));
......
...@@ -146,7 +146,6 @@ public class OrderAssignImpl implements OrderAssign { ...@@ -146,7 +146,6 @@ public class OrderAssignImpl implements OrderAssign {
@Override @Override
public Result<?> orderAssign(OrderAssignReq req) throws BusinessException { public Result<?> orderAssign(OrderAssignReq req) throws BusinessException {
// 服务单指派-指派提交 // 服务单指派-指派提交
OrderInfoEntity entity = orderInfoDao.getByOrderId(req.getOrderId()); OrderInfoEntity entity = orderInfoDao.getByOrderId(req.getOrderId());
if (entity == null) { if (entity == null) {
return Result.failed("订单不存在"); return Result.failed("订单不存在");
...@@ -158,16 +157,21 @@ public class OrderAssignImpl implements OrderAssign { ...@@ -158,16 +157,21 @@ public class OrderAssignImpl implements OrderAssign {
if (CollectionUtils.isEmpty(orgTeamEngineers)) { if (CollectionUtils.isEmpty(orgTeamEngineers)) {
return Result.failed(StatusCodeEnum.TEAM_UNMATCHED); return Result.failed(StatusCodeEnum.TEAM_UNMATCHED);
} }
OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId());
if (entity != null && !entity.getAppointmentStatus().equals("NOT_ASSIGNED") && StringUtils.isNotBlank(entity.getEngineerCode()) && entity.getEngineerCode().equals(req.getEngineerCode())) { if (entity != null && !entity.getAppointmentStatus().equals("NOT_ASSIGNED") && StringUtils.isNotBlank(entity.getEngineerCode()) && entity.getEngineerCode().equals(req.getEngineerCode())) {
throw new BusinessException(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName())); throw new BusinessException(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName()));
} }
OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId());
SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill()); SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill());
entity.setTakeTime(skill.getTakeTime()); //判断工程师订单当日工单时间安排
entity.setPlanStartTime(entity.getExpectTimeBegin()); List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(entity.getDt(), engineer.getEngineerCode());
entity.setPlanEndTime(entity.getExpectTimeBegin().plusMinutes(skill.getTakeTime())); if (CollectionUtils.isNotEmpty(engineerOrders)) {
Result<OrderInfoEntity> entityResult = orderInfoService.insterEngineerOrders(engineerOrders, entity, skill, byTeamId, engineer);
if (!entityResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
return Result.failed("当前工程师工单已满");
}
entity = entityResult.getResult();
}
entity.setEngineerCode(engineer.getEngineerCode()); entity.setEngineerCode(engineer.getEngineerCode());
entity.setEngineerName(engineer.getName()); entity.setEngineerName(engineer.getName());
entity.setEngineerPhone(engineer.getPhone()); entity.setEngineerPhone(engineer.getPhone());
...@@ -177,8 +181,6 @@ public class OrderAssignImpl implements OrderAssign { ...@@ -177,8 +181,6 @@ public class OrderAssignImpl implements OrderAssign {
entity.setOrgBranchId(byTeamId.getBranchId()); entity.setOrgBranchId(byTeamId.getBranchId());
entity.setOrgClusterId(byTeamId.getClusterId()); entity.setOrgClusterId(byTeamId.getClusterId());
orderInfoDao.save(entity); orderInfoDao.save(entity);
// entity.setEngineerCode(engineer.getEngineerCode());
// orderInfoDao.save(order);
// 工单变更登记 // 工单变更登记
commonService.addOrderEvent(entity.getOrderId(), "", "BEAN", "BEAN", OrderEventEnum.reassignment.getEvent(), commonService.addOrderEvent(entity.getOrderId(), "", "BEAN", "BEAN", OrderEventEnum.reassignment.getEvent(),
String.format(OrderEventEnum.reassignment.getMsg(), engineer.getName() + "-" + (ObjectUtil.isNotNull(byTeamId) ? byTeamId.getTeamName() : "")), String.format(OrderEventEnum.reassignment.getMsg(), engineer.getName() + "-" + (ObjectUtil.isNotNull(byTeamId) ? byTeamId.getTeamName() : "")),
......
...@@ -5,18 +5,21 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -5,18 +5,21 @@ import cn.hutool.core.util.ObjectUtil;
import com.dituhui.pea.common.BusinessException; import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.common.ResultEnum; import com.dituhui.pea.common.ResultEnum;
import com.dituhui.pea.dispatch.IPath;
import com.dituhui.pea.enums.StatusCodeEnum; import com.dituhui.pea.enums.StatusCodeEnum;
import com.dituhui.pea.order.common.TimeUtils; import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.constant.OrderReschedulingReason; import com.dituhui.pea.order.constant.OrderReschedulingReason;
import com.dituhui.pea.order.dao.*; import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.MsgDTO; import com.dituhui.pea.order.dto.MsgDTO;
import com.dituhui.pea.order.dto.OrderReschedule; import com.dituhui.pea.order.dto.OrderReschedule;
import com.dituhui.pea.order.dto.OrderSegment;
import com.dituhui.pea.order.dto.param.*; import com.dituhui.pea.order.dto.param.*;
import com.dituhui.pea.order.entity.*; import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.*; import com.dituhui.pea.order.enums.*;
import com.dituhui.pea.order.service.*; import com.dituhui.pea.order.service.*;
import com.dituhui.pea.order.utils.CommonUtil; import com.dituhui.pea.order.utils.CommonUtil;
import com.dituhui.pea.order.utils.OrderUtil; import com.dituhui.pea.order.utils.OrderUtil;
import com.dituhui.pea.pojo.DistanceDTO;
import com.dituhui.pea.pojo.saas.req.AdministrativeDistrictReq; import com.dituhui.pea.pojo.saas.req.AdministrativeDistrictReq;
import com.dituhui.pea.pojo.saas.resp.AdministrativeDistrictResp; import com.dituhui.pea.pojo.saas.resp.AdministrativeDistrictResp;
import com.dituhui.pea.util.DateUtil; import com.dituhui.pea.util.DateUtil;
...@@ -28,8 +31,11 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -28,8 +31,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -64,6 +70,9 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -64,6 +70,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
@Autowired @Autowired
private OrgTeamDao orgTeamDao; private OrgTeamDao orgTeamDao;
@Autowired
private IPath pathService;
/** /**
* 新增订单处理一家多单逻辑 * 新增订单处理一家多单逻辑
...@@ -414,6 +423,111 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -414,6 +423,111 @@ public class OrderInfoServiceImpl implements OrderInfoService {
return Result.success(OrderReschedulingReason.ReschedulingReasonMap); return Result.success(OrderReschedulingReason.ReschedulingReasonMap);
} }
/**
* 根据工程师当日订单插入订单
*
* @param skillInfo 待指派订单技能
* @param engineerOrders 待指派工程师当日工单
* @param insertOrder 待指派订单
* @param orgTeam 待指派工程师团队
* @param engineer 指派工程师
* @return
*/
@Transactional
@Override
public Result<OrderInfoEntity> insterEngineerOrders(List<OrderInfoEntity> engineerOrders, OrderInfoEntity insertOrder, SkillInfoEntity skillInfo, OrgTeamEntity orgTeam, EngineerInfoEntity engineer) {
int takeTime = skillInfo.getTakeTime();
// 获取客户期望时间段
LocalDateTime start = insertOrder.getExpectTimeBegin();
LocalDateTime end = insertOrder.getExpectTimeEnd();
// 获取团队工作起止时间
String[] teamWorkStartTime = orgTeam.getWorkOn().split(":");
String[] teamWorkEndTime = orgTeam.getWorkOff().split(":");
LocalDateTime startTeam = LocalDate.now().atTime(Integer.parseInt(teamWorkStartTime[0]), Integer.parseInt(teamWorkStartTime[1]), 0);
LocalDateTime endTeam = LocalDate.now().atTime(Integer.parseInt(teamWorkEndTime[0]), Integer.parseInt(teamWorkEndTime[1]), 0);
// 计算最早派工和最晚派工时间
LocalDateTime workStartTime = start.isAfter(startTeam) ? start : startTeam;
LocalDateTime workEndTime = end.isBefore(endTeam) ? end : endTeam;
// 订单工作时间顺序排序
List<OrderSegment> orderSegments = new ArrayList<>();
for (OrderInfoEntity orderInfo : engineerOrders) {
if (orderInfo.getOrderStatus().equals(OrderStatusEnum.CANCELED.getCode())) {
continue;
}
OrderSegment seg = new OrderSegment();
seg.setX(Double.parseDouble(orderInfo.getX()));
seg.setY(Double.parseDouble(orderInfo.getY()));
seg.setOrderId(orderInfo.getOrderId());
seg.setElapsed(orderInfo.getArriveElapsed());
seg.setDistance(orderInfo.getArriveDistance());
seg.setStart(orderInfo.getPlanStartTime());
seg.setEnd(orderInfo.getPlanEndTime());
orderSegments.add(seg);
}
// 没有单直接返回
if (CollectionUtils.isEmpty(orderSegments)) {
insertOrder.setTakeTime(skillInfo.getTakeTime());
insertOrder.setPlanStartTime(insertOrder.getExpectTimeBegin());
insertOrder.setPlanEndTime(insertOrder.getExpectTimeBegin().plusMinutes(skillInfo.getTakeTime()));
return Result.success(insertOrder);
}
orderSegments = orderSegments.stream().sorted(Comparator.comparing(OrderSegment::getStart)).collect(Collectors.toList());
for (int i = 0; i < orderSegments.size(); i++) {
OrderSegment orderSegment = orderSegments.get(i);
Result<DistanceDTO> roadResult = pathService.getRoadDistance(insertOrder.getOrderId(), orderSegment.getOrderId(), engineer.getVehicle());
if (!roadResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
continue;
}
DistanceDTO distanceDTO = roadResult.getResult();
int roadTime = distanceDTO.getTime() / 1000;
// 先判断第一单开始时间
if (i == 0 && orderSegment.getStart().minusHours(orderSegment.getElapsed()).compareTo(workStartTime.plusMinutes(takeTime + roadTime)) >= 0) {
insertOrder.setTakeTime(skillInfo.getTakeTime());
// insertOrder.setArriveDistance(roadTime);
// insertOrder.setArriveDistance(Integer.valueOf(String.valueOf(distanceDTO.getDis() * 1000)));
insertOrder.setPlanStartTime(insertOrder.getExpectTimeBegin());
insertOrder.setPlanEndTime(insertOrder.getExpectTimeBegin().plusMinutes(skillInfo.getTakeTime()));
OrderInfoEntity nestOrder = orderInfoDao.getByOrderId(orderSegment.getOrderId());
nestOrder.setArriveDistance(roadTime);
insertOrder.setArriveDistance(BigDecimal.valueOf(distanceDTO.getDis() * 1000).intValue());
orderInfoDao.save(nestOrder);
return Result.success(insertOrder);
}
// 判断当前是不是最后一单
if (i == orderSegments.size() - 1 && workEndTime.compareTo(orderSegment.getEnd().plusMinutes(takeTime + roadTime)) >= 0) {
insertOrder.setTakeTime(skillInfo.getTakeTime());
insertOrder.setArriveDistance(roadTime);
insertOrder.setArriveDistance(BigDecimal.valueOf(distanceDTO.getDis() * 1000).intValue());
insertOrder.setPlanStartTime(orderSegment.getEnd().plusMinutes(roadTime));
insertOrder.setPlanEndTime(orderSegment.getEnd().plusMinutes(takeTime + roadTime));
return Result.success(insertOrder);
}
// 当前单在中间
OrderSegment nestOrderSegment = orderSegments.get(i + 1);
Result<DistanceDTO> roadResult2 = pathService.getRoadDistance(nestOrderSegment.getOrderId(), insertOrder.getOrderId(), engineer.getVehicle());
if (!roadResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
continue;
}
if (nestOrderSegment.getStart().minusHours(roadResult2.getResult().getTime() / 1000).compareTo(orderSegment.getEnd().plusMinutes(takeTime + roadTime)) >= 0) {
insertOrder.setTakeTime(skillInfo.getTakeTime());
insertOrder.setArriveDistance(roadTime);
insertOrder.setArriveElapsed(BigDecimal.valueOf(distanceDTO.getDis() * 1000).intValue());
insertOrder.setPlanStartTime(orderSegment.getEnd().plusMinutes(roadTime));
insertOrder.setPlanEndTime(orderSegment.getEnd().plusMinutes(takeTime + roadTime));
OrderInfoEntity nestOrder = orderInfoDao.getByOrderId(nestOrderSegment.getOrderId());
nestOrder.setArriveDistance(roadResult2.getResult().getTime() / 1000);
nestOrder.setArriveElapsed(BigDecimal.valueOf(roadResult2.getResult().getDis() * 1000).intValue());
orderInfoDao.save(nestOrder);
return Result.success(insertOrder);
}
}
return Result.failed(insertOrder);
}
/** /**
* 订单重新分单 * 订单重新分单
* *
......
...@@ -158,6 +158,8 @@ public class OrderServiceListServiceImpl implements OrderServiceListService { ...@@ -158,6 +158,8 @@ public class OrderServiceListServiceImpl implements OrderServiceListService {
record.setTranscend(o.getTranscend()); record.setTranscend(o.getTranscend());
record.setIsSpecialTime(o.getIsSpecialTime()); record.setIsSpecialTime(o.getIsSpecialTime());
record.setAddressId(o.getAddressId()); record.setAddressId(o.getAddressId());
record.setIsCutoff(o.getIsCutoff());
record.setReschedulingReason(o.getReschedulingReason());
record.setActualStartTime(ObjectUtil.isNull(o.getActualStartTime()) ? "" : TimeUtils.IsoTimestamp2DateTime(o.getActualStartTime())); record.setActualStartTime(ObjectUtil.isNull(o.getActualStartTime()) ? "" : TimeUtils.IsoTimestamp2DateTime(o.getActualStartTime()));
record.setActualEndTime(ObjectUtil.isNull(o.getActualEndTime()) ? "" : TimeUtils.IsoTimestamp2DateTime(o.getActualEndTime())); record.setActualEndTime(ObjectUtil.isNull(o.getActualEndTime()) ? "" : TimeUtils.IsoTimestamp2DateTime(o.getActualEndTime()));
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!