mcu8的token失败重试
This commit is contained in:
parent
46317684a3
commit
1c5e568e5b
@ -61,8 +61,8 @@ public class Mcs8Call implements PoliceCameraManufacturer {
|
||||
throw new OpenAlertException("请先绑定设备");
|
||||
}
|
||||
try {
|
||||
Mcs8Util.addTask(config, StrUtil.format("{}-{}-{}", ticket.getConstructionAreaNames(), ticket.getWorkTicketNumber(), "第" + no + "次作业"), workNo);
|
||||
String taskId = Mcs8Util.getTaskIdByWorkNo(config, workNo);
|
||||
Mcs8Util.addTask(config, StrUtil.format("{}-{}-{}", ticket.getConstructionAreaNames(), ticket.getWorkTicketNumber(), "第" + no + "次作业"), workNo, true);
|
||||
String taskId = Mcs8Util.getTaskIdByWorkNo(config, workNo, true);
|
||||
Mcs8Util.updateTaskDest(config, ticket.getItemList(), taskId);
|
||||
// Mcs8Util.updateTaskStatus(config, 1, taskId);
|
||||
} catch (OpenAlertException e) {
|
||||
@ -79,8 +79,8 @@ public class Mcs8Call implements PoliceCameraManufacturer {
|
||||
throw new OpenAlertException("请先绑定设备");
|
||||
}
|
||||
try {
|
||||
String taskId = Mcs8Util.getTaskIdByWorkNo(config, workNo);
|
||||
Mcs8Util.updateTaskStatus(config, 2, taskId);
|
||||
String taskId = Mcs8Util.getTaskIdByWorkNo(config, workNo, true);
|
||||
Mcs8Util.updateTaskStatus(config, 2, taskId, true);
|
||||
} catch (OpenAlertException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
@ -97,7 +97,7 @@ public class Mcs8Call implements PoliceCameraManufacturer {
|
||||
int pageSize = 1000;
|
||||
List<Mcs8FileBo> bos = new ArrayList<>();
|
||||
do {
|
||||
JSONObject jsonObject = Mcs8Util.getRecordFileList(config, page, pageSize, begin, end);
|
||||
JSONObject jsonObject = Mcs8Util.getRecordFileList(config, page, pageSize, begin, end, true);
|
||||
bos = BeanUtil.copyToList(jsonObject.getJSONArray("data"), Mcs8FileBo.class);
|
||||
for (Mcs8FileBo bo : bos) {
|
||||
downloadFileAndSave(bo, cameraItemMap);
|
||||
@ -112,7 +112,7 @@ public class Mcs8Call implements PoliceCameraManufacturer {
|
||||
if (count > 0) {
|
||||
return;
|
||||
}
|
||||
Mcs8FileSignedUrlBo signedUrl = Mcs8Util.getSignedUrl(config, bo.getId());
|
||||
Mcs8FileSignedUrlBo signedUrl = Mcs8Util.getSignedUrl(config, bo.getId(), true);
|
||||
PoliceCameraItem item = cameraItemMap.get(bo.getDevId());
|
||||
WorkTicketHistory history = workTicketHistoryService.getById(bo.getWorkNo());
|
||||
if (item != null) {
|
||||
@ -155,7 +155,7 @@ public class Mcs8Call implements PoliceCameraManufacturer {
|
||||
JSONArray devList = new JSONArray();
|
||||
JSONArray tempList = new JSONArray();
|
||||
do {
|
||||
tempList = Mcs8Util.getDevList(config, page, pageSize);
|
||||
tempList = Mcs8Util.getDevList(config, page, pageSize, true);
|
||||
devList.addAll(tempList);
|
||||
page++;
|
||||
} while (CollUtil.isNotEmpty(tempList) && tempList.size() == pageSize);
|
||||
|
||||
@ -15,6 +15,7 @@ import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraItem;
|
||||
import com.zhgd.xmgl.modules.policecamera.entity.ProjectPoliceCameraConfig;
|
||||
import com.zhgd.xmgl.modules.policecamera.entity.bo.Mcs8FileSignedUrlBo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@ -37,7 +38,7 @@ public class Mcs8Util {
|
||||
* @return
|
||||
*/
|
||||
public static String getToken(String ip, String port, String account, String password) {
|
||||
String token = redisRepository.getOrSet("mcs8_token_" + account, () -> {
|
||||
String token = redisRepository.getOrSet(getTokenRedisKey(ip, account), () -> {
|
||||
String url = ip + ":" + port + "/api/v1/auth/Token";
|
||||
JSONObject bodyJo = new JSONObject();
|
||||
bodyJo.put("username", account);
|
||||
@ -58,6 +59,11 @@ public class Mcs8Util {
|
||||
return token;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getTokenRedisKey(String ip, String account) {
|
||||
return "mcs8_token_" + ip + "_" + account;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新工单执行设置(派发)
|
||||
*
|
||||
@ -67,21 +73,27 @@ public class Mcs8Util {
|
||||
*/
|
||||
public static void updateTaskDest(ProjectPoliceCameraConfig config, List<PoliceCameraItem> itemList, String taskId) {
|
||||
for (PoliceCameraItem item : itemList) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/TaskUpdateDest";
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("id", taskId);
|
||||
jo.put("destDevId", item.getDevSn());
|
||||
url = HttpUtil.urlWithForm(url, jo, CharsetUtil.CHARSET_UTF_8, false);
|
||||
log.info("mcs8 更新工单执行设置(派发) url:{}", url);
|
||||
String result = HttpRequest.get(url).header("token", getToken(getHost(config), config.getPort(), config.getAccount(), config.getPassword())).execute().body();
|
||||
updateTaskDest(config, taskId, item, true);
|
||||
}
|
||||
}
|
||||
|
||||
log.info("mcs8 更新工单执行设置(派发) result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
private static void updateTaskDest(ProjectPoliceCameraConfig config, String taskId, PoliceCameraItem item, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/TaskUpdateDest";
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("id", taskId);
|
||||
jo.put("destDevId", item.getDevSn());
|
||||
url = HttpUtil.urlWithForm(url, jo, CharsetUtil.CHARSET_UTF_8, false);
|
||||
log.info("mcs8 更新工单执行设置(派发) url:{}", url);
|
||||
String result = HttpRequest.get(url).header("token", getToken(getHost(config), config.getPort(), config.getAccount(), config.getPassword())).execute().body();
|
||||
|
||||
} else {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
}
|
||||
log.info("mcs8 更新工单执行设置(派发) result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
updateTaskDest(config, taskId, item, false);
|
||||
} else if (!Objects.equals(jsonObject.getInteger("result"), 200) && !Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
}
|
||||
}
|
||||
|
||||
@ -100,8 +112,9 @@ public class Mcs8Util {
|
||||
*
|
||||
* @param config
|
||||
* @param workNo
|
||||
* @param retry
|
||||
*/
|
||||
public static String getTaskIdByWorkNo(ProjectPoliceCameraConfig config, String workNo) {
|
||||
public static String getTaskIdByWorkNo(ProjectPoliceCameraConfig config, String workNo, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/TaskList";
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("st", "2022-01-01");
|
||||
@ -113,7 +126,11 @@ public class Mcs8Util {
|
||||
|
||||
log.info("mcs8 获取工单列表 result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
return getTaskIdByWorkNo(config, workNo, false);
|
||||
} else if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
JSONArray jsonArray = jsonObject.getJSONArray("data");
|
||||
if (CollUtil.isEmpty(jsonArray)) {
|
||||
return null;
|
||||
@ -130,8 +147,9 @@ public class Mcs8Util {
|
||||
* @param config
|
||||
* @param title
|
||||
* @param workNo
|
||||
* @param retry true失败会重试
|
||||
*/
|
||||
public static void addTask(ProjectPoliceCameraConfig config, String title, String workNo) {
|
||||
public static void addTask(ProjectPoliceCameraConfig config, String title, String workNo, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/TaskAdd";
|
||||
JSONObject bodyJo = new JSONObject();
|
||||
bodyJo.put("workNo", workNo);
|
||||
@ -144,9 +162,11 @@ public class Mcs8Util {
|
||||
String result = HttpRequest.post(url).header("token", getToken(getHost(config), config.getPort(), config.getAccount(), config.getPassword())).body(body).execute().body();
|
||||
log.info("mcs8 添加工单 result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
|
||||
} else {
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
addTask(config, title, workNo, false);
|
||||
} else if (isRespError(jsonObject)) {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
}
|
||||
}
|
||||
@ -158,7 +178,7 @@ public class Mcs8Util {
|
||||
* @param status 0:待处理,1:正在执行,2:已完成
|
||||
* @param taskId
|
||||
*/
|
||||
public static void updateTaskStatus(ProjectPoliceCameraConfig config, int status, String taskId) {
|
||||
public static void updateTaskStatus(ProjectPoliceCameraConfig config, int status, String taskId, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/TaskUpdateStatus";
|
||||
JSONObject jo = new JSONObject();
|
||||
if (StrUtil.isBlank(taskId) && status == 2) {
|
||||
@ -172,13 +192,35 @@ public class Mcs8Util {
|
||||
|
||||
log.info("mcs8 更新工单执行状态 result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
|
||||
} else {
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
updateTaskStatus(config, status, taskId, false);
|
||||
} else if (isRespError(jsonObject)) {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应返回token失效
|
||||
*
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
private static boolean isTokenExpiredError(JSONObject jsonObject) {
|
||||
return Objects.equals(jsonObject.getInteger("result"), 333) || Objects.equals(jsonObject.getInteger("error"), 333);
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应返回错误
|
||||
*
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
private static boolean isRespError(JSONObject jsonObject) {
|
||||
return !Objects.equals(jsonObject.getInteger("result"), 200) && !Objects.equals(jsonObject.getInteger("error"), 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询文件列表
|
||||
*
|
||||
@ -189,7 +231,7 @@ public class Mcs8Util {
|
||||
* @param end
|
||||
* @return
|
||||
*/
|
||||
public static JSONObject getRecordFileList(ProjectPoliceCameraConfig config, Integer page, Integer pageSize, Date begin, Date end) {
|
||||
public static JSONObject getRecordFileList(ProjectPoliceCameraConfig config, Integer page, Integer pageSize, Date begin, Date end, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/RecordFileList";
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("st", DateUtil.formatDateTime(begin));
|
||||
@ -205,7 +247,11 @@ public class Mcs8Util {
|
||||
|
||||
log.info("mcs8 查询文件列表 result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
return getRecordFileList(config, page, pageSize, begin, end, false);
|
||||
} else if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
return JSONObject.parseObject(result);
|
||||
} else {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
@ -219,7 +265,7 @@ public class Mcs8Util {
|
||||
* @param id 文件id
|
||||
* @return
|
||||
*/
|
||||
public static Mcs8FileSignedUrlBo getSignedUrl(ProjectPoliceCameraConfig config, String id) {
|
||||
public static Mcs8FileSignedUrlBo getSignedUrl(ProjectPoliceCameraConfig config, String id, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/oss/SignedUrl";
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("id", id);
|
||||
@ -230,7 +276,11 @@ public class Mcs8Util {
|
||||
|
||||
log.info("mcs8 获取文件网络访问地址 result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
return getSignedUrl(config, id, false);
|
||||
} else if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
return JSONObject.parseObject(jsonObject.getJSONObject("content").toJSONString(), Mcs8FileSignedUrlBo.class);
|
||||
} else {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
@ -245,7 +295,7 @@ public class Mcs8Util {
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
public static JSONArray getDevList(ProjectPoliceCameraConfig config, int page, int pageSize) {
|
||||
public static JSONArray getDevList(ProjectPoliceCameraConfig config, int page, int pageSize, boolean retry) {
|
||||
String url = getHost(config) + ":" + config.getPort() + "/api/v1/DevList";
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("page", page);
|
||||
@ -256,7 +306,11 @@ public class Mcs8Util {
|
||||
|
||||
log.info("mcs8 获取设备列表 result:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
if (isTokenExpiredError(jsonObject) && retry) {
|
||||
//删除token
|
||||
redisRepository.del(getTokenRedisKey(getHost(config), config.getAccount()));
|
||||
return getDevList(config, page, pageSize, false);
|
||||
} else if (Objects.equals(jsonObject.getInteger("result"), 200) || Objects.equals(jsonObject.getInteger("error"), 200)) {
|
||||
return jsonObject.getJSONArray("content");
|
||||
} else {
|
||||
throw new OpenAlertException("调用外部接口失败");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user