liujie
2026-01-22 dea26c4551583250a43566a2cef6c0ad7580b4f1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.dto.EditHiddenDangerResponsiblePersonDto;
import com.ruoyi.system.enums.DeviceType;
import com.ruoyi.system.model.*;
import com.ruoyi.system.model.Record;
import com.ruoyi.system.query.*;
@@ -12,7 +13,6 @@
import com.ruoyi.system.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.var;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.parsing.Problem;
@@ -22,6 +22,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -63,6 +64,14 @@
    private PlanService planService;
    @ApiOperation(value = "获取项目列表",response = Project.class)
    @GetMapping("/getProjectList")
    public R<List<Project>> getProjectList(@RequestParam Integer clientId) {
        List<Project> list = projectService.list(new LambdaQueryWrapper<Project>().eq(Project::getDeleted, false).eq(Project::getClientId, clientId).orderByDesc(Project::getCreateTime));
        return R.ok(list);
    }
    @ApiOperation(value = "获取项目详情",response = Project.class)
    @GetMapping("/getProjectDetail/{id}")
@@ -74,7 +83,7 @@
        List<String> properties = deviceUsageService.getDeviceUsageList(id);
        projectVo.setProperties( properties);
        ProjectInfo projectInfo = projectInfoService.getOne(new LambdaUpdateWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId, id));
        ProjectInfo projectInfo = projectInfoService.getOne(new LambdaUpdateWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId, id).eq(ProjectInfo::getDeleted,false).orderByDesc(ProjectInfo::getCreateTime).last("limit 1"));
        if(projectInfo!=null){
            projectVo.setProgress(projectInfo.getProgress());
        }
@@ -243,4 +252,83 @@
        return R.ok(vo);
    }
    @ApiOperation(value = "获取项目大屏最新重大风险源",response = ProjectInfo.class)
    @GetMapping("/getProjectDangerousSource")
    public R<ProjectInfo> getProjectDangerousSource(@RequestParam Integer projectId) {
        ProjectInfo projectInfo = projectInfoService.getOne(new LambdaQueryWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId,projectId).eq(ProjectInfo::getDeleted, false).orderByDesc(ProjectInfo::getCreateTime).last("limit 1"));
        return R.ok(projectInfo);
    }
    @ApiOperation(value = "获取项目重大风险源列表")
    @PostMapping("/getProjectDangerousSourceList")
    public R<Page<ProjectInfo>> getProjectDangerousSourceList(@RequestBody @Valid ProjectDangerousSourceListQuery query) {
        Page<ProjectInfo> page = new Page<>(query.getPageNum(), query.getPageSize());
        LambdaQueryWrapper<ProjectInfo> wrapper = new LambdaQueryWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId, query.getProjectId()).eq(ProjectInfo::getDeleted, false);
        if(query.getStartTime()!=null && !query.getStartTime().isEmpty()){
            wrapper.ge(ProjectInfo::getCreateTime, query.getStartTime());
        }
        if(query.getEndTime()!=null && !query.getEndTime().isEmpty()){
            wrapper.le(ProjectInfo::getCreateTime, query.getEndTime());
        }
        if(query.getContent()!=null && !query.getContent().isEmpty()){
            wrapper.like(ProjectInfo::getDetail, query.getContent());
        }
        Page<ProjectInfo> list = projectInfoService.page(page,wrapper);
        return R.ok(list);
    }
    @ApiOperation(value = "获取项目重大风险源详情")
    @GetMapping("/getProjectDangerousSourceDetail/{id}")
    public R<?> getProjectDangerousSourceDetail(@PathVariable Integer id) {
        ProjectInfo projectInfo = projectInfoService.getById(id);
        return R.ok(projectInfo);
    }
    @ApiOperation(value = "设备类型")
    @GetMapping("/deviceTypes")
    public R<?> deviceTypeOptions(@RequestParam(value = "title", required = false) String title) {
        return R.ok(SelectOptionVo.buildOptions(title, DeviceType.values()));
    }
    @ApiOperation(value = "各分项隐患趋势")
    @GetMapping("/getProjectHiddenDangerTrend")
    public R<List<ProjectHiddenDangerTrendVo>> getProjectHiddenDangerTrend(@RequestParam Integer projectId,@RequestParam(value = "desc", required = true) Boolean desc,@RequestParam(value = "type", required = true)Integer type) {
        List<ProjectHiddenDangerTrendVo> list = projectInfoService.getProjectHiddenDangerTrend(projectId);
        if(type==1){
            if(desc){
                list = list.stream().sorted(Comparator.comparingInt(ProjectHiddenDangerTrendVo::getThisMonth).reversed()).toList();
            }else {
                list = list.stream().sorted(Comparator.comparingInt(ProjectHiddenDangerTrendVo::getThisMonth)).toList();
            }
        }else {
            if(desc){
                list = list.stream().sorted(Comparator.comparingDouble(ProjectHiddenDangerTrendVo::getRate).reversed()).toList();
            }else {
                list = list.stream().sorted(Comparator.comparingDouble(ProjectHiddenDangerTrendVo::getRate)).toList();
            }
        }
        return R.ok(list);
    }
    @ApiOperation(value = "各分项隐患趋势列表")
    @PostMapping("/getProjectHiddenDangerTrendList")
    public R<List<ProjectHiddenDangerList>> getProjectHiddenDangerTrendList(@RequestBody @Valid ProjectHiddenDangerTrendListQuery query) {
        List<ProjectHiddenDangerList> list = projectInfoService.getProjectHiddenDangerTrendList(query);
        return  R.ok(list);
    }
    @ApiOperation(value = "大屏风险趋势")
    @PostMapping("/getProjectDangerousTrend")
    public R<List<ProjectDangerousTrendVo>> getProjectDangerousTrend(@RequestBody @Valid ProjectDangerousTrendQuery query) {
        List<ProjectDangerousTrendVo> list = projectInfoService.getProjectDangerousTrend(query);
        return R.ok(list);
    }
}