package com.zteits.park.configuration.schedule; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONException; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONObject; import com.clouds.common.cache.sys.SysCodeValueCacheUtil; import com.clouds.common.constants.CodeValKindEnum; import com.clouds.common.constants.RedisKeyEnum; import com.clouds.common.redis.RedisCacheFactory; import com.clouds.common.redis.RedisCacheUtil; import com.clouds.common.utils.HttpClientTutorial; import com.clouds.common.utils.MD5Utils; import com.zteits.clouds.api.apibase.constants.PDAErrorEnum; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.order.taijiyun.EqpLoginRequest; import com.zteits.clouds.api.dto.park.dto.TaijiChanneEqpDTO; import com.zteits.clouds.api.dto.rocketmq.datacollection.hvreport.BjxcTaijiConfigVO; import com.zteits.park.dao.TpEEmployeeChargeDao; import com.zteits.park.domain.TpEEmployeeCharge; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; /** * Copyright: Copyright (c) 2021 * * @ClassName: com.zteits.order.config.schedule * @Description: 西城上传太极进出场数据 * @version: v1.0.0 * @author: * @date: 2022/11/12 11:10 上午 Modification History: * @ Date Author Version Description * @ ---------------------------------------------------------* * @ 2022/11/12 v1.0.0 创建 */ @Component public class TaiJiEqpTokenTask { Logger logger = LoggerFactory.getLogger(TaiJiEqpTokenTask.class); @Autowired private RedisCacheUtil redisCacheUtil; @Autowired private TpEEmployeeChargeDao tpEEmployeeChargeDao; /** * 半小时刷新一次token获取 */ @Scheduled(fixedRate = 1800 * 1000) public void refreshTaiJiEqpToken() { logger.info("西城半小时刷新token:"); List tpEEmployeeCharges = tpEEmployeeChargeDao.queryChargerByOrgId(10007L); logger.info("西城半小时刷新token:"+JSONObject.toJSON(tpEEmployeeCharges)); if(tpEEmployeeCharges.size()<=0){ return; } for (TpEEmployeeCharge employeeCharge:tpEEmployeeCharges){ //eqptoken不为空 说明收费用已经登录 if(StringUtils.isNotEmpty(employeeCharge.getEqpToken())){ String codeValue = SysCodeValueCacheUtil.queryCodeValue(CodeValKindEnum.BJXC_TAIJI_UPLOAD); logger.info("西城太极上报配置信息11:" + JSONObject.toJSON(codeValue)); JSONObject response = new JSONObject(); if (StringUtils.isNotEmpty(codeValue)) { String devStatuskeyStr = RedisKeyEnum.TAIJI_EQP_DEVICE_STATUS.key() + employeeCharge.getEqpSn(); TaijiChanneEqpDTO channeEqpDTO = RedisCacheFactory.getRedisCacheUtil().get(devStatuskeyStr); logger.info("devStatuskeyStr:" + JSONObject.toJSON(devStatuskeyStr)); logger.info("西taijiChanneEqpDTO:" + JSONObject.toJSON(channeEqpDTO)); if(channeEqpDTO == null){ continue; } try { BjxcTaijiConfigVO configVO = JSON.parseObject(codeValue, BjxcTaijiConfigVO.class); EqpLoginRequest loginRequest = new EqpLoginRequest(); // loginRequest.setSn(employeeCharge.getEqpSn()); // String timeMillis = System.currentTimeMillis()+""; // loginRequest.setTimestamp(timeMillis); // loginRequest.setPositionLat(channeEqpDTO.getLatId()+""); // loginRequest.setPositionLong(channeEqpDTO.getLonId()+""); //// //// loginRequest.setPositionLat("40.3842111"); //// loginRequest.setPositionLong("115.9074991"); // loginRequest.setUserName(employeeCharge.getEqpUserName()); // loginRequest.setPassword(employeeCharge.getChargerPwd()); // String md = employeeCharge.getChargerName()+ employeeCharge.getEqpUserPassword()+timeMillis+configVO.getKey(); // String sing = MD5Utils.enMD5(md); loginRequest.setSn(employeeCharge.getEqpSn()); String timeMillis = System.currentTimeMillis()+""; loginRequest.setTimestamp(timeMillis); loginRequest.setPositionLat(channeEqpDTO.getLatId()+""); loginRequest.setPositionLong(channeEqpDTO.getLonId()+""); loginRequest.setUserName(employeeCharge.getEqpUserName()); loginRequest.setPassword(employeeCharge.getEqpUserPassword()); String md = employeeCharge.getEqpUserName()+ employeeCharge.getEqpUserPassword()+timeMillis+configVO.getKey(); String sing = MD5Utils.enMD5(md); loginRequest.setSign(sing); loginRequest.setVersion(configVO.getVersion()); String logInUrl = configVO.getLogInUrl(); JSONObject voJson = (JSONObject) JSONObject.toJSON(loginRequest); logger.info("{},西城巡检车设备登录信息,请求:{}", logInUrl, voJson); response = HttpClientTutorial.doPostXC(logInUrl, voJson); // 发送 logger.info("{},西城巡检车设备登录信息,响应:{}", logInUrl, response); } catch (JSONException e) { logger.info("西城太极上报配置信息获取错误:" + JSONObject.toJSON(e)); } if (null != response) { try { String keyStr = RedisKeyEnum.TAIJI_EQP_TOKEN.key() + employeeCharge.getEqpSn(); String resCode = response.getString("code"); String msg = response.getString("msg"); JSONObject content = response.getJSONObject ("content"); if("100".equals(resCode)){ String token = response.getString("token");; String empCode = content.getString("empCode"); String empName = content.getString("empName"); TaijiChanneEqpDTO taijiChanneEqpDTO = new TaijiChanneEqpDTO(); taijiChanneEqpDTO.setEqpSn(employeeCharge.getEqpSn()); taijiChanneEqpDTO.setChargerCode(employeeCharge.getChargerCode()); taijiChanneEqpDTO.setChargerName(employeeCharge.getChargerName()); taijiChanneEqpDTO.setEqpToken(token); taijiChanneEqpDTO.setEqpCode(empCode); taijiChanneEqpDTO.setEqpName(empName); taijiChanneEqpDTO.setEqpUserName(employeeCharge.getEqpUserName()); taijiChanneEqpDTO.setEqpUserPassword(employeeCharge.getEqpUserPassword()); taijiChanneEqpDTO.setLonId(channeEqpDTO.getLonId()); taijiChanneEqpDTO.setLatId(channeEqpDTO.getLatId()); logger.info("西城设备登录token至内存:"+token); //放入Redis if(StringUtils.isNotEmpty(token)){ redisCacheUtil.put(keyStr, taijiChanneEqpDTO, 60*60L);//保存ACCESS_TAIJI_TOKEN到内存 } logger.info("西城太极设备登录token刷新成功:"+redisCacheUtil.get(keyStr)); }else { throw new BizException(PDAErrorEnum.PDA_NOT_USED, msg); } } catch (Exception e) { logger.error(e.getMessage(), e); } } } } } } }