package com.huimv.sj.dao; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.springframework.orm.ibatis.SqlMapClientCallback; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import org.springframework.util.StringUtils; import com.huimv.busi.xt.constant.XtAppConstant; import com.huimv.busi.xt.constant.XtSqlMapConstant; import com.huimv.busi.xt.utils.CommonUtil; import com.huimv.sj.dataobject.SjSsqtjc; import com.huimv.sj.dataobject.SjSsqtjcExample; import com.huimv.xt.dataobject.XtHjbjcs; import com.huimv.xx.dataobject.XxXxtz; import com.ibatis.sqlmap.client.SqlMapExecutor; public class SjSsqtjcDAOImpl extends SqlMapClientDaoSupport implements SjSsqtjcDAO { /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public SjSsqtjcDAOImpl() { super(); } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int countByExample(SjSsqtjcExample example) { Integer count = (Integer) getSqlMapClientTemplate().queryForObject("sj_ssqtjc.ibatorgenerated_countByExample", example); return count; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int deleteByExample(SjSsqtjcExample example) { int rows = getSqlMapClientTemplate().delete("sj_ssqtjc.ibatorgenerated_deleteByExample", example); return rows; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int deleteByPrimaryKey(Integer id) { SjSsqtjc key = new SjSsqtjc(); key.setId(id); int rows = getSqlMapClientTemplate().delete("sj_ssqtjc.ibatorgenerated_deleteByPrimaryKey", key); return rows; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public void insert(SjSsqtjc record) { getSqlMapClientTemplate().insert("sj_ssqtjc.ibatorgenerated_insert", record); } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public void insertSelective(SjSsqtjc record) { getSqlMapClientTemplate().insert("sj_ssqtjc.ibatorgenerated_insertSelective", record); } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ @SuppressWarnings("unchecked") public List selectByExample(SjSsqtjcExample example) { List list = getSqlMapClientTemplate().queryForList("sj_ssqtjc.ibatorgenerated_selectByExample", example); return list; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public SjSsqtjc selectByPrimaryKey(Integer id) { SjSsqtjc key = new SjSsqtjc(); key.setId(id); SjSsqtjc record = (SjSsqtjc) getSqlMapClientTemplate().queryForObject("sj_ssqtjc.ibatorgenerated_selectByPrimaryKey", key); return record; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int updateByExampleSelective(SjSsqtjc record, SjSsqtjcExample example) { UpdateByExampleParms parms = new UpdateByExampleParms(record, example); int rows = getSqlMapClientTemplate().update("sj_ssqtjc.ibatorgenerated_updateByExampleSelective", parms); return rows; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int updateByExample(SjSsqtjc record, SjSsqtjcExample example) { UpdateByExampleParms parms = new UpdateByExampleParms(record, example); int rows = getSqlMapClientTemplate().update("sj_ssqtjc.ibatorgenerated_updateByExample", parms); return rows; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int updateByPrimaryKeySelective(SjSsqtjc record) { int rows = getSqlMapClientTemplate().update("sj_ssqtjc.ibatorgenerated_updateByPrimaryKeySelective", record); return rows; } /** * This method was generated by Apache iBATIS ibator. * This method corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ public int updateByPrimaryKey(SjSsqtjc record) { int rows = getSqlMapClientTemplate().update("sj_ssqtjc.ibatorgenerated_updateByPrimaryKey", record); return rows; } /** * This class was generated by Apache iBATIS ibator. * This class corresponds to the database table sj_ssqtjc * * @ibatorgenerated Thu Jul 31 12:39:05 CST 2014 */ private static class UpdateByExampleParms extends SjSsqtjcExample { private Object record; public UpdateByExampleParms(Object record, SjSsqtjcExample example) { super(example); this.record = record; } @SuppressWarnings("unused") public Object getRecord() { return record; } } /** * 获取气体检测记录最大时间 */ public Date selectMaxSsqtjcTimeByParam(Map searchParam) { Date date = (Date) getSqlMapClientTemplate().queryForObject(XtSqlMapConstant.SQLMAP_SELECT_MAX_SSQTJC_TIME_BY_PARAM, searchParam); return date; } /** * 插入实时气体检测记录 */ public void insertSsqtjcByParam(List> paramMapList, HashMap hm) { SsqtjcSqlMapClientCallback ssqtjcSqlMapClientCallback = new SsqtjcSqlMapClientCallback(); ssqtjcSqlMapClientCallback.setParamMapList(paramMapList,hm); getSqlMapClientTemplate().execute(ssqtjcSqlMapClientCallback); } /** * 插入数据的回调类 */ private class SsqtjcSqlMapClientCallback implements SqlMapClientCallback { private List> paramMapList; // private HashMap hm; public void setParamMapList(List> paramMapList, HashMap hm) { this.paramMapList = paramMapList; // this.hm = hm; } @Override public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException { //判断当前机器所属栏期的报警功能是否开启 // List hjcsList = executor.queryForList(XtSqlMapConstant.SQLMAP_SELECT_HJBJCS_BY_PARAM, hm); // boolean flag = hjcsList.size() > 0 ? true : false; executor.startBatch(); String dqlq = ""; String jqid = ""; for (Map paramMap : paramMapList) { // //报警之前判断之前记录是否已经报警 // Map map = new HashMap(); // if (flag) { // SjSsqtjc sjSsqtjc = (SjSsqtjc)executor.queryForObject(XtSqlMapConstant.SQLMAP_SELECT_MAX_SSQTJC_BY_PARAM, hm); // if (sjSsqtjc != null) { // Map qtmap = new HashMap(); // qtmap.put("nh3", sjSsqtjc.getAqnd()); // qtmap.put("h2s", sjSsqtjc.getLhqnd()); // qtmap.put("ch4", sjSsqtjc.getJwnd()); // qtmap.put("o2", sjSsqtjc.getYqnd()); // XtHjbjcs xtHjbjcs = hjcsList.get(0); // map = compareBjCs(xtHjbjcs, qtmap, map, 1); // } // } jqid = (String) paramMap.get("jqid"); dqlq = (String) executor.queryForObject(XtSqlMapConstant.SQLMAP_SELECT_DQLQ_FROM_ZSDA_AND_JQDA_BY_JQID, jqid); if (StringUtils.hasText(dqlq)) { paramMap.put("dqlq", dqlq); executor.insert(XtSqlMapConstant.SQLMAP_INSERT_SSQTJC_BY_PARAM, paramMap); } // if (flag) { // XtHjbjcs xtHjbjcs = hjcsList.get(0); // compareBjCs(xtHjbjcs, paramMap, map, 2); // } } executor.executeBatch(); return null; } } public Map compareBjCs(XtHjbjcs xtHjbjcs, Map paramMap, Map map, int flag) { int aqCount = 0; //氨气报警 int lhqCount = 0; //硫化氢报警 int jwCount = 0; //甲烷报警 int yqCount = 0; //氧气报警 try { String regEx = "^[1-9,-.]+"; //数据格式 第一级报警下限-第一级报警上线#报警级别, 第二级报警下限-第二级报警上线#报警级别。。。。。22-28#1,20-30#2 Pattern pat = Pattern.compile(regEx); Matcher aqMat = pat.matcher(StringUtils.hasText(xtHjbjcs.getAqnd()) ? xtHjbjcs.getAqnd() : "&&"); Matcher lhqMat = pat.matcher(StringUtils.hasText(xtHjbjcs.getLhqnd()) ? xtHjbjcs.getLhqnd() : "&&"); Matcher jwMat = pat.matcher(StringUtils.hasText(xtHjbjcs.getJwnd()) ? xtHjbjcs.getJwnd() : "&&"); Matcher yqMat = pat.matcher(StringUtils.hasText(xtHjbjcs.getYqnd()) ? xtHjbjcs.getYqnd() : "&&"); if (StringUtils.hasText(xtHjbjcs.getAqnd()) && aqMat.find()) { aqCount = CommonUtil.mathCompare(xtHjbjcs.getAqnd(), paramMap, "nh3"); } if (StringUtils.hasText(xtHjbjcs.getLhqnd()) && lhqMat.find()) { lhqCount = CommonUtil.mathCompare(xtHjbjcs.getLhqnd(), paramMap, "h2s"); } if (StringUtils.hasText(xtHjbjcs.getJwnd()) && jwMat.find()) { jwCount = CommonUtil.mathCompare(xtHjbjcs.getJwnd(), paramMap, "ch4"); } if (StringUtils.hasText(xtHjbjcs.getYqnd()) && yqMat.find()) { yqCount = CommonUtil.mathCompare(xtHjbjcs.getYqnd(), paramMap, "o2"); } //超出 插入报警数据 if (aqCount > 0 && (map.get("aqFlag") == null || "".equals(map.get("aqFlag")) || aqCount != (int)map.get("aqFlag")) && flag == 2) { insertXxtz(xtHjbjcs, (String)paramMap.get("time"), aqCount, paramMap.get("nh3") + "ppm", "氨气"); } map.put("aqFlag", aqCount); if (lhqCount > 0 && (map.get("lhqFlag") == null || "".equals(map.get("lhqFlag")) || lhqCount != (int)map.get("lhqFlag")) && flag == 2) { insertXxtz(xtHjbjcs, (String)paramMap.get("time"), lhqCount, paramMap.get("h2s") + "ppm", "硫化氢"); } map.put("lhqFlag", lhqCount); if (jwCount > 0 && (map.get("jwFlag") == null || "".equals(map.get("jwFlag")) || jwCount != (int)map.get("jwFlag")) && flag == 2) { insertXxtz(xtHjbjcs, (String)paramMap.get("time"), jwCount, paramMap.get("ch4") + "ppm", "甲烷"); } map.put("jwFlag", jwCount); if (yqCount > 0 && (map.get("yqFlag") == null || "".equals(map.get("yqFlag")) || yqCount != (int)map.get("yqFlag")) && flag == 2) { insertXxtz(xtHjbjcs, (String)paramMap.get("time"), yqCount, paramMap.get("o2") + "%", "氧气"); } map.put("yqFlag", yqCount); } catch (Exception e) { System.out.println("可能当前栏期" + xtHjbjcs.getLqid() + "参数不符合规范"); e.printStackTrace(); } return map; } public void insertXxtz(XtHjbjcs xtHjbjcs, String time, int jb, String sz, String type) { XxXxtz xxXxtz = new XxXxtz(); Date nowdate = new Date(); xxXxtz.setBt(xtHjbjcs.getZsmc() + type + "超过警戒线"); xxXxtz.setXxlx("1"); xxXxtz.setZz(xtHjbjcs.getMcmc()); xxXxtz.setZw("

在大概" + time + type + "超出警戒线,目前" + sz + "

"); xxXxtz.setFbsj(nowdate); xxXxtz.setFbr(1); xxXxtz.setZy("机器设备"); xxXxtz.setKssj(nowdate); xxXxtz.setMcid(Integer.parseInt(xtHjbjcs.getMcid())); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(nowdate); rightNow.add(Calendar.DATE, +7); xxXxtz.setJssj(rightNow.getTime()); xxXxtz.setZfbz(XtAppConstant.ZFBZ_VALID); xxXxtz.setXxbz(jb); //xxXxtz.setXfzt(XtAppConstant.XXTZ_XFZT_1); xxXxtz.setClzt(XtAppConstant.XXTZ_CLZT_1); getSqlMapClientTemplate().insert("xx_xxtz.ibatorgenerated_insert", xxXxtz); } }