From 2a4eb33951f74da6f5e086af60a5b7141bf6a6e3 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 24 一月 2026 18:36:35 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/smart_screen
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java | 50 ++++++++++++----
ruoyi-system/src/main/java/com/ruoyi/system/vo/ProblemDetailVo.java | 59 +++++++++++++++++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/EntrustProjectController.java | 30 +++++----
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java | 35 +++++++----
4 files changed, 137 insertions(+), 37 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/EntrustProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/EntrustProjectController.java
index 395cf91..ca978bd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/EntrustProjectController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/EntrustProjectController.java
@@ -156,6 +156,21 @@
page.setRecords(list);
return R.ok(page);
}
+ @ApiOperation(value = "委托方端隐患详情")
+ @GetMapping("/errorDetail")
+ public R<?> errorDetail(Integer id) {
+ Record record = recordService.getById(id);
+ Integer problemId = record.getProblemId();
+ var res = recordService.getHiddenDangerDetail(problemId);
+ return R.ok(res);
+ }
+ @ApiOperation(value = "获取隐患详情")
+ @GetMapping("/getHiddenDangerDetail/{problemId}")
+ public R<?> getHiddenDangerDetail(@PathVariable Integer problemId) {
+ var record = recordService.getHiddenDangerDetail(problemId);
+ return R.ok(record);
+ }
+
@ApiOperation(value = "设置负责人")
@GetMapping("/setResponsiblePerson")
public R setResponsiblePerson(Integer id , String responsiblePerson) {
@@ -164,20 +179,9 @@
recordService.updateById(record);
return R.ok();
}
-// @ApiOperation(value = "隐患详情")
-// @GetMapping("/errorDetail")
-// public R errorDetail(Integer id) {
-// Record record = recordService.getById(id);
-//
-// return R.ok();
-// }
- @ApiOperation(value = "获取隐患详情")
- @GetMapping("/getHiddenDangerDetail/{id}")
- public R<?> getHiddenDangerDetail(@PathVariable Integer id) {
- var record = recordService.getHiddenDangerDetail(id);
- return R.ok(record);
- }
+
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
index 3c070fa..42e796b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
@@ -1,8 +1,12 @@
package com.ruoyi.web.controller.api;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.icbc.hsm.utils.StringUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.dto.EditHiddenDangerResponsiblePersonDto;
import com.ruoyi.system.enums.DeviceType;
@@ -11,13 +15,12 @@
import com.ruoyi.system.query.*;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.*;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.parsing.Problem;
+import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -365,17 +368,40 @@
@GetMapping("/list")
@ApiImplicitParams({
@ApiImplicitParam(name = "clientId", value = "委托方ID", dataType = "int", paramType = "query"),
- @ApiImplicitParam(name = "projectName", value = "项目名称", dataType = "string", paramType = "query")
+ @ApiImplicitParam(name = "projectName", value = "项目名称", dataType = "string", paramType = "query"),
+ @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "date", paramType = "query"),
+ @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "date", paramType = "query"),
+ @ApiImplicitParam(name = "projectCategory", value = "项目类型 ongoing-在建工程,fixed-固定资产 ", dataType = "string", paramType = "query")
})
- public R<List<Project>> getList(Integer clientId, String projectName) {
- LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<Project>().eq(Project::getDeleted, false);
- if(clientId!=null){
- wrapper.eq(Project::getClientId, clientId);
+ public R<List<Project>> getList(@RequestParam("clientId") Integer clientId, String projectName,
+ @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
+ @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate,
+ @RequestParam("projectCategory") String projectCategory) {
+ LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<Project>().eq(Project::getDeleted, false);
+ if (clientId != null) {
+ queryWrapper.eq(Project::getClientId, clientId);
}
- if(projectName!=null && !projectName.isEmpty()){
- wrapper.like(Project::getName, projectName);
+ if (projectName != null && !projectName.isEmpty()) {
+ queryWrapper.like(Project::getName, projectName);
}
- List<Project> list = projectService.list(wrapper);
+ if (Objects.isNull(startDate)) {
+ // 获取本月日期
+ Date date = new Date();
+ startDate = DateUtil.beginOfMonth(date);
+ }
+ Date finalStartDate = startDate;
+ queryWrapper.and(wrapper -> wrapper
+ .eq(Project::getStatus, 1) // 在建项目
+ .or(w -> w
+ .eq(Project::getStatus, 2) // 已完成项目
+ .ge(Project::getSuccessTime, finalStartDate) // 完成时间 >= 开始日期// 完成时间 <= 结束日期
+ ));
+ if ("ongoing".equals(projectCategory)) {
+ queryWrapper.ne(Project::getType, 2);
+ } else if ("fixed".equals(projectCategory)) {
+ queryWrapper.eq(Project::getType, 2);
+ }
+ List<Project> list = projectService.list(queryWrapper);
return R.ok(list);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
index 80c1689..ed7b47c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
@@ -88,8 +88,7 @@
.eq(Project::getStatus, 1) // 在建项目
.or(w -> w
.eq(Project::getStatus, 2) // 已完成项目
- .ge(Project::getSuccessTime, monthStart) // 完成时间 >= 开始日期
- .le(Project::getSuccessTime, monthEnd) // 完成时间 <= 结束日期
+ .ge(Project::getSuccessTime, monthStart) // 完成时间 >= 开始日期// 完成时间 <= 结束日期
)
);
if (clientId != null) {
@@ -225,16 +224,15 @@
private FixedAssetDashboardVO calculateFixedAssetStatistics(Long clientId, Date monthStart, Date monthEnd) {
FixedAssetDashboardVO vo = new FixedAssetDashboardVO();
- // 查询固定资产项目(usage_type 表示项目用途类型,假设 1 表示固定资产)
+ // 查询固定资产项目
LambdaQueryWrapper<Project> projectWrapper = new LambdaQueryWrapper<>();
projectWrapper.eq(Project::getDeleted, false)
- .eq(Project::getUsageType, 1) // 固定资产
+ .eq(Project::getType, 2) // 固定资产
.and(wrapper -> wrapper
.eq(Project::getStatus, 1) // 在建项目
.or(w -> w
.eq(Project::getStatus, 2) // 已完成项目
.ge(Project::getSuccessTime, monthStart) // 完成时间 >= 开始日期
- .le(Project::getSuccessTime, monthEnd) // 完成时间 <= 结束日期
)
);
if (clientId != null) {
@@ -443,24 +441,37 @@
log.debug("设备按类型分组完成,共 {} 种类型", deviceGroupMap.size());
// 查询设备检查记录
- List<Integer> deviceUsageIds = devices.stream()
- .map(DeviceUsage::getId)
- .collect(Collectors.toList());
+ // 建立 device.id 到 device_usage.id 的映射
+ Map<Integer, List<Integer>> deviceToUsageMap = devices.stream()
+ .filter(d -> d.getDeviceId() != null)
+ .collect(Collectors.groupingBy(
+ DeviceUsage::getDeviceId,
+ Collectors.mapping(DeviceUsage::getId, Collectors.toList())
+ ));
+
Map<Integer, Boolean> deviceInspectionMap = new HashMap<>();
- if (!deviceUsageIds.isEmpty()) {
+ if (!deviceIds.isEmpty()) {
LambdaQueryWrapper<Record> recordWrapper = new LambdaQueryWrapper<>();
recordWrapper.eq(Record::getRecordType, "error")
.isNotNull(Record::getDeviceId)
- .in(Record::getDeviceId, deviceUsageIds)
+ .in(Record::getDeviceId, deviceIds)
.eq(Record::getDeleted, false);
List<Record> records = recordMapper.selectList(recordWrapper);
+ // 获取已检查的 device.id 集合
Set<Integer> inspectedDeviceIds = records.stream()
.map(Record::getDeviceId)
.collect(Collectors.toSet());
- for (Integer deviceUsageId : deviceUsageIds) {
- deviceInspectionMap.put(deviceUsageId, inspectedDeviceIds.contains(deviceUsageId));
+ // 通过映射关系,将 device.id 的检查状态映射到 device_usage.id
+ for (Map.Entry<Integer, List<Integer>> entry : deviceToUsageMap.entrySet()) {
+ Integer deviceId = entry.getKey();
+ boolean isInspected = inspectedDeviceIds.contains(deviceId);
+
+ // 将该设备的检查状态应用到所有使用该设备的 device_usage 记录
+ for (Integer usageId : entry.getValue()) {
+ deviceInspectionMap.put(usageId, isInspected);
+ }
}
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProblemDetailVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProblemDetailVo.java
new file mode 100644
index 0000000..908c0ee
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProblemDetailVo.java
@@ -0,0 +1,59 @@
+package com.ruoyi.system.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.factory.parsing.Problem;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * DTO for {@link Problem}
+ */
+@ApiModel(value = "隐患详情VO")
+@Data
+public class ProblemDetailVo {
+
+ @ApiModelProperty(value = "id")
+ Integer id;
+ @ApiModelProperty(value = "责任人")
+ String responsiblePerson;
+
+ @ApiModelProperty(value = "计划名称")
+ String planName;
+
+ @ApiModelProperty(value = "项目名称")
+ String hierarchyPath;
+
+ @ApiModelProperty(value = "检查内容")
+ String hierarchyName;
+ @ApiModelProperty(value = "问题部位")
+ String problemPart;
+ @ApiModelProperty(value = "规范与条款")
+ private List<String> specificTerms;
+ @ApiModelProperty(value = "建议措施")
+ private List<String> suggestActions;
+ @ApiModelProperty(value = "问题数量集合")
+ List<String> numberFactors;
+ @ApiModelProperty(value = "数值")
+ Float numValue;
+
+
+ @ApiModelProperty(value = "点评范式")
+ String reviewParadigm;
+
+
+ @ApiModelProperty(value = "责任部门")
+ String responsibleDepartment;
+
+
+ @ApiModelProperty(value = "正确做法")
+ String correctPractice;
+
+ String numberFactorsStr;
+
+
+}
\ No newline at end of file
--
Gitblit v1.7.1