Commit 3c9980d8 by wangli

修改

1 parent c279415f
...@@ -3,7 +3,6 @@ package com.dituhui.pea.order.service.impl; ...@@ -3,7 +3,6 @@ package com.dituhui.pea.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dituhui.pea.common.BusinessException; import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
...@@ -25,6 +24,9 @@ import java.util.stream.Collectors; ...@@ -25,6 +24,9 @@ import java.util.stream.Collectors;
public class ScheduleServiceImpl implements ScheduleService { public class ScheduleServiceImpl implements ScheduleService {
@Autowired @Autowired
private OrderInfoMPDao orderInfoMPDao;
@Autowired
private OrgTeamMPDao orgTeamMPDao; private OrgTeamMPDao orgTeamMPDao;
@Autowired @Autowired
...@@ -34,12 +36,6 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -34,12 +36,6 @@ public class ScheduleServiceImpl implements ScheduleService {
private OrgGroupMPDao orgGroupMPDao; private OrgGroupMPDao orgGroupMPDao;
@Autowired @Autowired
private OrderRequestMPDao orderRequestMPDao;
@Autowired
private OrderAppointmentMPDao orderAppointmentMPDao;
@Autowired
private EngineerInfoMPDao engineerInfoMPDao; private EngineerInfoMPDao engineerInfoMPDao;
@Autowired @Autowired
...@@ -71,6 +67,7 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -71,6 +67,7 @@ public class ScheduleServiceImpl implements ScheduleService {
@Override @Override
public Result<?> getScheduleOverview(long page, long size, LocalDate date, String levelType, List<String> levelIds) { public Result<?> getScheduleOverview(long page, long size, LocalDate date, String levelType, List<String> levelIds) {
// 排班结果
// 获取team列表, 以team排序分页 // 获取team列表, 以team排序分页
IPage<OrgTeam> pg = this.queryOrgTeams(page, size, levelType, levelIds); IPage<OrgTeam> pg = this.queryOrgTeams(page, size, levelType, levelIds);
...@@ -89,15 +86,16 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -89,15 +86,16 @@ public class ScheduleServiceImpl implements ScheduleService {
team.setLevel("team"); team.setLevel("team");
// 获取改team订单列表 // 获取改team订单列表
List<OrderRequest> orders = this.queryOrderRequests(t.getTeamId(), date); List<OrderInfo> orders = this.queryOrderRequests(t.getTeamId(), date);
team.setOrder(this.getTeamOrderSum(orders, skillMapping)); team.setOrder(this.getTeamOrderSum(orders, skillMapping));
// 技术员指派单列表 // 技术员指派单列表
Map<String, List<OrderAppointment>> engineerOrders = new HashMap<>(); Map<String, List<OrderInfo>> engineerOrders = new HashMap<>();
if (ListUtils.isNotEmpty(orders)) { if (ListUtils.isNotEmpty(orders)) {
List<String> orderRequestIds = orders.stream().map(OrderRequest::getOrderId).collect(Collectors.toList()); List<String> orderRequestIds = orders.stream().map(OrderInfo::getOrderId).collect(Collectors.toList());
List<OrderAppointment> orderAppointments = this.queryOrderAppointments(orderRequestIds, date); List<OrderInfo> orderAppointments = orderInfoMPDao.selectByDtAndOrderIds(date, orderRequestIds);
engineerOrders = orderAppointments.stream().collect(Collectors.groupingBy(OrderAppointment::getEngineerCode)); orderAppointments.sort(Comparator.comparing(OrderInfo::getEngineerCode));
engineerOrders = orderAppointments.stream().collect(Collectors.groupingBy(OrderInfo::getEngineerCode));
} }
// 获取team技术员列表 // 获取team技术员列表
...@@ -115,10 +113,10 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -115,10 +113,10 @@ public class ScheduleServiceImpl implements ScheduleService {
String engineerCode = entry.getKey(); String engineerCode = entry.getKey();
EngineerInfo engineerInfo = entry.getValue().get(0); EngineerInfo engineerInfo = entry.getValue().get(0);
List<String> orderIds = engineerOrders.getOrDefault(engineerCode, new ArrayList<>()).stream().map(OrderAppointment::getOrderId).collect(Collectors.toList()); List<String> orderIds = engineerOrders.getOrDefault(engineerCode, new ArrayList<>()).stream().map(OrderInfo::getOrderId).collect(Collectors.toList());
List<OrderRequest> orders2 = new ArrayList<>(); List<OrderInfo> orders2 = new ArrayList<>();
for (OrderRequest o : orders) { for (OrderInfo o : orders) {
if (orderIds.contains(o.getOrderId())) { if (orderIds.contains(o.getOrderId())) {
orders2.add(o); orders2.add(o);
} }
...@@ -153,28 +151,29 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -153,28 +151,29 @@ public class ScheduleServiceImpl implements ScheduleService {
@Override @Override
public Result<?> getScheduleEngineerOverview(LocalDate date, String engineerCode) throws BusinessException { public Result<?> getScheduleEngineerOverview(LocalDate date, String engineerCode) throws BusinessException {
// 获取技术员已排班概况
EngineerInfo engineer = engineerInfoMPDao.getByEngineerCode(engineerCode); EngineerInfo engineer = engineerInfoMPDao.getByEngineerCode(engineerCode);
if (engineer == null) { if (engineer == null) {
throw new BusinessException("分销员不存在"); throw new BusinessException("分销员不存在");
} }
List<LabelValueDTO> emptyTips = new ArrayList<>(); List<LabelValueDTO> emptyTips = new ArrayList<>();
List<OrderAppointment> orderAppointments = orderAppointmentMPDao.selectByEngineerCodeAndDt(engineerCode, date);
List<OrderInfo> orderAppointments = orderInfoMPDao.selectByEngineerCodeAndDtAndAppointmentStatus(engineerCode, date, "CONFIRM");
List<TimeLineDTO> timelines = new ArrayList<>(); List<TimeLineDTO> timelines = new ArrayList<>();
for (OrderAppointment o : orderAppointments) { for (OrderInfo o : orderAppointments) {
TimeLineDTO item = new TimeLineDTO(); TimeLineDTO item = new TimeLineDTO();
item.setOrderId(o.getOrderId()); item.setOrderId(o.getOrderId());
item.setPreStatus(o.getPreStatus()); item.setAppointmentStatus(o.getAppointmentStatus());
item.setAppointmentStatus(o.getStatus()); item.setStartTime(TimeUtils.IsoTimestamp2DateTime(o.getPlanStartTime()));
item.setStartTime(TimeUtils.IsoTimestamp2DateTime(o.getExpectStartTime())); item.setEndTime(TimeUtils.IsoTimestamp2DateTime(o.getPlanEndTime()));
item.setEndTime(TimeUtils.IsoTimestamp2DateTime(o.getExpectEndTime()));
item.setTips(emptyTips); item.setTips(emptyTips);
timelines.add(item); timelines.add(item);
} }
Map<String, List<OrderAppointment>> statusGroup = orderAppointments.stream().collect(Collectors.groupingBy(OrderAppointment::getStatus)); Map<String, List<OrderInfo>> statusGroup = orderAppointments.stream().collect(Collectors.groupingBy(OrderInfo::getServiceStatus));
List<OrderAppointment> empty = new ArrayList<>(); List<OrderInfo> empty = new ArrayList<>();
Integer countPending = statusGroup.getOrDefault("ASSIGNED", empty).size() + statusGroup.getOrDefault("CONTACTED", empty).size() + statusGroup.getOrDefault("DEPARTED", empty).size(); Integer countPending = statusGroup.getOrDefault("INIT", empty).size() + statusGroup.getOrDefault("CONTACTED", empty).size() + statusGroup.getOrDefault("PENDING", empty).size();
List<LabelValueDTO> dynamics = new ArrayList<>(); List<LabelValueDTO> dynamics = new ArrayList<>();
dynamics.add(new LabelValueDTO("姓名", engineer.getName())); dynamics.add(new LabelValueDTO("姓名", engineer.getName()));
...@@ -190,13 +189,13 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -190,13 +189,13 @@ public class ScheduleServiceImpl implements ScheduleService {
dynamics.add(new LabelValueDTO("工作时间", "08:00-18:00")); dynamics.add(new LabelValueDTO("工作时间", "08:00-18:00"));
dynamics.add(new LabelValueDTO("交通工具", "电动车")); dynamics.add(new LabelValueDTO("交通工具", "电动车"));
List<String> orderIds = orderAppointments.stream().map(OrderAppointment::getOrderId).collect(Collectors.toList()); List<String> orderIds = orderAppointments.stream().map(OrderInfo::getOrderId).collect(Collectors.toList());
List<OrderRequest> orderRequests = new ArrayList<>(); List<OrderInfo> orderRequests = new ArrayList<>();
if (orderIds != null && !orderIds.isEmpty()) { if (orderIds != null && !orderIds.isEmpty()) {
orderRequests = orderRequestMPDao.selectByOrderIds(orderIds); orderRequests = orderInfoMPDao.selectByDtAndOrderIds(date, orderIds);
} }
List<ScheduleEngineerOverviewResp.Order> orders = new ArrayList<>(); List<ScheduleEngineerOverviewResp.Order> orders = new ArrayList<>();
for (OrderRequest o : orderRequests) { for (OrderInfo o : orderRequests) {
ScheduleEngineerOverviewResp.Order item = new ScheduleEngineerOverviewResp.Order(); ScheduleEngineerOverviewResp.Order item = new ScheduleEngineerOverviewResp.Order();
item.setOrderId(o.getOrderId()); item.setOrderId(o.getOrderId());
item.setLocation(String.format("%s,%s", o.getX(), o.getY())); item.setLocation(String.format("%s,%s", o.getX(), o.getY()));
...@@ -255,31 +254,23 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -255,31 +254,23 @@ public class ScheduleServiceImpl implements ScheduleService {
return orgTeamEngineerMPDao.selectList(lqw); return orgTeamEngineerMPDao.selectList(lqw);
} }
private List<OrderRequest> queryOrderRequests(String teamId, LocalDate date) { private List<OrderInfo> queryOrderRequests(String teamId, LocalDate date) {
LambdaQueryWrapper<OrderRequest> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OrderInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderRequest::getDt, date); lqw.eq(OrderInfo::getDt, date);
lqw.in(OrderRequest::getOrgTeamId, teamId); lqw.in(OrderInfo::getOrgTeamId, teamId);
lqw.eq(OrderRequest::getAppointmentStatus, "ASSIGNED"); lqw.eq(OrderInfo::getAppointmentStatus, "CONFIRM");
return orderRequestMPDao.selectList(lqw); return orderInfoMPDao.selectList(lqw);
} }
private List<OrderAppointment> queryOrderAppointments(List<String> orderIds, LocalDate date) { private ScheduleOverviewResp.OrderSum getTeamOrderSum(List<OrderInfo> orders, HashMap<String, String> skillMapping) {
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderAppointment::getOrderId, orderIds);
lqw.eq(OrderAppointment::getDt, date);
lqw.orderByAsc(OrderAppointment::getEngineerCode);
return orderAppointmentMPDao.selectList(lqw);
}
private ScheduleOverviewResp.OrderSum getTeamOrderSum(List<OrderRequest> orders, HashMap<String, String> skillMapping) {
ScheduleOverviewResp.OrderSum s = new ScheduleOverviewResp.OrderSum(); ScheduleOverviewResp.OrderSum s = new ScheduleOverviewResp.OrderSum();
List<OrderRequest> emtpy = new ArrayList<>(); List<OrderInfo> emtpy = new ArrayList<>();
HashMap<String, Integer> skillCounter = new HashMap<>(); HashMap<String, Integer> skillCounter = new HashMap<>();
Map<String, List<OrderRequest>> cc = orders.stream().collect(Collectors.groupingBy(OrderRequest::getSkill)); Map<String, List<OrderInfo>> cc = orders.stream().collect(Collectors.groupingBy(OrderInfo::getSkill));
for(Map.Entry<String, List<OrderRequest>> entry: cc.entrySet()){ for (Map.Entry<String, List<OrderInfo>> entry : cc.entrySet()) {
String skill = entry.getKey(); String skill = entry.getKey();
Integer count = entry.getValue().size(); Integer count = entry.getValue().size();
String skillCategory = skillMapping.get(skill); String skillCategory = skillMapping.get(skill);
...@@ -313,15 +304,15 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -313,15 +304,15 @@ public class ScheduleServiceImpl implements ScheduleService {
// 获取skill映射 // 获取skill映射
HashMap<String, String> skillMap = this.getSkillCategoryMapping(); HashMap<String, String> skillMap = this.getSkillCategoryMapping();
QueryWrapper<OrderRequest> wrapper = new QueryWrapper<>(); QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>();
wrapper.select("skill, COUNT(*) as count") wrapper.select("skill, COUNT(*) as count")
.lambda() .lambda()
.eq(OrderRequest::getDt, date) .eq(OrderInfo::getDt, date)
.in(levelType.equals("cluster"), OrderRequest::getOrgClusterId, levelValue) .in(levelType.equals("cluster"), OrderInfo::getOrgClusterId, levelValue)
.in(levelType.equals("branch"), OrderRequest::getOrgBranchId, levelValue) .in(levelType.equals("branch"), OrderInfo::getOrgBranchId, levelValue)
.in(levelType.equals("group"), OrderRequest::getOrgGroupId, levelValue) .in(levelType.equals("group"), OrderInfo::getOrgGroupId, levelValue)
.groupBy(OrderRequest::getSkill); .groupBy(OrderInfo::getSkill);
List<Map<String, Object>> results = orderRequestMPDao.selectMaps(wrapper); List<Map<String, Object>> results = orderInfoMPDao.selectMaps(wrapper);
for (Map<String, Object> result : results) { for (Map<String, Object> result : results) {
String skill = (String) result.get("skill"); String skill = (String) result.get("skill");
Long countValue = (Long) result.get("count"); Long countValue = (Long) result.get("count");
...@@ -340,15 +331,15 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -340,15 +331,15 @@ public class ScheduleServiceImpl implements ScheduleService {
HashMap<String, Integer> groupCategoryMapping = this.getGroupCategoryMapping(levelType, levelValue); HashMap<String, Integer> groupCategoryMapping = this.getGroupCategoryMapping(levelType, levelValue);
QueryWrapper<OrderRequest> wrapper = new QueryWrapper<>(); QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>();
wrapper.select("org_group_id, COUNT(*) as count") wrapper.select("org_group_id, COUNT(*) as count")
.lambda() .lambda()
.eq(OrderRequest::getDt, date) .eq(OrderInfo::getDt, date)
.in(levelType.equals("cluster"), OrderRequest::getOrgClusterId, levelValue) .in(levelType.equals("cluster"), OrderInfo::getOrgClusterId, levelValue)
.in(levelType.equals("branch"), OrderRequest::getOrgBranchId, levelValue) .in(levelType.equals("branch"), OrderInfo::getOrgBranchId, levelValue)
.in(levelType.equals("group"), OrderRequest::getOrgGroupId, levelValue) .in(levelType.equals("group"), OrderInfo::getOrgGroupId, levelValue)
.groupBy(OrderRequest::getOrgGroupId); .groupBy(OrderInfo::getOrgGroupId);
List<Map<String, Object>> results = orderRequestMPDao.selectMaps(wrapper); List<Map<String, Object>> results = orderInfoMPDao.selectMaps(wrapper);
for (Map<String, Object> result : results) { for (Map<String, Object> result : results) {
String groupId = (String) result.get("org_group_id"); String groupId = (String) result.get("org_group_id");
Long countValue = (Long) result.get("count"); Long countValue = (Long) result.get("count");
...@@ -364,15 +355,15 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -364,15 +355,15 @@ public class ScheduleServiceImpl implements ScheduleService {
private HashMap<String, Integer> queryCountByAppointment(LocalDate date, String levelType, List<String> levelValue) { private HashMap<String, Integer> queryCountByAppointment(LocalDate date, String levelType, List<String> levelValue) {
HashMap<String, Integer> map = new HashMap<>(); HashMap<String, Integer> map = new HashMap<>();
QueryWrapper<OrderRequest> wrapper = new QueryWrapper<>(); QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>();
wrapper.select("appointment_method, appointment_status, COUNT(*) as count") wrapper.select("appointment_method, appointment_status, COUNT(*) as count")
.lambda() .lambda()
.eq(OrderRequest::getDt, date) .eq(OrderInfo::getDt, date)
.in(levelType.equals("cluster"), OrderRequest::getOrgClusterId, levelValue) .in(levelType.equals("cluster"), OrderInfo::getOrgClusterId, levelValue)
.in(levelType.equals("branch"), OrderRequest::getOrgBranchId, levelValue) .in(levelType.equals("branch"), OrderInfo::getOrgBranchId, levelValue)
.in(levelType.equals("group"), OrderRequest::getOrgGroupId, levelValue) .in(levelType.equals("group"), OrderInfo::getOrgGroupId, levelValue)
.groupBy(OrderRequest::getAppointmentMethod, OrderRequest::getAppointmentStatus); .groupBy(OrderInfo::getAppointmentMethod, OrderInfo::getAppointmentStatus);
List<Map<String, Object>> results = orderRequestMPDao.selectMaps(wrapper); List<Map<String, Object>> results = orderInfoMPDao.selectMaps(wrapper);
Integer autoTotal = 0; Integer autoTotal = 0;
Integer manualTotal = 0; Integer manualTotal = 0;
...@@ -480,12 +471,10 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -480,12 +471,10 @@ public class ScheduleServiceImpl implements ScheduleService {
return items; return items;
} }
private <T> HashMap<String, List<T>> packParams(String key, T ...values) { private <T> HashMap<String, List<T>> packParams(String key, T... values) {
HashMap<String, List<T>> map = new HashMap<>(); HashMap<String, List<T>> map = new HashMap<>();
List<T> value = new ArrayList<>(); List<T> value = new ArrayList<>();
for(T v: values){ Collections.addAll(value, values);
value.add(v);
}
map.put(key, value); map.put(key, value);
return map; return map;
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!