liujie
2026-01-20 86c17b1a6af4bcac0b06a3c2f9680bfb4b393210
大屏项目接口
4个文件已添加
6个文件已修改
226 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/enums/DeviceType.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProjectInfoMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/SelectOptionVo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/IOptionVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ProjectInfoService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/RecordService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/ProjectHiddenDangerTrendVo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/ProjectInfoMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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.*;
@@ -270,4 +271,18 @@
        return R.ok(list);
    }
    @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) {
        List<ProjectHiddenDangerTrendVo> list = projectInfoService.getProjectHiddenDangerTrend(projectId);
        return R.ok(list);
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/enums/DeviceType.java
New file
@@ -0,0 +1,70 @@
package com.ruoyi.system.enums;
import com.ruoyi.system.service.IOptionVo;
import lombok.Getter;
@Getter
public enum DeviceType implements IOptionVo {
    TOWER_CRANE("塔式起重机"),
    CONSTRUCTION_LIFT("施工升降机"),
    MATERIAL_HOIST("物料提升机"),
    BRIDGE_CRANE("桥式起重机"),
    SUSPENDED_SCAFFOLDING("附着式升降脚手架"),
    MOBILE_CRANE("流动式起重机"),
    HIGH_ALTITUDE_BASKET("高处作业吊篮"),
    GANTRY_CRANE("门式起重机"),
    GANTRY_TROLLEY_CRANE("架桥机"),
    OTHER("其他类型");
    private final String desc;
    DeviceType(String desc) {
        this.desc = desc;
    }
    public static DeviceType getByDescription(String description) {
        for (DeviceType deviceType : DeviceType.values()) {
            if (deviceType.desc.equals(description)) {
                return deviceType;
            }
        }
        return null;
    }
    @Override
    public String getOptionCode() {
        return name();
    }
    @Override
    public String getOptionName() {
        return desc;
    }
    public String hierarchyPath() {
        switch (this) {
            case TOWER_CRANE:
                return "/0";
            case CONSTRUCTION_LIFT:
                return "/1";
            case MATERIAL_HOIST:
                return "/5";
            case BRIDGE_CRANE:
                return "/3";
            case SUSPENDED_SCAFFOLDING:
                return "/7";
            case MOBILE_CRANE:
                return "/4";
            case HIGH_ALTITUDE_BASKET:
                return "/8";
            case GANTRY_CRANE:
                return "/6";
            case GANTRY_TROLLEY_CRANE:
                return "/2";
            case OTHER:
            default:
                return "/";
        }
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProjectInfoMapper.java
@@ -2,6 +2,10 @@
import com.ruoyi.system.model.ProjectInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.model.Record;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +17,6 @@
 */
public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
    List<Record> getProjectHiddenDangerTrend(@Param("projectId") Integer projectId, @Param("startTime") String startTime, @Param("endTime") String endTime);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/SelectOptionVo.java
New file
@@ -0,0 +1,46 @@
package com.ruoyi.system.model;
import com.ruoyi.system.service.IOptionVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @ClassName SelectOptionBo
 * @Description
 * @Author daisyli
 * @Date 2023/9/11
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "下拉框选项")
public class SelectOptionVo {
    @ApiModelProperty(value = "编码")
    String code;
    @ApiModelProperty(value = "名称")
    String name;
    public static <T> List<SelectOptionVo> buildOptions(String title, T[] list)
    {
        return buildOptions(title, Arrays.asList(list));
    }
    public static <T> List<SelectOptionVo> buildOptions(String title, List<T> list)  {
        List<SelectOptionVo> data = list.stream().map(item ->
                new SelectOptionVo(((IOptionVo)item).getOptionCode(),
                        ((IOptionVo)item).getOptionName())).collect(Collectors.toList());
        if(StringUtils.isNotBlank(title))
            data.add(0, new SelectOptionVo("", title));
        return data;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/IOptionVo.java
New file
@@ -0,0 +1,17 @@
package com.ruoyi.system.service;
public interface IOptionVo {
    /**
     * 获取选项编码
     * @return
     */
    String getOptionCode();
    /**
     * 获取选项名称
     * @return
     */
    String getOptionName();
}
ruoyi-system/src/main/java/com/ruoyi/system/service/ProjectInfoService.java
@@ -2,6 +2,9 @@
import com.ruoyi.system.model.ProjectInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.vo.ProjectHiddenDangerTrendVo;
import java.util.List;
/**
 * <p>
@@ -13,4 +16,6 @@
 */
public interface ProjectInfoService extends IService<ProjectInfo> {
    List<ProjectHiddenDangerTrendVo> getProjectHiddenDangerTrend(Integer projectId);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/RecordService.java
@@ -27,4 +27,6 @@
    ProblemVo getHiddenDangerDetail(Integer problemId);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectInfoServiceImpl.java
@@ -1,10 +1,23 @@
package com.ruoyi.system.service.impl;
import com.alibaba.fastjson2.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.system.model.ProjectInfo;
import com.ruoyi.system.mapper.ProjectInfoMapper;
import com.ruoyi.system.model.Record;
import com.ruoyi.system.service.ProjectInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.service.RecordService;
import com.ruoyi.system.vo.ProjectHiddenDangerTrendVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.List;
import java.util.Map;
import static java.util.stream.Collectors.groupingBy;
/**
 * <p>
@@ -17,4 +30,27 @@
@Service
public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements ProjectInfoService {
    @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);
            // 取出倒数第4个
            String name = jsonArray.getString(jsonArray.size()-4);
            record.setHierarchyName( name);
        }
        return List.of();
    }
    public static void main(String[] args) {
        LocalDate lastMonth = LocalDate.now().minusMonths(1).with(TemporalAdjusters.firstDayOfMonth());
        System.out.println(LocalDate.now()+" 23:59:59");
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/ProjectHiddenDangerTrendVo.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.system.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("项目各分享隐患趋势Vo")
public class ProjectHiddenDangerTrendVo {
    @ApiModelProperty("隐患名称")
    private String name;
    @ApiModelProperty("本月数量")
    private Integer thisMonth;
    @ApiModelProperty("上月数量")
    private Integer lastMonth;
    @ApiModelProperty("环比趋势")
    private String rate;
}
ruoyi-system/src/main/resources/mapper/system/ProjectInfoMapper.xml
@@ -26,5 +26,12 @@
    <sql id="Base_Column_List">
        id, create_time, deleted, name, update_time, dangerous_options, detail, progress, progress_this_season, super_dangerous_options, hazard_source, update_date, creator_id, check_task_id, project_id, hazard_source_types
    </sql>
    <select id="getProjectHiddenDangerTrend" resultType="com.ruoyi.system.model.Record"
          >
        select t2.id,t2.hierarchy_names,t2.create_time from task t1
        left join record t2 on t1.id=t2.check_task_id
        where t1.project_id=#{projectId} and t1.deleted=0
        and t2.create_time between #{startTime} and #{endTime}
    </select>
</mapper>