Commit 92a89927 by 王力

Merge branch 'dev_bugfix_orderrequests' into 'master'

Dev bugfix orderrequests

See merge request !140
2 parents 9907a5ee eecfd630
......@@ -3,6 +3,7 @@ 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.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
......@@ -16,8 +17,9 @@ public interface EngineerInfoMPDao extends BaseMapper<EngineerInfo> {
@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("<script> select * from engineer_info where engineer_code in " +
"<foreach item='engineerCode' collection='engineerCodes' open='(' separator=',' close=')'>#{engineerCode}</foreach></script>")
List<EngineerInfo> selectByEngineerCodes(@Param("engineerCodes") List<String> engineerCodes);
@Select("select * from engineer_info where group_id = #{groupId}")
List<EngineerInfo> selectByGroupId(String groupId);
......
......@@ -3,6 +3,7 @@ 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.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
......@@ -16,6 +17,7 @@ public interface OrderRequestMPDao extends BaseMapper<OrderRequest> {
@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);
@Select("<script> select * from order_request where order_id in " +
"<foreach item='orderId' index='index' collection='orderIds' open='(' separator=',' close=')'>#{orderId}</foreach></script>")
List<OrderRequest> selectByOrderIds(@Param("orderIds") List<String> orderIds);
}
\ No newline at end of file
......@@ -10,22 +10,9 @@ public class ScheduleEngineerOverviewResp {
private String engineerCode;
private String startTime;
private String endTime;
private List<Dynamic> dynamics;
private List<Timeline> timelines;
private List<Order> orders;
@Data
public static class Dynamic {
private String label;
private String value;
}
@Data
public static class Timeline {
private String startTime;
private String endTime;
private String type;
}
private List<LabelValueDTO> dynamics;
private List<TimeLineDTO> orders;
private List<Order> orderDetails;
@Data
public static class Order {
......
......@@ -38,7 +38,6 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
@Autowired
private ProductCategoryDao productCategoryDao;
@Autowired
private OrgGroupDao orgGroupDao;
......
......@@ -44,7 +44,7 @@ public class OrderAssignImpl implements OrderAssign {
@Override
public Result<?> getOrderAssignRecommendEngineers(String orderId, String key, String distance, String recommend) {
// 服务单指派-推荐技术员列表
OrderRequest order = this.queryOrderRequest(orderId);
OrderRequest order = orderRequestMPDao.getByOrderId(orderId);
if (order == null) {
throw new BusinessException("订单不存在");
}
......@@ -52,7 +52,7 @@ public class OrderAssignImpl implements OrderAssign {
String date = TimeUtils.timestamp2DateTime(order.getExpectTimeBegin(), TimeUtils.DATE_GAP_FORMAT);
// 获取group内的小组成员
List<EngineerInfo> engineers = this.queryEngineerInfoByGroupId(order.getOrgGroupId());
List<EngineerInfo> engineers = engineerInfoMPDao.selectByGroupId(order.getOrgGroupId());
List<OrderAssignRecommendResp.Engineer> items = new ArrayList<>();
......@@ -68,7 +68,7 @@ public class OrderAssignImpl implements OrderAssign {
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);
List<OrderRequest> orders = orderRequestMPDao.selectByOrderIds(orderIds);
orderTips = this.packOrderTips(orders);
}
......@@ -102,7 +102,7 @@ public class OrderAssignImpl implements OrderAssign {
@Override
public Result<?> orderAssign(String orderId, String engineerCode) throws BusinessException {
// 服务单指派-指派提交
OrderRequest order = this.queryOrderRequest(orderId);
OrderRequest order = orderRequestMPDao.getByOrderId(orderId);
if (order == null) {
throw new BusinessException("订单不存在");
}
......@@ -111,7 +111,7 @@ public class OrderAssignImpl implements OrderAssign {
throw new BusinessException("订单已指派成功,不必重新指派");
}
EngineerInfo engineer = this.queryEngineerInfo(engineerCode);
EngineerInfo engineer = engineerInfoMPDao.getByEngineerCode(engineerCode);
String date = TimeUtils.timestamp2DateTime(order.getExpectTimeBegin(), TimeUtils.DATE_GAP_FORMAT);
List<OrderAppointment> orderAppointments = this.queryOrderAppointments(engineerCode, date);
......@@ -152,36 +152,12 @@ public class OrderAssignImpl implements OrderAssign {
return Result.success(null);
}
private OrderRequest queryOrderRequest(String orderId) {
LambdaQueryWrapper<OrderRequest> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderRequest::getOrderId, orderId);
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);
return orderAppointmentMPDao.selectList(lqw);
}
private EngineerInfo queryEngineerInfo(String engineerCode) {
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(EngineerInfo::getEngineerCode, engineerCode);
return engineerInfoMPDao.selectOne(lqw);
}
private List<EngineerInfo> queryEngineerInfoByGroupId(String groupId) {
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(EngineerInfo::getGroupId, groupId);
return engineerInfoMPDao.selectList(lqw);
}
private List<TimeLineDTO> packTimelines(List<OrderAppointment> orders, HashMap<String, List<LabelValueDTO>> orderTips) {
List<LabelValueDTO> empty = new ArrayList<>();
......
......@@ -45,7 +45,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
@Override
public Result<?> getOrderServiceDetail(String orderId) {
OrderRequest order = this.queryOrderDetail(orderId);
OrderRequest order = orderRequestMPDao.getByOrderId(orderId);
List<KV> items = this.packOrderDetail(order);
......@@ -156,7 +156,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
List<String> block = new ArrayList<>();
// 获取订单详情
OrderRequest order = this.queryOrderDetail(orderId);
OrderRequest order = orderRequestMPDao.getByOrderId(orderId);
OrderTeamBlockResp res = new OrderTeamBlockResp();
res.setOrderId(orderId);
......@@ -166,13 +166,6 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
return Result.success(res);
}
private OrderRequest queryOrderDetail(String orderId) {
// 获取服务单记录
LambdaQueryWrapper<OrderRequest> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderRequest::getOrderId, orderId);
return orderRequestMPDao.selectOne(lqw);
}
private List<OrderAppointment> queryOrderAppointments(String orderId) {
// 获取指派单记录列表
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
......
......@@ -7,8 +7,10 @@ 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.*;
import com.dituhui.pea.order.dto.LabelValueDTO;
import com.dituhui.pea.order.dto.ScheduleEngineerOverviewResp;
import com.dituhui.pea.order.dto.ScheduleOverviewResp;
import com.dituhui.pea.order.dto.TimeLineDTO;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.service.ScheduleService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -71,7 +73,7 @@ public class ScheduleServiceImpl implements ScheduleService {
List<OrgTeamEngineer> teamEngineers = this.queryOrgTeamEngineers(t.getTeamId());
// 获取技术员列表
List<EngineerInfo> engineerInfoList = this.queryEngineerInfoByGroupId(t.getGroupId());
List<EngineerInfo> engineerInfoList = engineerInfoMPDao.selectByGroupId(t.getGroupId());
Map<String, List<EngineerInfo>> engineers = engineerInfoList.stream().collect(Collectors.groupingBy(EngineerInfo::getEngineerCode));
// 获取技术员对应的订单
......@@ -125,19 +127,22 @@ public class ScheduleServiceImpl implements ScheduleService {
@Override
public Result<?> getScheduleEngineerOverview(String date, String engineerCode) throws BusinessException {
EngineerInfo engineer = this.queryEngineerInfo(engineerCode);
EngineerInfo engineer = engineerInfoMPDao.getByEngineerCode(engineerCode);
if (engineer == null) {
throw new BusinessException("分销员不存在");
}
List<LabelValueDTO> emptyTips = new ArrayList<>();
List<OrderAppointment> orderAppointments = this.queryOrderAppointmentsByEngineerCode(engineerCode, date);
List<ScheduleEngineerOverviewResp.Timeline> timelines = new ArrayList<>();
List<TimeLineDTO> timelines = new ArrayList<>();
for (OrderAppointment o : orderAppointments) {
ScheduleEngineerOverviewResp.Timeline item = new ScheduleEngineerOverviewResp.Timeline();
item.setStartTime(TimeUtils.timestamp2DateTime(o.getExpectStartTime(), "hh:mm"));
item.setEndTime(TimeUtils.timestamp2DateTime(o.getExpectEndTime(), "hh:mm"));
item.setType(o.getStatus());
TimeLineDTO item = new TimeLineDTO();
item.setOrderId(o.getOrderId());
item.setPreStatus(o.getPreStatus());
item.setAppointmentStatus(o.getStatus());
item.setStartTime(TimeUtils.IsoTimestamp2DateTime(o.getExpectStartTime()));
item.setEndTime(TimeUtils.IsoTimestamp2DateTime(o.getExpectEndTime()));
item.setTips(emptyTips);
timelines.add(item);
}
......@@ -145,22 +150,22 @@ public class ScheduleServiceImpl implements ScheduleService {
List<OrderAppointment> empty = new ArrayList<>();
Integer countPending = statusGroup.getOrDefault("ASSIGNED", empty).size() + statusGroup.getOrDefault("CONTACTED", empty).size() + statusGroup.getOrDefault("DEPARTED", empty).size();
List<ScheduleEngineerOverviewResp.Dynamic> dynamics = new ArrayList<>();
dynamics.add(this.packDynamic("姓名", engineer.getName()));
dynamics.add(this.packDynamic("日期", date));
dynamics.add(this.packDynamic("状态", "上班"));
dynamics.add(this.packDynamic("待服务", Integer.toString(countPending)));
dynamics.add(this.packDynamic("服务中", Integer.toString(statusGroup.getOrDefault("STARTED", empty).size())));
dynamics.add(this.packDynamic("已完成", Integer.toString(statusGroup.getOrDefault("FINISHED", empty).size())));
dynamics.add(this.packDynamic("已取消", Integer.toString(statusGroup.getOrDefault("CANCELED", empty).size())));
dynamics.add(this.packDynamic("已改约", Integer.toString(statusGroup.getOrDefault("RESCHEDULED", empty).size())));
dynamics.add(this.packDynamic("预计总耗时", "6小时"));
dynamics.add(this.packDynamic("公里数", "42公里"));
dynamics.add(this.packDynamic("工作时间", "08:00-18:00"));
dynamics.add(this.packDynamic("交通工具", "电动车"));
List<LabelValueDTO> dynamics = new ArrayList<>();
dynamics.add(new LabelValueDTO("姓名", engineer.getName()));
dynamics.add(new LabelValueDTO("日期", date));
dynamics.add(new LabelValueDTO("状态", "上班"));
dynamics.add(new LabelValueDTO("待服务", Integer.toString(countPending)));
dynamics.add(new LabelValueDTO("服务中", Integer.toString(statusGroup.getOrDefault("STARTED", empty).size())));
dynamics.add(new LabelValueDTO("已完成", Integer.toString(statusGroup.getOrDefault("FINISHED", empty).size())));
dynamics.add(new LabelValueDTO("已取消", Integer.toString(statusGroup.getOrDefault("CANCELED", empty).size())));
dynamics.add(new LabelValueDTO("已改约", Integer.toString(statusGroup.getOrDefault("RESCHEDULED", empty).size())));
dynamics.add(new LabelValueDTO("预计总耗时", "6小时"));
dynamics.add(new LabelValueDTO("公里数", "42公里"));
dynamics.add(new LabelValueDTO("工作时间", "08:00-18:00"));
dynamics.add(new LabelValueDTO("交通工具", "电动车"));
List<String> orderIds = orderAppointments.stream().map(OrderAppointment::getOrderId).collect(Collectors.toList());
List<OrderRequest> orderRequests = this.queryOrderRequestByOrderIds(orderIds);
List<OrderRequest> orderRequests = orderRequestMPDao.selectByOrderIds(orderIds);
List<ScheduleEngineerOverviewResp.Order> orders = new ArrayList<>();
for (OrderRequest o : orderRequests) {
ScheduleEngineerOverviewResp.Order item = new ScheduleEngineerOverviewResp.Order();
......@@ -181,7 +186,7 @@ public class ScheduleServiceImpl implements ScheduleService {
}
String groupName = "";
OrgGroup group = this.queryOrgGroupInfo(engineer.getGroupId());
OrgGroup group = orgGroupMPDao.getByGroupId(engineer.getGroupId());
if (group != null) {
groupName = group.getGroupName();
}
......@@ -192,8 +197,8 @@ public class ScheduleServiceImpl implements ScheduleService {
res.setStartTime("08:00"); // TODO
res.setEndTime("18:00");
res.setDynamics(dynamics);
res.setTimelines(timelines);
res.setOrders(orders);
res.setOrders(timelines);
res.setOrderDetails(orders);
return Result.success(res);
}
......@@ -229,12 +234,6 @@ public class ScheduleServiceImpl implements ScheduleService {
return orderRequestMPDao.selectList(lqw);
}
private List<OrderRequest> queryOrderRequestByOrderIds(List<String> orderIds) {
LambdaQueryWrapper<OrderRequest> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderRequest::getOrderId, orderIds);
return orderRequestMPDao.selectList(lqw);
}
private List<OrderAppointment> queryOrderAppointments(List<String> orderIds, String date) {
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderAppointment::getOrderId, orderIds);
......@@ -251,24 +250,6 @@ public class ScheduleServiceImpl implements ScheduleService {
return orderAppointmentMPDao.selectList(lqw);
}
private List<EngineerInfo> queryEngineerInfoByGroupId(String groupId) {
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(EngineerInfo::getGroupId, groupId);
return engineerInfoMPDao.selectList(lqw);
}
private EngineerInfo queryEngineerInfo(String engineerCode) {
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(EngineerInfo::getEngineerCode, engineerCode);
return engineerInfoMPDao.selectOne(lqw);
}
private OrgGroup queryOrgGroupInfo(String groupId) {
LambdaQueryWrapper<OrgGroup> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrgGroup::getGroupId, groupId);
return orgGroupMPDao.selectOne(lqw);
}
private ScheduleOverviewResp.OrderSum getTeamOrderSum(List<OrderRequest> orders) {
ScheduleOverviewResp.OrderSum s = new ScheduleOverviewResp.OrderSum();
......@@ -283,11 +264,4 @@ public class ScheduleServiceImpl implements ScheduleService {
s.setCleanNum(cc.getOrDefault("清洗", emtpy).size());
return s;
}
private ScheduleEngineerOverviewResp.Dynamic packDynamic(String label, String value) {
ScheduleEngineerOverviewResp.Dynamic item = new ScheduleEngineerOverviewResp.Dynamic();
item.setLabel(label);
item.setValue(value);
return item;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!