Просмотр исходного кода

[task-1871]设施环境失控记录推送时间调整

szjbdgzl 1 год назад
Родитель
Сommit
594d5805a6

+ 126 - 107
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/BinXiangJob.java

@@ -29,61 +29,70 @@ public class BinXiangJob extends AbstractJob {
     private ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
     public static final String PLAN_TIME = "plan-time"; //default: 8,12,17
     public static final String UNCONTROL_TIMES = "uncontrol-times"; //default: 4
-    public static final String ENABLE_SKLC = "enable-sklc";
+    public static final String ENABLE_DAILY = "enable-daily";//default: 1
+    public static final String START_TIME = "start-time"; //default: 0
 
     @Override
     public void executeJob(JobExecutionContext context) throws Exception {
         Map<String, Object> objectMap = buildQueryParam(context);
 
-        if ("true".equals(objectMap.get(ENABLE_SKLC))){
-            //检查失控数据
-            checkUncontrolBx((String)objectMap.get(UNCONTROL_TIMES));
-        }
+        //检查失控数据
+        checkUncontrolBx((String)objectMap.get(UNCONTROL_TIMES),(String)objectMap.get(START_TIME));
 
-        //创建日记录
-        createDailyRecord((String[])objectMap.get(PLAN_TIME));
+        if ("1".equals(objectMap.get(ENABLE_DAILY))) {
+            //创建日记录
+            createDailyRecord((String[])objectMap.get(PLAN_TIME));
+        }
     }
 
-    private void checkUncontrolBx(String uncontrolTimes) throws Exception {
+    private void checkUncontrolBx(String uncontrolTimes,String startTime) throws Exception {
         String sql ="SELECT bing_xiang_id_,COUNT(id_) total FROM t_dsfbxwdjl " +
                 " WHERE (CONVERT(wen_du_,SIGNED) > CONVERT(wen_du_shang_xian,SIGNED) OR  CONVERT(wen_du_,SIGNED) < CONVERT(wen_du_xia_xian_,SIGNED) )" +
-                " AND DATE(cai_ji_shi_jian_)= CURDATE() GROUP BY bing_xiang_id_ HAVING total >= 4";
+                " AND DATE(cai_ji_shi_jian_)= CURDATE() GROUP BY bing_xiang_id_ HAVING total >='%s'";
+        sql = String.format(sql,uncontrolTimes);
+        logger.warn("checkUncontrolSql: {}",sql);
         List<Map<String, Object>> bx = (List<Map<String, Object>>) commonDao.query(sql);
         if (BeanUtils.isNotEmpty(bx)){
             for (Map<String,Object> bxMap : bx){
                 //根据返回的冰箱ID,再去查当天温度记录,确定是否有连续4个点失控。
-                String bxSql = "select a.*,e.she_bei_bian_hao_,e.dept_id_ from " +
-                        "(select *from t_dsfbxwdjl where bing_xiang_id_='%s' and DATE(cai_ji_shi_jian_)=CURRENT_DATE ORDER BY cai_ji_shi_jian_)a," +
-                        "equip_relation e where a.cai_ji_qi_ming_ch=e.bx_bian_hao_";
-                bxSql = String.format(bxSql,bxMap.get("bing_xiang_id_"));
-                List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(bxSql);
-                if (BeanUtils.isNotEmpty(list)){
-                    int control = 0;
-                    StringBuilder beiZhu = new StringBuilder();
-                    for (Map<String,Object> map : list){
-                        double wenDu = Double.parseDouble(map.get("wen_du_").toString());
-                        double max = Double.parseDouble(map.get("wen_du_shang_xian").toString());
-                        double min = Double.parseDouble(map.get("wen_du_xia_xian_").toString());
-                        if (wenDu>max || wenDu<min){
-                            control=control+1;
-                            beiZhu.append("采集时间:").append(map.get("cai_ji_shi_jian_")).append(",温度:").append(wenDu).
-                                    append("℃,").append("温度范围:").append(min).append("~").append(max).append("℃;\n");
-                        }else {
-                            control=0;
-                        }
-                        if (control==4){
-                            //如果有,走温度失控流程。  设施环境处理--设施环境监控--设施环境失控与处理
-                            String caiJiShiJian = StringUtil.defaultString(map.get("cai_ji_shi_jian_").toString(),"");
-                            String sheBeiBianHao = StringUtil.defaultString(map.get("she_bei_bian_hao_").toString(),"");
-                            String deptId = StringUtil.defaultString(map.get("dept_id_").toString(),"");
-                            addWenDuSkData( sheBeiBianHao , deptId , beiZhu.toString() , uncontrolTimes , caiJiShiJian);
-                            break;
-                        }
-                    }
+                outOfControlJudge(bxMap, uncontrolTimes,startTime);
+            }
+            // 开启失控流程
+            startFlowStep();
+        }
+    }
+
+    private void outOfControlJudge(Map<String,Object> bxMap,String uncontrolTimes,String startTime) throws Exception {
+        String bxSql = "select a.*,e.she_bei_bian_hao_,e.dept_id_ from (select *from t_dsfbxwdjl where bing_xiang_id_='%s' " +
+                " and DATE(cai_ji_shi_jian_)=CURRENT_DATE AND HOUR(cai_ji_shi_jian_)>='%s' ORDER BY cai_ji_shi_jian_)a, " +
+                " equip_relation e where a.cai_ji_qi_ming_ch=e.bx_bian_hao_";
+        bxSql = String.format(bxSql,bxMap.get("bing_xiang_id_"),startTime);
+        logger.warn("outOfControlJudgeSql: {}",bxSql);
+        List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(bxSql);
+        if (BeanUtils.isNotEmpty(list)){
+            int control = 0;
+            StringBuilder beiZhu = new StringBuilder();
+            for (Map<String,Object> map : list){
+                double wenDu = Double.parseDouble(map.get("wen_du_").toString());
+                double max = Double.parseDouble(map.get("wen_du_shang_xian").toString());
+                double min = Double.parseDouble(map.get("wen_du_xia_xian_").toString());
+                if (wenDu>max || wenDu<min){
+                    control=control+1;
+                    beiZhu.append("采集时间:").append(map.get("cai_ji_shi_jian_")).append(",温度:").append(wenDu).
+                            append("℃,").append("温度范围:").append(min).append("~").append(max).append("℃;\n");
+                }else {
+                    control=0;
+                }
+                if (control==Integer.parseInt(uncontrolTimes)){
+                    //如果有,走温度失控流程。  设施环境处理--设施环境监控--设施环境失控与处理
+                    String caiJiShiJian = StringUtil.defaultString(map.get("cai_ji_shi_jian_").toString(),"");
+                    String sheBeiBianHao = StringUtil.defaultString(map.get("she_bei_bian_hao_").toString(),"");
+                    String deptId = StringUtil.defaultString(map.get("dept_id_").toString(),"");
+                    addWenDuSkData( sheBeiBianHao , deptId , beiZhu.toString() , uncontrolTimes , caiJiShiJian);
+                    break;
                 }
             }
         }
-        startFlowStep();
     }
 
     private void addWenDuSkData(String sheBeiBianHao,String deptId , String beiZhu , String uncontrolTimes , String caiJiShiJian) throws Exception {
@@ -130,76 +139,81 @@ public class BinXiangJob extends AbstractJob {
     private void createDailyRecord(String[] planTime) throws Exception {
         // 日常开记录  冰箱温度监控记录
         for (String time : planTime){
-            String sql = "SELECT * FROM t_dsfbxwdjl a,equip_relation e,(SELECT bing_xiang_id_,MAX(cai_ji_shi_jian_) cai_ji_shi_jian_ FROM t_dsfbxwdjl " +
-                    " WHERE cai_ji_shi_jian_<CONCAT(CURRENT_DATE,' ','"+time+"',':00:00') GROUP BY bing_xiang_id_) b" +
+            String sql = "SELECT * FROM t_dsfbxwdjl a,equip_relation e,(SELECT bing_xiang_id_,MAX(cai_ji_shi_jian_) cai_ji_shi_jian_ " +
+                    " FROM t_dsfbxwdjl WHERE DATE(cai_ji_shi_jian_)=CURDATE() AND HOUR(cai_ji_shi_jian_)="+time+" GROUP BY bing_xiang_id_) b" +
                     " WHERE a.bing_xiang_id_=b.bing_xiang_id_ AND a.cai_ji_shi_jian_ = b.cai_ji_shi_jian_ and e.bx_bian_hao_=a.cai_ji_qi_ming_ch";
             //  主表--温度监控批量处理表--bxwdjk_batch   子表--冰箱温度监控记录表--bxwdjkjlb
+            logger.warn("createDailyRecordSql: {}",sql);
             List<Map<String, Object>> bxList = (List<Map<String, Object>>) commonDao.query(sql);
             if (BeanUtils.isNotEmpty(bxList)){
-                boolean main = false;
-                for (Map<String,Object> map : bxList){
-                    String pId = UniqueIdUtil.getId();
-                    String sheBeiId = StringUtil.defaultString(map.get("she_bei_bian_hao_").toString(),"");
-
-                    String eqSql = " select v.subId,v.position,v.deviceNo1,v.deviceName1,v.location,v.area,v.roomName,v.roomId " +
-                            " FROM v_facs v where v.type='02-冰箱温度监控' and v.deviceNo1='%s' LIMIT 1 ";
-                    eqSql = String.format(eqSql,sheBeiId);
-                    Map<String,Object> eqMap = commonDao.queryOne(eqSql);
-                    if (BeanUtils.isNotEmpty(eqMap)){
-                        String diDian = StringUtil.defaultString(eqMap.get("location").toString(),"");
-                        String deptId = StringUtil.defaultString(map.get("dept_id_").toString(),"");
-
-                        Map<String,Object> data = new HashMap<>();
-                        data.put("id_", pId);
-                        data.put("create_time_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-                        data.put("bian_zhi_shi_jian", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-                        data.put("bian_zhi_bu_men_", deptId);
-                        data.put("di_dian_", diDian);
-                        if (!main){
-                            // 添加主表数据
-                            commonDao.execute(buildInsertSql(data,"t_bxwdjk_batch"));
-                            main = true;
-                        }
-                        // 添加子表数据
-                        double max = Double.parseDouble(map.get("wen_du_shang_xian").toString());
-                        double min = Double.parseDouble(map.get("wen_du_xia_xian_").toString());
-                        double wenDu = Double.parseDouble(map.get("wen_du_").toString());
-                        if (max>0){
-                            data.put("leng_cang_wen_du_", wenDu);
-                            data.put("cang_wen_xiu_", wenDu);
-                        }else if (max<0){
-                            data.put("leng_dong_wen_du_", wenDu);
-                            data.put("dong_wen_xiu_", wenDu);
-                        }
-                        if (wenDu>max || wenDu<min){
-                            data.put("shi_kong_zhuang_t","失控");
-                        }else {
-                            data.put("shi_kong_zhuang_t","正常");
-                        }
-                        String quYuMingCheng = StringUtil.defaultString(eqMap.get("area").toString(),"");
-                        String sheBeiMingCheng = StringUtil.defaultString(eqMap.get("deviceName1").toString(),"");
-                        String fangJian = StringUtil.defaultString(eqMap.get("roomName").toString(),"");
-                        String gangWei = StringUtil.defaultString(eqMap.get("position").toString(),"");
-                        String subId = StringUtil.defaultString(eqMap.get("subId").toString(),"");
-                        data.put("id_", UniqueIdUtil.getId());
-                        data.put("wai_jian_", pId);
-                        data.put("bu_men_", deptId);
-                        data.put("bing_xiang_bian_h", sheBeiId+" "+sheBeiMingCheng);
-                        data.put("qu_yu_ming_cheng_", quYuMingCheng);
-                        data.put("fang_jian_", fangJian);
-                        data.put("shi_fou_guo_shen_", "已完成");
-                        data.put("wen_kong_zhi_fan_", min + "~" + max + "℃");
-                        data.put("shi_ji_shi_jian_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(map.get("cai_ji_shi_jian_")));
-                        data.put("bian_zhi_shi_jian", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(map.get("cai_ji_shi_jian_")));
-                        data.put("gang_wei_", gangWei);
-                        data.put("bian_zhi_ren_", "1");
-                        //data.put("bei_zhu_", sheBeiId + sheBeiMingCheng+",采集时间:"+ caiJiShiJian + ",温度:"+ wenDu + "℃");
-                        data.put("config_id_", subId);
-                        data.put("yue_ri_qi_", new SimpleDateFormat("yyyy-MM-dd").format(map.get("cai_ji_shi_jian_")));
-                        data.put("shi_jian_shi_fen_", new SimpleDateFormat("HH:mm").format(map.get("cai_ji_shi_jian_")));
-                        commonDao.execute(buildInsertSql(data,"t_bxwdjkjlb"));
-                    }
+                addBxData(bxList);
+            }
+        }
+    }
+
+    private void addBxData(List<Map<String, Object>> bxList) throws Exception {
+        boolean main = false;
+        for (Map<String,Object> map : bxList){
+            String pId = UniqueIdUtil.getId();
+            String sheBeiId = StringUtil.defaultString(map.get("she_bei_bian_hao_").toString(),"");
+
+            String eqSql = " select v.subId,v.position,v.deviceNo1,v.deviceName1,v.location,v.area,v.roomName,v.roomId " +
+                    " FROM v_facs v where v.type='02-冰箱温度监控' and v.deviceNo1='%s' LIMIT 1 ";
+            eqSql = String.format(eqSql,sheBeiId);
+            Map<String,Object> eqMap = commonDao.queryOne(eqSql);
+            if (BeanUtils.isNotEmpty(eqMap)){
+                String diDian = StringUtil.defaultString(eqMap.get("location").toString(),"");
+                String deptId = StringUtil.defaultString(map.get("dept_id_").toString(),"");
+
+                Map<String,Object> data = new HashMap<>();
+                data.put("id_", pId);
+                data.put("create_time_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+                data.put("bian_zhi_shi_jian", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+                data.put("bian_zhi_bu_men_", deptId);
+                data.put("di_dian_", diDian);
+                if (!main){
+                    // 添加主表数据
+                    commonDao.execute(buildInsertSql(data,"t_bxwdjk_batch"));
+                    main = true;
                 }
+                // 添加子表数据
+                double max = Double.parseDouble(map.get("wen_du_shang_xian").toString());
+                double min = Double.parseDouble(map.get("wen_du_xia_xian_").toString());
+                double wenDu = Double.parseDouble(map.get("wen_du_").toString());
+                if (max>0){
+                    data.put("leng_cang_wen_du_", wenDu);
+                    data.put("cang_wen_xiu_", wenDu);
+                }else if (max<0){
+                    data.put("leng_dong_wen_du_", wenDu);
+                    data.put("dong_wen_xiu_", wenDu);
+                }
+                if (wenDu>max || wenDu<min){
+                    data.put("shi_kong_zhuang_t","失控");
+                }else {
+                    data.put("shi_kong_zhuang_t","正常");
+                }
+                String quYuMingCheng = StringUtil.defaultString(eqMap.get("area").toString(),"");
+                String sheBeiMingCheng = StringUtil.defaultString(eqMap.get("deviceName1").toString(),"");
+                String fangJian = StringUtil.defaultString(eqMap.get("roomName").toString(),"");
+                String gangWei = StringUtil.defaultString(eqMap.get("position").toString(),"");
+                String subId = StringUtil.defaultString(eqMap.get("subId").toString(),"");
+                data.put("id_", UniqueIdUtil.getId());
+                data.put("wai_jian_", pId);
+                data.put("bu_men_", deptId);
+                data.put("bing_xiang_bian_h", sheBeiId+" "+sheBeiMingCheng);
+                data.put("qu_yu_ming_cheng_", quYuMingCheng);
+                data.put("fang_jian_", fangJian);
+                data.put("shi_fou_guo_shen_", "已完成");
+                data.put("wen_kong_zhi_fan_", min + "~" + max + "℃");
+                data.put("shi_ji_shi_jian_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(map.get("cai_ji_shi_jian_")));
+                data.put("bian_zhi_shi_jian", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(map.get("cai_ji_shi_jian_")));
+                data.put("gang_wei_", gangWei);
+                data.put("bian_zhi_ren_", "1");
+                //data.put("bei_zhu_", sheBeiId + sheBeiMingCheng+",采集时间:"+ caiJiShiJian + ",温度:"+ wenDu + "℃");
+                data.put("config_id_", subId);
+                data.put("yue_ri_qi_", new SimpleDateFormat("yyyy-MM-dd").format(map.get("cai_ji_shi_jian_")));
+                data.put("shi_jian_shi_fen_", new SimpleDateFormat("HH:mm").format(map.get("cai_ji_shi_jian_")));
+                commonDao.execute(buildInsertSql(data,"t_bxwdjkjlb"));
             }
         }
     }
@@ -220,14 +234,19 @@ public class BinXiangJob extends AbstractJob {
         if(StringUtil.isNotBlank(dataMap.getString(UNCONTROL_TIMES))){
             uncontrolTimes = dataMap.getString(UNCONTROL_TIMES);
         }
-        String enableSk = "false";
-        if(StringUtil.isNotBlank(dataMap.getString(ENABLE_SKLC))){
-            enableSk = dataMap.getString(ENABLE_SKLC);
+        String startTime = "0";
+        if(StringUtil.isNotBlank(dataMap.getString(START_TIME))){
+            startTime = dataMap.getString(START_TIME);
+        }
+        String enableDaily = "1";
+        if(StringUtil.isNotBlank(dataMap.getString(ENABLE_DAILY))){
+            enableDaily = dataMap.getString(ENABLE_DAILY);
         }
         HashMap map = new HashMap<String,Object>();
         map.put(PLAN_TIME,planTime);
         map.put(UNCONTROL_TIMES,uncontrolTimes);
-        map.put(ENABLE_SKLC,enableSk);
+        map.put(START_TIME,startTime);
+        map.put(ENABLE_DAILY,enableDaily);
         return map;
     }
 }