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

[task-1638]【后端】中大七院冰箱温控数据对接/七院冰箱温控后台job

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

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

@@ -4,6 +4,7 @@ import com.lc.ibps.base.core.util.AppUtil;
 import com.lc.ibps.base.core.util.BeanUtils;
 import com.lc.ibps.base.core.util.JacksonUtil;
 import com.lc.ibps.base.core.util.string.StringUtil;
+import com.lc.ibps.base.framework.id.UniqueIdUtil;
 import com.lc.ibps.base.framework.table.ICommonDao;
 import com.lc.ibps.base.saas.token.ITenantTokenService;
 import com.lc.ibps.base.web.context.ContextUtil;
@@ -16,17 +17,21 @@ import org.quartz.JobExecutionContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class BinXiangJob extends BaseJob2 {
+public class BinXiangJob extends AbstractJob {
 
     private static final Logger logger = LoggerFactory.getLogger(BinXiangJob.class);
 
     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
+    private String skTable = "t_sshjskycljlb";
+
     @Override
     public void executeJob(JobExecutionContext context) throws Exception {
         Map<String, Object> objectMap = buildQueryParam(context);
@@ -37,33 +42,68 @@ public class BinXiangJob extends BaseJob2 {
         createDailyRecord((String[])objectMap.get(PLAN_TIME));
     }
 
-    private void checkUncontrolBx(String uncontrolTimes){
+    private void checkUncontrolBx(String uncontrolTimes) 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";
-        Map<String, Object> bx = commonDao.queryOne(sql);
+        List<Map<String, Object>> bx = (List<Map<String, Object>>) commonDao.query(sql);
         if (BeanUtils.isNotEmpty(bx)){
-            //根据返回的冰箱ID,再去查当天温度记录,确定是否有连续4个点失控。
-            String sql2 = "select *from t_dsfbxwdjl where bing_xiang_id_='%s'  ORDER BY cai_ji_shi_jian_";
-            sql2 = String.format(sql2,bx.get("bing_xiang_id_"));
-            List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(sql2);
-            if (BeanUtils.isNotEmpty(list)){
-                for (Map<String,Object> map : list){
+            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;
-                    double wenDu = (double) map.get("wen_du_");
-                    double max = (double) map.get("wen_du_shang_xian");
-                    double min = (double) map.get("wen_du_xia_xian_");
-                    if (wenDu>max){
-
+                    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;
+                        }else {
+                            control=0;
+                        }
+                        if (control==4){
+                            //如果有,走温度失控流程。  设施环境处理--设施环境监控--设施环境失控与处理
+                            addWenDuSkData(map.get("she_bei_bian_hao_").toString(),map.get("dept_id_").toString());
+                            break;
+                        }
                     }
                 }
             }
-            //如果有,走温度失控流程。
+        }
+        startFlowStep();
+    }
+
+    private void addWenDuSkData(String sheBeiBianHao,String deptId) throws Exception {
+        String roomSql = " select b.yuan_she_bei_bian,b.di_dian_,f.id_ fang_jian_id_,f.fang_jian_ming_,q.id_ qu_yu_id_,q.qu_yu_ming_cheng_ " +
+                " FROM t_sbdj b,t_jjqfjb f,t_qypzb q where yuan_she_bei_bian='%s' and b.cun_fang_wei_zhi_=f.id_ and f.qu_yu_id_=q.id_";
+        roomSql = String.format(roomSql,sheBeiBianHao);
+        Map<String,Object> room = commonDao.queryOne(roomSql);
+        if (BeanUtils.isNotEmpty(room)){
+            Map<String,Object> data = new HashMap<>();
+            data.put("id_", UniqueIdUtil.getId());
+            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("fa_xian_shi_jian_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+            data.put("bian_zhi_bu_men_", deptId);
+            data.put("di_dian_", room.get("di_dian_"));
+            data.put("fa_sheng_qu_yu_", room.get("qu_yu_ming_cheng_"));
+            data.put("qu_yu_id_", room.get("qu_yu_id_"));
+            data.put("fang_jian_id_", room.get("fang_jian_id_"));
+            data.put("fang_jian_", room.get("fang_jian_ming_"));
+            data.put("jie_guo_", "是");
+            data.put("qing_kuang_", "原设备编号为:"+sheBeiBianHao+"的设备连续4个时间点温度失控");
+            data.put("shi_fou_guo_shen_", "待分析处理");
+            commonDao.execute(this.buildInsertSql(data,skTable));
         }
     }
 
     private void startFlowStep() {
-        String fetchSql = "SELECT id_ FROM t_bmfxgjjl WHERE shi_fou_guo_shen_ IS NULL";
+        String fetchSql = "SELECT id_ FROM t_sshjskycljlb WHERE shi_fou_guo_shen_ ='待分析处理'";
         List<Map<String, Object>> list =  (List<Map<String, Object>>) commonDao.query(fetchSql);
         if (BeanUtils.isEmpty(list)) {
             return;
@@ -75,16 +115,67 @@ public class BinXiangJob extends BaseJob2 {
             ContextUtil.setCurrentAccessToken(accessToken);
         }
         for (Map<String, Object> objectMap : list) {
-            APIResult<String> result = bpmInstService.startFlowFromList(new String[]{(String)objectMap.get("id_")}, "bmfxgjjl", "Process_0jl7e02");
+            APIResult<String> result = bpmInstService.startFlowFromList(new String[]{(String)objectMap.get("id_")}, "sshjskycljlb", "Process_19ckgrn");
             result.getState();
         }
 
     }
 
-    private void createDailyRecord(String[] planTime){
-        String sql = "SELECT * FROM t_dsfbxwdjl a, (SELECT bing_xiang_id_,MAX(cai_ji_shi_jian_) cai_ji_shi_jian_ FROM t_dsfbxwdjl " +
-                " WHERE cai_ji_shi_jian_<'2024-04-07 08:00:00' 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_";
+    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" +
+                    " 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
+            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 b.yuan_she_bei_bian,b.she_bei_ming_cheng_,b.di_dian_,f.id_ fang_jian_id_,f.fang_jian_ming_,f.fang_jian_ming_ha,q.id_ qu_yu_id_,q.qu_yu_ming_cheng_ " +
+                            " FROM t_sbdj b,t_jjqfjb f,t_qypzb q where yuan_she_bei_bian='%s' and she_bei_zhuang_ta='合格' and b.cun_fang_wei_zhi_=f.id_ and f.qu_yu_id_=q.id_ limit 1";
+                    eqSql = String.format(eqSql,sheBeiId);
+                    Map<String,Object> eqMap = commonDao.queryOne(eqSql);
+                    if (BeanUtils.isNotEmpty(eqMap)){
+                        String diDian = StringUtil.defaultString(eqMap.get("di_dian_").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());
+                        String wenDu = StringUtil.defaultString(map.get("wen_du_").toString(),"");
+                        if (max>0){
+                            data.put("leng_cang_wen_du_", wenDu);
+                        }else {
+                            data.put("leng_dong_wen_du_", wenDu);
+                        }
+                        String quYuMingCheng = StringUtil.defaultString(eqMap.get("qu_yu_ming_cheng_").toString(),"");
+                        String sheBeiMingCheng = StringUtil.defaultString(eqMap.get("she_bei_ming_cheng_").toString(),"");
+                        String fangJian = StringUtil.defaultString(eqMap.get("fang_jian_ming_ha").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);
+                        commonDao.execute(buildInsertSql(data,"t_bxwdjkjlb"));
+                    }
+                }
+            }
+        }
     }
 
     private Map<String,Object> buildQueryParam(JobExecutionContext context) {