123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- package com.huimv.admin.timer;
- import cn.hutool.core.codec.Base64;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.json.JSONUtil;
- import com.alibaba.fastjson.JSON;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import com.hikvision.cms.api.common.util.Digests;
- import com.hikvision.cms.api.common.util.HttpClientSSLUtils;
- import com.huimv.admin.entity.EnvData;
- import com.huimv.admin.entity.EnvDevice;
- import com.huimv.admin.entity.EnvWarningInfo;
- import com.huimv.admin.entity.EnvWarningThreshold;
- import com.huimv.admin.entity.hkwsdto.CameraDto1;
- import com.huimv.admin.entity.hkwsdto.HkvsCameraDto;
- import com.huimv.admin.entity.zengxindto.*;
- import com.huimv.admin.service.*;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.HttpEntity;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpMethod;
- import org.springframework.http.ResponseEntity;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.client.RestTemplate;
- import javax.sound.midi.Soundbank;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Configuration
- @EnableScheduling
- public class CarmeraTimer {
- private static final String APPKEY = "1c9ee657";
- private static final String SECRET = "a5d723941c804a429447e71db2707ce8";
- private static final String OPENAPI_IP_PORT_HTTP = "http://61.153.248.106:100";
- private static final String OPENAPI_IP_PORT_HTTPS = "https://61.153.248.106:4430";
- private static final String ITF_ADDRESS_GET_CAMERAS = "/openapi/service/vss/res/getCameras";
- private static final String OP_USER_UUID = "5b2eb534696b11e89c2e438f92627767";
- @Autowired
- private RestTemplate restTemplate;
- @Autowired
- private ICameraBaseService cameraBaseService;
- @Autowired
- private IEnvDeviceService envDeviceService;
- @Autowired
- private IEnvDataService envDataService;
- @Autowired
- private IEnvWarningThresholdService envWarningThresholdService;
- @Autowired
- private IEnvWarningInfoService envWarningInfoService;
- //更新摄像头状态
- @Scheduled(cron = "0 0/10 * * * ? ")
- private void updateCameraOnlin() throws Exception {
- String cameras = testGetCameras();
- HkvsCameraDto hkvsCameraDto = JSONUtil.toBean(cameras, HkvsCameraDto.class);
- if (ObjectUtil.isNotEmpty(hkvsCameraDto) && hkvsCameraDto.getErrorCode() ==0 ){
- List<CameraDto1> list = hkvsCameraDto.getData().getList();
- if (ObjectUtil.isNotEmpty(list)){
- cameraBaseService.updateCameraOnlin(list);
- }
- System.out.println("更新成功");
- }else {
- System.out.println("摄像头信息为空");
- }
- }
- /**
- * HTTP方式
- * 分页获取监控点信息 测试
- * @return
- * @throws Exception
- */
- private static String testGetCameras() throws Exception{
- String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_CAMERAS;
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("appkey", APPKEY);//设置APPKEY
- map.put("time", System.currentTimeMillis());//设置时间参数
- map.put("pageNo", 1);//设置分页参数
- map.put("pageSize", 1000);//设置分页参数
- map.put("opUserUuid", OP_USER_UUID);//设置操作用户UUID
- String params = JSON.toJSONString(map);
- System.out.println(" ====== getCameras请求参数:【" + params + "】");
- String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
- System.out.println(" ====== getCameras请求返回结果:【{" + data + "}】");
- return data;
- }
- //环控数据
- String username = "江西增鑫";
- String password = "888888";
- String passwordMD5 = "21218cca77804d2ba1922c33e0151105";
- String baseurl ="https://yzwlw.loongk.com/";
- @Scheduled(cron = "0 0/11 * * * ? ")
- @Transactional
- private void getHuanKong() throws Exception {
- //目前是这家
- Integer farmId = 21;
- String encode = loginOnly();
- System.out.println("encode"+encode);
- //获取阈值
- EnvWarningThreshold envWarningThreshold = envWarningThresholdService.getOne(new QueryWrapper<EnvWarningThreshold>().eq("farm_id", farmId));
- HttpHeaders headers = new HttpHeaders();
- headers.add("Authorization",encode);
- HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
- //TODO 只有一家,先拿全部
- List<EnvDevice> list = envDeviceService.list();
- for (EnvDevice envDevice : list) {
- if (ObjectUtil.isNotEmpty(envDevice) && StringUtils.isNotBlank(envDevice.getDeviceCode())){
- System.out.println(envDevice.getDeviceCode());
- ResponseEntity<String> exchange = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackDatas/" + envDevice.getDeviceCode(), HttpMethod.GET, requestEntity, String.class);
- String shishiBody = exchange.getBody();
- if (ObjectUtil.isEmpty(shishiBody)){
- System.out.println(new Date() +"实时数据"+ shishiBody);
- return;
- }
- ShackDatasDto shackDatasDto = JSONUtil.toBean(shishiBody, ShackDatasDto.class);
- List<ShackDatasSensor> sensorDatas = shackDatasDto.getData().getSensorDatas();
- EnvData envData = new EnvData();
- for (ShackDatasSensor sensorData : sensorDatas) {
- if (sensorData.getId().equals(envDevice.getOhter1())){
- String val = sensorData.getVal();
- //TODO 预警
- saveTemWarning(val,envWarningThreshold,envDevice,farmId);
- envData.setEnvTemp(val);
- }
- if (sensorData.getId().equals(envDevice.getOhter2())){
- String val = sensorData.getVal();
- //TODO 预警
- saveHumWarning(val,envWarningThreshold,envDevice,farmId);
- envData.setEnvHum(val);
- }
- }
- envData.setCreateTime(new Date());
- envData.setDeviceId(envDevice.getDeviceCode());
- envData.setFarmId(farmId);
- envData.setUnitId(envDevice.getUnitId());
- // envDataService.save(envData);
- }
- }
- }
- private void saveHumWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice, Integer farmId) {
- if (StringUtils.isNotBlank(val)){
- String maxHum ;
- String minHum ;
- if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMaxHum())){
- maxHum ="40";
- }else {
- maxHum = envWarningThreshold.getMaxHum();
- }
- if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMinHum())){
- minHum ="0";
- }else {
- minHum =envWarningThreshold.getMinHum();
- }
- if (Double.parseDouble(maxHum) > Double.parseDouble(val)){
- EnvWarningInfo envWarningInfo = new EnvWarningInfo();
- envWarningInfo.setBuildLocation(envDevice.getUnitName());
- envWarningInfo.setDate(new Date());
- envWarningInfo.setDeviceId(envDevice.getDeviceCode());
- envWarningInfo.setFarmId(farmId);
- envWarningInfo.setUnitId(envDevice.getUnitId());
- envWarningInfo.setUnitName(envDevice.getUnitName());
- envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
- envWarningInfo.setWarningContent("当前湿度为"+val+"%超过阈值,请及时检查");
- envWarningInfo.setWarningType(2);
- }
- if (Double.parseDouble(minHum) <Double.parseDouble(val)){
- EnvWarningInfo envWarningInfo = new EnvWarningInfo();
- envWarningInfo.setBuildLocation(envDevice.getUnitName());
- envWarningInfo.setDate(new Date());
- envWarningInfo.setDeviceId(envDevice.getDeviceCode());
- envWarningInfo.setFarmId(farmId);
- envWarningInfo.setUnitId(envDevice.getUnitId());
- envWarningInfo.setUnitName(envDevice.getUnitName());
- envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
- envWarningInfo.setWarningContent("当前湿度为"+val+"%低于阈值,请及时检查");
- envWarningInfo.setWarningType(2);
- }
- }
- }
- private void saveTemWarning(String val, EnvWarningThreshold envWarningThreshold,EnvDevice envDevice,Integer farmId) {
- if (StringUtils.isNotBlank(val)){
- String maxTem ;
- String minTem ;
- if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMaxTem())){
- maxTem ="40";
- }else {
- maxTem = envWarningThreshold.getMaxTem();
- }
- if (ObjectUtil.isEmpty(envWarningThreshold) || StringUtils.isBlank(envWarningThreshold.getMinTem())){
- minTem ="0";
- }else {
- minTem =envWarningThreshold.getMinTem();
- }
- System.out.println("maxTem:"+Double.parseDouble(maxTem)+" minTem:"+Double.parseDouble(minTem)+" val:"+Double.parseDouble(val));
- if (Double.parseDouble(maxTem) < Double.parseDouble(val)){
- EnvWarningInfo envWarningInfo = new EnvWarningInfo();
- envWarningInfo.setBuildLocation(envDevice.getUnitName());
- envWarningInfo.setDate(new Date());
- envWarningInfo.setDeviceId(envDevice.getDeviceCode());
- envWarningInfo.setFarmId(farmId);
- envWarningInfo.setUnitId(envDevice.getUnitId());
- envWarningInfo.setUnitName(envDevice.getUnitName());
- envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
- envWarningInfo.setWarningContent("当前温度为"+val+"°超过阈值,请及时检查");
- envWarningInfo.setWarningType(1);
- envWarningInfoService.save(envWarningInfo);
- }
- if (Double.parseDouble(minTem)>Double.parseDouble(val)){
- EnvWarningInfo envWarningInfo = new EnvWarningInfo();
- envWarningInfo.setBuildLocation(envDevice.getUnitName());
- envWarningInfo.setDate(new Date());
- envWarningInfo.setDeviceId(envDevice.getDeviceCode());
- envWarningInfo.setFarmId(farmId);
- envWarningInfo.setUnitId(envDevice.getUnitId());
- envWarningInfo.setUnitName(envDevice.getUnitName());
- envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
- envWarningInfo.setWarningContent("当前温度为"+val+"°低于阈值,请及时检查");
- envWarningInfo.setWarningType(1);
- envWarningInfoService.save(envWarningInfo);
- }
- }
- }
- private String loginOnly() throws Exception {
- Map<String, Object> map = new HashMap<String, Object>();
- String s = HttpClientSSLUtils.doPost(baseurl + "/mobile/login?username=" + username + "&password=" + passwordMD5,JSON.toJSONString(map));
- LoginOnlyDto loginDto = JSONUtil.toBean(s, LoginOnlyDto.class);
- LonginOnlyDtoToken token = loginDto.getData().getToken();
- return Base64.encode(token.getUserId() + "_" + token.getToken());
- }
- public static void main(String[] args) throws Exception {
- Map<String, Object> map = new HashMap<String, Object>();
- String s = HttpClientSSLUtils.doPost("https://yzwlw.loongk.com/mobile/login?username=江西增鑫&password=21218cca77804d2ba1922c33e0151105",JSON.toJSONString(map));
- LoginDto loginDto = JSONUtil.toBean(s, LoginDto.class);
- DataToken token = loginDto.getData().getToken();
- String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
- //获取配置
- Map<String, Object> map2 = new HashMap<String, Object>();
- HttpHeaders headers = new HttpHeaders();
- headers.add("Authorization",encode);
- HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
- RestTemplate restTemplate = new RestTemplate();
- ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/"+"2c92083a83f8673701854cde3f6203bb", HttpMethod.GET, requestEntity, String.class);
- System.out.println("peizhi"+exchangePeizhi.getBody());
- ResponseEntity<String> exchangeShishi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackDatas/"+"2c92083a83f8673701854cde3f6203bb", HttpMethod.GET, requestEntity, String.class);
- System.out.println("shishi"+exchangeShishi.getBody());
- System.out.println(s);
- }
- }
|