| | |
| | | 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.*; |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | 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 "/"; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | 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> |
| | |
| | | */ |
| | | public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> { |
| | | |
| | | List<Record> getProjectHiddenDangerTrend(@Param("projectId") Integer projectId, @Param("startTime") String startTime, @Param("endTime") String endTime); |
| | | |
| | | } |
| New file |
| | |
| | | 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; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.ruoyi.system.service; |
| | | |
| | | public interface IOptionVo { |
| | | |
| | | /** |
| | | * 获取选项编码 |
| | | * @return |
| | | */ |
| | | String getOptionCode(); |
| | | |
| | | /** |
| | | * 获取选项名称 |
| | | * @return |
| | | */ |
| | | String getOptionName(); |
| | | |
| | | } |
| | |
| | | |
| | | import com.ruoyi.system.model.ProjectInfo; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.system.vo.ProjectHiddenDangerTrendVo; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | */ |
| | | public interface ProjectInfoService extends IService<ProjectInfo> { |
| | | |
| | | List<ProjectHiddenDangerTrendVo> getProjectHiddenDangerTrend(Integer projectId); |
| | | |
| | | } |
| | |
| | | ProblemVo getHiddenDangerDetail(Integer problemId); |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | 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> |
| | |
| | | @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"); |
| | | } |
| | | } |
| New file |
| | |
| | | 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; |
| | | } |
| | |
| | | <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> |