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

import java.text.SimpleDateFormat;
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.alarm.dao.YtiotVAlarmDao;
import cn.com.usky.iot.company.dao.YtiotVCompanyDao;
import cn.com.usky.iot.data.dao.YtiotVDataDao;
import cn.com.usky.iot.entity.YtiotTAdmin;
import cn.com.usky.iot.entity.YtiotTArea;
import cn.com.usky.iot.entity.YtiotVCompany;
import cn.com.usky.iot.entity.YtiotVCompanyId;
import cn.com.usky.iot.entity.YtiotVHj;
import cn.com.usky.iot.entity.YtiotVHjId;
import cn.com.usky.iot.entity.YtiotVRtu;
import cn.com.usky.iot.entity.YtiotVRtuId;
import cn.com.usky.iot.entity.YtiotVSj;
import cn.com.usky.iot.entity.YtiotVSjId;
import cn.com.usky.iot.entity.YtiotVSync;
import cn.com.usky.iot.entity.YtiotVSyncData;
import cn.com.usky.iot.entity.YtiotVSyncDataId;
import cn.com.usky.iot.entity.YtiotVSyncId;
import cn.com.usky.iot.entity.YtiotVSyncStatus;
import cn.com.usky.iot.entity.YtiotVSyncStatusId;
import cn.com.usky.iot.entity.YtiotVUsercompany;
import cn.com.usky.iot.entity.YtiotVUsercompanyId;
import cn.com.usky.utils.MD5Util;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.Calendar;

public class YtiotVDataServiceImpl implements YtiotVDataService {
	private YtiotVDataDao ytiotVDataDao;
	private YtiotVCompanyDao ytiotVCompanyDao; 
	private YtiotVUserCompanyDao ytiotVUserCompanyDao;
	private YtiotVAlarmDao ytiotVAlarmDao;
	private YtiotTAdminDao ytiotTAdminDao;
	public YtiotVDataDao getYtiotVDataDao() {
		return ytiotVDataDao;
	}

	public void setYtiotVDataDao(YtiotVDataDao ytiotVDataDao) {
		this.ytiotVDataDao = ytiotVDataDao;
	}

	public YtiotVCompanyDao getYtiotVCompanyDao() {
		return ytiotVCompanyDao;
	}

	public void setYtiotVCompanyDao(YtiotVCompanyDao ytiotVCompanyDao) {
		this.ytiotVCompanyDao = ytiotVCompanyDao;
	}

	public YtiotVUserCompanyDao getYtiotVUserCompanyDao() {
		return ytiotVUserCompanyDao;
	}

	public void setYtiotVUserCompanyDao(YtiotVUserCompanyDao ytiotVUserCompanyDao) {
		this.ytiotVUserCompanyDao = ytiotVUserCompanyDao;
	}

	public YtiotTAdminDao getYtiotTAdminDao() {
		return ytiotTAdminDao;
	}

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

	public YtiotVAlarmDao getYtiotVAlarmDao() {
		return ytiotVAlarmDao;
	}

