| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- package com.xcgl.middleware.service.impl;
- import java.net.SocketTimeoutException;
- import java.util.List;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.HttpStatus;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.params.CoreConnectionPNames;
- import org.apache.http.util.EntityUtils;
- import org.apache.log4j.Logger;
- import org.jeecgframework.web.system.service.SystemService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.xcgl.cloud.entity.TSProject;
- import com.xcgl.device.entity.DeviceEntity;
- import com.xcgl.devicetype.entity.DeviceTypeEntity;
- import com.xcgl.middleware.MiddleWareInfo;
- import com.xcgl.middleware.dao.MiddlewareSyncDao;
- import com.xcgl.middleware.service.MiddlewareDataServiceI;
- import com.xcgl.sensormonitorpoint.entity.SensorMonitorPointEntity;
- import com.xcgl.sensortype.entity.SensorTypeEntity;
- import com.xcgl.utils.DateMorpher;
- import net.sf.json.JSONArray;
- import net.sf.json.JsonConfig;
- import net.sf.json.util.JSONUtils;
- @Service("middlewareDataService")
- @Transactional
- public class MiddlewareDataServiceImpl implements MiddlewareDataServiceI{
- // @Autowired
- // private SensorRecordServiceI sensorRecordService;
- @Autowired
- private SystemService systemService;
-
- @Autowired
- private MiddlewareSyncDao mwSyncDao;
-
- private static final Logger logger = Logger.getLogger(MiddlewareDataServiceImpl.class);
- @Override
- public void syncBaseDataFromCloud() {
- // 同步项目档案表
- logger.info("开始同步项目档案....");
- // syncProjectData();
- logger.info("同步项目档案结束....");
- // 同步设备类型档案
- logger.info("开始同步设备类型档案....");
- syncDevicetypeData();
- logger.info("同步设备类型档案结束....");
- // 同步设备档案
- logger.info("开始同步设备档案....");
- syncDeviceData();
- logger.info("同步设备档案结束....");
- // 同步传感器类型档案
- logger.info("开始同步传感器类型档案....");
- syncSensortypeData();
- logger.info("同步传感器类型档案结束....");
- // 同步传感器档案
- logger.info("开始同步传感器档案....");
- syncSensorData();
- logger.info("同步传感器档案结束....");
- }
-
- private void syncSensortypeData()
- {
- JSONArray jarray = syncBaseData("p_sensor_type") ;
- List<SensorTypeEntity> gasList = JSONArray.toList(jarray, new SensorTypeEntity(), new JsonConfig());
- systemService.executeSql("delete from p_sensor_type ");
- for (SensorTypeEntity sensortype :gasList) {
- mwSyncDao.insertSensorType(sensortype);
- }
- }
- private void syncSensorData()
- {
- JSONArray jarray = syncBaseData("p_sensor_monitor_point") ;
- List<SensorMonitorPointEntity> gasList = JSONArray.toList(jarray, new SensorMonitorPointEntity(), new JsonConfig());
- systemService.executeSql("delete from p_sensor_monitor_point ");
- for (SensorMonitorPointEntity sensorpoint :gasList) {
- mwSyncDao.insertSensor(sensorpoint);
- }
- }
- private void syncProjectData()
- {
- JSONArray jarray = syncBaseData("t_s_depart") ;
- List<TSProject> gasList = JSONArray.toList(jarray, new TSProject(), new JsonConfig());
- // systemService.executeSql("delete from t_s_depart where id = '"+MiddleWareInfo.getInstance().projectid+"' "+
- // " or parentdepartid = '"+MiddleWareInfo.getInstance().projectid+"'");
- for (TSProject tsp :gasList) {
- mwSyncDao.insertProject(tsp);
- }
- // systemService.batchSave(gasList);
- }
- private void syncDevicetypeData()
- {
- JSONArray jarray = syncBaseData("p_device_type") ;
- List<DeviceTypeEntity> gasList = JSONArray.toList(jarray, new DeviceTypeEntity(), new JsonConfig());
- systemService.executeSql("delete from p_device_type ");
- for (DeviceTypeEntity deviceType : gasList) {
- mwSyncDao.insertDeviceType(deviceType);
- }
- }
- private void syncDeviceData()
- {
- JSONArray jarray = syncBaseData("p_device") ;
- List<DeviceEntity> gasList = JSONArray.toList(jarray, new DeviceEntity(),new JsonConfig());
- systemService.executeSql("delete from p_device ");
- for (DeviceEntity device : gasList) {
- mwSyncDao.insertDevice(device);
- }
- }
-
- private JSONArray syncBaseData(String tablename)
- {
- HttpClient httpclient = new DefaultHttpClient();
- HttpEntity entity = null;
- String jsonContent = "";
- HttpGet httpGet = null;
- String dmSrvURL = "";
- switch ( tablename ) {
- case "p_device":
- dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/device/"+MiddleWareInfo.getInstance().projectid;
- break;
-
- case "p_device_type":
- dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/devicetype/";
- break;
-
- case "p_sensor_type":
- dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/sensortype/";
- break;
-
- case "p_sensor_monitor_point":
- dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/sensor/"+MiddleWareInfo.getInstance().projectid;
- break;
-
- case "t_s_depart":
- dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/project/"+MiddleWareInfo.getInstance().projectid;
- break;
- }
-
- try {
- // 设置超时时间
- httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 20000);
- httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 20000);
- httpGet = new HttpGet(dmSrvURL);
- HttpResponse response = httpclient.execute(httpGet);
- // 检验返回码
- int statusCode = response.getStatusLine().getStatusCode();
- if (statusCode != HttpStatus.SC_OK) {
- logger.error("中间件同步基础档案基础数据"+tablename+"请求出错: "+statusCode);
- } else {
- // 获取服务器返回页面的值
- entity = response.getEntity();
- jsonContent = EntityUtils.toString(entity);
- logger.info("中间件同步设备档案基础数据"+tablename+"返回结果:"+jsonContent);
- httpGet.abort();
- }
- } catch (SocketTimeoutException e) {
- logger.error("中间件同步设备档案基础数据"+tablename+"请求出错: "+e);
- } catch (Exception ex) {
- ex.printStackTrace();
- logger.error("中间件同步设备档案基础数据"+tablename+"请求出错: "+ex);
- } finally {
- if (httpGet != null) {
- try {
- httpGet.releaseConnection();
- Thread.sleep(500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- logger.info("中间件同步项目档案基础数据"+tablename+":"+jsonContent);
- JsonConfig jsonConfig = new JsonConfig();
- JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher());
- JSONArray allRetArray = JSONArray.fromObject(jsonContent,jsonConfig);
- return allRetArray;
- }
- }
|