|
@@ -1,8 +1,6 @@
|
|
|
package com.gree.mall.manager.logic.workorder;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
-import cn.hutool.core.collection.CollectionUtil;
|
|
|
-import cn.hutool.core.collection.ListUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -10,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.gree.mall.manager.bean.admin.AdminUserCom;
|
|
|
import com.gree.mall.manager.bean.es.*;
|
|
|
import com.gree.mall.manager.bean.listvo.param.WorkOrderZfireParam;
|
|
|
-import com.gree.mall.manager.bean.listvo.workorder.OperatorLogBean;
|
|
|
import com.gree.mall.manager.bean.listvo.workorder.OrderBaseVO;
|
|
|
import com.gree.mall.manager.commonmapper.CommonMapper;
|
|
|
import com.gree.mall.manager.enums.MaterialExamineStatusEnum;
|
|
@@ -186,20 +183,6 @@ public class OrderBaseEsLogic {
|
|
|
page.setRecords(BeanUtil.copyToList(orderBaseEs,OrderBaseVO.class));
|
|
|
}
|
|
|
|
|
|
- List<OperatorLogBean> operatorList = null;
|
|
|
- if (page.getSize() > 0) {
|
|
|
- final List<String> orderBaseIds = page.getRecords().stream().map(OrderBaseVO::getId).distinct().collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isNotEmpty(orderBaseIds)) {
|
|
|
- operatorList = commonMapper.selectLastOrderOperatorLog(year, orderBaseIds);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, List<OperatorLogBean>> operatorMap = null;
|
|
|
- if (CollectionUtil.isNotEmpty(operatorList)) {
|
|
|
- operatorMap = operatorList.stream()
|
|
|
- .collect(Collectors.groupingBy(OperatorLogBean::getOrderBaseId));
|
|
|
- }
|
|
|
-
|
|
|
//服务单标识
|
|
|
if (zfireParamBean.getPageSize() != -1 && page.getTotal() > 0 && page.getRecords().size() > 0) {
|
|
|
List<String> orderBaseIds = page.getRecords()
|
|
@@ -221,10 +204,6 @@ public class OrderBaseEsLogic {
|
|
|
BigDecimal bigDecimal = workerOrders.stream().map(WorkerOrder::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
|
orderBaseVO.setWorkerPrice(bigDecimal);
|
|
|
}
|
|
|
-
|
|
|
- if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
|
|
|
- orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()).get(0).getContent());
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
return page;
|
|
@@ -1042,37 +1021,10 @@ public class OrderBaseEsLogic {
|
|
|
.eq(WorkerOrder::getPayStatus, MaterialExamineStatusEnum.PAID.getKey())
|
|
|
.select(WorkerOrder::getWorkerOrderId, WorkerOrder::getTotalAmount).list();
|
|
|
|
|
|
- List<OperatorLogBean> operatorList = new ArrayList<>();
|
|
|
- if (CollectionUtil.isNotEmpty(orderBaseIds)) {
|
|
|
- log.info("最后访问记录开始时间{}", DateUtil.formatDateTime(DateUtil.date()));
|
|
|
- final List<List<String>> pageList = ListUtil.split(orderBaseIds, 10000);
|
|
|
- for (List<String> orderIdPageList : pageList) {
|
|
|
- operatorList.addAll(commonMapper.selectLastOrderOperatorLog(year, orderIdPageList));
|
|
|
- }
|
|
|
- log.info("最后访问记录结束时间{}", DateUtil.formatDateTime(DateUtil.date()));
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, List<OperatorLogBean>> operatorMap = null;
|
|
|
- if (CollectionUtil.isNotEmpty(operatorList)) {
|
|
|
- operatorMap = operatorList.stream()
|
|
|
- .collect(Collectors.groupingBy(OperatorLogBean::getOrderBaseId));
|
|
|
- }
|
|
|
-
|
|
|
- log.info("最后访问记录注入orderBaseVO开始时间{}", DateUtil.formatDateTime(DateUtil.date()));
|
|
|
-
|
|
|
// 预处理:将workerOrderList按workerOrderId分组(O(m)时间复杂度)
|
|
|
Map<String, List<WorkerOrder>> workerOrderMap = workerOrderList.stream()
|
|
|
.collect(Collectors.groupingBy(WorkerOrder::getWorkerOrderId));
|
|
|
|
|
|
- // 预处理:operatorMap若每个orderBaseId只有一条记录,可简化为直接存储内容(根据业务逻辑调整)
|
|
|
- Map<String, String> operatorContentMap = operatorMap != null ?
|
|
|
- operatorMap.entrySet().stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- Map.Entry::getKey,
|
|
|
- entry -> entry.getValue().get(0).getContent() // 假设每个ID只有一条记录
|
|
|
- )) :
|
|
|
- Collections.emptyMap();
|
|
|
-
|
|
|
// 提前判断workerOrderList是否为空(避免循环内重复判断)
|
|
|
boolean isWorkerOrderListEmpty = CollectionUtils.isEmpty(workerOrderList);
|
|
|
|
|
@@ -1085,9 +1037,6 @@ public class OrderBaseEsLogic {
|
|
|
// orderBaseVO.setWorkerPrice(bigDecimal);
|
|
|
// }
|
|
|
//
|
|
|
-// if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
|
|
|
-// orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()).get(0).getContent());
|
|
|
-// }
|
|
|
// 从Map中直接获取匹配的WorkerOrder列表(O(1)时间复杂度)
|
|
|
List<WorkerOrder> workerOrders = workerOrderMap.getOrDefault(orderBaseVO.getId(), Collections.emptyList());
|
|
|
|
|
@@ -1099,13 +1048,7 @@ public class OrderBaseEsLogic {
|
|
|
.orElse(BigDecimal.ZERO);
|
|
|
orderBaseVO.setWorkerPrice(bigDecimal);
|
|
|
}
|
|
|
-
|
|
|
- // 直接从简化后的operatorContentMap获取内容(O(1)时间复杂度)
|
|
|
- if (operatorContentMap.containsKey(orderBaseVO.getId())) {
|
|
|
- orderBaseVO.setLastFeedbackRecord(operatorContentMap.get(orderBaseVO.getId()));
|
|
|
- }
|
|
|
}
|
|
|
- log.info("最后访问记录注入orderBaseVO结束时间{}", DateUtil.formatDateTime(DateUtil.date()));
|
|
|
|
|
|
return orderBaseVOS1;
|
|
|
|