提交 c1521770 authored 作者: zhoushaopan's avatar zhoushaopan

feat(维修模块): 优化查询维修管理中的查询速度

优化查询维修管理中的查询速度
上级 707f960c
...@@ -1841,6 +1841,7 @@ public class RepairController { ...@@ -1841,6 +1841,7 @@ public class RepairController {
public ResponseEntity getRepairList(@RequestBody RepairTaskSelectVo repairTaskSelectVo) { public ResponseEntity getRepairList(@RequestBody RepairTaskSelectVo repairTaskSelectVo) {
Integer type = repairTaskSelectVo.getType(); Integer type = repairTaskSelectVo.getType();
String unitName = userUtils.getCurrentUserUnitName(); String unitName = userUtils.getCurrentUserUnitName();
Integer unitId = userUtils.getCurrentUnitId();
//是否有年份筛选 //是否有年份筛选
Integer year = repairTaskSelectVo.getYear(); Integer year = repairTaskSelectVo.getYear();
Boolean hasYear = year != null && year > 0; Boolean hasYear = year != null && year > 0;
...@@ -1855,8 +1856,10 @@ public class RepairController { ...@@ -1855,8 +1856,10 @@ public class RepairController {
repairDetails.forEach(RepairDetail::setConfigName); repairDetails.forEach(RepairDetail::setConfigName);
//所在为当前单位 //所在为当前单位
// List<RepairDetail> repairDetails1 = repairDetails.stream().filter(repairDetail -> repairDetail.getLocationUnit().equals(unitName)).collect(Collectors.toList()); // List<RepairDetail> repairDetails1 = repairDetails.stream().filter(repairDetail -> repairDetail.getLocationUnit().equals(unitName)).collect(Collectors.toList());
// List<RepairDetail> repairDetails1 = repairDetails.stream().filter(repairDetail ->
// unitsService.findById(repairDetail.getLocationUnitId()).getName().equals(unitName)).collect(Collectors.toList());
List<RepairDetail> repairDetails1 = repairDetails.stream().filter(repairDetail -> List<RepairDetail> repairDetails1 = repairDetails.stream().filter(repairDetail ->
unitsService.findById(repairDetail.getLocationUnitId()).getName().equals(unitName)).collect(Collectors.toList()); repairDetail.getLocationUnitId().equals(unitId)).collect(Collectors.toList());
//默认按照时间排序 //默认按照时间排序
List<CustomOrder> orders = repairTaskSelectVo.getOrders(); List<CustomOrder> orders = repairTaskSelectVo.getOrders();
List<RepairDetail> repairDetails2 = repairDetails1.stream().sorted(Comparator.comparing(RepairDetail::getUpdateTime)).collect(Collectors.toList()); List<RepairDetail> repairDetails2 = repairDetails1.stream().sorted(Comparator.comparing(RepairDetail::getUpdateTime)).collect(Collectors.toList());
...@@ -1876,19 +1879,30 @@ public class RepairController { ...@@ -1876,19 +1879,30 @@ public class RepairController {
// //进行时间上面的优化 // //进行时间上面的优化
List<Integer> sendRepairIds = repairDetails1.stream().map(RepairDetail::getDeviceRepairBillId).collect(Collectors.toList()); List<Integer> sendRepairIds = repairDetails1.stream().map(RepairDetail::getDeviceRepairBillId).collect(Collectors.toList());
//key为发起单位 //key为发起单位
Map<String, List<RepairBill>> listMap = deviceRepairBillService.findByIds(sendRepairIds).stream().collect(Collectors.groupingBy(RepairBill::getSendUnit)); // Map<String, List<RepairBill>> listMap = deviceRepairBillService.findByIds(sendRepairIds).stream()
if (!listMap.containsKey(unitName)){ // .collect(Collectors.groupingBy(RepairBill::getSendUnit));
Map<Integer, List<RepairBill>> listMap = deviceRepairBillService.findByIds(sendRepairIds).stream()
.collect(Collectors.groupingBy(RepairBill::getSendUnitId));
// if (!listMap.containsKey(unitName)){
// List<WaitingRepairEquipmentVo> waitingRepairEquipments = new ArrayList<>();
// return ResponseEntity.ok(PageUtil.getPerPage(repairTaskSelectVo.getPage(), repairTaskSelectVo.getSize(), waitingRepairEquipments, repairTaskSelectVo.getPageable()));
// }
if (!listMap.containsKey(unitId)){
List<WaitingRepairEquipmentVo> waitingRepairEquipments = new ArrayList<>(); List<WaitingRepairEquipmentVo> waitingRepairEquipments = new ArrayList<>();
return ResponseEntity.ok(PageUtil.getPerPage(repairTaskSelectVo.getPage(), repairTaskSelectVo.getSize(), waitingRepairEquipments, repairTaskSelectVo.getPageable())); return ResponseEntity.ok(PageUtil.getPerPage(repairTaskSelectVo.getPage(), repairTaskSelectVo.getSize(), waitingRepairEquipments, repairTaskSelectVo.getPageable()));
} }
List<RepairBill> repairBills = listMap.get(unitName); // List<RepairBill> repairBills = listMap.get(unitName);
List<RepairBill> repairBills = listMap.get(unitId);
//拿到当前发起单位是自己的 维修id //拿到当前发起单位是自己的 维修id
List<Integer> ids = repairBills.stream().map(RepairBill::getId).collect(Collectors.toList()); List<Integer> ids = repairBills.stream().map(RepairBill::getId).collect(Collectors.toList());
// List<RepairDetail> repairDetails2 = repairDetails1.stream().filter(repairDetail -> ids.contains(repairDetail.getDeviceRepairBillId())) // List<RepairDetail> repairDetails2 = repairDetails1.stream().filter(repairDetail -> ids.contains(repairDetail.getDeviceRepairBillId()))
// .filter(repairDetail -> !repairDetail.getLocationUnit().equals(unitName)) // .filter(repairDetail -> !repairDetail.getLocationUnit().equals(unitName))
// .collect(Collectors.toList());
// List<RepairDetail> repairDetails2 = repairDetails1.stream().filter(repairDetail -> ids.contains(repairDetail.getDeviceRepairBillId()))
// .filter(repairDetail -> !unitsService.findById(repairDetail.getLocationUnitId()).getName().equals(unitName))
// .collect(Collectors.toList()); // .collect(Collectors.toList());
List<RepairDetail> repairDetails2 = repairDetails1.stream().filter(repairDetail -> ids.contains(repairDetail.getDeviceRepairBillId())) List<RepairDetail> repairDetails2 = repairDetails1.stream().filter(repairDetail -> ids.contains(repairDetail.getDeviceRepairBillId()))
.filter(repairDetail -> !unitsService.findById(repairDetail.getLocationUnitId()).getName().equals(unitName)) .filter(repairDetail -> !repairDetail.getLocationUnitId().equals(unitId))
.collect(Collectors.toList()); .collect(Collectors.toList());
//原来代码 //原来代码
// List<RepairDetail> repairDetails2 = repairDetails1.stream().filter( // List<RepairDetail> repairDetails2 = repairDetails1.stream().filter(
...@@ -1932,8 +1946,10 @@ public class RepairController { ...@@ -1932,8 +1946,10 @@ public class RepairController {
repairDetails.forEach(RepairDetail::setConfigName); repairDetails.forEach(RepairDetail::setConfigName);
//所在在当前单位的 //所在在当前单位的
// List<RepairDetail> repairDetails2 = repairDetails.stream().filter(repairDetail -> repairDetail.getLocationUnit().equals(unitName)).collect(Collectors.toList()); // List<RepairDetail> repairDetails2 = repairDetails.stream().filter(repairDetail -> repairDetail.getLocationUnit().equals(unitName)).collect(Collectors.toList());
// List<RepairDetail> repairDetails2 = repairDetails.stream().filter(repairDetail ->
// unitsService.findById(repairDetail.getLocationUnitId()).getName().equals(unitName)).collect(Collectors.toList());
List<RepairDetail> repairDetails2 = repairDetails.stream().filter(repairDetail -> List<RepairDetail> repairDetails2 = repairDetails.stream().filter(repairDetail ->
unitsService.findById(repairDetail.getLocationUnitId()).getName().equals(unitName)).collect(Collectors.toList()); repairDetail.getLocationUnitId().equals(unitId)).collect(Collectors.toList());
List<WaitingRepairEquipmentVo> waitingRepairEquipments = new ArrayList<>(); List<WaitingRepairEquipmentVo> waitingRepairEquipments = new ArrayList<>();
for (RepairDetail repairDetail : repairDetails2) { for (RepairDetail repairDetail : repairDetails2) {
TaskBto taskBto = taskService.getParentTaskIsNull(repairDetail.getDeviceRepairBillId(), 5); TaskBto taskBto = taskService.getParentTaskIsNull(repairDetail.getDeviceRepairBillId(), 5);
...@@ -2020,7 +2036,9 @@ public class RepairController { ...@@ -2020,7 +2036,9 @@ public class RepairController {
throw new ApiException("区县没有维修完成列表"); throw new ApiException("区县没有维修完成列表");
} }
repairDetails.forEach(RepairDetail::setConfigName); repairDetails.forEach(RepairDetail::setConfigName);
List<RepairDetail> repairDetails2 = repairDetails.stream().filter(repairDetail -> !hasYear || repairDetail.getUpdateTime().getYear() == year - 1900).collect(Collectors.toList()); List<RepairDetail> repairDetails2 = repairDetails.stream()
.filter(repairDetail -> !hasYear || repairDetail.getUpdateTime().getYear() == year - 1900)
.collect(Collectors.toList());
//按照时间排序 //按照时间排序
List<RepairDetail> repairDetailList = repairDetails2.stream().sorted(Comparator.comparing(RepairDetail::getUpdateTime)).collect(Collectors.toList()); List<RepairDetail> repairDetailList = repairDetails2.stream().sorted(Comparator.comparing(RepairDetail::getUpdateTime)).collect(Collectors.toList());
List<RepairDetail> finalList = sortMethod(repairTaskSelectVo.getOrders(), repairDetailList, repairDetails); List<RepairDetail> finalList = sortMethod(repairTaskSelectVo.getOrders(), repairDetailList, repairDetails);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论