|  | @ -5,9 +5,11 @@ import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.config.YsConfig;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.device.PatientDeviceDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.device.YsConfigDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.label.WlyyPatientLabelDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.util.DeviceUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DevicePatientDevice;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.YsConfigDo;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.ResponseContant;
 | 
	
		
			
				|  |  | import com.yihu.jw.rm.iot.IotRequestMapping;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.date.DateUtil;
 | 
	
	
		
			
				|  | @ -20,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.data.redis.core.StringRedisTemplate;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpEntity;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpMethod;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | import org.springframework.util.LinkedMultiValueMap;
 | 
	
		
			
				|  |  | import org.springframework.util.MultiValueMap;
 | 
	
	
		
			
				|  | @ -50,25 +53,33 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |     private PatientDeviceDao patientDeviceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DeviceUtil deviceUtil;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private YsConfig ysConfig;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private YsConfigDao ysConfigDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取萤石设备assesToken
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String getAccessToken() throws Exception {
 | 
	
		
			
				|  |  |         if(redisTemplate.hasKey(YsConfig.redisKey)){
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YsConfig.redisKey);
 | 
	
		
			
				|  |  |     public String getAccessToken(String deviceSn) throws Exception {
 | 
	
		
			
				|  |  |         YsConfigDo YSCONFIGDO = ysConfig.getConfig(deviceSn);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(redisTemplate.hasKey(YSCONFIGDO.getAccessTokenKey())){
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YSCONFIGDO.getAccessTokenKey());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         JSONObject param = new JSONObject();
 | 
	
		
			
				|  |  |         param.put("appKey",YsConfig.AppKey);
 | 
	
		
			
				|  |  |         param.put("appSecret",YsConfig.Secret);
 | 
	
		
			
				|  |  |         param.put("appKey",YSCONFIGDO.getAppKey());
 | 
	
		
			
				|  |  |         param.put("appSecret",YSCONFIGDO.getAppSecret());
 | 
	
		
			
				|  |  |         HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.saasAssesToken,param, HttpMethod.POST);
 | 
	
		
			
				|  |  |         JSONObject responseBody = response.getBody();
 | 
	
		
			
				|  |  |         String assToken = null;
 | 
	
		
			
				|  |  |         if (responseBody.getInteger("code")==200){
 | 
	
		
			
				|  |  |             assToken = responseBody.getJSONObject("data").getString("accessToken");
 | 
	
		
			
				|  |  |             Long expireTime = responseBody.getJSONObject("data").getLong("expiresIn");//token有效期
 | 
	
		
			
				|  |  |             redisTemplate.opsForValue().set(YsConfig.redisKey,assToken,expireTime, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  |             redisTemplate.opsForValue().set(YSCONFIGDO.getAccessTokenKey(),assToken,expireTime, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  | //            Long ss= redisTemplate.getExpire(YsConfig.redisKey);
 | 
	
		
			
				|  |  | //            System.out.println(expireTime+"---"+ss);
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -84,13 +95,15 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String getIotAccessToken() throws Exception {
 | 
	
		
			
				|  |  |         if(redisTemplate.hasKey(YsConfig.iotRedisKey)){
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YsConfig.iotRedisKey);
 | 
	
		
			
				|  |  |     public String getIotAccessToken(String deviceSn) throws Exception {
 | 
	
		
			
				|  |  |         YsConfigDo YSCONFIGDO = ysConfig.getConfig(deviceSn);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(redisTemplate.hasKey(YSCONFIGDO.getIotAccessTokenKey())){
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YSCONFIGDO.getIotAccessTokenKey());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         JSONObject param = new JSONObject();
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken());
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken(deviceSn));
 | 
	
		
			
				|  |  |         HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.iotAssesToken,param, HttpMethod.POST);
 | 
	
		
			
				|  |  |         JSONObject responseBody = response.getBody();
 | 
	
		
			
				|  |  |         String assToken = null;
 | 
	
	
		
			
				|  | @ -100,10 +113,10 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |             Long nowTime = System.currentTimeMillis();
 | 
	
		
			
				|  |  |             expireTime = expireTime-nowTime;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             redisTemplate.opsForValue().set(YsConfig.iotRedisKey,assToken,expireTime, TimeUnit.MILLISECONDS);
 | 
	
		
			
				|  |  |             redisTemplate.opsForValue().set(YSCONFIGDO.getIotAccessTokenKey(),assToken,expireTime, TimeUnit.MILLISECONDS);
 | 
	
		
			
				|  |  |             //设备解密密钥
 | 
	
		
			
				|  |  |             String secretKey = responseBody.getJSONObject("data").getString("secretKey");
 | 
	
		
			
				|  |  |             redisTemplate.opsForValue().set(YsConfig.secretKey,secretKey,expireTime, TimeUnit.MILLISECONDS);
 | 
	
		
			
				|  |  |             redisTemplate.opsForValue().set(YSCONFIGDO.getSecretKey(),secretKey,expireTime, TimeUnit.MILLISECONDS);
 | 
	
		
			
				|  |  | //            Long ss= redisTemplate.getExpire(YsConfig.iotRedisKey);
 | 
	
		
			
				|  |  | //            System.out.println(expireTime+"---"+ss);
 | 
	
		
			
				|  |  |         }else {
 | 
	
	
		
			
				|  | @ -117,13 +130,15 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String getSecretKey() throws Exception {
 | 
	
		
			
				|  |  |         if(redisTemplate.hasKey(YsConfig.secretKey)){
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YsConfig.secretKey);
 | 
	
		
			
				|  |  |     public String getSecretKey(String deviceSn) throws Exception {
 | 
	
		
			
				|  |  |         YsConfigDo YSCONFIGDO = ysConfig.getConfig(deviceSn);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(redisTemplate.hasKey(YSCONFIGDO.getSecretKey())){
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YSCONFIGDO.getSecretKey());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         else {
 | 
	
		
			
				|  |  |             getIotAccessToken();
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YsConfig.secretKey);
 | 
	
		
			
				|  |  |             getIotAccessToken(deviceSn);
 | 
	
		
			
				|  |  |             return redisTemplate.opsForValue().get(YSCONFIGDO.getSecretKey());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -140,7 +155,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |     public JSONObject surveillanceWay(String deviceSerial,Integer channelNo,Integer isTrust,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         JSONObject param = new JSONObject();
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken());
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.put("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.put("channelNo",channelNo);
 | 
	
		
			
				|  |  |         param.put("isTrust",0);
 | 
	
	
		
			
				|  | @ -169,11 +184,11 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject deviceEncrypt(String deviceSerial,Integer isEncrypt,String validateCode,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject param = new JSONObject();
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken());
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.put("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.put("isEncrypt",isEncrypt);
 | 
	
		
			
				|  |  |         if (0==isEncrypt){//PU4eJqa7j9GMst8P
 | 
	
		
			
				|  |  |             validateCode = messageDecrypt(validateCode,getSecretKey());
 | 
	
		
			
				|  |  |             validateCode = messageDecrypt(validateCode,getSecretKey(deviceSerial));
 | 
	
		
			
				|  |  |             param.put("validateCode",validateCode);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.deviceEncrypt,param,HttpMethod.POST);
 | 
	
	
		
			
				|  | @ -192,7 +207,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject deviceCapture(String deviceSerial,Integer channelNo,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject param = new JSONObject();
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken());
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.put("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.put("channelNo",channelNo+"");
 | 
	
		
			
				|  |  |         HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.deviceCapture,param,HttpMethod.POST);
 | 
	
	
		
			
				|  | @ -215,7 +230,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.add("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.add("channelNo",channelNo+"");
 | 
	
		
			
				|  |  |         HttpEntity<JSONObject> response = httpClientUtil.iotAssesTokenPostHttp(YsConfig.getDeviceLiveAddress,param,HttpMethod.POST);
 | 
	
	
		
			
				|  | @ -303,14 +318,14 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (null==type){//查询
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             url += "?accessToken="+getIotAccessToken()+"&key=Alarm_DetectHumanCar";
 | 
	
		
			
				|  |  |             url += "?accessToken="+getIotAccessToken(deviceSerial)+"&key=Alarm_DetectHumanCar";
 | 
	
		
			
				|  |  |             MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |             HttpEntity<JSONObject> response = httpClientUtil.iotAssesTokenPostHttp(url,param,HttpMethod.GET);
 | 
	
		
			
				|  |  |             responseBody = response.getBody();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         else {
 | 
	
		
			
				|  |  |             MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |             param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |             param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |             param.add("key","Alarm_DetectHumanCar");
 | 
	
		
			
				|  |  |             param.add("value","{\"type\":"+type+"}");
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -333,7 +348,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject ptzStart(String deviceSerial,Integer channelNo,Integer direction,Integer speed,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.add("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.add("channelNo",channelNo+"");
 | 
	
		
			
				|  |  |         param.add("direction",direction+"");
 | 
	
	
		
			
				|  | @ -355,7 +370,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject ptzStop(String deviceSerial,Integer channelNo,Integer direction,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.add("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.add("channelNo",channelNo+"");
 | 
	
		
			
				|  |  |         param.add("direction",direction+"");
 | 
	
	
		
			
				|  | @ -373,11 +388,18 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject coverVideoSwitch(String is_vod_cover ,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject param  = new JSONObject();
 | 
	
		
			
				|  |  |         param.put("accessToken",getAccessToken());
 | 
	
		
			
				|  |  |         param.put("is_vod_cover",is_vod_cover);
 | 
	
		
			
				|  |  |         HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.coverVideoSwitch,param,HttpMethod.POST);
 | 
	
		
			
				|  |  |         JSONObject responseBody = response.getBody();
 | 
	
		
			
				|  |  |         String sql =" select de.device_sn from dm_ys_config con INNER JOIN ys_device de " +
 | 
	
		
			
				|  |  |                 " on con.config_id = de.config_id GROUP BY con.config_id";
 | 
	
		
			
				|  |  |         List<String> device = jdbcTemplate.queryForList(sql,String.class);
 | 
	
		
			
				|  |  |         JSONObject responseBody = new JSONObject();
 | 
	
		
			
				|  |  |         for (String deviceSn:device){
 | 
	
		
			
				|  |  |             JSONObject param  = new JSONObject();
 | 
	
		
			
				|  |  |             param.put("accessToken",getAccessToken(deviceSn));
 | 
	
		
			
				|  |  |             param.put("is_vod_cover",is_vod_cover);
 | 
	
		
			
				|  |  |             HttpEntity<JSONObject> response = httpClientUtil.assesTokenPostHttp(YsConfig.coverVideoSwitch,param,HttpMethod.POST);
 | 
	
		
			
				|  |  |             responseBody = response.getBody();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return responseBody;
 | 
	
		
			
				|  |  |         //https://www.yuque.com/u1400669/kb/nu22ks
 | 
	
		
			
				|  |  |     }
 | 
	
	
		
			
				|  | @ -404,7 +426,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.add("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.add("channelNo",channelNo+"");
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -514,7 +536,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |     public JSONObject deviceVideoUrlByTime(String deviceSerial,Integer channelNo,String protocol,String type,String startTime,String stopTime,Integer expireTime,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         param.add("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         param.add("channelNo",channelNo+"");
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(protocol)){
 | 
	
	
		
			
				|  | @ -634,7 +656,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |                                  String gbchannel,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         if (StringUtils.isBlank(deviceSerial)){
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(patient)){
 | 
	
		
			
				|  |  |                 List<DevicePatientDevice> devices = patientDeviceDao.findByUserAndCategoryCode(patient,"12");
 | 
	
	
		
			
				|  | @ -692,7 +714,7 @@ public class YsDeviceService {
 | 
	
		
			
				|  |  |     public JSONObject fullDayVideo(String deviceSerial,Integer channelNo,Integer enable,HttpServletRequest request) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken());
 | 
	
		
			
				|  |  |         param.add("accessToken",getIotAccessToken(deviceSerial));
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(deviceSerial)){
 | 
	
		
			
				|  |  |             param.add("deviceSerial",deviceSerial);
 | 
	
		
			
				|  |  |         }
 |