Zimo 1 тиждень тому
батько
коміт
d278b97356

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/danger/IotDangerSourceController.java

@@ -127,9 +127,10 @@ public class IotDangerSourceController {
             IotMeasureBookController.ClassifyMeasureBookStatVo statVo = new IotMeasureBookController.ClassifyMeasureBookStatVo();
             IotMeasureBookController.ClassifyMeasureBookStatVo statVo = new IotMeasureBookController.ClassifyMeasureBookStatVo();
             statVo.setClassify(f.getLabel());
             statVo.setClassify(f.getLabel());
             statVo.setCount(value);
             statVo.setCount(value);
+            statVo.setSort(f.getSort());
             results.add(statVo);
             results.add(statVo);
         }));
         }));
 
 
-        return success(ImmutableMap.of("classify", results));
+        return success(ImmutableMap.of("classify", results.stream().sorted(Comparator.comparing(IotMeasureBookController.ClassifyMeasureBookStatVo::getSort))));
     }
     }
 }
 }

+ 43 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/hazard/IotHazardController.java

@@ -12,10 +12,16 @@ import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardPage
 import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardRectifyVO;
 import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardRectifyVO;
 import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.measure.IotMeasureBookController;
 import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.hazard.IotHazardDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.hazard.IotHazardDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.qhse.hazard.IotHazardMapper;
 import cn.iocoder.yudao.module.pms.service.qhse.hazard.IotHazardService;
 import cn.iocoder.yudao.module.pms.service.qhse.hazard.IotHazardService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import cn.iocoder.yudao.module.system.service.dict.DictDataService;
+import com.google.common.collect.ImmutableMap;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,11 +32,11 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -47,6 +53,12 @@ public class IotHazardController {
     private IotHazardService iotHazardService;
     private IotHazardService iotHazardService;
     @Autowired
     @Autowired
     private DeptApi deptApi;
     private DeptApi deptApi;
+    @Autowired
+    private IotHazardMapper iotHazardMapper;
+    @Autowired
+    private DeptService deptService;
+    @Autowired
+    private DictDataService dictDataService;
 
 
     @PostMapping("/create")
     @PostMapping("/create")
     @Operation(summary = "创建QHSE隐患排查及整改")
     @Operation(summary = "创建QHSE隐患排查及整改")
@@ -125,4 +137,33 @@ public class IotHazardController {
                         BeanUtils.toBean(list, IotHazardRespVO.class));
                         BeanUtils.toBean(list, IotHazardRespVO.class));
     }
     }
 
 
+    @GetMapping("/stat")
+    @PermitAll
+    public CommonResult<ImmutableMap<String, Object>> statHazard(Long deptId) {
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(deptId)) {
+            ids = deptService.getChildDeptIdListFromCache(deptId);
+            ids.add(deptId);
+        }
+        IotHazardPageReqVO pageReqVO = new IotHazardPageReqVO();
+        List<IotHazardDO> iotHazardDOS = iotHazardMapper.selectListByDept(pageReqVO, ids);
+        int total = iotHazardDOS.size();
+        pageReqVO.setStatus("todo");
+        int todoSize = iotHazardMapper.selectListByDept(pageReqVO, ids).size();
+        List<IotMeasureBookController.ClassifyMeasureBookStatVo> results = new ArrayList<>();
+        List<DictDataDO> dictType = dictDataService.getDictDataListByDictType("hazard_soure");
+        Map<String, Long> sourceMap = iotHazardDOS.stream().filter(it -> Objects.nonNull(it.getSource()))
+                .collect(Collectors.groupingBy(
+                        IotHazardDO::getSource,
+                        Collectors.counting()  // 直接统计每个分组的数量
+                ));
+        sourceMap.forEach((key, value) -> dictType.stream().filter(e -> e.getValue().equals(key)).findFirst().ifPresent(f ->{
+            IotMeasureBookController.ClassifyMeasureBookStatVo statVo = new IotMeasureBookController.ClassifyMeasureBookStatVo();
+            statVo.setClassify(f.getLabel());
+            statVo.setCount(value);
+            results.add(statVo);
+        }));
+        return success(ImmutableMap.of("total",total,"todo",todoSize,"source", results));
+    }
+
 }
 }

