CarmeraTimer.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. package com.huimv.admin.timer;
  2. import cn.hutool.core.codec.Base64;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import cn.hutool.json.JSONUtil;
  5. import com.alibaba.fastjson.JSON;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  8. import com.hikvision.cms.api.common.util.Digests;
  9. import com.hikvision.cms.api.common.util.HttpClientSSLUtils;
  10. import com.huimv.admin.entity.EnvData;
  11. import com.huimv.admin.entity.EnvDevice;
  12. import com.huimv.admin.entity.EnvWarningInfo;
  13. import com.huimv.admin.entity.EnvWarningThreshold;
  14. import com.huimv.admin.entity.hkwsdto.CameraDto1;
  15. import com.huimv.admin.entity.hkwsdto.HkvsCameraDto;
  16. import com.huimv.admin.entity.zengxindto.*;
  17. import com.huimv.admin.service.*;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.context.annotation.Configuration;
  20. import org.springframework.http.HttpEntity;
  21. import org.springframework.http.HttpHeaders;
  22. import org.springframework.http.HttpMethod;
  23. import org.springframework.http.ResponseEntity;
  24. import org.springframework.scheduling.annotation.EnableScheduling;
  25. import org.springframework.scheduling.annotation.Scheduled;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import org.springframework.web.client.RestTemplate;
  28. import javax.sound.midi.Soundbank;
  29. import java.util.Date;
  30. import java.util.HashMap;
  31. import java.util.List;
  32. import java.util.Map;
  33. @Configuration
  34. @EnableScheduling
  35. public class CarmeraTimer {
  36. private static final String APPKEY = "1c9ee657";
  37. private static final String SECRET = "a5d723941c804a429447e71db2707ce8";
  38. private static final String OPENAPI_IP_PORT_HTTP = "http://61.153.248.106:100";
  39. private static final String OPENAPI_IP_PORT_HTTPS = "https://61.153.248.106:4430";
  40. private static final String ITF_ADDRESS_GET_CAMERAS = "/openapi/service/vss/res/getCameras";
  41. private static final String OP_USER_UUID = "5b2eb534696b11e89c2e438f92627767";
  42. @Autowired
  43. private RestTemplate restTemplate;
  44. @Autowired
  45. private ICameraBaseService cameraBaseService;
  46. @Autowired
  47. private IEnvDeviceService envDeviceService;
  48. @Autowired
  49. private IEnvDataService envDataService;
  50. @Autowired
  51. private IEnvWarningThresholdService envWarningThresholdService;
  52. @Autowired
  53. private IEnvWarningInfoService envWarningInfoService;
  54. //更新摄像头状态
  55. @Scheduled(cron = "0 0/10 * * * ? ")
  56. private void updateCameraOnlin() throws Exception {
  57. String cameras = testGetCameras();
  58. HkvsCameraDto hkvsCameraDto = JSONUtil.toBean(cameras, HkvsCameraDto.class);
  59. if (ObjectUtil.isNotEmpty(hkvsCameraDto) && hkvsCameraDto.getErrorCode() ==0 ){
  60. List<CameraDto1> list = hkvsCameraDto.getData().getList();
  61. if (ObjectUtil.isNotEmpty(list)){
  62. cameraBaseService.updateCameraOnlin(list);
  63. }
  64. System.out.println("更新成功");
  65. }else {
  66. System.out.println("摄像头信息为空");
  67. }
  68. }
  69. /**
  70. * HTTP方式
  71. * 分页获取监控点信息 测试
  72. * @return
  73. * @throws Exception
  74. */
  75. private static String testGetCameras() throws Exception{
  76. String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_CAMERAS;
  77. Map<String, Object> map = new HashMap<String, Object>();
  78. map.put("appkey", APPKEY);//设置APPKEY
  79. map.put("time", System.currentTimeMillis());//设置时间参数
  80. map.put("pageNo", 1);//设置分页参数
  81. map.put("pageSize", 1000);//设置分页参数
  82. map.put("opUserUuid", OP_USER_UUID);//设置操作用户UUID
  83. String params = JSON.toJSONString(map);
  84. System.out.println(" ====== getCameras请求参数:【" + params + "】");
  85. String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
  86. System.out.println(" ====== getCameras请求返回结果:【{" + data + "}】");
  87. return data;
  88. }
  89. //环控数据
  90. String username = "江西增鑫";
  91. String password = "888888";
  92. String passwordMD5 = "21218cca77804d2ba1922c33e0151105";
  93. String baseurl ="https://yzwlw.loongk.com/";
  94. @Scheduled(cron = "0 0/11 * * * ? ")
  95. @Transactional
  96. private void getHuanKong() throws Exception {
  97. //目前是这家
  98. Integer farmId = 21;
  99. String encode = loginOnly();
  100. System.out.println("encode"+encode);
  101. //获取阈值
  102. EnvWarningThreshold envWarningThreshold = envWarningThresholdService.getOne(new QueryWrapper<EnvWarningThreshold>().eq("farm_id", farmId));
  103. HttpHeaders headers = new HttpHeaders();
  104. headers.add("Authorization",encode);
  105. HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
  106. //TODO 只有一家,先拿全部
  107. List<EnvDevice> list = envDeviceService.list();
  108. for (EnvDevice envDevice : list) {
  109. if (ObjectUtil.isNotEmpty(envDevice) && StringUtils.isNotBlank(envDevice.getDeviceCode())){
  110. System.out.println(envDevice.getDeviceCode());
  111. ResponseEntity<String> exchange = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackDatas/" + envDevice.getDeviceCode(), HttpMethod.GET, requestEntity, String.class);
  112. String shishiBody = exchange.getBody();
  113. if (ObjectUtil.isEmpty(shishiBody)){
  114. System.out.println(new Date() +"实时数据"+ shishiBody);
  115. return;
  116. }
  117. ShackDatasDto shackDatasDto = JSONUtil.toBean(shishiBody, ShackDatasDto.class);
  118. List<ShackDatasSensor> sensorDatas = shackDatasDto.getData().getSensorDatas();
  119. EnvData envData = new EnvData();
  120. for (ShackDatasSensor sensorData : sensorDatas) {
  121. if (sensorData.getId().equals(envDevice.getOhter1())){
  122. String val = sensorData.getVal();
  123. //TODO 预警
  124. saveTemWarning(val,envWarningThreshold,envDevice,farmId);
  125. envData.setEnvTemp(val);
  126. }
  127. if (sensorData.getId().equals(envDevice.getOhter2())){
  128. String val = sensorData.getVal();
  129. //TODO 预警
  130. saveHumWarning(val,envWarningThreshold,envDevice,farmId);
  131. envData.setEnvHum(val);
  132. }
  133. }
  134. envData.setCreateTime(new Date());
  135. envData.setDeviceId(envDevice.getDeviceCode());
  136. envData.setFarmId(farmId);
  137. envData.setUnitId(envDevice.getUnitId());
  138. // envDataService.save(envData);
  139. }
  140. }
  141. }
  142. private void saveHumWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice, Integer farmId) {
  143. if (StringUtils.isNotBlank(val)){
  144. String maxHum ;
  145. String minHum ;
  146. if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMaxHum())){
  147. maxHum ="40";
  148. }else {
  149. maxHum = envWarningThreshold.getMaxHum();
  150. }
  151. if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMinHum())){
  152. minHum ="0";
  153. }else {
  154. minHum =envWarningThreshold.getMinHum();
  155. }
  156. if (Double.parseDouble(maxHum) > Double.parseDouble(val)){
  157. EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  158. envWarningInfo.setBuildLocation(envDevice.getUnitName());
  159. envWarningInfo.setDate(new Date());
  160. envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  161. envWarningInfo.setFarmId(farmId);
  162. envWarningInfo.setUnitId(envDevice.getUnitId());
  163. envWarningInfo.setUnitName(envDevice.getUnitName());
  164. envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  165. envWarningInfo.setWarningContent("当前湿度为"+val+"%超过阈值,请及时检查");
  166. envWarningInfo.setWarningType(2);
  167. }
  168. if (Double.parseDouble(minHum) <Double.parseDouble(val)){
  169. EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  170. envWarningInfo.setBuildLocation(envDevice.getUnitName());
  171. envWarningInfo.setDate(new Date());
  172. envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  173. envWarningInfo.setFarmId(farmId);
  174. envWarningInfo.setUnitId(envDevice.getUnitId());
  175. envWarningInfo.setUnitName(envDevice.getUnitName());
  176. envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  177. envWarningInfo.setWarningContent("当前湿度为"+val+"%低于阈值,请及时检查");
  178. envWarningInfo.setWarningType(2);
  179. }
  180. }
  181. }
  182. private void saveTemWarning(String val, EnvWarningThreshold envWarningThreshold,EnvDevice envDevice,Integer farmId) {
  183. if (StringUtils.isNotBlank(val)){
  184. String maxTem ;
  185. String minTem ;
  186. if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMaxTem())){
  187. maxTem ="40";
  188. }else {
  189. maxTem = envWarningThreshold.getMaxTem();
  190. }
  191. if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMinTem())){
  192. minTem ="0";
  193. }else {
  194. minTem =envWarningThreshold.getMinTem();
  195. }
  196. System.out.println("maxTem:"+Double.parseDouble(maxTem)+" minTem:"+Double.parseDouble(minTem)+" val:"+Double.parseDouble(val));
  197. if (Double.parseDouble(maxTem) < Double.parseDouble(val)){
  198. EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  199. envWarningInfo.setBuildLocation(envDevice.getUnitName());
  200. envWarningInfo.setDate(new Date());
  201. envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  202. envWarningInfo.setFarmId(farmId);
  203. envWarningInfo.setUnitId(envDevice.getUnitId());
  204. envWarningInfo.setUnitName(envDevice.getUnitName());
  205. envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  206. envWarningInfo.setWarningContent("当前温度为"+val+"°超过阈值,请及时检查");
  207. envWarningInfo.setWarningType(1);
  208. envWarningInfoService.save(envWarningInfo);
  209. }
  210. if (Double.parseDouble(minTem)>Double.parseDouble(val)){
  211. EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  212. envWarningInfo.setBuildLocation(envDevice.getUnitName());
  213. envWarningInfo.setDate(new Date());
  214. envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  215. envWarningInfo.setFarmId(farmId);
  216. envWarningInfo.setUnitId(envDevice.getUnitId());
  217. envWarningInfo.setUnitName(envDevice.getUnitName());
  218. envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  219. envWarningInfo.setWarningContent("当前温度为"+val+"°低于阈值,请及时检查");
  220. envWarningInfo.setWarningType(1);
  221. envWarningInfoService.save(envWarningInfo);
  222. }
  223. }
  224. }
  225. private String loginOnly() throws Exception {
  226. Map<String, Object> map = new HashMap<String, Object>();
  227. String s = HttpClientSSLUtils.doPost(baseurl + "/mobile/login?username=" + username + "&password=" + passwordMD5,JSON.toJSONString(map));
  228. LoginOnlyDto loginDto = JSONUtil.toBean(s, LoginOnlyDto.class);
  229. LonginOnlyDtoToken token = loginDto.getData().getToken();
  230. return Base64.encode(token.getUserId() + "_" + token.getToken());
  231. }
  232. public static void main(String[] args) throws Exception {
  233. Map<String, Object> map = new HashMap<String, Object>();
  234. String s = HttpClientSSLUtils.doPost("https://yzwlw.loongk.com/mobile/login?username=江西增鑫&password=21218cca77804d2ba1922c33e0151105",JSON.toJSONString(map));
  235. LoginDto loginDto = JSONUtil.toBean(s, LoginDto.class);
  236. DataToken token = loginDto.getData().getToken();
  237. String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
  238. //获取配置
  239. Map<String, Object> map2 = new HashMap<String, Object>();
  240. HttpHeaders headers = new HttpHeaders();
  241. headers.add("Authorization",encode);
  242. HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
  243. RestTemplate restTemplate = new RestTemplate();
  244. ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/"+"2c92083a83f8673701854cde3f6203bb", HttpMethod.GET, requestEntity, String.class);
  245. System.out.println("peizhi"+exchangePeizhi.getBody());
  246. ResponseEntity<String> exchangeShishi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackDatas/"+"2c92083a83f8673701854cde3f6203bb", HttpMethod.GET, requestEntity, String.class);
  247. System.out.println("shishi"+exchangeShishi.getBody());
  248. System.out.println(s);
  249. }
  250. }