Commit cf594427 by huangjinxin

fix:改约添加标签,改约原因,批量改约

1 parent acca7d28
...@@ -13,7 +13,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -13,7 +13,9 @@ import org.springframework.web.bind.annotation.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
@RequestMapping("/pea-order") @RequestMapping("/pea-order")
...@@ -54,13 +56,15 @@ public class OrderAssignController { ...@@ -54,13 +56,15 @@ public class OrderAssignController {
@PostMapping("/order/assign/list") @PostMapping("/order/assign/list")
public Result<?> orderAssign(@RequestBody List<OrderAssignReq> assignReqList) { public Result<?> orderAssign(@RequestBody List<OrderAssignReq> assignReqList) {
// 服务单指派-指派提交 Map<String, Result> resultMap = new HashMap<>();
try { for (OrderAssignReq assignReq : assignReqList) {
for (OrderAssignReq assignReq : assignReqList) { // 服务单指派-指派提交
orderAssign.orderAssign(assignReq); try {
Result result = orderAssign.orderAssign(assignReq);
resultMap.put(assignReq.getOrderId(), result);
} catch (BusinessException e) {
resultMap.put(assignReq.getOrderId(), Result.failed(e.getMessage()));
} }
} catch (BusinessException e) {
return Result.failed(e.getMessage());
} }
return Result.success(); return Result.success();
} }
...@@ -89,6 +93,19 @@ public class OrderAssignController { ...@@ -89,6 +93,19 @@ public class OrderAssignController {
return res; return res;
} }
@GetMapping("/order/rescheduling/reason")
public Result<?> orderReschedulingReason() {
// 订单改约原因
Result<?> res = null;
try {
res = orderInfoService.orderReschedulingReason();
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
/** /**
* 批量改约 * 批量改约
* *
...@@ -97,14 +114,16 @@ public class OrderAssignController { ...@@ -97,14 +114,16 @@ public class OrderAssignController {
*/ */
@PostMapping("/order/rescheduling/list") @PostMapping("/order/rescheduling/list")
public Result<?> orderRescheduling(@RequestBody List<OrderReschedule> rescheduleList) { public Result<?> orderRescheduling(@RequestBody List<OrderReschedule> rescheduleList) {
// 订单改约 Map<String, Result> resultMap = new HashMap<>();
try { for (OrderReschedule reschedule : rescheduleList) {
for (OrderReschedule reschedule : rescheduleList) { // 订单改约
orderInfoService.orderReschedule(reschedule); try {
Result result = orderInfoService.orderReschedule(reschedule);
resultMap.put(reschedule.getOrderId(), result);
} catch (BusinessException e) {
resultMap.put(reschedule.getOrderId(), Result.failed(e.getMessage()));
} }
} catch (BusinessException e) {
return Result.failed(e.getMessage());
} }
return Result.success(); return Result.success(resultMap);
} }
} }
...@@ -4,6 +4,7 @@ import com.dituhui.pea.order.dto.param.Location; ...@@ -4,6 +4,7 @@ import com.dituhui.pea.order.dto.param.Location;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.List;
@Data @Data
public class OrderReschedule { public class OrderReschedule {
...@@ -47,5 +48,8 @@ public class OrderReschedule { ...@@ -47,5 +48,8 @@ public class OrderReschedule {
*/ */
private String reschedulingReason; private String reschedulingReason;
/**
* 标签
*/
private List<String> orderTags;
} }
...@@ -219,6 +219,7 @@ public class OrderDTO { ...@@ -219,6 +219,7 @@ public class OrderDTO {
*/ */
private String reschedulingReason; private String reschedulingReason;
private List<String> orderTags;
} }
/** /**
......
...@@ -44,4 +44,11 @@ public interface OrderInfoService { ...@@ -44,4 +44,11 @@ public interface OrderInfoService {
* @return * @return
*/ */
Result<?> orderReschedule(OrderReschedule req); Result<?> orderReschedule(OrderReschedule req);
/**
* 改约原因
*
* @return
*/
Result<?> orderReschedulingReason();
} }
...@@ -278,11 +278,11 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -278,11 +278,11 @@ public class DispatchServiceImpl implements DispatchService {
EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(engineerCode); EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(engineerCode);
if (engineer == null) { if (engineer == null) {
throw new BusinessException("技术员不存在"); return Result.failed("技术员不存在");
} }
List<OrderInfoEntity> orders = orderInfoDao.findAllByDtAndOrderIdIn(localDate, orderIds); List<OrderInfoEntity> orders = orderInfoDao.findAllByDtAndOrderIdIn(localDate, orderIds);
if (ListUtils.isEmpty(orders)) { if (ListUtils.isEmpty(orders)) {
throw new BusinessException("订单不存在"); return Result.failed("订单不存在");
} }
List<OrgTeamEngineerEntity> orgTeamEngineers = orgTeamEngineerDao.findByEngineerCode(engineer.getEngineerCode()); List<OrgTeamEngineerEntity> orgTeamEngineers = orgTeamEngineerDao.findByEngineerCode(engineer.getEngineerCode());
...@@ -292,6 +292,9 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -292,6 +292,9 @@ public class DispatchServiceImpl implements DispatchService {
OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId()); OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId());
for (OrderInfoEntity entity : orders) { for (OrderInfoEntity entity : orders) {
if (entity.getEngineerCode().equals(engineer.getEngineerCode())) {
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());
entity.setTakeTime(skill.getTakeTime()); entity.setTakeTime(skill.getTakeTime());
entity.setPlanStartTime(entity.getExpectTimeBegin()); entity.setPlanStartTime(entity.getExpectTimeBegin());
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -4,6 +4,7 @@ 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.enums.StatusCodeEnum;
import com.dituhui.pea.order.common.OrderAssignCheck; import com.dituhui.pea.order.common.OrderAssignCheck;
import com.dituhui.pea.order.common.TimeUtils; import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.dao.*; import com.dituhui.pea.order.dao.*;
...@@ -13,6 +14,7 @@ import com.dituhui.pea.order.dto.param.Location; ...@@ -13,6 +14,7 @@ import com.dituhui.pea.order.dto.param.Location;
import com.dituhui.pea.order.dto.param.OrderDTO; import com.dituhui.pea.order.dto.param.OrderDTO;
import com.dituhui.pea.order.dto.param.OrgTeamInfo; import com.dituhui.pea.order.dto.param.OrgTeamInfo;
import com.dituhui.pea.order.entity.*; import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.AppointmentMethodEnum;
import com.dituhui.pea.order.enums.OrderFlowEnum; import com.dituhui.pea.order.enums.OrderFlowEnum;
import com.dituhui.pea.order.enums.OrderStatusEnum; import com.dituhui.pea.order.enums.OrderStatusEnum;
import com.dituhui.pea.order.enums.ServiceStatusEnum; import com.dituhui.pea.order.enums.ServiceStatusEnum;
...@@ -22,6 +24,7 @@ import com.dituhui.pea.pojo.saas.req.AdministrativeDistrictReq; ...@@ -22,6 +24,7 @@ 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;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -154,41 +157,38 @@ public class OrderAssignImpl implements OrderAssign { ...@@ -154,41 +157,38 @@ public class OrderAssignImpl implements OrderAssign {
public Result<?> orderAssign(OrderAssignReq req) throws BusinessException { public Result<?> orderAssign(OrderAssignReq req) throws BusinessException {
// 服务单指派-指派提交 // 服务单指派-指派提交
OrderInfoEntity order = orderInfoDao.getByOrderId(req.getOrderId()); OrderInfoEntity entity = orderInfoDao.getByOrderId(req.getOrderId());
if (order == null) { if (entity == null) {
throw new BusinessException("订单不存在"); return Result.failed("订单不存在");
} }
EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(req.getEngineerCode()); EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(req.getEngineerCode());
boolean record = false; List<OrgTeamEngineerEntity> orgTeamEngineers = orgTeamEngineerDao.findByEngineerCode(engineer.getEngineerCode());
OrderInfoEntity op = orderInfoDao.getByOrderIdAndDt(req.getOrderId(), order.getDt()); if (CollectionUtils.isEmpty(orgTeamEngineers)) {
if (op != null) { return Result.failed(StatusCodeEnum.TEAM_UNMATCHED);
record = true;
} }
OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId());
if (op != null && !order.getAppointmentStatus().equals("NOT_ASSIGNED") && op.getEngineerCode().equals(req.getEngineerCode())) { if (entity != null && !entity.getAppointmentStatus().equals("NOT_ASSIGNED") && entity.getEngineerCode().equals(req.getEngineerCode())) {
throw new BusinessException(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName())); throw new BusinessException(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName()));
} }
// OrderAssignCheck.Result result = orderAssignCheck.orderAssignCheck(orderId, order.getDt(), engineerCode); SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill());
// log.info("指派检查结果:{}", result); entity.setTakeTime(skill.getTakeTime());
// if (result.getIndex() < 0) { entity.setPlanStartTime(entity.getExpectTimeBegin());
// throw new BusinessException("指派失败, 未能找到合适的时间段, 请选择其他技术员"); entity.setPlanEndTime(entity.getExpectTimeBegin().plusMinutes(skill.getTakeTime()));
// } entity.setEngineerCode(engineer.getEngineerCode());
// OrderAssignCheck.OrderNode insertNode = result.getCurOrderNode(); entity.setEngineerName(engineer.getName());
// Timestamp planStartTime = Timestamp.valueOf(insertNode.getPlanStartTime()); entity.setEngineerPhone(engineer.getPhone());
// Timestamp planEndTime = Timestamp.valueOf(insertNode.getPlanEndTime()); entity.setAppointmentStatus(OrderFlowEnum.CONFIRM.name());
entity.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
// 更新order_info表状态 entity.setOrgTeamId(byTeamId.getTeamId());
// String sql = "UPDATE OrderInfo e SET e.appointmentStatus = 'CONFIRM', e.appointmentMethod='MANUAL', e.planStartTime = :planStartTime, e.planEndTime = :panEndTime WHERE e.orderId = :orderId"; entity.setOrgBranchId(byTeamId.getBranchId());
// Query query = entityManager.createQuery(sql); entity.setOrgClusterId(byTeamId.getClusterId());
// query.setParameter("planStartTime", planStartTime); orderInfoDao.save(entity);
// query.setParameter("planEndTime", planEndTime); // entity.setEngineerCode(engineer.getEngineerCode());
// query.setParameter("orderId", orderId); // orderInfoDao.save(order);
// query.executeUpdate();
order.setEngineerCode(engineer.getEngineerCode());
orderInfoDao.save(order);
// 工单变更登记 // 工单变更登记
commonService.addOrderEvent(req.getOrderId(), "", "PEA-WEB", req.getOperator(), OrderStatusEnum.ASSIGN.getDescription(), OrderStatusEnum.ASSIGN.getDescription(), ""); commonService.addOrderEvent(req.getOrderId(), "", "PEA-WEB", req.getOperator(), OrderStatusEnum.ASSIGN.getDescription(), OrderStatusEnum.ASSIGN.getDescription(), "");
......
...@@ -421,13 +421,13 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -421,13 +421,13 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setTakeTime(skillInfoEntity.getTakeTime()); entity.setTakeTime(skillInfoEntity.getTakeTime());
String joinTags = CollectionUtils.isEmpty(req.getOrderTags()) ? "" : String.join(",", req.getOrderTags()); String joinTags = CollectionUtils.isEmpty(req.getOrderTags()) ? "" : String.join(",", req.getOrderTags());
entity.setBeanTags(joinTags); entity.setBeanTags(joinTags);
entity.setIsMultiple(joinTags.contains("重物搬运") ? 1 : 0);
entity.setBeanPriority(req.getPriority()); entity.setBeanPriority(req.getPriority());
if (req.getPriority().equals("1")) { if (req.getPriority().equals("1")) {
entity.setAppointmentMethod(AppointmentMethodEnum.AUTO_NOW.name()); entity.setAppointmentMethod(AppointmentMethodEnum.AUTO_NOW.name());
//发送通知分部消息 //发送通知分部消息
// sendMsg(entity.getOrgBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate()); // sendMsg(entity.getOrgBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate());
} }
entity.setIsMultiple(joinTags.contains("重物搬运") ? 1 : 0);
//一家多单 //一家多单
Result<String> addMultipleOrders = orderInfoService.addMultipleOrders(entity.getDt(), location.getAddressId(), orderId); Result<String> addMultipleOrders = orderInfoService.addMultipleOrders(entity.getDt(), location.getAddressId(), orderId);
......
...@@ -7,6 +7,7 @@ import com.dituhui.pea.common.Result; ...@@ -7,6 +7,7 @@ import com.dituhui.pea.common.Result;
import com.dituhui.pea.common.ResultEnum; import com.dituhui.pea.common.ResultEnum;
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.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;
...@@ -182,6 +183,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -182,6 +183,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
reschedule.setProductType(request.getProductType()); reschedule.setProductType(request.getProductType());
reschedule.setServiceType(request.getServiceType()); reschedule.setServiceType(request.getServiceType());
reschedule.setReschedulingReason(request.getReschedulingReason()); reschedule.setReschedulingReason(request.getReschedulingReason());
reschedule.setOrderTags(request.getOrderTags());
reschedule.setExpectBegin(DateUtil.handleDate(request.getNewReservationTime(), orderInfo.getExpectTimeBegin())); reschedule.setExpectBegin(DateUtil.handleDate(request.getNewReservationTime(), orderInfo.getExpectTimeBegin()));
reschedule.setExpectEnd(DateUtil.handleDate(request.getNewReservationTime(), orderInfo.getExpectTimeEnd())); reschedule.setExpectEnd(DateUtil.handleDate(request.getNewReservationTime(), orderInfo.getExpectTimeEnd()));
if (StringUtils.isNotBlank(request.getDescription())) { if (StringUtils.isNotBlank(request.getDescription())) {
...@@ -220,6 +222,21 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -220,6 +222,21 @@ public class OrderInfoServiceImpl implements OrderInfoService {
order.setExpectTimeDesc(req.getExpectDesc()); order.setExpectTimeDesc(req.getExpectDesc());
order.setOrderStatus(OrderStatusEnum.RESCHEDULED.getCode()); order.setOrderStatus(OrderStatusEnum.RESCHEDULED.getCode());
boolean skillUpdate = false; boolean skillUpdate = false;
if (CollectionUtils.isEmpty(req.getOrderTags())) {
if (StringUtils.isBlank(order.getBeanTags())) {
String joinTags = CollectionUtils.isEmpty(req.getOrderTags()) ? "" : String.join(",", req.getOrderTags());
order.setBeanTags(joinTags);
order.setIsMultiple(joinTags.contains("重物搬运") ? 1 : 0);
} else {
for (String orderTag : req.getOrderTags()) {
if (order.getBeanTags().contains(orderTag)) {
continue;
}
order.setBeanTags(order.getBeanTags() + "," + orderTag);
}
order.setIsMultiple(order.getBeanTags().contains("重物搬运") ? 1 : 0);
}
}
if (StringUtils.isNotBlank(req.getBrand()) && !CommonUtil.fixBrand(req.getBrand()).equals(order.getBrand())) { if (StringUtils.isNotBlank(req.getBrand()) && !CommonUtil.fixBrand(req.getBrand()).equals(order.getBrand())) {
order.setBrand(CommonUtil.fixBrand(req.getBrand())); order.setBrand(CommonUtil.fixBrand(req.getBrand()));
skillUpdate = true; skillUpdate = true;
...@@ -290,7 +307,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -290,7 +307,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// i.自有:优先改约指派给当前工程师 // i.自有:优先改约指派给当前工程师
// ii.网点:优先改约指派给当前网点 // ii.网点:优先改约指派给当前网点
// (不给当前工程师) // (不给当前工程师)
if (!isToday && isBelong && skillUpdate) { if (!isToday && isBelong && skillUpdate && order.getIsAppointEngineer() != 1) {
//地址变更需要从新分单 //地址变更需要从新分单
order = orderFendan(order, req, location); order = orderFendan(order, req, location);
clusterId = order.getOrgClusterId(); clusterId = order.getOrgClusterId();
...@@ -370,6 +387,11 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -370,6 +387,11 @@ public class OrderInfoServiceImpl implements OrderInfoService {
return Result.success(null); return Result.success(null);
} }
@Override
public Result<?> orderReschedulingReason() {
return Result.success(OrderReschedulingReason.ReschedulingReasonMap);
}
/** /**
* 订单重新分单 * 订单重新分单
* *
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!