+ 8 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/hazard/vo/IotHazardPageReqVO.java

@@ -1,10 +1,12 @@
 package cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo;
 package cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo;
 
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -43,4 +45,7 @@ public class IotHazardPageReqVO extends PageParam {
     @Schema(description = "备注", example = "你说的对")
     @Schema(description = "备注", example = "你说的对")
     private String remark;
     private String remark;
 
 
+    @Schema(description = "来源")
+    private String source;
+
 }
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/measure/IotMeasureBookController.java

@@ -170,6 +170,7 @@ public class IotMeasureBookController {
             ClassifyMeasureBookStatVo statVo = new ClassifyMeasureBookStatVo();
             ClassifyMeasureBookStatVo statVo = new ClassifyMeasureBookStatVo();
             statVo.setClassify(f.getLabel());
             statVo.setClassify(f.getLabel());
             statVo.setCount(value);
             statVo.setCount(value);
+            statVo.setSort(f.getSort());
             results.add(statVo);
             results.add(statVo);
         }));
         }));
 
 
@@ -180,5 +181,6 @@ public class IotMeasureBookController {
     public static class ClassifyMeasureBookStatVo {
     public static class ClassifyMeasureBookStatVo {
         private String classify;
         private String classify;
         private Long count;
         private Long count;
+        private Integer sort;
     }
     }
 }
 }

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/qhse/hazard/IotHazardMapper.java

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.qhse.hazard.vo.IotHazardPage
 import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.hazard.IotHazardDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.hazard.IotHazardDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
+import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
 /**
 /**
@@ -22,6 +23,7 @@ public interface IotHazardMapper extends BaseMapperX<IotHazardDO> {
                 .eqIfPresent(IotHazardDO::getStatus, reqVO.getStatus())
                 .eqIfPresent(IotHazardDO::getStatus, reqVO.getStatus())
                 .eqIfPresent(IotHazardDO::getAddress, reqVO.getAddress())
                 .eqIfPresent(IotHazardDO::getAddress, reqVO.getAddress())
                 .eqIfPresent(IotHazardDO::getProblem, reqVO.getProblem())
                 .eqIfPresent(IotHazardDO::getProblem, reqVO.getProblem())
+                .eqIfPresent(IotHazardDO::getSource, reqVO.getSource())
                 .eqIfPresent(IotHazardDO::getHazardFile, reqVO.getHazardFile())
                 .eqIfPresent(IotHazardDO::getHazardFile, reqVO.getHazardFile())
                 .eqIfPresent(IotHazardDO::getRectifyDesc, reqVO.getRectifyDesc())
                 .eqIfPresent(IotHazardDO::getRectifyDesc, reqVO.getRectifyDesc())
                 .eqIfPresent(IotHazardDO::getRectifyFile, reqVO.getRectifyFile())
                 .eqIfPresent(IotHazardDO::getRectifyFile, reqVO.getRectifyFile())
@@ -31,4 +33,10 @@ public interface IotHazardMapper extends BaseMapperX<IotHazardDO> {
                 .orderByDesc(IotHazardDO::getId));
                 .orderByDesc(IotHazardDO::getId));
     }
     }
 
 
+    default List<IotHazardDO> selectListByDept(IotHazardPageReqVO reqVO, Set<Long> ids) {
+        return selectList(new LambdaQueryWrapperX<IotHazardDO>()
+                .eqIfPresent(IotHazardDO::getStatus, reqVO.getStatus())
+                .eq(IotHazardDO::getDeleted, false)
+                .inIfPresent(IotHazardDO::getDeptId, ids));
+    }
 }
 }