浏览代码

设备类型报表

2 年之前
父节点
当前提交
694c619535

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/dto/sb/SbTypeDTO.java

@@ -21,6 +21,10 @@ import java.util.List;
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = true)
 public class SbTypeDTO extends BaseDTO implements Serializable {
+    private Integer useType;
+
+    private List<String> idList;
+
     private List<String> parentList;
 
     private List<String> nameList;

+ 5 - 0
platform-dao/src/main/java/com/platform/dao/mapper/sb/SbTypeMapper.java

@@ -18,7 +18,12 @@ import java.util.List;
  */
 @Component
 public interface SbTypeMapper extends MyMapper<SbType> {
+    SbInfoTypeReportVO2 getSbNums(SbTypeDTO dto);
+
+    List<String> getTypeIds(SbTypeDTO dto);
+
     List<SbInfoTypeReportVO2> getSbTypeNum(SbTypeDTO dto);
+
     /**
      * 查询列表
      *

+ 4 - 4
platform-dao/src/main/java/com/platform/dao/vo/report/SbInfoTypeReportVO2.java

@@ -16,7 +16,7 @@ import java.util.List;
 @Accessors(chain = true)
 public class SbInfoTypeReportVO2 implements Serializable {
     private static final long serialVersionUID = 1L;
-    private String id;
+//    private String id;
     /**
      * 每月总数
      */
@@ -30,11 +30,11 @@ public class SbInfoTypeReportVO2 implements Serializable {
     /**
      * 占比
      */
-    @Excel(name = "占比", orderNum = "3")
-    private double rate;
+//    @Excel(name = "占比", orderNum = "3")
+//    private double rate;
 
     /**
      * 明细列表
      */
-    List<SbTypeVO> detailList;
+//    List<SbTypeVO> detailList;
 }

+ 39 - 3
platform-dao/src/main/resources/mapper/sb/SbTypeMapper.xml

@@ -42,16 +42,16 @@
 
     <select id="getSbTypeNum" parameterType="com.platform.dao.dto.sb.SbTypeDTO"
             resultType="com.platform.dao.vo.report.SbInfoTypeReportVO2">
-        select count(1) as totalNum,parent_id as id from t_sb_type
+        select count(1) as totalNum,t1.parent_id as id,t2.name as typeName from t_sb_type t1 left join t_sb_type t2 on t1.parent_id = t2.id
         <where>
             <if test="parentList!=null and parentList.size>0">
-                AND parent_id in
+                AND t1.parent_id in
                 <foreach item="item" index="index" collection="parentList" open="(" close=")" separator=",">
                     #{item}
                 </foreach>
             </if>
         </where>
-        group by parent_id
+        group by t1.parent_id
     </select>
 
     <select id="selectById" parameterType="java.lang.Object"
@@ -85,4 +85,40 @@
         </where>
     </select>
 
+    <select id="getTypeIds" resultType="java.lang.String"
+    parameterType="com.platform.dao.dto.sb.SbTypeDTO"
+    >
+        select id from t_sb_type
+        <where>
+        <if test="parentList!=null and parentList.size>0">
+            and parent_id in
+            <foreach collection="parentList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        </where>
+    </select>
+
+    <select id="getSbNums" resultType="com.platform.dao.vo.report.SbInfoTypeReportVO2"
+    parameterType="com.platform.dao.dto.sb.SbTypeDTO">
+    select count(1) as totalNum,type2.name as typeName
+    from t_sb_type type inner join t_sb_info info on
+    type.id = info.type_id left join t_sb_type type2 on type.parent_id = type2.id
+    <where>
+    <if test="idList!=null and idList.size>0">
+        and type.id in
+        <foreach collection="idList" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </if>
+
+    <if test="useType!=null">
+        and info.use_type=#{useType}
+    </if>
+    </where>
+
+    </select>
+
+
+
 </mapper>

+ 7 - 1
platform-rest/src/main/java/com/platform/rest/controller/report/SbInfoReportController.java

@@ -73,10 +73,16 @@ public class SbInfoReportController {
      * @return R
      */
     @SysLog("类型数量统计报表")
-    @GetMapping("/getSbTypeReport")
+    @GetMapping("/getSbTypeReport1")
     public R getSbTypeReport(SbTypeDTO dto) {
         return new R(sbInfoService.getTypeReport(dto));
     }
 
+    @SysLog("设备数量统计报表")
+    @GetMapping("/getSbTypeReport")
+    public R getSbNumReport(SbTypeDTO dto) {
+        return new R(sbInfoService.getSbNumReport(dto));
+    }
+
 
 }

+ 2 - 0
platform-service/src/main/java/com/platform/service/sb/SbInfoService.java

@@ -24,6 +24,8 @@ import java.util.Map;
  */
 public interface SbInfoService extends IBaseService<SbInfo, SbInfoDTO> {
 
+    List<SbInfoTypeReportVO2> getSbNumReport(SbTypeDTO dto);
+
     List<SbInfoTypeReportVO2> getTypeReport(SbTypeDTO dto);
 
     /**

+ 123 - 19
platform-service/src/main/java/com/platform/service/sb/impl/SbInfoServiceImpl.java

@@ -526,12 +526,21 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
 
 
     @Override
-    public List<SbInfoTypeReportVO2> getTypeReport(SbTypeDTO model) {
+    public List<SbInfoTypeReportVO2> getSbNumReport(SbTypeDTO model) {
         String id = model.getId();
         model = new SbTypeDTO();
         model.setParentId(id);
         List<SbTypeVO> result = sbTypeMapper.selectVOList(model);
+        for (int i=0;i<result.size();i++){
+            if (result.get(i).getId().equals(model.getParentId())){
+                result.remove(i);
+                i--;
+            }
+
+        }
         SbType sbType = sbTypeMapper.selectById(model.getParentId());
+        //如果是父设备是机械,则需要将动设备,静设备和特种设备手动挂在机械下面
+        List<SbInfoTypeReportVO2> sbInfoTypeReportVO2s = new ArrayList<>();
         if (sbType.getName().equals("机械")){
             //二级菜单,需将动设备,静设备加进来
             List<String> list = new ArrayList<>();
@@ -539,28 +548,123 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
             list.add("机械-静设备");
             model = new SbTypeDTO();
             model.setNameList(list);
-            List result2 = sbTypeMapper.selectVOList(model);
-            result.addAll(result2);
-        }
-        List<String> list = result.stream().map(SbTypeVO::getId).collect(Collectors.toList());
-        SbTypeDTO sbTypeDTO = new SbTypeDTO();
-        sbTypeDTO.setParentList(list);
-        List<SbTypeVO> sbTypeVOS= sbTypeMapper.selectVOList(sbTypeDTO);
-        List<SbInfoTypeReportVO2> reportVO2s = sbTypeMapper.getSbTypeNum(sbTypeDTO);
-
-        for (SbInfoTypeReportVO2 reportVO2:reportVO2s){
-            List<SbTypeVO> typeVOS = new ArrayList<>();
-                for (SbTypeVO vo:sbTypeVOS){
-                    if (vo.getParentId().equals(reportVO2.getId())){
-                        typeVOS.add(vo);
-                        reportVO2.setTypeName(vo.getName());
-                    }
+            List<SbTypeVO> sbTypeVOS = sbTypeMapper.selectVOList(model);
+
+            model.setNameList(list);
+            Map<String,List<String>> typeMap = new HashMap<>();
+
+            for (SbTypeVO vo:sbTypeVOS) {
+                List<String> ids = new ArrayList<>();
+                List types = new ArrayList();
+                ids.add(vo.getId());
+                do {
+                    model = new SbTypeDTO();
+                    model.setParentList(ids);
+                    List<String> typeIdList =sbTypeMapper.getTypeIds(model);
+                    if (typeIdList!=null&&typeIdList.size()>0){
+                        types.addAll(typeIdList);
+                        ids = typeIdList;
+                    }else {
+                        break;
+                    }
+                } while (true);
+                if (types.size()>0) {
+                    typeMap.put(vo.getName(), types);
                 }
-                reportVO2.setDetailList(typeVOS);
             }
 
+            Set<String> keyset = typeMap.keySet();
+            for (String name:keyset){
+                model = new SbTypeDTO();
+                model.setIdList(typeMap.get(name));
+                SbInfoTypeReportVO2 reportVO2s = sbTypeMapper.getSbNums(model);
+                sbInfoTypeReportVO2s.add(reportVO2s);
+            }
+            //再将特种设备加进来
+            model = new SbTypeDTO();
+            model.setUseType(5);
+            SbInfoTypeReportVO2 report = sbTypeMapper.getSbNums(model);
+            report.setTypeName("特种设备");
+            sbInfoTypeReportVO2s.add(report);
+
+        }else {
+            Map<String,List<String>> typeMap = new HashMap<>();
+            for (SbTypeVO vo:result) {
+                List<String> ids = new ArrayList<>();
+                List types = new ArrayList();
+                ids.add(vo.getId());
+                do {
+                    model = new SbTypeDTO();
+                    model.setParentList(ids);
+                    List<String> typeIdList =sbTypeMapper.getTypeIds(model);
+                    if (typeIdList!=null&&typeIdList.size()>0){
+                        types.addAll(typeIdList);
+                        ids = typeIdList;
+                    }else {
+                        break;
+                    }
+                } while (true);
+                if (types.size()>0) {
+                    typeMap.put(vo.getName(), types);
+                }
+            }
+            Set<String> keyset = typeMap.keySet();
+            for (String name:keyset){
+                model = new SbTypeDTO();
+                model.setIdList(typeMap.get(name));
+                SbInfoTypeReportVO2 reportVO2s = sbTypeMapper.getSbNums(model);
+                sbInfoTypeReportVO2s.add(reportVO2s);
+            }
+        }
+        return sbInfoTypeReportVO2s;
+    }
 
-        return reportVO2s;
+    @Override
+    public List<SbInfoTypeReportVO2> getTypeReport(SbTypeDTO model) {
+//        String id = model.getId();
+//        model = new SbTypeDTO();
+//        model.setParentId(id);
+//        List<SbTypeVO> result = sbTypeMapper.selectVOList(model);
+//        for (int i=0;i<result.size();i++){
+//            if (result.get(i).getId().equals(model.getParentId())){
+//                result.remove(i);
+//                i--;
+//            }
+//
+//        }
+//        SbType sbType = sbTypeMapper.selectById(model.getParentId());
+//        if (sbType.getName().equals("机械")){
+//            //二级菜单,需将动设备,静设备加进来
+//            List<String> list = new ArrayList<>();
+//            list.add("机械-动设备");
+//            list.add("机械-静设备");
+//            model = new SbTypeDTO();
+//            model.setNameList(list);
+//            List result2 = sbTypeMapper.selectVOList(model);
+//            result.addAll(result2);
+//        }
+//        List<String> list = result.stream().map(SbTypeVO::getId).collect(Collectors.toList());
+//        List<SbInfoTypeReportVO2> reportVO2s = new ArrayList<>();
+//        if (list!=null&&list.size()>0) {
+//            SbTypeDTO sbTypeDTO = new SbTypeDTO();
+//            sbTypeDTO.setParentList(list);
+//            List<SbTypeVO> sbTypeVOS = sbTypeMapper.selectVOList(sbTypeDTO);
+//            reportVO2s = sbTypeMapper.getSbTypeNum(sbTypeDTO);
+//
+//            for (SbInfoTypeReportVO2 reportVO2 : reportVO2s) {
+//                List<SbTypeVO> typeVOS = new ArrayList<>();
+//                for (SbTypeVO vo : sbTypeVOS) {
+//                    if (vo.getParentId().equals(reportVO2.getId())) {
+//                        typeVOS.add(vo);
+////                        reportVO2.setTypeName(vo.getName());
+//                    }
+//                }
+//                reportVO2.setDetailList(typeVOS);
+//            }
+//        }
+
+
+        return null;
     }
 
     @Override