package cn.com.usky.iot.alarm.service;

import java.io.BufferedReader;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import cn.com.usky.iot.admin.dao.YtiotTAdminDao;
import cn.com.usky.iot.admin.dao.YtiotVUserCompanyDao;
import cn.com.usky.iot.admin.dao.YtiotVUserphoneDao;
import cn.com.usky.iot.alarm.dao.YtiotVAlarmDao;
import cn.com.usky.iot.entity.*;
import cn.com.usky.utils.DaoQuery;
import cn.com.usky.utils.HttpClientUtils;
import cn.com.usky.utils.MD5Util;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

public class YtiotVAlarmServiceImpl implements YtiotVAlarmService {
	
	private HibernateTemplate hibernateTemplate;

	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
	    this.hibernateTemplate = hibernateTemplate;
	}

	private YtiotVAlarmDao ytiotVAlarmDao;
	private YtiotVUserphoneDao ytiotVUserphoneDao;
	private YtiotTAdminDao ytiotTAdminDao;
	private YtiotVUserCompanyDao ytiotVUserCompanyDao;

	public YtiotVAlarmDao getYtiotVAlarmDao() {
		return ytiotVAlarmDao;
	}

	public void setYtiotVAlarmDao(YtiotVAlarmDao ytiotVAlarmDao) {
		this.ytiotVAlarmDao = ytiotVAlarmDao;
	}
	public YtiotVUserCompanyDao getYtiotVUserCompanyDao() {
		return ytiotVUserCompanyDao;
	}

	public void setYtiotVUserCompanyDao(YtiotVUserCompanyDao ytiotVUserCompanyDao) {
		this.ytiotVUserCompanyDao = ytiotVUserCompanyDao;
	}
	public YtiotVUserphoneDao getYtiotVUserphoneDao() {
		return ytiotVUserphoneDao;
	}

	public void setYtiotVUserphoneDao(YtiotVUserphoneDao ytiotVUserphoneDao) {
		this.ytiotVUserphoneDao = ytiotVUserphoneDao;
	}

	public YtiotTAdminDao getYtiotTAdminDao() {
		return ytiotTAdminDao;
	}

	public void setYtiotTAdminDao(YtiotTAdminDao ytiotTAdminDao) {
		this.ytiotTAdminDao = ytiotTAdminDao;
	}

	public boolean chk_string_param(String param) {
		if(param==null)
			return true;
		if(param.indexOf("=")>=0)
			return false;
		if(param.indexOf("\'")>=0)
			return false;
		if(param.indexOf("\"")>=0)
			return false;
		return true;
	}
	public String chkhw(String hqlwhere){
		if(hqlwhere==null)
			return " where ";
		else
			return hqlwhere+" and ";
	}
	public String fieldname(String name) {
		if(name.equals("company_code"))
			return "companyCode";
		if(name.equals("company_name"))
			return "companyName";
		if(name.equals("device_code"))
			return "deviuceCode";
		return name;
	}

	@Override
	public String getEFireVList(String queryJson, String page, String start, String limit, String sort) throws Exception {
		// TODO Auto-generated method stub
		String address = null;
		String clzt = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String company_name = null;
		String device_code = null;
		String device_code_list = null;
		String time_start = null;
		String time_end = null;
		String status = null;
		String COMMSTATUS = null;
		String V_LOGINNAME = null;
		String hqlwhere = null, hhwhere = null;
		String order = null;
		String dir = null;
		String Start = null;
		String Limit = null;
		String Page = null;
		String order_str = null;
		JSONObject q_json = null;
		JSONArray Sort = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getEFireVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			address = q_json.has("address")?q_json.getString("address"):null;
			clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
			COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			if(q_json.has("company_code")) {
				if((q_json.optJSONObject("company_code")!=null)
						&&(q_json.optJSONObject("company_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							company_code_list = tmp;
						else
							company_code_list += ","+tmp;
					}
				}else
					company_code = q_json.getString("company_code");
			}
//			company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
			if(q_json.has("device_code")) {
				if((q_json.optJSONObject("device_code")!=null)
						&&(q_json.optJSONObject("device_code").isArray())){
					JSONArray j_tmp = q_json.getJSONArray("device_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							device_code_list = tmp;
						else
							device_code_list += ","+tmp;
					}
				}else
					device_code = q_json.getString("device_code");
			}
			time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
		}
		if(V_LOGINNAME.equals("ypsgec")) {
			return json.toString();
		}else {
			if(sort!=null) {
				Sort = JSONArray.fromObject(sort);
				if((Sort.isArray())&&(Sort.size()>0)) {
					JSONObject s_json = Sort.getJSONObject(0);
					order = s_json.has("property")?s_json.getString("property"):order;
					dir = s_json.has("direction")?s_json.getString("direction"):dir;
				}
				json.put("sort", sort);
			}
			Start = start;
			Limit = limit;
			Page = page;
			if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
				String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
				List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
				if(list.size()>0) {
					for(int i=0;i<list.size();i++) {
						YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
						YtiotVUsercompanyId oid = o.getId();
						if(i==0)
							Company_Code_List = oid.getOwnerCode();
						else
							Company_Code_List += ","+oid.getOwnerCode();
					}
				}
			}
			if(address!=null) {
				hqlwhere = chkhw(hqlwhere) + " address like '%"+address+"%' ";
				hhwhere = chkhw(hhwhere) + " u.id.address like '%"+address+"%' ";
			}
			if((clzt!=null)&&(clzt.length()>0)) {
				hqlwhere = chkhw(hqlwhere) + " clzt = "+clzt+" ";
				hhwhere = chkhw(hhwhere) + " u.id.clzt = "+clzt+" ";
			}
			if(Company_Code_List!=null) {
				hqlwhere = chkhw(hqlwhere) + " company_code in ("+Company_Code_List+") ";
				hhwhere = chkhw(hhwhere) + " u.id.companyCode in ("+Company_Code_List+") ";
			}else {
				if(company_code!=null) {
					hqlwhere = chkhw(hqlwhere) + " company_code = "+company_code+" ";
					hhwhere = chkhw(hhwhere) + " u.id.companyCode = "+company_code+" ";
				}
				if(company_code_list!=null) {
					hqlwhere = chkhw(hqlwhere) + " company_code in ("+company_code_list+") ";
					hhwhere = chkhw(hhwhere) + " u.id.companyCode in ("+company_code_list+") ";
				}
			}

			if(device_code!=null) {
				hqlwhere = chkhw(hqlwhere) + " device_code = "+device_code+" ";
				hhwhere = chkhw(hhwhere) + " u.id.deviceCode = "+device_code+" ";
			}
			if(device_code_list!=null) {
				hqlwhere = chkhw(hqlwhere) + " device_code in ("+device_code_list+") ";
				hhwhere = chkhw(hhwhere) + " u.id.deviceCode in ("+device_code_list+") ";
			}
			if(time_start!=null) {
				hqlwhere = chkhw(hqlwhere) + " time >= '"+time_start+"' ";
				hhwhere = chkhw(hhwhere) + " u.id.time >= '"+time_start+"' ";
			}
			if(time_end!=null) {
				hqlwhere = chkhw(hqlwhere) + " time <= '"+time_end+"' ";
				hhwhere = chkhw(hhwhere) + " u.id.time <= '"+time_end+"' ";
			}
			if(COMMSTATUS!=null) {
				if(COMMSTATUS.equals("NO")) {
					hqlwhere = chkhw(hqlwhere)+" data1 <> 'EF9' ";
					hhwhere = chkhw(hhwhere)+" u.id.data1 <> 'EF9' ";
				}
				else if(COMMSTATUS.equals("ONLY")) {
					hqlwhere = chkhw(hqlwhere)+" data1 = 'EF9' ";
					hhwhere = chkhw(hhwhere)+" u.id.data1 = 'EF9' ";
				}
			}
			if(order!=null)
				order_str = " order by "+order;
			else
				order_str = " order by id ";

			int totalCount = ytiotVAlarmDao.getEFireCount(hhwhere);
//			System.out.print("shazi");
//			System.out.println(totalCount);

			json.put("totalCount", totalCount);
			if(Start!=null){
				if(Integer.parseInt(Start)>totalCount){
					Start = "0";
					Page = "0";
				}else if(page==null)
					Page="0";
			}else{
				Start = "0";
				Page = "0";
			}
			json.put("page", Page);
			json.put("start", Start);
			json.put("limit", Limit);
			if(totalCount>0) {
				List<?> ulist = ytiotVUserphoneDao.query(null, null, null, null, null);
				List<?> list1 = ytiotVAlarmDao.EFireQuery(hhwhere, order_str, dir, Start, Limit);
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				if(list1.size()>0) {
					for(int i=0;i<list1.size();i++) {
						YtiotVEfire o = (YtiotVEfire)list1.get(i);
						YtiotVEfireId oid = o.getId();
						String cl_name = "";
						Map<String, Comparable> map = new HashMap<String, Comparable>();
						if((company_code!=null)&&(i==0))
							json.put("company_name", oid.getCompanyName());
						map.put("orderIdx", Integer.parseInt(Start)+i+1);
						map.put("address", oid.getAddress());
						map.put("cldh", oid.getCldh());
						map.put("cllx", oid.getCllx());
						map.put("cllxr", oid.getCllxr());
						map.put("clnr", oid.getClnr());
						map.put("clr", oid.getClr());
						map.put("clwb", oid.getClwb());
						map.put("clzt", oid.getClzt()==0?"未处理":"已处理");
						map.put("company_code", oid.getCompanyCode());
						map.put("company_name", oid.getCompanyName());
						map.put("compartment", "");
						map.put("data1", oid.getData1());
						map.put("data2", oid.getData2());
						map.put("data3", oid.getData3());
						map.put("data4", oid.getData4());
						map.put("data5", oid.getData5());
						String dv = "";
						if(oid.getData1().equals("EF0"))
							dv = "正常/报警撤销";
						else if(oid.getData1().equals("EF1"))
							dv = "欠压报警";
						else if(oid.getData1().equals("EF2"))
							dv = "过压报警";
						else if(oid.getData1().equals("EF3"))
							dv = "过流报警";
						else if(oid.getData1().equals("EF4"))
							dv = "漏电报警";
						else if(oid.getData1().equals("EF5"))
							dv = "温度1超高报警";
						else if(oid.getData1().equals("EF6"))
							dv = "温度2超高报警";
						else if(oid.getData1().equals("EF7"))
							dv = "温度3超高报警";
						else if(oid.getData1().equals("EF8"))
							dv = "温度4超高报警";
						else if(oid.getData1().equals("EF9"))
							dv = "离线";
						String dw = "";
						if(oid.getData1().equals("EF0"))
							dw = "";
						else if(oid.getData1().equals("EF1"))
							dw = "V";
						else if(oid.getData1().equals("EF2"))
							dw = "V";
						else if(oid.getData1().equals("EF3"))
							dw = "mA";
						else if(oid.getData1().equals("EF4"))
							dw = "mA";
						else if(oid.getData1().equals("EF5"))
							dw = "℃";
						else if(oid.getData1().equals("EF6"))
							dw = "℃";
						else if(oid.getData1().equals("EF7"))
							dw = "℃";
						else if(oid.getData1().equals("EF8"))
							dw = "℃";
						else if(oid.getData1().equals("EF9"))
							dw = "";
						map.put("fullname", oid.getName()+","+dv+","+"告警值:"+oid.getData2()+dw);
						map.put("data", oid.getData1());
						if(oid.getClzt()==1)
							map.put("clsj", df.format(oid.getClsj()));
						else
							map.put("clsj", "");
						map.put("device_code", oid.getDeviceCode());
						map.put("fireprocess", "");
						map.put("id", oid.getId());
						map.put("name", oid.getName());
						map.put("ncmd", oid.getNcmd());
						map.put("port", oid.getPort());
						map.put("position", oid.getPosition());
						map.put("status", dv);
						map.put("time", df.format(oid.getTime()));
						map.put("vidoe", oid.getVideo());
						if((oid.getClr().length()>0)
								&&(ulist.size()>0)){
							for(int j=0;j<ulist.size();j++) {
								YtiotVUserphone po = (YtiotVUserphone)ulist.get(j);
								YtiotVUserphoneId poid = po.getId();
								if(oid.getCldh().equals(poid.getPhone())) {
									cl_name = poid.getUsername();
									break;
								}
							}
						}
						map.put("clr_name", cl_name.length()>0?cl_name:oid.getClr());
						JSONObject jSONObject = JSONObject.fromObject(map);
						jSONArray.add(jSONObject);
					}
					json.put("RESULT", jSONArray);
				}
			}
			return json.toString();
		}
	}



	@Override
	public String getHjVList(String queryJson, String page, String start, String limit, String sort) throws Exception {
		// TODO Auto-generated method stub
		String address = null;
		String clzt = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String company_name = null;
		String device_code = null;
		String device_code_list = null;
		String time_start = null;
		String time_end = null;
		String status = null;
		String COMMSTATUS = null;
		String V_LOGINNAME = null;
		String hqlwhere = null;
		String order = null;
		String dir = null;
		String Start = null;
		String Limit = null;
		String Page = null;
		String order_str = null;
		JSONObject q_json = null;
		JSONArray Sort = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getHjVList");
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			address = q_json.has("address")?q_json.getString("address"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
			COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
			if(q_json.has("company_code")) {
				if((q_json.optJSONObject("company_code")!=null)
						&&(q_json.optJSONObject("company_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							company_code_list = "'"+tmp+"'";
						else
							company_code_list += ","+"'"+tmp+"'";
					}
				}else
					company_code = q_json.getString("company_code");
			}
			company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
			if(q_json.has("device_code")) {
				if((q_json.optJSONObject("device_code")!=null)
						&&(q_json.optJSONObject("device_code").isArray())){
					JSONArray j_tmp = q_json.getJSONArray("device_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							device_code_list = tmp;
						else
							device_code_list += ","+tmp;
					}
				}else
					device_code = q_json.getString("device_code");
			}
			time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
		}
		if(V_LOGINNAME.equals("ypsgec")) {
			return json.toString();
		}else {
			if(sort!=null) {
				Sort = JSONArray.fromObject(sort);
				if((Sort.isArray())&&(Sort.size()>0)) {
					JSONObject s_json = Sort.getJSONObject(0);
					order = s_json.has("property")?s_json.getString("property"):order;
					dir = s_json.has("direction")?s_json.getString("direction"):dir;
				}
				json.put("sort", sort);
			}
			Start = start;
			Limit = limit;
			Page = page;
			if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
				String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
				List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
				if(list.size()>0) {
					for(int i=0;i<list.size();i++) {
						YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
						YtiotVUsercompanyId oid = o.getId();
						if(i==0)
							Company_Code_List = "'"+oid.getOwnerCode()+"'";
						else
							Company_Code_List += ","+"'"+oid.getOwnerCode()+"'";
					}
				}
			}
			System.out.print("hanzhengyi"+df.format(new Date()));
			if(address!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("address")+" like '%"+address+"%' ";
			if((clzt!=null)&&(clzt.length()>0))
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("clzt")+" = "+clzt+" ";
			if(Company_Code_List!=null) {
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+Company_Code_List+") ";
			}else {
				if(company_code!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+"  =  "+company_code+" ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}
			if(company_name!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_name")+" = '%"+company_name+"%' ";
			if(device_code!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" = "+device_code+" ";
			if(device_code_list!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" in ("+device_code_list+") ";
			if((time_start!=null)&&(time_start.length()>0))
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" >= '"+time_start+"' ";
			if((time_end!=null)&&(time_end.length()>0))
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" <= '"+time_end+"' ";
			System.out.print("hanzhengyi"+hqlwhere);
			if(COMMSTATUS!=null) {
				if(COMMSTATUS.equals("NO"))
					hqlwhere = chkhw(hqlwhere)+" u.id.data1 <> 'U44' ";
				else if(COMMSTATUS.equals("ONLY"))
					hqlwhere = chkhw(hqlwhere)+" u.id.data1 = 'U44' ";
			}
			if(order!=null)
				order_str = " order by u.id."+fieldname(order);
			else
				order_str = " order by u.id.id ";
			int totalCount = ytiotVAlarmDao.getHJCount(hqlwhere);
			json.put("totalCount", totalCount);
			if(Start!=null){
				if(Integer.parseInt(Start)>totalCount){
					Start = "0";
					Page = "0";
				}else if(page==null)
					Page="0";
			}else{
				Start = "0";
				Page = "0";
			}
			json.put("page", Page);
			json.put("start", Start);
			json.put("limit", Limit);
			if(totalCount>0) {
				List<?> ulist = ytiotVUserphoneDao.query(null, null, null, null, null);
				List<?> list = ytiotVAlarmDao.HJQuery(hqlwhere, order_str, dir, Start, Limit);
				if(list.size()>0) {
					for(int i=0;i<list.size();i++) {
						YtiotVHj hj = (YtiotVHj)list.get(i);
						YtiotVHjId id = hj.getId();
						String cl_name = "";
						Map<String, Comparable> map = new HashMap<String, Comparable>();
						if((company_code!=null)&&(i==0))
							json.put("company_name", id.getCompanyName());
						map.put("orderIdx", Integer.parseInt(Start)+i+1);
						map.put("address", id.getAddress());
						map.put("cldh", id.getCldh());
						map.put("cllx", id.getCllx());
						map.put("cllxr", id.getCllxr());
						map.put("clnr", id.getClnr());
						map.put("clr", id.getClr());
						map.put("clwb", id.getClwb());
						map.put("clzt", id.getClzt()==0?"未处理":"已处理");
						map.put("company_code", id.getCompanyCode());
						map.put("company_name", id.getCompanyName());
						map.put("compartment", id.getCompartment());
						map.put("data1", id.getData1());
						map.put("data2", id.getData2());
						map.put("data3", id.getData3());
						map.put("data4", id.getData4());
						map.put("data5", id.getData5());
						map.put("fullname", id.getName()+((id.getData4().length()>0) ?("，"+id.getData4()):""));
						map.put("data", id.getData2());
						if(id.getClzt()==1)
							map.put("clsj", df.format(id.getClsj()));
						else
							map.put("clsj", "");
						map.put("device_code", id.getDeviceCode());
						map.put("fireprocess", id.getFireprocess());
						map.put("id", id.getId());
						map.put("name", id.getName());
						map.put("ncmd", id.getNcmd());
						map.put("port", id.getPort());
						map.put("position", id.getPosition());
						map.put("status", id.getStatus());
						map.put("time", df.format(id.getTime()));
						map.put("vidoe", id.getVideo());
						System.out.print("循环前"+i);
						if((id.getClr().length()>0)
								&&(ulist.size()>0)){
							for(int j=0;j<ulist.size();j++) {
								YtiotVUserphone po = (YtiotVUserphone)ulist.get(j);
								YtiotVUserphoneId poid = po.getId();
								if(id.getClr().equals(poid.getPhone())) {
									cl_name = poid.getUsername();
									break;
								}
							}
						}
						System.out.print("循环后"+i);
						map.put("clr_name", cl_name.length()>0?cl_name:id.getClr());
						JSONObject jSONObject = JSONObject.fromObject(map);
						jSONArray.add(jSONObject);
					}
					json.put("RESULT", jSONArray);
//					System.out.print("RESULT"+jSONArray);
				}
			}
			return json.toString();
		}
	}

	@Override
	public String getSyncfireAlarmFexcelList(String queryJson) throws Exception {
		// TODO Auto-generated method stub
		String address = null;
		String clzt = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String company_name = null;
		String device_code = null;
		String device_code_list = null;
		String time_start = null;
		String time_end = null;
		String status = null;
		String COMMSTATUS = null;
		String V_LOGINNAME = null;
		String hqlwhere = null;
		String order = null;
		String dir = null;
		String Start = null;
		String Limit = null;
		String Page = null;
		String order_str = null;
		JSONObject q_json = null;
		JSONArray Sort = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getHjVList");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			address = q_json.has("address")?q_json.getString("address"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
			COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
			if(q_json.has("company_code")) {
				if((q_json.optJSONObject("company_code")!=null)
						&&(q_json.optJSONObject("company_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							company_code_list = tmp;
						else
							company_code_list += ","+tmp;
					}
				}else if((q_json.getString("company_code").length()>0)) {
					company_code = q_json.getString("company_code");
				}

			}
			company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
			if(q_json.has("device_code")) {
				if((q_json.optJSONObject("device_code")!=null)
						&&(q_json.optJSONObject("device_code").isArray())){
					JSONArray j_tmp = q_json.getJSONArray("device_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							device_code_list = tmp;
						else
							device_code_list += ","+tmp;
					}
				}else
					device_code = q_json.getString("device_code");
			}
			time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
		}

		if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
			String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
			List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
					YtiotVUsercompanyId oid = o.getId();
					if(i==0)
						Company_Code_List = oid.getOwnerCode();
					else
						Company_Code_List += ","+oid.getOwnerCode();
				}
			}
		}
		if(address!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("address")+" like '%"+address+"%' ";
		if((clzt!=null)&&(clzt.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("clzt")+" = "+clzt+" ";
		if(Company_Code_List!=null) {
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+Company_Code_List+") ";
		}else {
			if(company_code!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+"  =  "+company_code+" ";
			if(company_code_list!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
		}
		if(company_name!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_name")+" = '%"+company_name+"%' ";
		if(device_code!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" = "+device_code+" ";
		if(device_code_list!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" in ("+device_code_list+") ";
		if((time_start!=null)&&(time_start.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" >= '"+time_start+"' ";
		if((time_end!=null)&&(time_end.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" <= '"+time_end+"' ";
		System.out.print("hanzhengyi"+hqlwhere);
		if(COMMSTATUS!=null) {
			if(COMMSTATUS.equals("NO"))
				hqlwhere = chkhw(hqlwhere)+" u.id.data1 <> 'U44' ";
			else if(COMMSTATUS.equals("ONLY"))
				hqlwhere = chkhw(hqlwhere)+" u.id.data1 = 'U44' ";
		}
		if(order!=null)
			order_str = " order by u.id."+fieldname(order);
		else
			order_str = " order by u.id.id ";
		int totalCount = ytiotVAlarmDao.getHJCount(hqlwhere);
		json.put("totalCount", totalCount);
		if(totalCount>0) {
			List<?> ulist = ytiotVUserphoneDao.query(null, null, null, null, null);
			List<?> list = ytiotVAlarmDao.HJQuery(hqlwhere, order_str, dir, Start, Limit);
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVHj hj = (YtiotVHj)list.get(i);
					YtiotVHjId id = hj.getId();
					String cl_name = "";
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					if((company_code!=null)&&(i==0))
						json.put("company_name", id.getCompanyName());
					map.put("address", id.getAddress());
					map.put("cldh", id.getCldh());
					map.put("cllx", id.getCllx());
					map.put("cllxr", id.getCllxr());
					map.put("clnr", id.getClnr());
					map.put("clr", id.getClr());
					if(id.getClwb().equals("0"))
						map.put("clwb", "未误报");
					else if(id.getClwb().equals("1"))
						map.put("clwb", "误报");
					else
						map.put("clwb", "");
					map.put("clzt", id.getClzt()==0?"未处理":"已处理");
					map.put("company_code", id.getCompanyCode());
					map.put("company_name", id.getCompanyName());
					map.put("compartment", id.getCompartment());
					map.put("data1", id.getData1());
					map.put("data2", id.getData2());
					map.put("data3", id.getData3());
					map.put("data4", id.getData4());
					map.put("data5", id.getData5());
					map.put("data", id.getData2());
					if(id.getClzt()==1)
						map.put("clsj", df.format(id.getClsj()));
					else
						map.put("clsj", "");
					map.put("device_code", id.getDeviceCode());
					map.put("fireprocess", id.getFireprocess());
					map.put("id", id.getId());
					map.put("name", id.getName());
					map.put("ncmd", id.getNcmd());
					map.put("port", id.getPort());
					map.put("position", id.getPosition());
					map.put("status", id.getStatus());
					map.put("time", df.format(id.getTime()));
					map.put("vidoe", id.getVideo());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
		}
		return json.toString();
	}

	@Override
	public String getSyncEfireAlarmFexcelList(String queryJson) throws Exception {
		// TODO Auto-generated method stub
		String address = null;
		String clzt = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String company_name = null;
		String device_code = null;
		String device_code_list = null;
		String time_start = null;
		String time_end = null;
		String status = null;
		String COMMSTATUS = null;
		String V_LOGINNAME = null;
		String hqlwhere = null, hhwhere = null;
		String order = null;
		String dir = null;
		String Start = null;
		String Limit = null;
		String Page = null;
		String order_str = null;
		JSONObject q_json = null;
		JSONArray Sort = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getEFireVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			address = q_json.has("address")?q_json.getString("address"):null;
			clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
			COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			if(q_json.has("company_code")) {
				if((q_json.optJSONObject("company_code")!=null)
						&&(q_json.optJSONObject("company_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							company_code_list = tmp;
						else
							company_code_list += ","+tmp;
					}
				}else if((q_json.getString("company_code").length()>0)) {
					company_code = q_json.getString("company_code");
				}

			}
//				company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
			if(q_json.has("device_code")) {
				if((q_json.optJSONObject("device_code")!=null)
						&&(q_json.optJSONObject("device_code").isArray())){
					JSONArray j_tmp = q_json.getJSONArray("device_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							device_code_list = tmp;
						else
							device_code_list += ","+tmp;
					}
				}else
					device_code = q_json.getString("device_code");
			}
			time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
		}
		if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
			String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
			List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
					YtiotVUsercompanyId oid = o.getId();
					if(i==0)
						Company_Code_List = oid.getOwnerCode();
					else
						Company_Code_List += ","+oid.getOwnerCode();
				}
			}
		}
		if(address!=null) {
			hqlwhere = chkhw(hqlwhere) + " address like '%"+address+"%' ";
			hhwhere = chkhw(hhwhere) + " u.id.address like '%"+address+"%' ";
		}
		if((clzt!=null)&&(clzt.length()>0)) {
			hqlwhere = chkhw(hqlwhere) + " clzt = "+clzt+" ";
			hhwhere = chkhw(hhwhere) + " u.id.clzt = "+clzt+" ";
		}
		if(Company_Code_List!=null) {
			hqlwhere = chkhw(hqlwhere) + " company_code in ("+Company_Code_List+") ";
			hhwhere = chkhw(hhwhere) + " u.id.companyCode in ("+Company_Code_List+") ";
		}else {
			if(company_code!=null) {
				hqlwhere = chkhw(hqlwhere) + " company_code = "+company_code+" ";
				hhwhere = chkhw(hhwhere) + " u.id.companyCode = "+company_code+" ";
			}
			if(company_code_list!=null) {
				hqlwhere = chkhw(hqlwhere) + " company_code in ("+company_code_list+") ";
				hhwhere = chkhw(hhwhere) + " u.id.companyCode in ("+company_code_list+") ";
			}
		}

		if(device_code!=null) {
			hqlwhere = chkhw(hqlwhere) + " device_code = "+device_code+" ";
			hhwhere = chkhw(hhwhere) + " u.id.deviceCode = "+device_code+" ";
		}
		if(device_code_list!=null) {
			hqlwhere = chkhw(hqlwhere) + " device_code in ("+device_code_list+") ";
			hhwhere = chkhw(hhwhere) + " u.id.deviceCode in ("+device_code_list+") ";
		}
		if((time_start!=null)&&(time_start.length()>0)) {
			hqlwhere = chkhw(hqlwhere) + " time >= '"+time_start+"' ";
			hhwhere = chkhw(hhwhere) + " u.id.time >= '"+time_start+"' ";
		}
		if((time_end!=null)&&(time_start.length()>0)) {
			hqlwhere = chkhw(hqlwhere) + " time <= '"+time_end+"' ";
			hhwhere = chkhw(hhwhere) + " u.id.time <= '"+time_end+"' ";
		}
		if(COMMSTATUS!=null) {
			if(COMMSTATUS.equals("NO")) {
				hqlwhere = chkhw(hqlwhere)+" data1 <> 'EF9' ";
				hhwhere = chkhw(hhwhere)+" u.id.data1 <> 'EF9' ";
			}
			else if(COMMSTATUS.equals("ONLY")) {
				hqlwhere = chkhw(hqlwhere)+" data1 = 'EF9' ";
				hhwhere = chkhw(hhwhere)+" u.id.data1 = 'EF9' ";
			}
		}
		System.out.print("shazi"+hhwhere);
		if(order!=null)
			order_str = " order by "+order;
		else
			order_str = " order by id ";

		int totalCount = ytiotVAlarmDao.getEFireCount(hhwhere);
//			System.out.println(totalCount);

		json.put("totalCount", totalCount);
		if(totalCount>0) {
			List<?> ulist = ytiotVUserphoneDao.query(null, null, null, null, null);
			List<?> list1 = ytiotVAlarmDao.EFireQuery(hhwhere, order_str, dir, Start, Limit);
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			if(list1.size()>0) {
				for(int i=0;i<list1.size();i++) {
					YtiotVEfire o = (YtiotVEfire)list1.get(i);
					YtiotVEfireId oid = o.getId();
					String cl_name = "";
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					if((company_code!=null)&&(i==0))
						json.put("company_name", oid.getCompanyName());
					map.put("address", oid.getAddress());
					map.put("cldh", oid.getCldh());
					map.put("cllx", oid.getCllx());
					map.put("cllxr", oid.getCllxr());
					map.put("clnr", oid.getClnr());
					map.put("clr", oid.getClr());
					if(oid.getClwb().equals("0"))
						map.put("clwb", "未误报");
					else if(oid.getClwb().equals("1"))
						map.put("clwb", "误报");
					else
						map.put("clwb", "");
					map.put("clzt", oid.getClzt()==0?"未处理":"已处理");
					map.put("company_code", oid.getCompanyCode());
					map.put("company_name", oid.getCompanyName());
					map.put("data2", oid.getData2());
					map.put("data3", oid.getData3());
					map.put("data4", oid.getData4());
					map.put("data5", oid.getData5());
					if(oid.getData1().equals("EF0"))
						map.put("data1", "正常/报警撤销");
					else if(oid.getData1().equals("EF1"))
						map.put("data1", "欠压报警");
					else if(oid.getData1().equals("EF2"))
						map.put("data1","过压报警");
					else if(oid.getData1().equals("EF3"))
						map.put("data1","过流报警");
					else if(oid.getData1().equals("EF4"))
						map.put("data1","漏电报警");
					else if(oid.getData1().equals("EF5"))
						map.put("data1","温度1超高报警");
					else if(oid.getData1().equals("EF6"))
						map.put("data1","温度2超高报警");
					else if(oid.getData1().equals("EF7"))
						map.put("data1","温度3超高报警");
					else if(oid.getData1().equals("EF8"))
						map.put("data1","温度4超高报警");
					else if(oid.getData1().equals("EF9"))
						map.put("data1","离线");
//						String dw = "";
//						if(oid.getData1().equals("EF0"))
//							dw = "";
//						else if(oid.getData1().equals("EF1"))
//							dw = "V";
//						else if(oid.getData1().equals("EF2"))
//							dw = "V";
//						else if(oid.getData1().equals("EF3"))
//							dw = "mA";
//						else if(oid.getData1().equals("EF4"))
//							dw = "mA";
//						else if(oid.getData1().equals("EF5"))
//							dw = "℃";
//						else if(oid.getData1().equals("EF6"))
//							dw = "℃";
//						else if(oid.getData1().equals("EF7"))
//							dw = "℃";
//						else if(oid.getData1().equals("EF8"))
//							dw = "℃";
//						else if(oid.getData1().equals("EF9"))
//							dw = "";
					map.put("data", oid.getData1());
					if(oid.getClzt()==1)
						map.put("clsj", df.format(oid.getClsj()));
					else
						map.put("clsj", "");
					map.put("device_code", oid.getDeviceCode());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("ncmd", oid.getNcmd());
					map.put("port", oid.getPort());
					map.put("position", oid.getPosition());
					map.put("time", df.format(oid.getTime()));
					map.put("vidoe", oid.getVideo());
					if((oid.getClr().length()>0)
							&&(ulist.size()>0)){
						for(int j=0;j<ulist.size();j++) {
							YtiotVUserphone po = (YtiotVUserphone)ulist.get(j);
							YtiotVUserphoneId poid = po.getId();
							if(oid.getCldh().equals(poid.getPhone())) {
								cl_name = poid.getUsername();
								break;
							}
						}
					}
					map.put("clr_name", cl_name.length()>0?cl_name:oid.getClr());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
		}
		return json.toString();
	}

	@Override
	public String getSyncWaterAlarmFexcelList(String queryJson) throws Exception {
		// TODO Auto-generated method stub
		String address = null;
		String clzt = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String company_name = null;
		String device_code = null;
		String device_code_list = null;
		String time_start = null;
		String time_end = null;
		String COMMSTATUS = null;
		String V_LOGINNAME = null;
		String hqlwhere = null;
		String order = null;
		String dir = null;
		String Start = null;
		String Limit = null;
		String Page = null;
		String order_str = null;
		JSONObject q_json = null;
		JSONArray Sort = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getSjVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			address = q_json.has("address")?q_json.getString("address"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
			COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
			if(q_json.has("company_code")) {
				if((q_json.optJSONObject("company_code")!=null)
						&&(q_json.optJSONObject("company_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							company_code_list = tmp;
						else
							company_code_list += ","+tmp;
					}
				}else if((q_json.getString("company_code").length()>0)) {
					company_code = q_json.getString("company_code");
				}

			}
			company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
			if(q_json.has("device_code")) {
				if((q_json.optJSONObject("device_code")!=null)
						&&(q_json.optJSONObject("device_code").isArray())){
					JSONArray j_tmp = q_json.getJSONArray("device_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							device_code_list = tmp;
						else
							device_code_list += ","+tmp;
					}
				}else
					device_code = q_json.getString("device_code");
			}
			time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
		}
		if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
			String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
			List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
					YtiotVUsercompanyId oid = o.getId();
					if(i==0)
						Company_Code_List = oid.getOwnerCode();
					else
						Company_Code_List += ","+oid.getOwnerCode();
				}
			}
		}
		if(address!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("address")+" like '%"+address+"' ";
		if((clzt!=null)&&(clzt.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("clzt")+" = "+clzt+" ";
		if(Company_Code_List!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+Company_Code_List+") ";
		else {
			if(company_code!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+"  =  "+company_code+" ";
			if(company_code_list!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
		}
//		if(company_code!=null)
//			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" = '"+company_code+"' ";
//		if(company_code_list!=null)
//			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
		if(company_name!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_name")+" like '%"+company_name+"%' ";
		if(device_code!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" = '"+device_code+"' ";
		if(device_code_list!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" in ("+device_code_list+") ";
		if((time_start!=null)&&(time_start.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" >= '"+time_start+"' ";
		if((time_end!=null)&&(time_end.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" <= '"+time_end+"' ";
		if(COMMSTATUS!=null) {
			if(COMMSTATUS.equals("NO"))
				hqlwhere = chkhw(hqlwhere)+"( u.id.data1 <> 'WP4' and u.id.data1 <> 'LL4' ) ";
			else if(COMMSTATUS.equals("ONLY"))
				hqlwhere = chkhw(hqlwhere)+" ( u.id.data1 = 'WP4' or u.id.data1 = 'LL4' ) ";
		}
		if(order!=null)
			order_str = " order by u.id."+fieldname(order);
		else
			order_str = " order by u.id.id ";
		int totalCount = ytiotVAlarmDao.getSJCount(hqlwhere);
		json.put("totalCount", totalCount);
		if(totalCount>0) {
			List<?> ulist = ytiotVUserphoneDao.query(null, null, null, null, null);
			List<?> list = ytiotVAlarmDao.SJQuery(hqlwhere, order_str, dir, Start, Limit);
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVSj hj = (YtiotVSj)list.get(i);
					YtiotVSjId id = hj.getId();
					String cl_name = "";
					if((company_code!=null)&&(i==0))
						json.put("company_name", id.getCompanyName());
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("address", id.getAddress());
					map.put("cldh", id.getCldh());
					map.put("cllx", id.getCllx());
					map.put("cllxr", id.getCllxr());
					map.put("clnr", id.getClnr());
					map.put("clr", id.getClr());
					if(id.getClwb().equals("0"))
						map.put("clwb", "未误报");
					else if(id.getClwb().equals("1"))
						map.put("clwb", "误报");
					else
						map.put("clwb", "");
					map.put("clzt", id.getClzt()==0?"未处理":"已处理");
					map.put("clsj", df.format(id.getClsj()));
					map.put("company_code", id.getCompanyCode());
					map.put("company_name", id.getCompanyName());
					map.put("data2", id.getData2());
					map.put("data3", id.getData3());
					map.put("data4", id.getData4()+(id.getData1().equals("WP1")?"MPa"
							:(id.getData1().equals("WP2")?"MPa"
							:(id.getData1().equals("WP3")?"MPa"
							:(id.getData1().equals("WP4")?"MPa"
							:(id.getData1().equals("WP0")?"MPa"
							:(id.getData1().equals("LL1")?"m"
							:(id.getData1().equals("LL2")?"m"
							:(id.getData1().equals("LL3")?"m"
							:(id.getData1().equals("LL0")?"m":""))))))))));
					map.put("data5", id.getData5());
					if(id.getClzt()==1)
						map.put("clsj", df.format(id.getClsj()));
					else
						map.put("clsj", "");
					map.put("device_code", id.getDeviceCode());
					map.put("id", id.getId());
					map.put("name", id.getName());
					map.put("ncmd", id.getNcmd());
					map.put("port", id.getPort());
					map.put("position", id.getPosition());
					map.put("status", id.getStatus());
					map.put("time", df.format(id.getTime()));
					map.put("vidoe", id.getVideo());
					map.put("data1", id.getData1().equals("WP1")?"低压"
							:(id.getData1().equals("WP2")?"高压"
							:(id.getData1().equals("WP3")?"故障"
							:(id.getData1().equals("WP4")?"离线"
							:(id.getData1().equals("WP0")?"正常"
							:(id.getData1().equals("LL1")?"低水位"
							:(id.getData1().equals("LL2")?"高水位"
							:(id.getData1().equals("LL3")?"故障"
							:(id.getData1().equals("LL0")?"正常":id.getData1())))))))));
					if((id.getClr().length()>0)
							&&(ulist.size()>0)){
						for(int j=0;j<ulist.size();j++) {
							YtiotVUserphone po = (YtiotVUserphone)ulist.get(j);
							YtiotVUserphoneId poid = po.getId();
							if(id.getClr().equals(poid.getPhone())) {
								cl_name = poid.getUsername();
								break;
							}
						}
					}
					map.put("clr_name", cl_name.length()>0?cl_name:id.getClr());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
		}
		return json.toString();
	}

	@Override
	public String getSyncRTUAlarmFexcelList(String queryJson) throws Exception {
		// TODO Auto-generated method stub
		String address = null;
		String clzt = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String company_name = null;
		String device_code = null;
		String device_code_list = null;
		String time_start = null;
		String time_end = null;
		String status = null;
		String COMMSTATUS = null;
		String V_LOGINNAME = null;
		String hqlwhere = null;
		String order = null;
		String dir = null;
		String Start = null;
		String Limit = null;
		String Page = null;
		String order_str = null;
		JSONObject q_json = null;
		JSONArray Sort = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getRTUVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			address = q_json.has("address")?q_json.getString("address"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
			COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
			if(q_json.has("company_code")) {
				if((q_json.optJSONObject("company_code")!=null)
						&&(q_json.optJSONObject("company_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							company_code_list = tmp;
						else
							company_code_list += ","+tmp;
					}
				}else if((q_json.getString("company_code").length()>0)) {
					company_code = q_json.getString("company_code");
				}

			}
			company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
			if(q_json.has("device_code")) {
				if((q_json.optJSONObject("device_code")!=null)
						&&(q_json.optJSONObject("device_code").isArray())){
					JSONArray j_tmp = q_json.getJSONArray("device_code");
					for(int i=0;i<j_tmp.size();i++) {
						String tmp = j_tmp.getString(i);
						if(i==0)
							device_code_list = tmp;
						else
							device_code_list += ","+tmp;
					}
				}else
					device_code = q_json.getString("device_code");
			}
			time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
		}

		if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
			String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
			List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
					YtiotVUsercompanyId oid = o.getId();
					if(i==0)
						Company_Code_List = oid.getOwnerCode();
					else
						Company_Code_List += ","+oid.getOwnerCode();
				}
			}
		}
		if(address!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("address")+" like '%"+address+"%' ";
		if((clzt!=null)&&(clzt.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("clzt")+" = "+clzt+" ";
		if(Company_Code_List!=null) {
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+Company_Code_List+") ";
		}else {
			if((company_code!=null))
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+"  =  "+company_code+" ";
			if(company_code_list!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
		}
		if(company_name!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_name")+" = '%"+company_name+"%' ";
		if(device_code!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" = "+device_code+" ";
		if(device_code_list!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" in ("+device_code_list+") ";
		if((time_start!=null)&&(time_start.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" >= '"+time_start+"' ";
		if((time_end!=null)&&(time_end.length()>0))
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" <= '"+time_end+"' ";
//		System.out.print("hanzhengyi"+COMMSTATUS);

		if(COMMSTATUS!=null) {
			if(COMMSTATUS.equals("NO"))
				hqlwhere = chkhw(hqlwhere)+" u.id.status <> '44' ";
			else if(COMMSTATUS.equals("ONLY"))
				hqlwhere = chkhw(hqlwhere)+" u.id.status = '44' ";
		}
		System.out.print("han"+hqlwhere);
		if(order!=null)
			order_str = " order by u.id."+fieldname(order);
		else
			order_str = " order by u.id.id ";
		int totalCount = ytiotVAlarmDao.getRTUCount(hqlwhere);
		json.put("totalCount", totalCount);
		if(totalCount>0) {
			List<?> ulist = ytiotVUserphoneDao.query(null, null, null, null, null);
			List<?> list = ytiotVAlarmDao.RTUQuery(hqlwhere, order_str, dir, Start, Limit);
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			if(list.size()>0) {
				for(int i=0;i<list.size();i++) {
					YtiotVRtu hj = (YtiotVRtu)list.get(i);
					YtiotVRtuId id = hj.getId();
					String cl_name = "";
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					if((company_code!=null)&&(i==0))
						json.put("company_name", id.getCompanyName());
					map.put("address", id.getAddress());
					map.put("cldh", id.getCldh());
					map.put("cllx", id.getCllx());
					map.put("cllxr", id.getCllxr());
					map.put("clnr", id.getClnr());
					map.put("clr", id.getClr());
					if(id.getClwb().equals("0"))
						map.put("clwb", "未误报");
					else if(id.getClwb().equals("1"))
						map.put("clwb", "误报");
					else
						map.put("clwb", "");
					map.put("clzt", id.getClzt()==0?"未处理":"已处理");
					map.put("company_code", id.getCompanyCode());
					map.put("company_name", id.getCompanyName());
					map.put("data1", id.getData1());
					map.put("data2", id.getData2());
					map.put("data3", id.getData3());
					map.put("data4", id.getData4());
					map.put("data5", id.getData5());
					map.put("data", id.getData2());
					if(id.getClzt()==1)
						map.put("clsj", df.format(id.getClsj()));
					else
						map.put("clsj", "");
					map.put("device_code", id.getDeviceCode());
					map.put("id", id.getId());
					map.put("name", id.getName());
					map.put("ncmd", id.getNcmd());
					map.put("port", id.getPort());
					map.put("position", id.getPosition());
					map.put("status", id.getStatus());
					map.put("time", df.format(id.getTime()));
					map.put("vidoe", id.getVideo());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
		}
		return json.toString();
	}

	/**
	 * 获取监控视频告警信息
	 * @param queryJson
	 * @param page
	 * @param start
	 * @param limit
	 * @param sort
	 * @return
	 */
	@Override
	public String getVideoLists(String queryJson, String page, String start, String limit, String sort) {
		{

			String address = null;//地址
			String clzt = null;//处理状态
			String company_code = null;//公司编号
			String company_code_list = null;//
			String Company_Code_List = null;
			String company_name = null;//公司名
			String device_code = null;//设备代码
			String device_code_list = null;
			String time_start = null;//告警开始时间
			String time_end = null;//告警结束时间
			String COMMSTATUS = null;
			String V_LOGINNAME = null;//用户名
			String hqlwhere = null;
			String order = null;
			String dir = null;
			String Start = null;
			String Limit = null;
			String Page = null;
			String order_str = null;
			JSONObject q_json = null;
			JSONArray Sort = null;
			JSONArray jSONArray = new JSONArray();
			JSONObject json = new JSONObject();
			json.put("action", "getVideoLists");
			if(StringUtils.isNotBlank(queryJson)) {
				q_json = JSONObject.fromObject(queryJson);
				address = q_json.has("address")?q_json.getString("address"):null;
				V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
				clzt = q_json.has("clzt")?q_json.getString("clzt"):null;
				COMMSTATUS = q_json.has("COMMSTATUS")?q_json.getString("COMMSTATUS"):null;
				if(q_json.has("company_code")) {
					if((q_json.optJSONObject("company_code")!=null)
							&&(q_json.optJSONObject("company_code").isArray())) {
						JSONArray j_tmp = q_json.getJSONArray("company_code");
						for(int i=0;i<j_tmp.size();i++) {
							String tmp = j_tmp.getString(i);
							if(i==0)
								company_code_list = tmp;
							else
								company_code_list += ","+tmp;
						}
					}else
						company_code = q_json.getString("company_code");
				}
				company_name = q_json.has("company_name")?q_json.getString("company_name"):null;
				if(q_json.has("device_code")) {
					if((q_json.optJSONObject("device_code")!=null)
							&&(q_json.optJSONObject("device_code").isArray())){
						JSONArray j_tmp = q_json.getJSONArray("device_code");
						for(int i=0;i<j_tmp.size();i++) {
							String tmp = j_tmp.getString(i);
							if(i==0)
								device_code_list = tmp;
							else
								device_code_list += ","+tmp;
						}
					}else
						device_code = q_json.getString("device_code");
				}
				time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
				time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
			}
			if(sort!=null) {
				Sort = JSONArray.fromObject(sort);
				if((Sort.isArray())&&(Sort.size()>0)) {
					JSONObject s_json = Sort.getJSONObject(0);
					order = s_json.has("property")?s_json.getString("property"):order;
					dir = s_json.has("direction")?s_json.getString("direction"):dir;
				}
				json.put("sort", sort);
			}
			Start = start;
			Limit = limit;
			Page = page;
			if((V_LOGINNAME!=null)&&(company_code==null)&&(company_code_list==null)) {
				String where = " where u.id.agentid='"+V_LOGINNAME+"' ";
				List list = ytiotVUserCompanyDao.query(where, null, null, null, null);
				if(list!=null && list.size()>=0) {
					for(int i=0;i<list.size();i++) {
						YtiotVUsercompany o = (YtiotVUsercompany)list.get(i);
						YtiotVUsercompanyId oid = o.getId();
						if(i==0)
							Company_Code_List = oid.getOwnerCode();
						else
							Company_Code_List += ","+oid.getOwnerCode();
					}
				}
			}
			if(address!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("address")+" like '%"+address+"' ";
			if((clzt!=null)&&(clzt.length()>0))
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("clzt")+" = "+clzt+" ";
			if(Company_Code_List!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+Company_Code_List+") ";
			else {
				if(company_code!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+"  =  "+company_code+" ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}
//		if(company_code!=null)
//			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" like '%"+company_code+"%' ";
//		if(company_code_list!=null)
//			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			if(company_name!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_name")+" like '%"+company_name+"%' ";
			if(device_code!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" like '%"+device_code+"%' ";
			if(device_code_list!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_code")+" in ("+device_code_list+") ";
			if(time_start!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" >= '"+time_start+"' ";
			if(time_end!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("time")+" <= '"+time_end+"' ";
