Bladeren bron

设备看板调整

wy 8 maanden geleden
bovenliggende
commit
21e287fa9b

+ 10 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/dto/EquipTotalityDTO.java

@@ -8,6 +8,8 @@ public class EquipTotalityDTO {
 
 
     private int use;
     private int use;
 
 
+    private int scrap;
+
     public int getStop() {
     public int getStop() {
         return stop;
         return stop;
     }
     }
@@ -31,4 +33,12 @@ public class EquipTotalityDTO {
     public void setSum(int sum) {
     public void setSum(int sum) {
         this.sum = sum;
         this.sum = sum;
     }
     }
+
+    public int getScrap() {
+        return scrap;
+    }
+
+    public void setScrap(int scrap) {
+        this.scrap = scrap;
+    }
 }
 }

+ 114 - 21
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/service/impl/StatisticServiceImpl.java

@@ -32,6 +32,15 @@ import java.util.*;
 @Service
 @Service
 public class StatisticServiceImpl implements StatisticService {
 public class StatisticServiceImpl implements StatisticService {
     private static final Logger logger = LoggerFactory.getLogger(StatisticServiceImpl.class);
     private static final Logger logger = LoggerFactory.getLogger(StatisticServiceImpl.class);
+
+    private static final String USE = "合格";
+
+    private static final String STOP = "停用";
+
+    private static final String LIMITED = "限用";
+
+    private static final String SCRAP = "报废";
+
     @Resource
     @Resource
     private ICommonDao<?> commonDao;
     private ICommonDao<?> commonDao;
 
 
@@ -163,7 +172,7 @@ public class StatisticServiceImpl implements StatisticService {
         // 检验科各个类型设备分布情况
         // 检验科各个类型设备分布情况
         equipDTO.setDistributionDataObj(getEquipType(total));
         equipDTO.setDistributionDataObj(getEquipType(total));
 
 
-        //  各组设备总数分布情况
+        //  各组设备总数(包含合格、限用、报废)
         equipDTO.setNumDistributionDataObj(getEquipByPosition(total));
         equipDTO.setNumDistributionDataObj(getEquipByPosition(total));
 
 
         //  部门设备寿命情况统计
         //  部门设备寿命情况统计
@@ -173,7 +182,8 @@ public class StatisticServiceImpl implements StatisticService {
         equipDTO.setEntiretyData(getEquipEntirety(total));
         equipDTO.setEntiretyData(getEquipEntirety(total));
 
 
         //  各部门设备完好情况
         //  各部门设备完好情况
-        equipDTO.setIntactData(getEquipSituation());
+        //equipDTO.setIntactData(getEquipSituation());有bug
+        equipDTO.setIntactData(getNewEquipSituation());
 
 
         //  各部门设备维护完成情况
         //  各部门设备维护完成情况
         equipDTO.setCompleteData(getEquipMaintenanceByDept());
         equipDTO.setCompleteData(getEquipMaintenanceByDept());
@@ -426,6 +436,69 @@ public class StatisticServiceImpl implements StatisticService {
         return finalList;
         return finalList;
     }
     }
 
 
+    private List<EquipIntactDTO> getNewEquipSituation() {
+        List<EquipIntactDTO> intactData = new ArrayList<>();
+        String sql ="SELECT \n" +
+                "    pe.name_ AS name_,pe.depth_ as depth_, \n" +
+                "    COUNT(s.bian_zhi_bu_men_) AS numAll, \n" +
+                "    SUM(CASE WHEN s.she_bei_zhuang_ta = '" + USE + "' THEN 1 ELSE 0 END) AS numR, \n" +
+                "    SUM(CASE WHEN s.she_bei_zhuang_ta = '"+ STOP + "' THEN 1 ELSE 0 END) AS numS, \n" +
+                "    SUM(CASE WHEN s.she_bei_zhuang_ta = '"+ LIMITED +"' THEN 1 ELSE 0 END) AS numLimit, \n" +
+                "    SUM(CASE WHEN s.she_bei_zhuang_ta = '"+ SCRAP + "' THEN 1 ELSE 0 END) AS numScrap \n" +
+                "FROM  ibps_party_entity pe \n" +
+                "LEFT JOIN  t_sbdj s ON pe.id_ = s.bian_zhi_bu_men_ \n" +
+                "WHERE  pe.depth_ >= 3 and path_ like '%%%s%%' \n" +
+                "GROUP BY pe.id_, pe.name_ \n" +
+                "ORDER BY pe.name_;";
+        sql = String.format(sql, getDiDian());
+        List<Map<String, Object>> queryResult = (List<Map<String, Object>>) commonDao.query(sql);
+        for (Map<String, Object> map : queryResult) {
+            EquipIntactDTO intactDTO = new EquipIntactDTO();
+            intactDTO.setOrg(map.get("name_").toString());
+            intactDTO.setDepth(Integer.parseInt(map.get("depth_").toString()));
+            if("3".equals(map.get("depth_").toString())){
+                int totalNumAll = queryResult.stream() .mapToInt(row -> {
+                            Object numAllObj = row.get("numAll");
+                            return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
+                        }).sum();
+
+                int totalNumR = queryResult.stream() .mapToInt(row -> {
+                    Object numAllObj = row.get("numR");
+                    return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
+                }).sum();
+
+                int totalNumS = queryResult.stream() .mapToInt(row -> {
+                    Object numAllObj = row.get("numS");
+                    return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
+                }).sum();
+
+                int totalNumLimit = queryResult.stream() .mapToInt(row -> {
+                    Object numAllObj = row.get("numLimit");
+                    return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
+                }).sum();
+
+                int totalNumScrap = queryResult.stream() .mapToInt(row -> {
+                    Object numAllObj = row.get("numScrap");
+                    return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
+                }).sum();
+
+                intactDTO.setNumScrap(totalNumScrap);
+                intactDTO.setNumS(totalNumS);
+                intactDTO.setNumR(totalNumR);
+                intactDTO.setNumLimit(totalNumLimit);
+                intactDTO.setNumAll(totalNumAll);
+            }else{
+                intactDTO.setNumScrap(Integer.parseInt(map.get("numScrap").toString()));
+                intactDTO.setNumS(Integer.parseInt(map.get("numS").toString()));
+                intactDTO.setNumR(Integer.parseInt(map.get("numR").toString()));
+                intactDTO.setNumLimit(Integer.parseInt(map.get("numLimit").toString()));
+                intactDTO.setNumAll(Integer.parseInt(map.get("numAll").toString()));
+            }
+            intactData.add(intactDTO);
+        }
+        return intactData;
+    }
+
     // 辅助工具类,用于通过反射设置字段值
     // 辅助工具类,用于通过反射设置字段值
     public static void setField(Object target, String fieldName, Object value) {
     public static void setField(Object target, String fieldName, Object value) {
         try {
         try {
@@ -594,12 +667,18 @@ public class StatisticServiceImpl implements StatisticService {
         String mCondition = " AND DATE_FORMAT(CREATE_TIME_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0')) ";
         String mCondition = " AND DATE_FORMAT(CREATE_TIME_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0')) ";
         // 设备总数
         // 设备总数
         EquipTotalityDTO totalityDTO = new EquipTotalityDTO();
         EquipTotalityDTO totalityDTO = new EquipTotalityDTO();
+        String countSql = "SELECT COUNT(*) as nums from t_sbdj WHERE she_bei_zhuang_ta='%s' and di_dian_='%s'";
+        //总数
         totalityDTO.setSum(total);
         totalityDTO.setSum(total);
-        String stopSQL= "SELECT COUNT(*) as nums from t_sbdj WHERE she_bei_zhuang_ta='停用' and di_dian_='%s'";
-        stopSQL = String.format(stopSQL,getDiDian());
-        int stopNums = Integer.parseInt(commonDao.queryOne(stopSQL).get("nums").toString());
+        //停用数
+        int stopNums = Integer.parseInt(commonDao.queryOne(String.format(countSql,STOP,getDiDian())).get("nums").toString());
         totalityDTO.setStop(stopNums);
         totalityDTO.setStop(stopNums);
-        totalityDTO.setUse(total-stopNums);
+        //使用数(合格数)
+        int useNums = Integer.parseInt(commonDao.queryOne(String.format(countSql,USE,getDiDian())).get("nums").toString());
+        totalityDTO.setUse(useNums);
+        //报废数
+        int scrapNums = Integer.parseInt(commonDao.queryOne(String.format(countSql,SCRAP,getDiDian())).get("nums").toString());
+        totalityDTO.setScrap(scrapNums);
         entiretyDTO.setTotality(totalityDTO);
         entiretyDTO.setTotality(totalityDTO);
 //        // 报废停用
 //        // 报废停用
 //        String wxsq = "SELECT count(*)as nums from t_sbtybfjlb WHERE shi_fou_guo_shen_='已完成' and chu_li_lei_xing_='停用' and di_dian_='%s' %s ";
 //        String wxsq = "SELECT count(*)as nums from t_sbtybfjlb WHERE shi_fou_guo_shen_='已完成' and chu_li_lei_xing_='停用' and di_dian_='%s' %s ";
@@ -611,37 +690,51 @@ public class StatisticServiceImpl implements StatisticService {
 
 
         // 校准设备数
         // 校准设备数
         String finishSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_='已完成' and di_dian_='%s' %s";
         String finishSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_='已完成' and di_dian_='%s' %s";
-        String planSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_!='已完成' and di_dian_='%s' %s";
-        String jzSumSql = "SELECT id_ from t_mjsbjdxzjh WHERE di_dian_='%s' %s";
+
+
+        // 校准设备总数
+        String jzSumSql = "SELECT id_ from t_mjsbjdxzjh WHERE di_dian_='%s'";
+        String talSql = String.format(jzSumSql,getDiDian());
         String subSql = "SELECT count(id_) as nums from (SELECT id_ from t_mjsbjdxzjhzb WHERE parent_id_ in(%s) " +
         String subSql = "SELECT count(id_) as nums from (SELECT id_ from t_mjsbjdxzjhzb WHERE parent_id_ in(%s) " +
                 " or record_parentid_ in(%s) GROUP BY she_bei_bian_hao_) a";
                 " or record_parentid_ in(%s) GROUP BY she_bei_bian_hao_) a";
-        String talSql = String.format(jzSumSql,getDiDian(),"");
-        // 总数
         talSql = String.format(subSql,talSql,talSql);
         talSql = String.format(subSql,talSql,talSql);
         int jzSums = Integer.parseInt(commonDao.queryOne(talSql).get("nums").toString());
         int jzSums = Integer.parseInt(commonDao.queryOne(talSql).get("nums").toString());
+
+        String planSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_!='已完成' and di_dian_='%s' %s";
+
         // 当月已校准
         // 当月已校准
-        String mFinishSql = String.format(finishSql,getDiDian(),mCondition);
-        mFinishSql = String.format(subSql,mFinishSql,mFinishSql);
-        int mAldyNum = Integer.parseInt(commonDao.queryOne(mFinishSql).get("nums").toString());
+        String mFinishSql = "SELECT count(id_) as nums from t_mjsbjdxzjhzb WHERE shi_fou_guo_shen_='已完成' and di_dian_='%s' ";
+        String whereSql = " AND DATE_FORMAT(shi_shi_ri_qi_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0'))";
+        mFinishSql = String.format(mFinishSql,getDiDian());
+        whereSql = mFinishSql + whereSql;
+        int mAldyNum = Integer.parseInt(commonDao.queryOne(whereSql).get("nums").toString());
+
         // 当月计划
         // 当月计划
-        String mPlanSql = String.format(planSql,getDiDian(),mCondition);
-        mPlanSql = String.format(subSql,mPlanSql,mPlanSql);
-        int mPlanNum = Integer.parseInt(commonDao.queryOne(mPlanSql).get("nums").toString());
+        String mPlanSql = "SELECT count(a.id_) as nums from (SELECT id_ from t_mjsbjdxzjhzb WHERE di_dian_='%s'";
+        mPlanSql = String.format(mPlanSql,getDiDian());
+        String maSql = "AND DATE_FORMAT(ji_hua_ri_qi_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0') )) a";
+        maSql = mPlanSql + maSql;
+        int mPlanNum = Integer.parseInt(commonDao.queryOne(maSql).get("nums").toString());
+
         // 下月计划
         // 下月计划
         String nextCondition = "AND DATE_FORMAT(CREATE_TIME_,'%Y-%m')=DATE_FORMAT(DATE_ADD(CURRENT_DATE,INTERVAL 1 MONTH),'%Y-%m') ";
         String nextCondition = "AND DATE_FORMAT(CREATE_TIME_,'%Y-%m')=DATE_FORMAT(DATE_ADD(CURRENT_DATE,INTERVAL 1 MONTH),'%Y-%m') ";
         String nextPlanSql = String.format(planSql,getDiDian(),nextCondition);
         String nextPlanSql = String.format(planSql,getDiDian(),nextCondition);
         nextPlanSql = String.format(subSql,nextPlanSql,nextPlanSql);
         nextPlanSql = String.format(subSql,nextPlanSql,nextPlanSql);
         int nextPlanNum = Integer.parseInt(commonDao.queryOne(nextPlanSql).get("nums").toString());
         int nextPlanNum = Integer.parseInt(commonDao.queryOne(nextPlanSql).get("nums").toString());
-        // 本年计划
-        String yPlanSql = String.format(planSql,getDiDian(),yCondition);
-        yPlanSql = String.format(subSql,yPlanSql,yPlanSql);
+
+        // 本年计划校准
+        String yPlanSql = "select count(id_) as nums from t_mjsbjdxzjhzb where DATE_FORMAT(ji_hua_ri_qi_,'%Y')=YEAR(CURDATE()) ";
+        String whYSql = " and di_dian_ = '%s'";
+        whYSql = String.format(whYSql,getDiDian());
+        yPlanSql = yPlanSql + whYSql;
         int yPlanNum = Integer.parseInt(commonDao.queryOne(yPlanSql).get("nums").toString());
         int yPlanNum = Integer.parseInt(commonDao.queryOne(yPlanSql).get("nums").toString());
+
         EquipCalibrateDTO calibrateDTO = new EquipCalibrateDTO();
         EquipCalibrateDTO calibrateDTO = new EquipCalibrateDTO();
         calibrateDTO.setSum(jzSums);
         calibrateDTO.setSum(jzSums);
         calibrateDTO.setMonthAldyNum(mAldyNum);
         calibrateDTO.setMonthAldyNum(mAldyNum);
         calibrateDTO.setMonthPlanNum(mPlanNum);
         calibrateDTO.setMonthPlanNum(mPlanNum);
         calibrateDTO.setNextMonthPlanNum(nextPlanNum);
         calibrateDTO.setNextMonthPlanNum(nextPlanNum);
-        calibrateDTO.setYearPlanNum(yPlanNum);
+        calibrateDTO.setYearPlanNum(yPlanNum); //本年计划校准
         entiretyDTO.setCalibrate(calibrateDTO);
         entiretyDTO.setCalibrate(calibrateDTO);
 
 
         // 设备保养数
         // 设备保养数
@@ -773,7 +866,7 @@ public class StatisticServiceImpl implements StatisticService {
 
 
     public List<EquipDeptDTO> getEquipByPosition(int total){
     public List<EquipDeptDTO> getEquipByPosition(int total){
         String sql = "SELECT p.name_,p.id_,p.depth_,COUNT(bian_zhi_bu_men_)as value from \n" +
         String sql = "SELECT p.name_,p.id_,p.depth_,COUNT(bian_zhi_bu_men_)as value from \n" +
-                "(SELECT name_,id_,depth_ from ibps_party_entity WHERE path_ like '%%%s%%' and DEPTH_>3) p \n" +
+                "(SELECT name_,id_,depth_ from ibps_party_entity WHERE path_ like '%%%s%%' and DEPTH_>2) p \n" +
                 "left join (SELECT bian_zhi_bu_men_ from t_sbdj WHERE di_dian_='%s') q on q.bian_zhi_bu_men_=p.id_ GROUP BY q.bian_zhi_bu_men_ ";
                 "left join (SELECT bian_zhi_bu_men_ from t_sbdj WHERE di_dian_='%s') q on q.bian_zhi_bu_men_=p.id_ GROUP BY q.bian_zhi_bu_men_ ";
         List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(String.format(sql,getDiDian(),getDiDian()));
         List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(String.format(sql,getDiDian(),getDiDian()));
         List<EquipDeptDTO> typeDTOList = new ArrayList<>();
         List<EquipDeptDTO> typeDTOList = new ArrayList<>();