TaiJiEqpTokenTask.java
8.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
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<TpEEmployeeCharge> 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);
}
}
}
}
}
}
}