MiddlewareDataServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package com.xcgl.middleware.service.impl;
  2. import java.net.SocketTimeoutException;
  3. import java.util.List;
  4. import org.apache.http.HttpEntity;
  5. import org.apache.http.HttpResponse;
  6. import org.apache.http.HttpStatus;
  7. import org.apache.http.client.HttpClient;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.impl.client.DefaultHttpClient;
  10. import org.apache.http.params.CoreConnectionPNames;
  11. import org.apache.http.util.EntityUtils;
  12. import org.apache.log4j.Logger;
  13. import org.jeecgframework.web.system.service.SystemService;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import com.xcgl.cloud.entity.TSProject;
  18. import com.xcgl.device.entity.DeviceEntity;
  19. import com.xcgl.devicetype.entity.DeviceTypeEntity;
  20. import com.xcgl.middleware.MiddleWareInfo;
  21. import com.xcgl.middleware.dao.MiddlewareSyncDao;
  22. import com.xcgl.middleware.service.MiddlewareDataServiceI;
  23. import com.xcgl.sensormonitorpoint.entity.SensorMonitorPointEntity;
  24. import com.xcgl.sensortype.entity.SensorTypeEntity;
  25. import com.xcgl.utils.DateMorpher;
  26. import net.sf.json.JSONArray;
  27. import net.sf.json.JsonConfig;
  28. import net.sf.json.util.JSONUtils;
  29. @Service("middlewareDataService")
  30. @Transactional
  31. public class MiddlewareDataServiceImpl implements MiddlewareDataServiceI{
  32. // @Autowired
  33. // private SensorRecordServiceI sensorRecordService;
  34. @Autowired
  35. private SystemService systemService;
  36. @Autowired
  37. private MiddlewareSyncDao mwSyncDao;
  38. private static final Logger logger = Logger.getLogger(MiddlewareDataServiceImpl.class);
  39. @Override
  40. public void syncBaseDataFromCloud() {
  41. // 同步项目档案表
  42. logger.info("开始同步项目档案....");
  43. // syncProjectData();
  44. logger.info("同步项目档案结束....");
  45. // 同步设备类型档案
  46. logger.info("开始同步设备类型档案....");
  47. syncDevicetypeData();
  48. logger.info("同步设备类型档案结束....");
  49. // 同步设备档案
  50. logger.info("开始同步设备档案....");
  51. syncDeviceData();
  52. logger.info("同步设备档案结束....");
  53. // 同步传感器类型档案
  54. logger.info("开始同步传感器类型档案....");
  55. syncSensortypeData();
  56. logger.info("同步传感器类型档案结束....");
  57. // 同步传感器档案
  58. logger.info("开始同步传感器档案....");
  59. syncSensorData();
  60. logger.info("同步传感器档案结束....");
  61. }
  62. private void syncSensortypeData()
  63. {
  64. JSONArray jarray = syncBaseData("p_sensor_type") ;
  65. List<SensorTypeEntity> gasList = JSONArray.toList(jarray, new SensorTypeEntity(), new JsonConfig());
  66. systemService.executeSql("delete from p_sensor_type ");
  67. for (SensorTypeEntity sensortype :gasList) {
  68. mwSyncDao.insertSensorType(sensortype);
  69. }
  70. }
  71. private void syncSensorData()
  72. {
  73. JSONArray jarray = syncBaseData("p_sensor_monitor_point") ;
  74. List<SensorMonitorPointEntity> gasList = JSONArray.toList(jarray, new SensorMonitorPointEntity(), new JsonConfig());
  75. systemService.executeSql("delete from p_sensor_monitor_point ");
  76. for (SensorMonitorPointEntity sensorpoint :gasList) {
  77. mwSyncDao.insertSensor(sensorpoint);
  78. }
  79. }
  80. private void syncProjectData()
  81. {
  82. JSONArray jarray = syncBaseData("t_s_depart") ;
  83. List<TSProject> gasList = JSONArray.toList(jarray, new TSProject(), new JsonConfig());
  84. // systemService.executeSql("delete from t_s_depart where id = '"+MiddleWareInfo.getInstance().projectid+"' "+
  85. // " or parentdepartid = '"+MiddleWareInfo.getInstance().projectid+"'");
  86. for (TSProject tsp :gasList) {
  87. mwSyncDao.insertProject(tsp);
  88. }
  89. // systemService.batchSave(gasList);
  90. }
  91. private void syncDevicetypeData()
  92. {
  93. JSONArray jarray = syncBaseData("p_device_type") ;
  94. List<DeviceTypeEntity> gasList = JSONArray.toList(jarray, new DeviceTypeEntity(), new JsonConfig());
  95. systemService.executeSql("delete from p_device_type ");
  96. for (DeviceTypeEntity deviceType : gasList) {
  97. mwSyncDao.insertDeviceType(deviceType);
  98. }
  99. }
  100. private void syncDeviceData()
  101. {
  102. JSONArray jarray = syncBaseData("p_device") ;
  103. List<DeviceEntity> gasList = JSONArray.toList(jarray, new DeviceEntity(),new JsonConfig());
  104. systemService.executeSql("delete from p_device ");
  105. for (DeviceEntity device : gasList) {
  106. mwSyncDao.insertDevice(device);
  107. }
  108. }
  109. private JSONArray syncBaseData(String tablename)
  110. {
  111. HttpClient httpclient = new DefaultHttpClient();
  112. HttpEntity entity = null;
  113. String jsonContent = "";
  114. HttpGet httpGet = null;
  115. String dmSrvURL = "";
  116. switch ( tablename ) {
  117. case "p_device":
  118. dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/device/"+MiddleWareInfo.getInstance().projectid;
  119. break;
  120. case "p_device_type":
  121. dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/devicetype/";
  122. break;
  123. case "p_sensor_type":
  124. dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/sensortype/";
  125. break;
  126. case "p_sensor_monitor_point":
  127. dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/sensor/"+MiddleWareInfo.getInstance().projectid;
  128. break;
  129. case "t_s_depart":
  130. dmSrvURL = MiddleWareInfo.getInstance().cloudIPAndPort+"/api/dscloud/project/"+MiddleWareInfo.getInstance().projectid;
  131. break;
  132. }
  133. try {
  134. // 设置超时时间
  135. httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 20000);
  136. httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 20000);
  137. httpGet = new HttpGet(dmSrvURL);
  138. HttpResponse response = httpclient.execute(httpGet);
  139. // 检验返回码
  140. int statusCode = response.getStatusLine().getStatusCode();
  141. if (statusCode != HttpStatus.SC_OK) {
  142. logger.error("中间件同步基础档案基础数据"+tablename+"请求出错: "+statusCode);
  143. } else {
  144. // 获取服务器返回页面的值
  145. entity = response.getEntity();
  146. jsonContent = EntityUtils.toString(entity);
  147. logger.info("中间件同步设备档案基础数据"+tablename+"返回结果:"+jsonContent);
  148. httpGet.abort();
  149. }
  150. } catch (SocketTimeoutException e) {
  151. logger.error("中间件同步设备档案基础数据"+tablename+"请求出错: "+e);
  152. } catch (Exception ex) {
  153. ex.printStackTrace();
  154. logger.error("中间件同步设备档案基础数据"+tablename+"请求出错: "+ex);
  155. } finally {
  156. if (httpGet != null) {
  157. try {
  158. httpGet.releaseConnection();
  159. Thread.sleep(500);
  160. } catch (InterruptedException e) {
  161. e.printStackTrace();
  162. }
  163. }
  164. }
  165. logger.info("中间件同步项目档案基础数据"+tablename+":"+jsonContent);
  166. JsonConfig jsonConfig = new JsonConfig();
  167. JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher());
  168. JSONArray allRetArray = JSONArray.fromObject(jsonContent,jsonConfig);
  169. return allRetArray;
  170. }
  171. }