Commit d6f22c9d by 王力

Merge branch 'dev_temp_merge' into 'master'

Dev temp merge

See merge request !128
2 parents 11fc2225 5a9ae690
package com.dituhui.pea.order.config;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OrderConfig {
public static final int DEFAULT_PAGE_SIZE = 10;
public static final int DEFAULT_PAGE_INDEX = 1;
}
......@@ -3,8 +3,22 @@ package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.EngineerInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface EngineerInfoMPDao extends BaseMapper<EngineerInfo> {
}
@Select("select * from engineer_info where engineer_code = #{engineerCode}")
EngineerInfo getByEngineerCode(String engineerCode);
@Select("select * from engineer_info where engineer_code = #{engineerCode}")
List<EngineerInfo> selectByEngineerCode(String engineerCode);
@Select("select * from engineer_info where engineer_code in #{engineerCodes}")
List<EngineerInfo> selectByEngineerCodes(List<String> engineerCodes);
@Select("select * from engineer_info where group_id = #{groupId}")
List<EngineerInfo> selectByGroupId(String groupId);
}
\ No newline at end of file
......@@ -3,7 +3,19 @@ package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.OrderRequest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface OrderRequestMPDao extends BaseMapper<OrderRequest> {
}
@Select("select * from order_request where order_id = #{orderId}")
OrderRequest getByOrderId(String orderId);
@Select("select * from order_request where order_id = #{orderId}")
List<OrderRequest> selectByOrderId(String orderId);
@Select("select * from order_request where order_id in #{orderIds}")
List<OrderRequest> selectByOrderIds(List<String> orderIds);
}
\ No newline at end of file
......@@ -3,7 +3,16 @@ package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.OrgGroup;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface OrgGroupMPDao extends BaseMapper<OrgGroup> {
@Select("select * from org_group where group_id = #{groupId}")
OrgGroup getByGroupId(String groupId);
@Select("select * from org_group where group_id = #{groupId}")
List<OrgGroup> selectByGroupId(String groupId);
}
package com.dituhui.pea.order.dto;
import com.dituhui.pea.order.config.OrderConfig;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
......@@ -21,6 +23,6 @@ public class CapacityStatQueryReqDTO {
*/
@NotBlank
private String levelValue;
private Integer page;
private Integer size;
private Integer page = OrderConfig.DEFAULT_PAGE_INDEX;
private Integer size = OrderConfig.DEFAULT_PAGE_SIZE;
}
package com.dituhui.pea.order.dto;
import com.dituhui.pea.order.config.OrderConfig;
import java.util.List;
@lombok.Data
......@@ -8,8 +10,8 @@ public class EngineersGanttReqDTO {
private String levelType;
private String levelValue;
private Integer page;
private Integer size;
private Integer page = OrderConfig.DEFAULT_PAGE_INDEX;
private Integer size = OrderConfig.DEFAULT_PAGE_SIZE;
private String date;
private List<String> engineerCodes;
}
......@@ -6,6 +6,14 @@ import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class LabelValueDTO {
private String value;
private String label;
private String value;
private String label;
public LabelValueDTO() {
}
public LabelValueDTO(String label, String value) {
this.label = label;
this.value = (value == null) ? "" : value;
}
}
......@@ -20,7 +20,7 @@ public class OrderAssignRecommendResp {
private String startTime;
private String endTime;
private InsertInfo insertInfo;
private List<Timeline> timelines;
private List<TimeLineDTO> orders;
}
@Data
......@@ -35,11 +35,4 @@ public class OrderAssignRecommendResp {
private String title;
private String color;
}
@Data
public static class Timeline {
private String startTime;
private String endTime;
private String type;
}
}
package com.dituhui.pea.order.dto;
import com.dituhui.pea.order.config.OrderConfig;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
......@@ -14,8 +15,8 @@ public class OrderChangeListReqDTO {
* levelType对应的id值
*/
private String levelValue;
private int page;
private int size;
private int page = OrderConfig.DEFAULT_PAGE_INDEX;
private int size = OrderConfig.DEFAULT_PAGE_SIZE;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date = new Date();
/**
......
......@@ -2,6 +2,8 @@ package com.dituhui.pea.order.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
......@@ -13,7 +15,9 @@ public class OrderCreateReqDTO {
private String phone;
private String address;
private LocationDTO location;
@NotBlank
private String brand;
@NotBlank()
private String type;
private String skill;
private String faultDescribe;
......
......@@ -7,6 +7,7 @@ import java.util.List;
@Data
public class OrderServiceDetailResp {
private String orderId;
private String appointmentStatus;
private String status;
private String statusDesc;
private String risk;
......
package com.dituhui.pea.order.dto;
import lombok.Data;
import java.util.List;
@Data
public class TimeLineDTO {
private String orderId;
private String preStatus;
private String appointmentStatus;
private String startTime;
private String endTime;
private List<LabelValueDTO> tips;
}
\ No newline at end of file
......@@ -206,7 +206,7 @@ public class DispatchServiceImpl implements DispatchService {
public Result<?> dispatchOrderConfirm(String engineerCode, List<String> orderIds) throws BusinessException {
// 派工台确认派单
EngineerInfo engineer = this.queryEngineer(engineerCode);
EngineerInfo engineer = engineerInfoMPDao.getByEngineerCode(engineerCode);
if (engineer == null) {
throw new BusinessException("技术员不存在");
}
......@@ -222,8 +222,8 @@ public class DispatchServiceImpl implements DispatchService {
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderAppointment::getEngineerCode, engineerCode);
lqw.ge(OrderAppointment::getExpectStartTime, this.getTimestampFromDate(date, "00:00:00"));
lqw.lt(OrderAppointment::getExpectStartTime, this.getTimestampFromDate(date, "23:59:59"));
lqw.ge(OrderAppointment::getExpectStartTime, TimeUtils.IsoDateTime2Timestamp(String.format("%s 00:00:00", date)));
lqw.le(OrderAppointment::getExpectStartTime, TimeUtils.IsoDateTime2Timestamp(String.format("%s 23:59:59", date)));
lqw.orderByAsc(OrderAppointment::getExpectStartTime);
List<OrderAppointment> orderAppointments = orderAppointmentMPDao.selectList(lqw);
......@@ -271,8 +271,8 @@ public class DispatchServiceImpl implements DispatchService {
lqw.in(levelType.equals("group"), OrderRequest::getOrgGroupId, levelIds);
lqw.eq(OrderRequest::getStatus, "open");
lqw.eq(OrderRequest::getAppointmentStatus, "NOT_ASSIGNED");
lqw.ge(OrderRequest::getExpectTimeBegin, this.getTimestampFromDate(date, "00:00:00"));
lqw.le(OrderRequest::getExpectTimeBegin, this.getTimestampFromDate(date, "23:59:59"));
lqw.ge(OrderRequest::getExpectTimeBegin, TimeUtils.IsoDateTime2Timestamp(String.format("%s 00:00:00", date)));
lqw.le(OrderRequest::getExpectTimeBegin, TimeUtils.IsoDateTime2Timestamp(String.format("%s 23:59:59", date)));
return orderRequestMPDao.selectList(lqw);
}
......@@ -294,8 +294,9 @@ public class DispatchServiceImpl implements DispatchService {
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderAppointment::getEngineerCode, engineerCodes);
lqw.ge(OrderAppointment::getExpectStartTime, this.getTimestampFromDate(date, "00:00:00"));
lqw.le(OrderAppointment::getExpectStartTime, this.getTimestampFromDate(date, "23:59:59"));
lqw.ge(OrderAppointment::getExpectStartTime, TimeUtils.IsoDateTime2Timestamp(String.format("%s 00:00:00", date)));
lqw.le(OrderAppointment::getExpectStartTime, TimeUtils.IsoDateTime2Timestamp(String.format("%s 23:59:59", date)));
lqw.orderByAsc(OrderAppointment::getEngineerCode);
lqw.orderByAsc(OrderAppointment::getExpectStartTime);
......@@ -313,12 +314,6 @@ public class DispatchServiceImpl implements DispatchService {
return engineerInfoMPDao.selectList(lqw);
}
private EngineerInfo queryEngineer(String engineerCode) {
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(EngineerInfo::getEngineerCode, engineerCode);
return engineerInfoMPDao.selectOne(lqw);
}
private List<String> queryOrgGroupIds(String levelType, List<String> levelIds) {
LambdaQueryWrapper<OrgGroup> lqw = new LambdaQueryWrapper<>();
lqw.in(levelType.equals("cluster"), OrgGroup::getClusterId, levelIds);
......@@ -352,10 +347,6 @@ public class DispatchServiceImpl implements DispatchService {
return map;
}
public Timestamp getTimestampFromDate(String date, String time) {
return Timestamp.valueOf(date + " " + time);
}
private String parseTimeSlot(Timestamp t) {
String h = TimeUtils.timestamp2DateTime(t, "HH");
Integer hour = Integer.parseInt(h);
......
......@@ -17,9 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
......@@ -81,7 +79,7 @@ public class EngineerServiceImpl implements EngineerService {
// 获取技术员基础信息详情
// 获取技术员列表
List<EngineerInfo> records = this.queryEngineerInfos(engineerCode);
List<EngineerInfo> records = engineerInfoMPDao.selectByEngineerCode(engineerCode);
if (records.isEmpty()) {
throw new BusinessException("技术员不存在");
}
......@@ -115,7 +113,7 @@ public class EngineerServiceImpl implements EngineerService {
@Override
public Result<?> getEngineerSkillDetail(String engineerCode) throws BusinessException {
// 获取工程师技能详情
List<EngineerInfo> engineers = this.queryEngineerInfos(engineerCode);
List<EngineerInfo> engineers = engineerInfoMPDao.selectByEngineerCode(engineerCode);
if (engineers.isEmpty()) {
throw new BusinessException("技术员不存在");
}
......@@ -189,7 +187,7 @@ public class EngineerServiceImpl implements EngineerService {
@Override
public Result<?> getEngineerBusinessDetail(String engineerCode) {
// 获取技术员业务熟悉详情
List<EngineerInfo> engineers = this.queryEngineerInfos(engineerCode);
List<EngineerInfo> engineers = engineerInfoMPDao.selectByEngineerCode(engineerCode);
if (engineers.isEmpty()) {
throw new BusinessException("技术员不存在");
}
......@@ -240,13 +238,6 @@ public class EngineerServiceImpl implements EngineerService {
return pg;
}
private List<EngineerInfo> queryEngineerInfos(String engineerCode) {
// 分页查询工程师基础信息
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(EngineerInfo::getEngineerCode, engineerCode);
return engineerInfoMPDao.selectList(lqw);
}
private HashMap<String, String> queryGroupNames(List<String> groupIds) {
//查询小组名称映射关系
HashMap<String, String> map = new HashMap<>();
......
package com.dituhui.pea.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.dao.EngineerInfoMPDao;
import com.dituhui.pea.order.dao.OrderAppointmentMPDao;
import com.dituhui.pea.order.dao.OrderRequestMPDao;
import com.dituhui.pea.order.dto.LabelValueDTO;
import com.dituhui.pea.order.dto.OrderAssignRecommendResp;
import com.dituhui.pea.order.dto.TimeLineDTO;
import com.dituhui.pea.order.entity.EngineerInfo;
import com.dituhui.pea.order.entity.OrderAppointment;
import com.dituhui.pea.order.entity.OrderRequest;
import com.dituhui.pea.order.service.OrderAssign;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -20,10 +22,11 @@ import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class OrderAssignImpl implements OrderAssign {
......@@ -61,12 +64,20 @@ public class OrderAssignImpl implements OrderAssign {
continue;
}
// 获取订单tips
HashMap<String, List<LabelValueDTO>> orderTips = new HashMap<>();
List<String> orderIds = orderAppointments.stream().map(OrderAppointment::getOrderId).collect(Collectors.toList());
if (!orderIds.isEmpty()) {
List<OrderRequest> orders = this.queryOrderRequestsByOrderIds(orderIds);
orderTips = this.packOrderTips(orders);
}
OrderAssignRecommendResp.Engineer item = new OrderAssignRecommendResp.Engineer();
OrderAssignRecommendResp.InsertInfo insertInfo = new OrderAssignRecommendResp.InsertInfo();
insertInfo.setNumber(String.format("%d/%d", rr.index+1, orderAppointments.size() + 1));
insertInfo.setNumber(String.format("%d/%d", rr.index + 1, orderAppointments.size() + 1));
insertInfo.setTimeDesc("+30分钟");
insertInfo.setTimeDesc("+4公里");
insertInfo.setDistanceDesc("+4公里");
item.setEngineerCode(engineer.getEngineerCode());
item.setEngineerName(engineer.getName());
......@@ -74,10 +85,10 @@ public class OrderAssignImpl implements OrderAssign {
item.setInsertInfo(insertInfo);
item.setDistanceDesc("15.5公里");
item.setTimeDesc("520分钟");
item.setDesc(String.format("将被插入在第%d单,受此影响原第%d单变化第%d单,第3单将增加5公里路程,比预计晚到30分钟,建议调整;", rr.index+1, rr.index + 1, rr.index + 2));
item.setDesc(String.format("将被插入在第%d单,受此影响原第%d单变化第%d单,第3单将增加5公里路程,比预计晚到30分钟,建议调整;", rr.index + 1, rr.index + 1, rr.index + 2));
item.setStartTime("08:00");
item.setStartTime("18:00");
item.setTimelines(this.packTimelines(orderAppointments));
item.setEndTime("18:00");
item.setOrders(this.packTimelines(orderAppointments, orderTips));
items.add(item);
}
......@@ -147,6 +158,12 @@ public class OrderAssignImpl implements OrderAssign {
return orderRequestMPDao.selectOne(lqw);
}
private List<OrderRequest> queryOrderRequestsByOrderIds(List<String> orderIds) {
LambdaQueryWrapper<OrderRequest> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderRequest::getOrderId, orderIds);
return orderRequestMPDao.selectList(lqw);
}
private List<OrderAppointment> queryOrderAppointments(String engineerCode, String date) {
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderAppointment::getEngineerCode, engineerCode);
......@@ -165,18 +182,40 @@ public class OrderAssignImpl implements OrderAssign {
return engineerInfoMPDao.selectList(lqw);
}
private List<OrderAssignRecommendResp.Timeline> packTimelines(List<OrderAppointment> orders) {
List<OrderAssignRecommendResp.Timeline> items = new ArrayList<>();
for(OrderAppointment order: orders){
OrderAssignRecommendResp.Timeline item = new OrderAssignRecommendResp.Timeline();
private List<TimeLineDTO> packTimelines(List<OrderAppointment> orders, HashMap<String, List<LabelValueDTO>> orderTips) {
List<LabelValueDTO> empty = new ArrayList<>();
List<TimeLineDTO> items = new ArrayList<>();
for (OrderAppointment order : orders) {
TimeLineDTO item = new TimeLineDTO();
item.setOrderId(order.getOrderId());
item.setPreStatus(order.getPreStatus());
item.setAppointmentStatus(order.getStatus());
item.setStartTime(TimeUtils.timestamp2DateTime(order.getExpectStartTime(), "HH:mm"));
item.setEndTime(TimeUtils.timestamp2DateTime(order.getExpectEndTime(), "HH:mm"));
item.setType(order.getStatus());
item.setTips(orderTips.getOrDefault(order.getOrderId(), empty));
items.add(item);
}
return items;
}
private HashMap<String, List<LabelValueDTO>> packOrderTips(List<OrderRequest> orders) {
return orders.stream().collect(Collectors.toMap(
OrderRequest::getOrderId, this::packOrderTip, (l1, l2) -> l1, HashMap::new));
}
private List<LabelValueDTO> packOrderTip(OrderRequest order) {
// pack订单tips
List<LabelValueDTO> items = new ArrayList<>();
items.add(new LabelValueDTO("类型/品牌", String.format("%s %s %s", order.getSkill(), order.getType(), order.getBrand())));
items.add(new LabelValueDTO("电话/地址", String.format("%s %s\n%s", order.getName(), order.getPhone(), order.getAddress())));
items.add(new LabelValueDTO("备注", order.getDescription()));
items.add(new LabelValueDTO("标签", order.getTags()));
return items;
}
}
@Data
......
......@@ -11,8 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
......@@ -57,6 +55,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
res.setRiskDesc("");
res.setStatusDesc("打开");
res.setStatus(order.getStatus());
res.setAppointmentStatus(order.getAppointmentStatus());
res.setLocation(String.format("%s,%s", order.getX(), order.getY()));
res.setItems(items);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!