Commit 37e6881a by wangli

修改

1 parent 8637aa50
package com.dituhui.pea.order.service.impl; package com.dituhui.pea.order.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
import com.dituhui.pea.order.common.ListUtils; import com.dituhui.pea.order.common.ListUtils;
import com.dituhui.pea.order.common.TimeUtils; import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.dao.OrderAppointmentMPDao; import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dao.OrderRequestMPDao;
import com.dituhui.pea.order.dto.OrderServiceList; import com.dituhui.pea.order.dto.OrderServiceList;
import com.dituhui.pea.order.dto.OrderServiceListReq; import com.dituhui.pea.order.dto.OrderServiceListReq;
import com.dituhui.pea.order.dto.OrderServiceListResp; import com.dituhui.pea.order.dto.OrderServiceListResp;
import com.dituhui.pea.order.entity.OrderAppointment; import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.entity.OrderRequest;
import com.dituhui.pea.order.service.OrderServiceListService; import com.dituhui.pea.order.service.OrderServiceListService;
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;
...@@ -28,90 +25,87 @@ import java.util.stream.Collectors; ...@@ -28,90 +25,87 @@ import java.util.stream.Collectors;
public class OrderServiceListServiceImpl implements OrderServiceListService { public class OrderServiceListServiceImpl implements OrderServiceListService {
@Autowired @Autowired
private OrderRequestMPDao orderRequestMPDao; private OrderInfoMPDao orderInfoMPDao;
@Autowired @Autowired
private OrderAppointmentMPDao orderAppointmentMPDao; private EngineerInfoMPDao engineerInfoMPDao;
@Autowired
private OrgBranchMPDao orgBranchMPDao;
@Transactional @Transactional
@Override @Override
public Result<OrderServiceListResp> getOrderServiceList(OrderServiceListReq reqDTO) throws BusinessException { public Result<OrderServiceListResp> getOrderServiceList(OrderServiceListReq reqDTO) throws BusinessException {
//分页 //分页
Page<OrderRequest> pg = new Page(reqDTO.getPage(), reqDTO.getSize()); Page<OrderInfo> pg = new Page(reqDTO.getPage(), reqDTO.getSize());
LocalDate startDate = TimeUtils.IsoDate2LocalDate(reqDTO.getStartDate()); LocalDate startDate = TimeUtils.IsoDate2LocalDate(reqDTO.getStartDate());
LocalDate endDate = TimeUtils.IsoDate2LocalDate(reqDTO.getEndDate()); LocalDate endDate = TimeUtils.IsoDate2LocalDate(reqDTO.getEndDate());
LambdaQueryWrapper<OrderRequest> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OrderInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(reqDTO.getLevelType().equals("cluster"), OrderRequest::getOrgClusterId, reqDTO.getLevelValue()); lqw.eq(reqDTO.getLevelType().equals("cluster"), OrderInfo::getOrgClusterId, reqDTO.getLevelValue());
lqw.eq(reqDTO.getLevelType().equals("branch"), OrderRequest::getOrgBranchId, reqDTO.getLevelValue()); lqw.eq(reqDTO.getLevelType().equals("branch"), OrderInfo::getOrgBranchId, reqDTO.getLevelValue());
lqw.eq(reqDTO.getLevelType().equals("group"), OrderRequest::getOrgGroupId, reqDTO.getLevelValue()); lqw.eq(reqDTO.getLevelType().equals("group"), OrderInfo::getOrgGroupId, reqDTO.getLevelValue());
lqw.ge(OrderRequest::getDt, startDate); //预约开始日期 lqw.ge(OrderInfo::getDt, startDate); //预约开始日期
lqw.le(OrderRequest::getDt, endDate); //预约开始日期 lqw.le(OrderInfo::getDt, endDate); //预约开始日期
//筛选项 //筛选项
lqw.eq(StringUtils.isNotEmpty(reqDTO.getPhone()), OrderRequest::getPhone, reqDTO.getPhone()); lqw.eq(StringUtils.isNotEmpty(reqDTO.getPhone()), OrderInfo::getPhone, reqDTO.getPhone());
lqw.eq(StringUtils.isNotEmpty(reqDTO.getOrderId()), OrderRequest::getOrderId, reqDTO.getOrderId()); lqw.eq(StringUtils.isNotEmpty(reqDTO.getOrderId()), OrderInfo::getOrderId, reqDTO.getOrderId());
lqw.in(ListUtils.isNotEmpty(reqDTO.getBranchIds()), OrderRequest::getOrgBranchId, reqDTO.getBranchIds()); lqw.in(ListUtils.isNotEmpty(reqDTO.getBranchIds()), OrderInfo::getOrgBranchId, reqDTO.getBranchIds());
lqw.in(ListUtils.isNotEmpty(reqDTO.getGroupIds()), OrderRequest::getOrgGroupId, reqDTO.getGroupIds()); lqw.in(ListUtils.isNotEmpty(reqDTO.getGroupIds()), OrderInfo::getOrgGroupId, reqDTO.getGroupIds());
lqw.in(ListUtils.isNotEmpty(reqDTO.getTeamIds()), OrderRequest::getOrgTeamId, reqDTO.getTeamIds()); lqw.in(ListUtils.isNotEmpty(reqDTO.getTeamIds()), OrderInfo::getOrgTeamId, reqDTO.getTeamIds());
lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentType()), OrderRequest::getAppointmentMethod, reqDTO.getAppointmentType()); lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentType()), OrderInfo::getAppointmentMethod, reqDTO.getAppointmentType());
lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentStatus()), OrderRequest::getAppointmentStatus, reqDTO.getAppointmentStatus()); lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentStatus()), OrderInfo::getAppointmentStatus, reqDTO.getAppointmentStatus());
if (ListUtils.isNotEmpty(reqDTO.getPriorities())) { if (ListUtils.isNotEmpty(reqDTO.getPriorities())) {
List<Integer> p = reqDTO.getPriorities(); List<Integer> p = reqDTO.getPriorities();
if (p.contains(0) && p.contains(1)) { if (p.contains(0) && p.contains(1)) {
lqw.ge(OrderRequest::getPriority, 1); lqw.ge(OrderInfo::getPriority, 1);
} else if (p.contains(0) && !p.contains(1)) { } else if (p.contains(0) && !p.contains(1)) {
lqw.le(OrderRequest::getPriority, 1); lqw.le(OrderInfo::getPriority, 1);
} else if (p.contains(1) && !p.contains(0)) { } else if (p.contains(1) && !p.contains(0)) {
lqw.ge(OrderRequest::getPriority, 5); lqw.ge(OrderInfo::getPriority, 5);
} }
} }
if (ListUtils.isNotEmpty(reqDTO.getTypeCategory())) { if (ListUtils.isNotEmpty(reqDTO.getTypeCategory())) {
String types = "'" + String.join("','", reqDTO.getTypeCategory()) + "'"; String types = "'" + String.join("','", reqDTO.getTypeCategory()) + "'";
String sql = String.format("select 1 from skill_info sk where sk.brand = order_request.brand and sk.type = order_request.type and sk.skill = order_request.skill and type_category in (%s)", types); String sql = String.format("select 1 from skill_info sk where sk.brand = order_info.brand and sk.type = order_info.type and sk.skill = order_info.skill and type_category in (%s)", types);
lqw.exists(sql); lqw.exists(sql);
} }
if (ListUtils.isNotEmpty(reqDTO.getSkillCategory())) { if (ListUtils.isNotEmpty(reqDTO.getSkillCategory())) {
String skills = "'" + String.join("','", reqDTO.getSkillCategory()) + "'"; String skills = "'" + String.join("','", reqDTO.getSkillCategory()) + "'";
String sql = String.format("select 1 from skill_info sk where sk.brand = order_request.brand and sk.type = order_request.type and sk.skill = order_request.skill and skill_category in (%s)", skills); String sql = String.format("select 1 from skill_info sk where sk.brand = order_info.brand and sk.type = order_info.type and sk.skill = order_info.skill and skill_category in (%s)", skills);
lqw.exists(sql); lqw.exists(sql);
} }
if (ListUtils.isNotEmpty(reqDTO.getEngineerCodes())) { if (ListUtils.isNotEmpty(reqDTO.getEngineerCodes())) {
String engineerCodes = "'" + String.join("','", reqDTO.getEngineerCodes()) + "'"; String engineerCodes = "'" + String.join("','", reqDTO.getEngineerCodes()) + "'";
String sql = String.format("select 1 from order_appointment oa where oa.order_id = order_request.order_id and oa.dt = order_request.dt and oa.engineer_code in (%s)", engineerCodes); String sql = String.format("select 1 from order_appointment oa where oa.order_id = order_info.order_id and oa.dt = order_info.dt and oa.engineer_code in (%s)", engineerCodes);
lqw.exists(sql); lqw.exists(sql);
} }
if (ListUtils.isNotEmpty(reqDTO.getGroupCategory())) { if (ListUtils.isNotEmpty(reqDTO.getGroupCategory())) {
String groupCategory = reqDTO.getGroupCategory().stream().map(Object::toString).collect(Collectors.joining(",")); String groupCategory = reqDTO.getGroupCategory().stream().map(Object::toString).collect(Collectors.joining(","));
String sql = String.format("select 1 from org_group g where g.group_id = order_request.org_group_id and g.category in (%s)", groupCategory); String sql = String.format("select 1 from org_group g where g.group_id = order_info.org_group_id and g.category in (%s)", groupCategory);
lqw.exists(sql); lqw.exists(sql);
} }
// 查询工单表列表 // 查询工单表列表
orderRequestMPDao.selectPage(pg, lqw); orderInfoMPDao.selectPage(pg, lqw);
List<OrderInfo> orders = pg.getRecords();
List<OrderRequest> records = pg.getRecords();
//获取工单订单号列表 // 获取技术员姓名
List<String> orderIds = new ArrayList<>(); Map<String, String> engineerNames = this.getEngineerNames(orders);
for (OrderRequest r : records) { // 获取branch
orderIds.add(r.getOrderId()); Map<String, String> branchNames = this.getBranchNames(orders);
}
// 获取工程师姓名列表
HashMap<String, List<String>> engineerNames = this.getEngineerNames(this.getOrderAppointments(orderIds));
List<String> names;
// 获取工程师工号列表
List<OrderServiceList> content = new ArrayList<>(); List<OrderServiceList> content = new ArrayList<>();
for (OrderRequest o : records) { for (OrderInfo o : orders) {
OrderServiceList record = new OrderServiceList(); OrderServiceList record = new OrderServiceList();
names = engineerNames.getOrDefault(o.getOrderId(), null);
record.setOrderId(o.getOrderId()); record.setOrderId(o.getOrderId());
record.setType(o.getType()); record.setType(o.getType());
record.setBrand(o.getBrand()); record.setBrand(o.getBrand());
...@@ -125,12 +119,14 @@ public class OrderServiceListServiceImpl implements OrderServiceListService { ...@@ -125,12 +119,14 @@ public class OrderServiceListServiceImpl implements OrderServiceListService {
record.setSource(o.getSource()); record.setSource(o.getSource());
record.setDescription(o.getDescription()); record.setDescription(o.getDescription());
record.setPriority(o.getPriority()); record.setPriority(o.getPriority());
record.setOrgBranchName(o.getOrgBranchName()); record.setOrgBranchName(branchNames.getOrDefault(o.getOrgBranchId(), ""));
record.setEngineerNum(this.getEngNum(names)); //工程师数量 // 获取工程师信息
record.setEngineerNames(this.getEngNames(names)); //工程师姓名列表 List<String> names = this.getOrderEngineerNames(o.getEngineerCode(), o.getEngineerCodeSub(), engineerNames);
record.setEngineerNum(names.size()); //工程师数量
record.setEngineerNames(String.join("、", names)); //工程师姓名列表
record.setExpectTimeBegin(TimeUtils.IsoTimestamp2DateTime(o.getExpectTimeBegin())); record.setExpectTimeBegin(TimeUtils.IsoTimestamp2DateTime(o.getExpectTimeBegin()));
record.setExpectTimeEnd(TimeUtils.IsoTimestamp2DateTime(o.getExpectTimeEnd())); record.setExpectTimeEnd(TimeUtils.IsoTimestamp2DateTime(o.getExpectTimeEnd()));
record.setAppointmentTime(null);
record.setAppointmentStatus(o.getAppointmentStatus()); record.setAppointmentStatus(o.getAppointmentStatus());
record.setAppointmentType(o.getAppointmentMethod()); record.setAppointmentType(o.getAppointmentMethod());
record.setCreateTime(TimeUtils.IsoTimestamp2DateTime(o.getCreateTime())); record.setCreateTime(TimeUtils.IsoTimestamp2DateTime(o.getCreateTime()));
...@@ -149,73 +145,50 @@ public class OrderServiceListServiceImpl implements OrderServiceListService { ...@@ -149,73 +145,50 @@ public class OrderServiceListServiceImpl implements OrderServiceListService {
return Result.success(res); return Result.success(res);
} }
private Map<String, String> getEngineerNames(List<OrderInfo> orders) {
public List<OrderAppointment> getOrderAppointments(List<String> orderIds) { // 获取技术员姓名
// 获取指派单列表 Set<String> engineerCodes = new HashSet<>();
if (CollectionUtil.isEmpty(orderIds)) { for(OrderInfo r: orders){
return new ArrayList<>(); if(StringUtils.isNotEmpty(r.getEngineerCode())){
engineerCodes.add(r.getEngineerCode());
} }
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>(); if(StringUtils.isNotEmpty(r.getEngineerCodeSub())){
lqw.in(OrderAppointment::getOrderId, orderIds); engineerCodes.add(r.getEngineerCodeSub());
return orderAppointmentMPDao.selectList(lqw);
} }
public HashMap<String, List<String>> getEngineerNames(List<OrderAppointment> orders) {
// 获取orderId最新订单对应的工程师姓名列表
HashMap<String, List<String>> engineerNames = new HashMap<>();
Map<String, List<OrderAppointment>> g = this.groupOrderAppointments(orders);
for (String orderId : g.keySet()) {
List<String> names = new ArrayList<>();
for (OrderAppointment o : g.get(orderId)) {
names.add(o.getEngineerName());
} }
engineerNames.put(orderId, names); if(engineerCodes.isEmpty()){
return new HashMap<>();
} }
return engineerNames; List<EngineerInfo> engineers = engineerInfoMPDao.selectByEngineerCodes(new ArrayList<>(engineerCodes));
return engineers.stream().collect(Collectors.toMap(EngineerInfo::getEngineerCode, EngineerInfo::getName));
} }
public Map<String, List<OrderAppointment>> groupOrderAppointments(List<OrderAppointment> orders) { private Map<String, String> getBranchNames(List<OrderInfo> orders){
// 获取orderId对应的最新的subOrderId的订单列表 // 获取branch名称
Set<String> branches = new HashSet<>();
// 根据orderId+subOrderId降序排序 for(OrderInfo r: orders){
Comparator<OrderAppointment> byOrderIdDesc = Comparator.comparing(OrderAppointment::getOrderId, String.CASE_INSENSITIVE_ORDER).reversed(); if(StringUtils.isNotEmpty(r.getOrgBranchId())){
Comparator<OrderAppointment> bySuborderIdDesc = Comparator.comparing(OrderAppointment::getSuborderId, String.CASE_INSENSITIVE_ORDER).reversed(); branches.add(r.getOrgBranchId());
Comparator<OrderAppointment> comp = byOrderIdDesc.thenComparing(bySuborderIdDesc);
List<OrderAppointment> results = orders.stream().sorted(comp).collect(Collectors.toList());
//获取orderId对应的最新的subOrderId的订单列表
String orderId = "";
String subOrderId = "";
List<OrderAppointment> items = new ArrayList<>();
for (OrderAppointment o : results) {
if (!orderId.equals(o.getOrderId())) {
orderId = o.getOrderId();
subOrderId = o.getSuborderId();
items.add(o);
continue;
} }
if (subOrderId.equals(o.getSuborderId())) {
items.add(o);
} }
if(branches.isEmpty()){
return new HashMap<>();
} }
return items.stream().collect(Collectors.groupingBy(OrderAppointment::getOrderId)); LambdaQueryWrapper<OrgBranch> lqw = new LambdaQueryWrapper<>();
lqw.in(OrgBranch::getBranchId, new ArrayList<>(branches));
List<OrgBranch> records = orgBranchMPDao.selectList(lqw);
return records.stream().collect(Collectors.toMap(OrgBranch::getBranchId, OrgBranch::getBranchName));
} }
private Integer getEngNum(List<String> names) { private List<String> getOrderEngineerNames(String engineerCode, String engineerCodeSub, Map<String,String> engineerNames){
/*获取工程师数量*/ // 获取订单技术员姓名信息
if (names == null) { List<String> names = new ArrayList<>();
return 0; for(String code: List.of(engineerCode, engineerCodeSub)){
} String name = engineerNames.getOrDefault(code, "");
return names.size(); if(StringUtils.isNotEmpty(name)){
names.add(name);
} }
private String getEngNames(List<String> names) {
/*获取工程师姓名列表*/
if (names == null) {
return "";
} }
return String.join("、", names); return names;
} }
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!