|
|
@@ -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) {
|