Commit cf594427 by huangjinxin

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

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