|
|
@@ -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;
|
|
|
}
|
|
|
}
|