	public void setYtiotVAlarmDao(YtiotVAlarmDao ytiotVAlarmDao) {
		this.ytiotVAlarmDao = ytiotVAlarmDao;
	}

	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("device_id"))
			return "deviceId";
		if(name.equals("device_name"))
			return "deviceName";
		if(name.equals("install_time"))
			return "installTime";
		if(name.equals("sync_id"))
			return "syncId";
		if(name.equals("table_name"))
			return "tableName";
		if(name.equals("data_time"))
			return "dataTime";
		if(name.equals("native_id"))
			return "nativeId";
		if(name.equals("point_code"))
			return "pointCode";
		if(name.equals("point_data"))
			return "pointData";
		if(name.equals("owner_name"))
			return "ownerName";
		if(name.equals("owner_id"))
			return "ownerId";
		return name;
	}
	
	@Override
	public String getSyncPointVList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String device_name = null;
		String dwtype = null;
		String dwtype_list = null;
		String id = null;
		String id_list = null;
		String install_time_start = null;
		String install_time_end = null;
		String Company_Code_List = null;
		String V_LOGINNAME = null;
		String unitinfo = 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", "getSyncPointVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			if(q_json.has("company_code")) {
				if(q_json.getJSONObject("company_code").isArray()) {
					JSONArray j_tmp = q_json.getJSONArray("company_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if(q_json.getJSONObject("device_id").isArray()) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			device_name = q_json.has("device_name")?q_json.getString("device_name"):null;
			if(q_json.has("dwtype")) {
				if(q_json.getJSONObject("dwtype").isArray()) {
					JSONArray j_tmp = q_json.getJSONArray("dwtype");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							dwtype_list = j_tmp.getString(i);
						else
							dwtype_list += ","+j_tmp.getString(i);
					}
				}else
					dwtype = q_json.getString("dwtype");
			}
			if(q_json.has("id")) {
				if(q_json.getJSONObject("id").isArray()) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			unitinfo = q_json.has("unitinfo")?q_json.getString("unitinfo"):null;
			install_time_start = q_json.has("install_time_start")?q_json.getString("install_time_start"):null;
			install_time_end = q_json.has("install_time_end")?q_json.getString("install_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) {
			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(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")+" like '%"+company_code+"%' ";
			if(company_code_list!=null)
				hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
		}
		if(device_id!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_id")+" like '%"+device_id+"%' ";
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_id")+" in ("+device_id_list+") ";
		if(device_name!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("device_name")+" like '%"+device_name+"%' ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("id")+" in ("+id_list+") ";
		if(install_time_start!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("install_time")+" >='"+install_time_start+"' ";
		if(install_time_end!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("install_time")+" <='"+install_time_end+"' ";
		if(unitinfo!=null)
			hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("unitinfo")+" like '%"+unitinfo+"%' ";
		int totalCount = ytiotVDataDao.getSyncPointCount(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<?> list = ytiotVDataDao.SyncPointQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSync o = (YtiotVSync)list.get(i);
					YtiotVSyncId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company_code", oid.getCompanyCode());
					map.put("device_id", oid.getDeviceId());
					map.put("device_name", oid.getDeviceName());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("install_time", df.format(oid.getInstallTime()));
					map.put("rtmp", oid.getRtmp());
					map.put("sync_id", oid.getSyncId());
					map.put("tablename", oid.getTableName());
					map.put("unitinfo", oid.getUnitinfo());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
		}
		return json.toString();
	}
	@Override
	public String getSyncDataList(String queryJson)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			if(q_json.has("dwtype")) {
				if((q_json.optJSONObject("dwtype")!=null)&&(q_json.optJSONObject("dwtype").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("dwtype");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							dwtype_list = j_tmp.getString(i);
						else
							dwtype_list += ","+j_tmp.getString(i);
					}
				}else
					dwtype = q_json.getString("dwtype");
			}
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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.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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(hqlwhere);
		json.put("totalCount", totalCount);
		if(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("orderIdx", Integer.parseInt(Start)+i+1);
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}

	@Override
	public String getSyncDataVList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			if(q_json.has("dwtype")) {
				if((q_json.optJSONObject("dwtype")!=null)&&(q_json.optJSONObject("dwtype").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("dwtype");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							dwtype_list = j_tmp.getString(i);
						else
							dwtype_list += ","+j_tmp.getString(i);
					}
				}else
					dwtype = q_json.getString("dwtype");
			}
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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.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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	@Override
	public String getSyncDataQList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			if(dwtype!=null) {
				if((dwtype.equals("2"))||(dwtype.equals("4"))||(dwtype.equals("5")))
				{
					dwtype_list = "2,4,5";
					dwtype=null;
				}
//				for(int i=0;i<2;i++) {
//					if(i==0)
//						dwtype_list = "2";
//					else
//						dwtype_list += ","+"5";
//				}
			}
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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.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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	@Override
	public String getSyncwaterDataVList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String device_type = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}

					for(int i=0;i<2;i++) {
						if(i==0)
							dwtype_list = "2";
						else
							dwtype_list += ","+"5";
					}
			
					for(int i=0;i<2;i++) {
						if(i==0)
							point_code_list = "2";
						else
							point_code_list += ","+"3"+","+"4";
					}
				
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			data_time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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)&&(!V_LOGINNAME.equals("admin"))&&(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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id_list+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncStatusCount(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(order!=null) {
			order_str = " order by data_time ";
			
		} else {
			order_str = " order by device_id ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncStatusQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncStatus o = (YtiotVSyncStatus)list.get(i);
					YtiotVSyncStatusId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					if(oid.getDwtype()==2) {
						map.put("device_type", "水表");
					}else {
						map.put("device_type", "液位");
					}
					map.put("orderIdx", Integer.parseInt(Start)+i+1);
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
//					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_name", oid.getPointName());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	@Override
	public String getSyncDataRList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			
					dwtype= "6";
			
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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.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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	@Override
	public String getSyncrtuDataVList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String device_type = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}

//					for(int i=0;i<2;i++) {
//						if(i==0)
//							dwtype_list = "2";
//						else
//							dwtype_list += ","+"5";
//					}
			dwtype = "6";
			point_code = "64";
					
				
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			data_time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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)&&(!V_LOGINNAME.equals("admin"))&&(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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id_list+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" > ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncStatusCount(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(order!=null) {
			order_str = " order by data_time ";
			
		} else {
			order_str = " order by device_id ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncStatusQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncStatus o = (YtiotVSyncStatus)list.get(i);
					YtiotVSyncStatusId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("device_type", "RTU");
					map.put("orderIdx", Integer.parseInt(Start)+i+1);
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
//					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_name", oid.getPointName());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncDataFList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			
					dwtype= "7";
			
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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.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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncfileDataFexcelList(String queryJson)
			throws Exception {
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			
					dwtype= "7";
			
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			Page = q_json.has("page")?q_json.getString("page"):null;
			order = q_json.has("order")?q_json.getString("order"):null;
			dir = q_json.has("dir")?q_json.getString("dir"):null;
			Start = q_json.has("start")?q_json.getString("start"):null;
			Limit = q_json.has("limit")?q_json.getString("limit"):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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncwaterDataFexcelList(String queryJson)
			throws Exception {
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			
			for(int i=0;i<2;i++) {
				if(i==0)
					dwtype_list = "2";
				else
					dwtype_list += ","+"5";
			}
			
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			Page = q_json.has("page")?q_json.getString("page"):null;
			order = q_json.has("order")?q_json.getString("order"):null;
			dir = q_json.has("dir")?q_json.getString("dir"):null;
			Start = q_json.has("start")?q_json.getString("start"):null;
			Limit = q_json.has("limit")?q_json.getString("limit"):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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncDataFexcelList(String queryJson)
			throws Exception {
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			
//			for(int i=0;i<2;i++) {
//				if(i==0)
//					dwtype_list = "2";
//				else
//					dwtype_list += ","+"5";
//			}
			
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			Page = q_json.has("page")?q_json.getString("page"):null;
			order = q_json.has("order")?q_json.getString("order"):null;
			dir = q_json.has("dir")?q_json.getString("dir"):null;
			Start = q_json.has("start")?q_json.getString("start"):null;
			Limit = q_json.has("limit")?q_json.getString("limit"):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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncrtuDataFexcelList(String queryJson)
			throws Exception {
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			
					dwtype= "6";
			
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += ","+j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("data_time_start")?q_json.getString("data_time_start"):null;
			data_time_end = q_json.has("data_time_end")?q_json.getString("data_time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			Page = q_json.has("page")?q_json.getString("page"):null;
			order = q_json.has("order")?q_json.getString("order"):null;
			dir = q_json.has("dir")?q_json.getString("dir"):null;
			Start = q_json.has("start")?q_json.getString("start"):null;
			Limit = q_json.has("limit")?q_json.getString("limit"):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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncDataCount(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(order!=null) {
			order_str = " order by "+fieldname(order)+" ";
			
		} else {
			order_str = " order by data_time ";
			dir = "DESC";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncDataQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncData o = (YtiotVSyncData)list.get(i);
					YtiotVSyncDataId oid = o.getId();
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("result", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncfireDataVList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String device_type = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String id = null;
		String id_list = null;
		String company = null;
		String data_time_start = null;
		String data_time_end = null;
		String name = null;
		String Company_Code_List = 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", "getSyncDataVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}

//					for(int i=0;i<2;i++) {
//						if(i==0)
//							dwtype_list = "2";
//						else
//							dwtype_list += ","+"5";
//					}
			dwtype = "7";
			point_code = "64";
					
				
			if(q_json.has("id")) {
				if((q_json.optJSONObject("id")!=null)&&(q_json.optJSONObject("id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							id_list = j_tmp.getString(i);
						else
							id_list += ","+j_tmp.getString(i);
					}
				}else
					id = q_json.getString("id");
			}
			company = q_json.has("company")?q_json.getString("company"):null;
			data_time_start = q_json.has("time_start")?q_json.getString("time_start"):null;
			data_time_end = q_json.has("time_end")?q_json.getString("time_end"):null;
			name = q_json.has("name")?q_json.getString("name"):null;
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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.equals("admin")) {
		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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" = '"+device_id+"' ";
		else {
			if(company!=null) {
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			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")+" like '%"+company_code+"%' ";
				if(company_code_list!=null)
					hqlwhere = chkhw(hqlwhere) + " u.id."+fieldname("company_code")+" in ("+company_code_list+") ";
			}			
		}
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" in ("+device_id_list+") ";
		if(dwtype!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype_list+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" > ("+point_code+") ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code_list+") ";
		if(id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" = "+id+" ";
		if(id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("id")+" in ("+id_list+") ";
		if(data_time_start!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" >= '"+data_time_start+"' ";
		if(data_time_end!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("data_time")+" <= '"+data_time_end+"' ";
		if(name!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("name")+" like '%"+name+"%' ";
		int totalCount = ytiotVDataDao.getSyncStatusCount(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(order!=null) {
			order_str = " order by data_time ";
			
		} else {
			order_str = " order by device_id ";
			dir = "DESC";
		}
		
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncStatusQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				for(int i=0;i<list.size();i++) {
					YtiotVSyncStatus o = (YtiotVSyncStatus)list.get(i);
					YtiotVSyncStatusId oid = o.getId();
					
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("device_type", "电气火灾");
					map.put("orderIdx", Integer.parseInt(Start)+i+1);
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
//					map.put("native_id", oid.getNativeId());
					map.put("point_code", oid.getPointCode());
					map.put("point_name", oid.getPointName());
					map.put("point_data", oid.getPointData());
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
			
		}
		return json.toString();
	}
	
	@Override
	public String getSyncStatusVList(String queryJson, String page, String start, String limit, String sort)
			throws Exception {
		// TODO Auto-generated method stub
		String company = null;
		String company_code = null;
		String company_code_list = null;
		String device_id = null;
		String device_id_list = null;
		String dwtype = null;
		String dwtype_list = null;
		String point_code = null;
		String point_code_list = null;
		String Company_Code_List = 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", "getSyncStatusVList");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			company = q_json.has("company")?q_json.getString("company"):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++) {
						if(i==0)
							company_code_list = j_tmp.getString(i);
						else
							company_code_list += ","+j_tmp.getString(i);
					}
				}else
					company_code = q_json.getString("company_code");
			}
			if(q_json.has("device_id")) {
				if((q_json.optJSONObject("device_id")!=null)&&(q_json.optJSONObject("device_id").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("device_id");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							device_id_list = j_tmp.getString(i);
						else
							device_id_list += ","+j_tmp.getString(i);
					}
				}else
					device_id = q_json.getString("device_id");
			}
			if(q_json.has("dwtype")) {
				if((q_json.optJSONObject("dwtype")!=null)&&(q_json.optJSONObject("dwtype").isArray())) {
					JSONArray j_tmp = q_json.getJSONArray("dwtype");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							dwtype_list = j_tmp.getString(i);
						else
							dwtype_list += ","+j_tmp.getString(i);
					}
				}else
					dwtype = q_json.getString("dwtype");
			}
			if(q_json.has("point_code")) {
				if((q_json.optJSONObject("point_code")!=null)&&(q_json.optJSONObject("point_code").isArray()) ){
					JSONArray j_tmp = q_json.getJSONArray("point_code");
					for(int i=0;i<j_tmp.size();i++) {
						if(i==0)
							point_code_list = j_tmp.getString(i);
						else
							point_code_list += j_tmp.getString(i);
					}
				}else
					point_code = q_json.getString("point_code");
			}
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):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) {
			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(company!=null) {
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
		}
		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(device_id!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" like '%"+device_id+"%' ";
		if(device_id_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("device_id")+" ("+device_id_list+") ";
		if(dwtype!=null) {
			if(dwtype.equals("2")||dwtype.equals("5"))
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in (2,5) ";
			else
				hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" = "+dwtype+" ";
		}
		if(dwtype_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("dwtype")+" in ("+dwtype+") ";
		if(point_code!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" = "+point_code+" ";
		if(point_code_list!=null)
			hqlwhere = chkhw(hqlwhere)+" u.id."+fieldname("point_code")+" in ("+point_code+") ";
		int totalCount = ytiotVDataDao.getSyncStatusCount(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";
		}
		if(totalCount>0) {
			List<?> list = ytiotVDataDao.SyncStatusQuery(hqlwhere, order_str, dir, Start, Limit);
			if(list.size()>0) {
				Date date = new Date();
				Calendar calendar = Calendar.getInstance();
				calendar.setTime(date);
				calendar.add(Calendar.DATE, -1);
				date = calendar.getTime();
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String datime =df.format(date);
				for(int i=0;i<list.size();i++) {
					YtiotVSyncStatus o = (YtiotVSyncStatus)list.get(i);
					YtiotVSyncStatusId oid = o.getId();
					String bzsql15 = null;
					bzsql15 = "SELECT device_id,IF((data_time<'"+datime+"'),0,1) AS connected FROM ytiot_v_sync_status WHERE device_id = '"+oid.getDeviceId().toString()+"' AND point_code = 2";
					List bzlist15 = ytiotVAlarmDao.queryBySQL(bzsql15);
					Object [] bzrow = (Object [])bzlist15.get(0);
					@SuppressWarnings("rawtypes")
					Map<String, Comparable> map = new HashMap<String, Comparable>();
					map.put("ordIdx", Integer.parseInt(Start)+i+1);
					map.put("company", oid.getCompany());
					map.put("company_code", oid.getCompanyCode());
					map.put("content", oid.getContent());
					map.put("data_time", df.format(oid.getDataTime()));
					map.put("device_id", oid.getDeviceId());
					map.put("dwtype", oid.getDwtype());
					map.put("id", oid.getId());
					map.put("name", oid.getName());
					map.put("point_code", oid.getPointCode());
					map.put("point_data", oid.getPointData());
					map.put("connected", Integer.parseInt(bzrow[1].toString())==1?"正常":"离线");
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray.add(jSONObject);
				}
				json.put("RESULT", jSONArray);
			}
		}
		json.put("page", Page);
		json.put("start", Start);
		json.put("limit", Limit);
		return json.toString();
	}

	@Override
	public String getSyncStatusVListByCompany(String queryJson) throws Exception {
		// TODO Auto-generated method stub
		String company = null;
		String company_code = null;
		String company_code_list = null;
		String Company_Code_List = null;
		String dwtype = null;
		String point_code = null;
		String V_LOGINNAME = null;
		String V_PASSWORD = null;
		String QUERY_FROM = null;
		String COMMSTATUS = null;
		String hqlwhere = null;
		String cqlwhere = null;
		int E_STATUS=-1;
		JSONObject q_json = null;
		JSONArray jSONArray = new JSONArray();
		JSONObject json = new JSONObject();
		json.put("action", "getSyncStatusVListByCompany");
		if(queryJson!=null) {
			q_json = JSONObject.fromObject(queryJson);
			company = q_json.has("company")?q_json.getString("company"):null;
			dwtype = q_json.has("dwtype")?q_json.getString("dwtype"):null;
			point_code = q_json.has("point_code")?q_json.getString("point_code"):null;
			QUERY_FROM = q_json.has("QUERY_FROM")?q_json.getString("QUERY_FROM"):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())) {
					if(q_json.getJSONObject("company_code").isArray()) {
						JSONArray j_tmp = q_json.getJSONArray("company_code");
						for(int i=0;i<j_tmp.size();i++) {
							if(i==0)
								company_code_list = j_tmp.getString(i);
							else
								company_code_list += ","+j_tmp.getString(i);
						}
					}else
						company_code = q_json.getString("company_code");
				}else
					company_code = q_json.getString("company_code");
			}
			V_LOGINNAME = q_json.has("V_LOGINNAME")?q_json.getString("V_LOGINNAME"):null;
			V_PASSWORD = q_json.has("V_PASSWORD")?q_json.getString("V_PASSWORD"):null;
		}
		if((V_LOGINNAME!=null)&&(V_PASSWORD!=null)) {
			List list = ytiotTAdminDao.query(" where u.VLoginname='"+V_LOGINNAME+"' and u.VPassword='"
					+MD5Util.EncoderByMd5(MD5Util.EncoderByMd5(V_PASSWORD))+"' ", null, null, null, null);
			if(list.size()>0) {
				YtiotTAdmin o = (YtiotTAdmin)list.get(0);
				E_STATUS = Integer.parseInt(o.getEStatus());
			}
		}
		if(E_STATUS==1) {
			if(company!=null) {
				cqlwhere = chkhw(cqlwhere)+" u.id."+fieldname("owner_name")+" like '%"+company+"%' ";
			}
			if(!V_LOGINNAME.equals("admin")) {
				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();
					}
				}
			}
			List vlist = ytiotVAlarmDao.queryBySQL("select count(*) as count, company_code from ytiot_v_video group by company_code");
			if(company_code!=null)
				cqlwhere = chkhw(cqlwhere) + " u.id."+fieldname("owner_id")+" like '%"+company_code+"%' ";
			if(company_code_list!=null)
				cqlwhere = chkhw(cqlwhere) + " u.id."+fieldname("owner_id")+" in ("+company_code_list+") ";
			else if(Company_Code_List!=null)
				cqlwhere = chkhw(cqlwhere) + " u.id."+fieldname("owner_id")+" in ("+Company_Code_List+") ";
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//			if((QUERY_FROM!=null)&&(COMMSTATUS!=null)&&(QUERY_FROM.equals("FRONTPAGE")&&(COMMSTATUS.equals("NO")))) {
//				@SuppressWarnings("rawtypes")
//				List c_list = ytiotVCompanyDao.query(cqlwhere, null, null, null, null);
//				
//			}else {
				Company_Code_List = null;
				@SuppressWarnings("rawtypes")
				List c_list = ytiotVCompanyDao.query(cqlwhere, null, null, null, null);
				float maxlng=0,minlng=0,maxlat=0,minlat=0;
				int count=0;
				if(c_list.size()>0) {
					for(int i=0;i<c_list.size();i++) {
						boolean fireAlarm=false,waterAlarm=false,rtuAlarm=false,efireAlarm=false,otherAlarm=false;
						YtiotVCompany com = (YtiotVCompany)c_list.get(i);
						YtiotVCompanyId ComId = com.getId();
						if(i==0)
							Company_Code_List = ComId.getOwnerId();
						else
							Company_Code_List += ","+ComId.getOwnerId();
						Map<String, Comparable> cmap = new HashMap<String, Comparable>();
						cmap.put("id", i+1);
						cmap.put("company_name", ComId.getOwnerName());
						cmap.put("fulladdress", ComId.getFulladdress());
						cmap.put("xmlx", ComId.getXmlx());
						cmap.put("username", ComId.getUsername());
						cmap.put("phone", ComId.getPhone());
						if(dwtype==null) {
							String[] gis = ComId.getPosition().split(",");
							if(gis.length==2) {
								float lng = Float.parseFloat(gis[0]);
								float lat = Float.parseFloat(gis[1]);
								if((lng>100)&&(lng<150)&&(lat>20)&&(lat<70)) {
									if(count==0) {
										maxlng = lng;
										minlng = lng;
										maxlat = lat;
										minlat = lat;
									}else {
										if(maxlng<lng)
											maxlng=lng;
										if(minlng>lng)
											minlng=lng;
										if(maxlat<lat)
											maxlat=lat;
										if(minlat>lat)
											minlat=lat;
									}
									count++;
								}
								cmap.put("lng", lng);
								cmap.put("lat", lat);
							}else {
								cmap.put("lng", 0.0);
								cmap.put("lat", 0.0);
							}
						}
						cmap.put("company_code", ComId.getOwnerId());
						cmap.put("building_name", ComId.getBuildingName());
						cmap.put("rtmp", ComId.getRtmp());
						if(dwtype!=null) {
							JSONArray a_point = new JSONArray();
							hqlwhere = " where u.id."+fieldname("company_code")+" ='"+ComId.getOwnerId()+"' ";
							if(dwtype.equals("2")||dwtype.equals("5"))
								hqlwhere += " and ( u.id.dwtype='2' or u.id.dwtype='5' ) ";
							else
								hqlwhere += " and u.id.dwtype='"+dwtype+"' ";
							if(point_code!=null)
								hqlwhere += " and u.id.pointCode="+point_code+" ";
							List list = ytiotVDataDao.SyncStatusQuery(hqlwhere, null, null, null, null);
							cmap.put("list_count", list.size());
							if(list.size()>0) {
								for(int j=0;j<list.size();j++) {
									YtiotVSyncStatus o = (YtiotVSyncStatus)list.get(j);
									YtiotVSyncStatusId oid = o.getId();
									@SuppressWarnings("rawtypes")
									Map<String, Comparable> map = new HashMap<String, Comparable>();
									map.put("content", oid.getContent());
									map.put("data_time", df.format(oid.getDataTime()));
									map.put("device_id", oid.getDeviceId());
									map.put("dwtype", oid.getDwtype());
									map.put("name", oid.getName());
									map.put("point_code", oid.getPointCode());
									map.put("point_data", oid.getPointData());
									JSONObject JObject = JSONObject.fromObject(map);
									a_point.add(JObject);
									if(dwtype==null) { 
										if(oid.getPointCode().equals("0")) {
											if(!oid.getPointData().equals("0")) {
												if(oid.getDwtype()==1)
													fireAlarm = true;
												else if(oid.getDwtype()==2)
													waterAlarm = true;
												else if(oid.getDwtype()==5)
													waterAlarm = true;
												else if(oid.getDwtype()==6)
													rtuAlarm = true;
												else if(oid.getDwtype()==7)
													efireAlarm = true;
												else
													otherAlarm = true;
											}
										}
									}
								}
							}
							cmap.put("point_list", a_point);
						}else {
							if(ComId.getD1a()>ComId.getD1ac())
								fireAlarm = true;
							if((ComId.getD0a()+ComId.getD2a())>(ComId.getD0ac()+ComId.getD2ac()))
								waterAlarm = true;
							if(ComId.getD6a()>ComId.getD6ac())
								otherAlarm = true;
						}
						cmap.put("fire_alarm", fireAlarm);
						cmap.put("water_alarm", waterAlarm);
						cmap.put("rtu_alarm", rtuAlarm);
						cmap.put("efire_alarm", efireAlarm);
						cmap.put("other_alarm", otherAlarm);
						if(ComId.getOwnerId().equals("10122"))
							cmap.put("has_video", true);
						else
							cmap.put("has_video", false);
						JSONObject jSONObject = JSONObject.fromObject(cmap);
						jSONArray.add(jSONObject);
					}
					if(dwtype==null) {
						json.put("avelng", (maxlng+minlng)/2);
						json.put("avelat", (maxlat+minlat)/2);
					}
					json.put("RESULT", jSONArray);
		
				}
//			}
			if((QUERY_FROM!=null)&&(COMMSTATUS!=null)&&(QUERY_FROM.equals("FRONTPAGE")&&(COMMSTATUS.equals("NO")))) {

				String sql = "select  count(*) as count, sum(clzt) as sum from ytiot_v_hj where data1<>'U44' "+((Company_Code_List!=null)?" and company_code in ("+Company_Code_List+")":"");
				List list2 = null, list3 = null, list4 = null, list5 = null;
				JSONArray jSONArray2 = new JSONArray();
				JSONArray jSONArray3 = new JSONArray();
				JSONArray jSONArray4 = new JSONArray();
				sql = "select sum(d0) as d0, sum(d0o) as d0o, sum(d0oc) as d0oc, sum(d0a) as d0a, sum(d0ac) as d0ac, "
						+ "  sum(d1) as d1, sum(d1o) as d1o, sum(d1oc) as d1oc, sum(d1a) as d1a, sum(d1ac) as d1ac,"
						+ "  sum(d2) as d2, sum(d2o) as d2o, sum(d2oc) as d2oc, sum(d2a) as d2a, sum(d2ac) as d2ac,"
						+ "  sum(d6) as d6, sum(d6o) as d6o, sum(d6oc) as d6oc, sum(d6a) as d6a, sum(d6ac) as d6ac, "
						+ "  sum(d7) as d7, sum(d7o) as d7o, sum(d7oc) as d7oc, sum(d7a) as d7a, sum(d7ac) as d7ac "
						+ " from ytiot_v_company "+((Company_Code_List!=null)?" where owner_id in ("+Company_Code_List+") ":"");
				List list = ytiotVAlarmDao.queryBySQL(sql);
				if(list.size()>0) {
					Object[] objects = (Object[]) list.get(0);
					if(Integer.parseInt(objects[8].toString())>Integer.parseInt(objects[9].toString())) 
						list2 = ytiotVAlarmDao.HJQuery(" where u.id.data1<>'U44' "+((Company_Code_List!=null)?" and u.id.companyCode in ("+Company_Code_List+") ":""), "order by u.id.id", "desc", "0", "1");							
					if((Integer.parseInt(objects[3].toString())+Integer.parseInt(objects[13].toString()))
							>(Integer.parseInt(objects[4].toString())+Integer.parseInt(objects[14].toString())))
						list3 = ytiotVAlarmDao.SJQuery(" where u.id.data1<>'U44'"+((Company_Code_List!=null)?" and u.id.companyCode in ("+Company_Code_List+") ":""), " order by u.id.id ", "desc", "0", "1");
					if(Integer.parseInt(objects[18].toString())>Integer.parseInt(objects[19].toString()))
						list4 = ytiotVAlarmDao.RTUQuery(" where u.id.data1<>'U44'"+((Company_Code_List!=null)?" and u.id.companyCode in ("+Company_Code_List+") ":" "), " order by u.id.id ", "desc", "0", "1");
					if(Integer.parseInt(objects[23].toString())>Integer.parseInt(objects[24].toString()))
						list5 = ytiotVAlarmDao.queryBySQL("select id, company_name, name, data1, time, clzt from ytiot_v_efire where data1<>'EF9' "+((Company_Code_List!=null)?" and company_code in ("+Company_Code_List+")":"")+" order by id desc limit 0, 1");
					Map map = new HashMap();
					map.put("id", "fire_info");
					map.put("device", Integer.parseInt(objects[5].toString()));
					map.put("out", Integer.parseInt(objects[6].toString()));
					map.put("outConfirm", Integer.parseInt(objects[7].toString()));
					map.put("alarm", Integer.parseInt(objects[8].toString()));
					map.put("alarmConfirm", Integer.parseInt(objects[9].toString()));
					JSONObject jSONObject = JSONObject.fromObject(map);
					jSONArray2.add(jSONObject);
					Map map2 = new HashMap();
					map2.put("id", "water_info");
					map2.put("device", Integer.parseInt(objects[0].toString())+Integer.parseInt(objects[10].toString()));
					map2.put("out", Integer.parseInt(objects[1].toString())+Integer.parseInt(objects[11].toString()));
					map2.put("outConfirm", Integer.parseInt(objects[2].toString())+Integer.parseInt(objects[12].toString()));
					map2.put("alarm", Integer.parseInt(objects[3].toString())+Integer.parseInt(objects[13].toString()));
					map2.put("alarmConfirm", Integer.parseInt(objects[4].toString())+Integer.parseInt(objects[14].toString()));
					JSONObject jSONObject2 = JSONObject.fromObject(map2);
					jSONArray2.add(jSONObject2);
					Map map3 = new HashMap();
					map3.put("id", "rtu_info");
					map3.put("device", Integer.parseInt(objects[15].toString()));
					map3.put("out", Integer.parseInt(objects[16].toString()));
					map3.put("outConfirm", Integer.parseInt(objects[17].toString()));
					map3.put("alarm", Integer.parseInt(objects[18].toString()));
					map3.put("alarmConfirm", Integer.parseInt(objects[19].toString()));
					JSONObject jSONObject3 = JSONObject.fromObject(map3);
					jSONArray2.add(jSONObject3);
					Map map4 = new HashMap();
					map4.put("id","efire_info");
					map4.put("device", Integer.parseInt(objects[20].toString()));
					map4.put("out", Integer.parseInt(objects[21].toString()));
					map4.put("outConfirm", Integer.parseInt(objects[22].toString()));
					map4.put("alarm", Integer.parseInt(objects[23].toString()));
					map4.put("alarmConfirm", Integer.parseInt(objects[24].toString()));
					JSONObject jSONObject4 = JSONObject.fromObject(map4);
					jSONArray2.add(jSONObject4);
					list.clear();
				}
				json.put("confirm_status", jSONArray2);
				
//				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				YtiotVHjId HJid = new YtiotVHjId();
				int maxIdx = 0;
				Date dTmp = df.parse("1970-01-01 00:00:00");
				HJid.setTime(df.parse("1970-01-01 00:00:00"));
				if((list2!=null)&&(list2.size()>0)) {
					YtiotVHj hj = (YtiotVHj)list2.get(0);
					HJid = hj.getId();
					if(HJid.getTime().getTime()>=dTmp.getTime())
						maxIdx = 2;
				}
				YtiotVSjId SJid = new YtiotVSjId();
				SJid.setTime(df.parse("1970-01-01 00:00:00"));
				if((list3!=null)&&(list3.size()>0)) {
					YtiotVSj sj = (YtiotVSj)list3.get(0);
					SJid = sj.getId();
					if(SJid.getTime().getTime()>=dTmp.getTime())
						maxIdx = 3;
				}
				YtiotVRtuId RTUid = new YtiotVRtuId();
				RTUid.setTime(df.parse("1970-01-01 00:00:00"));
				if((list4!=null)&&(list4.size()>0)) {
					YtiotVRtu rtu = (YtiotVRtu)list4.get(0);
					RTUid = rtu.getId();
					if(RTUid.getTime().getTime()>=dTmp.getTime())
						maxIdx = 4;
				}
				if(list5!=null) {
					Object[] objects = (Object[]) list5.get(0);
					if(df.parse(objects[4].toString()).getTime()>=dTmp.getTime())
						maxIdx = 5;
				}
				switch(maxIdx) {
				case 2:
				{
					Map map = new HashMap();
					map.put("id", 1);
					map.put("company", HJid.getCompanyName());
					map.put("name", HJid.getName()+((HJid.getData4().length()>0) ?("，"+HJid.getData4()):""));
					map.put("data", HJid.getData2());
					map.put("time", df.format(HJid.getTime()));
					map.put("clzt", HJid.getClzt()==1?"已处理":"未处理");
					JSONObject jSONObject = JSONObject.fromObject(map);
