From de462cca87a041cc73889be62986db8446a24ef2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 02 四月 2026 17:12:01 +0800
Subject: [PATCH] 修改bug
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java | 180 +++++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 135 insertions(+), 45 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java
index a9fb47b..7c0b575 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java
@@ -1,16 +1,16 @@
package com.ruoyi.system.service.impl;
import com.alibaba.fastjson2.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.mapper.ProjectInfoMapper;
import com.ruoyi.system.model.Project;
import com.ruoyi.system.model.ProjectInfo;
import com.ruoyi.system.model.Record;
+import com.ruoyi.system.model.Task;
import com.ruoyi.system.query.ProjectDangerousTrendQuery;
import com.ruoyi.system.query.ProjectHiddenDangerTrendListQuery;
-import com.ruoyi.system.service.ProjectCategoryCalculator;
-import com.ruoyi.system.service.ProjectInfoService;
-import com.ruoyi.system.service.ProjectService;
+import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.ProjectDangerousTrendVo;
import com.ruoyi.system.vo.ProjectHiddenDangerList;
import com.ruoyi.system.vo.ProjectHiddenDangerNextList;
@@ -26,10 +26,7 @@
import java.time.YearMonth;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import static java.util.stream.Collectors.groupingBy;
@@ -51,56 +48,144 @@
@Autowired
private ProjectService projectService;
+ @Autowired
+ private TaskService taskService;
+
+ @Autowired
+ private RecordService recordService;
+
@Override
public List<ProjectHiddenDangerTrendVo> getProjectHiddenDangerTrend(Integer projectId) {
- // 获取上月第一天的时间
- LocalDate lastMonth = LocalDate.now().minusMonths(1).with(TemporalAdjusters.firstDayOfMonth());
- List<Record> list = this.baseMapper.getProjectHiddenDangerTrend(projectId,lastMonth+" 00:00:00",LocalDate.now()+" 23:59:59");
- for (Record record : list) {
- String hierarchyNames = record.getHierarchyNames();
- JSONArray jsonArray = JSONArray.parseArray(hierarchyNames);
- if(record.getDeviceId()!=null){
- // 取出倒数第3个
- String name = jsonArray.getString(jsonArray.size()-3);
-
- record.setHierarchyName( name);
- }else {
- // 取出倒数第4个
- String name = jsonArray.getString(jsonArray.size()-4);
-
- record.setHierarchyName( name);
- }
- }
- LocalDate thisMonth = LocalDate.now().minusMonths(0).with(TemporalAdjusters.firstDayOfMonth());
- Map<String, List<Record>> map = list.stream().collect(groupingBy(Record::getHierarchyName));
List<ProjectHiddenDangerTrendVo> resultList = new ArrayList<>();
- for (Map.Entry<String, List<Record>> entry : map.entrySet()) {
- ProjectHiddenDangerTrendVo vo = new ProjectHiddenDangerTrendVo();
- vo.setName(entry.getKey());
- List<Record> value = entry.getValue();
- long count = value.stream().filter(record -> record.getCreateTime().isAfter(thisMonth.atStartOfDay())).count();
- // 根据value集合中的createTime 选出本月的数据
- vo.setThisMonth((int) count);
- vo.setLastMonth(value.size()-(int) count);
+ // 找出最近的的2个计划任务
+ List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, projectId).in(Task::getState, Arrays.asList(3,7)).orderByDesc(Task::getCreateTime).last("limit 2"));
+ if(tasks.size()==1){
+ Task task = tasks.get(0);
+ List<Record> list0 = recordService.list(new LambdaQueryWrapper<Record>().eq(Record::getCheckTaskId, task.getId()));
+ for (Record record : list0) {
+ String hierarchyNames = record.getHierarchyNames();
+ JSONArray jsonArray = JSONArray.parseArray(hierarchyNames);
+ if(record.getDeviceId()!=null){
+ // 取出倒数第3个
+ String name = jsonArray.getString(jsonArray.size()-3);
- int num = vo.getThisMonth() - vo.getLastMonth();
- if (num != 0) {
- if(vo.getLastMonth()>0){
- Double rate = BigDecimal.valueOf(num).divide(BigDecimal.valueOf(vo.getLastMonth()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue();
- vo.setRate(rate);
+ record.setHierarchyName( name);
}else {
- vo.setRate(100.00d);
+ // 取出倒数第4个
+ String name = jsonArray.getString(jsonArray.size()-4);
+
+ record.setHierarchyName( name);
+ record.setCategory(1);
}
- }else {
- vo.setRate(0.00d);
+
+
}
- resultList.add(vo) ;
+
+
+ Map<String, List<Record>> map = list0.stream().collect(groupingBy(Record::getHierarchyName));
+ for (Map.Entry<String, List<Record>> entry : map.entrySet()) {
+ ProjectHiddenDangerTrendVo vo = new ProjectHiddenDangerTrendVo();
+ vo.setName(entry.getKey());
+ List<Record> value = entry.getValue();
+ long count = value.stream().filter(record -> record.getCategory()==1).count();
+ // 根据value集合中的createTime 选出本月的数据
+ vo.setThisMonth((int) count);
+ vo.setLastMonth(0);
+
+ int num = vo.getThisMonth() - vo.getLastMonth();
+ if (num != 0) {
+ if(vo.getLastMonth()>0){
+ Double rate = BigDecimal.valueOf(num).divide(BigDecimal.valueOf(vo.getLastMonth()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ vo.setRate(rate);
+ }else {
+ vo.setRate(100.00d);
+ }
+ }else {
+ vo.setRate(0.00d);
+ }
+ resultList.add(vo) ;
+ }
+
}
+ if(tasks.size()==2){
+ Task task0 = tasks.get(0);
+ List<Record> list0 = recordService.list(new LambdaQueryWrapper<Record>().eq(Record::getCheckTaskId, task0.getId()));
+ for (Record record : list0) {
+ String hierarchyNames = record.getHierarchyNames();
+ JSONArray jsonArray = JSONArray.parseArray(hierarchyNames);
+ if(record.getDeviceId()!=null){
+ // 取出倒数第3个
+ String name = jsonArray.getString(jsonArray.size()-3);
+
+ record.setHierarchyName( name);
+ }else {
+ // 取出倒数第4个
+ String name = jsonArray.getString(jsonArray.size()-4);
+
+ record.setHierarchyName( name);
+ record.setCategory(1);
+ }
+
+
+ }
+
+
+ Task task1 = tasks.get(1);
+ List<Record> list1 = recordService.list(new LambdaQueryWrapper<Record>().eq(Record::getCheckTaskId, task1.getId()));
+ for (Record record : list1) {
+ String hierarchyNames = record.getHierarchyNames();
+ JSONArray jsonArray = JSONArray.parseArray(hierarchyNames);
+ if(record.getDeviceId()!=null){
+ // 取出倒数第3个
+ String name = jsonArray.getString(jsonArray.size()-3);
+
+ record.setHierarchyName( name);
+ }else {
+ // 取出倒数第4个
+ String name = jsonArray.getString(jsonArray.size()-4);
+
+ record.setHierarchyName( name);
+ record.setCategory(2);
+ }
+ }
+ list0.addAll(list1);
+
+
+ Map<String, List<Record>> map = list0.stream().collect(groupingBy(Record::getHierarchyName));
+ for (Map.Entry<String, List<Record>> entry : map.entrySet()) {
+ ProjectHiddenDangerTrendVo vo = new ProjectHiddenDangerTrendVo();
+ vo.setName(entry.getKey());
+ List<Record> value = entry.getValue();
+ long count = value.stream().filter(record -> record.getCategory()==1).count();
+ // 根据value集合中的createTime 选出本月的数据
+ vo.setThisMonth((int) count);
+ vo.setLastMonth(value.size()-(int) count);
+
+ int num = vo.getThisMonth() - vo.getLastMonth();
+ if (num != 0) {
+ if(vo.getLastMonth()>0){
+ Double rate = BigDecimal.valueOf(num).divide(BigDecimal.valueOf(vo.getLastMonth()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ vo.setRate(rate);
+ }else {
+ vo.setRate(100.00d);
+ }
+ }else {
+ vo.setRate(0.00d);
+ }
+ resultList.add(vo) ;
+ }
+
+ }
+
return resultList;
+
+
+
+
}
@Override
@@ -186,15 +271,20 @@
Map<Integer, String> integerStringMap = projectCategoryCalculator.calculateFixedAssetCategories(projects, Long.valueOf(project.getClientId()), startDate, endDate);
String s = integerStringMap.get(query.getProjectId());
vo.setLevel(s);
+ if(integerStringMap.isEmpty()){
+ vo.setStatus(2);
+ }
}else {
Map<Integer, String> integerStringMap = projectCategoryCalculator.calculateOngoingProjectCategories(projects, Long.valueOf(project.getClientId()), startDate, endDate);
String s = integerStringMap.get(query.getProjectId());
vo.setLevel(s);
+ if(integerStringMap.isEmpty()){
+ vo.setStatus(2);
+ }
}
// 如果没有则沿用上次的
if(vo.getLevel()!=null){
temp=vo.getLevel();
- vo.setStatus(2);
}else {
vo.setLevel(temp);
}
--
Gitblit v1.7.1