From e55c8b0a92eb9715edd90c31dfd4de51a47b588b Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期五, 04 十一月 2022 17:40:08 +0800
Subject: [PATCH] changes
---
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/RemoteUpdateController.java | 219 +++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 150 insertions(+), 69 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/RemoteUpdateController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/RemoteUpdateController.java
index 9146987..27af564 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/RemoteUpdateController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/RemoteUpdateController.java
@@ -1,24 +1,28 @@
package com.sandu.ximon.admin.controller;
+import com.alibaba.fastjson.JSON;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.execption.BusinessException;
-import com.sandu.common.security.annotation.AnonymousAccess;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.dto.RemoteFileDto;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.RemoteUpdateTypeEnum;
import com.sandu.ximon.admin.param.RemotePrarm;
import com.sandu.ximon.admin.param.RemoteUpdateParam;
import com.sandu.ximon.admin.security.PermissionConfig;
+import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.service.RemoteUpdateService;
-import com.sandu.ximon.admin.utils.HexUtils;
-import com.sandu.ximon.admin.utils.StringUtil;
+import com.sandu.ximon.admin.utils.RedisUtils;
+import com.sandu.ximon.admin.vo.RemoteUpgradeProgress;
import com.sandu.ximon.dao.enums.MenuEnum;
import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import java.util.Arrays;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
/**
* 鍥轰欢鍗囩骇Controller
@@ -34,22 +38,46 @@
private PermissionConfig permissionConfig;
- @AnonymousAccess
@PostMapping("/add")
public ResponseVO<Object> addRemoteUpdateFile(@RequestBody @Validated RemoteUpdateParam param) {
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_FILE_ADD.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
boolean flag = remoteUpdateService.addRemoteUpdateFile(param.getFilename(), param.getFileType()
, param.getSoftwareVersion(), param.getHardwareVersion(), param.getAliAddress(), param.getFileLength());
return ResponseUtil.success(flag);
}
- @AnonymousAccess
+ /**
+ * 淇敼鍥轰欢鍗囩骇鏂囦欢鍚嶇О
+ *
+ * @param remoteFileId
+ * @param remoteFileName
+ * @return
+ */
+ @GetMapping("/updateRemoteFileName")
+ public ResponseVO<Object> updateRemoteFileName(@RequestParam(required = false, value = "remoteFileId") String remoteFileId,
+ @RequestParam(required = false, value = "remoteFileName") String remoteFileName) {
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_FILE_UPDATE.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
+ String result = remoteUpdateService.updateRemoteFileName(remoteFileId, remoteFileName);
+ return ResponseUtil.success(result);
+ }
+
@GetMapping("/getRemoteFileList")
public ResponseVO<Object> getRemoteFileList() {
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_FILE_LIST.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
return ResponseUtil.success(remoteUpdateService.getRemoteFileList());
}
@GetMapping("/getRemoteUpdateTypeList")
public ResponseVO<Object> getRemoteUpdateTypeList() {
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_TYPE_LIST.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
return ResponseUtil.success(remoteUpdateService.getRemoteUpdateTypeList());
}
@@ -58,37 +86,23 @@
*
* @return
*/
- //TODO
- @AnonymousAccess
@PostMapping("/StartRemoteUpdate")
public ResponseVO<Object> startRemoteUpdate(@RequestBody @Validated RemotePrarm remotePrarm) {
-// if (!permissionConfig.check(MenuEnum.MENU_LIST.getCode())) {
-// return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
-// }
- String orderType;
- boolean UpdateFlag = false;
-
- switch (remotePrarm.getDeviceType()) {
- case "MQTT涓插彛":
- case "CAT1":
- orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
- break;
- case "澶ф皵":
- orderType = A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode();
- break;
- case "C3鍏呯數妗�":
- orderType = A5OrderEnum.REQUEST_C3_DATA.getCode();
- break;
- case "鏉嗕綋鍊炬枩":
- orderType = A5OrderEnum.REQUEST_POLE_MONITOR_DATA.getCode();
- break;
- default:
- throw new BusinessException("鍗囩骇纭欢璁惧绫诲瀷鎸囦护鏈夎锛岃纭锛�");
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_START.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
}
+
+ String deviceType = remotePrarm.getDeviceType();
+ String orderType = deviceType2OrderType(deviceType);
+ boolean UpdateFlag = false;
//鍚姩杩滅▼鍗囩骇鍛戒护
boolean startRemoteUpdateFlag = remoteUpdateService.StartRemoteUpdate(orderType, remotePrarm.getMac(), remotePrarm.getHardwareVersion()
, remotePrarm.getSoftwareVersion(), remotePrarm.getUpdateFlag());
+ //瀛樺叆鍗囩骇杩涘害
+ RemoteUpgradeProgress progress = new RemoteUpgradeProgress();
+ RedisUtils.getBean().set(deviceType + ":" + SecurityUtils.getUserId() + remotePrarm.getMac(), JSON.toJSON(progress));
+
if (startRemoteUpdateFlag) {
//鏈嶅姟鍣ㄤ笅鍙戝崌绾ф枃浠朵俊鎭�
//"C:\\Users\\Administrator\\Desktop\\test\\MQTT-杩囨护澶ф皵鐗堟湰1-09-20220310.bin"
@@ -96,14 +110,21 @@
if (remoteFileDto != null) {
System.out.println(remoteFileDto.getList().size());
+ progress.setTotalProgress(remoteFileDto.getList().size() + 1);
for (int i = 0; i < remoteFileDto.getList().size(); i++) {
//鍗囩骇鍖呮暟鎹�
remoteUpdateService.UpdateData(orderType, remotePrarm.getMac(), i, remoteFileDto.getList().get(i));
+ progress.setCurrentProgress(i + 1);
+ if (i != remoteFileDto.getList().size()) {
+ RedisUtils.getBean().set(deviceType + ":" + SecurityUtils.getUserId() + remotePrarm.getMac(), JSON.toJSON(progress));
+ }
}
//鏈嶅姟鍣ㄤ笅鍙戞煡璇㈡紡鍖呭抚
boolean searchLoseDataFlag = remoteUpdateService.SearchLoseData(orderType, remotePrarm.getMac(), remoteFileDto, 0);
if (searchLoseDataFlag) {
+ //鏃犳紡鍖呮儏鍐� 鏇存柊鏈�鍚庤繘搴︿负100% 鍚﹀垯鏈�楂樺崱鍦�99%
+ RedisUtils.getBean().set(deviceType + ":" + SecurityUtils.getUserId() + remotePrarm.getMac(), JSON.toJSON(progress));
//鏈嶅姟鍣ㄤ笅鍙戠粨鏉熷崌绾у抚
boolean finishUpdateFlag = remoteUpdateService.FinishUpdate(orderType, remotePrarm.getMac());
UpdateFlag = finishUpdateFlag;
@@ -111,6 +132,7 @@
}
}
+ RedisUtils.getBean().delete(deviceType + ":" + SecurityUtils.getUserId() + remotePrarm.getMac());
if (UpdateFlag) {
return ResponseUtil.success("鍗囩骇鎴愬姛锛�");
} else {
@@ -118,6 +140,33 @@
}
}
+ @PostMapping("/getRemoteUpgradeProgress")
+ public ResponseVO<Object> getRemoteUpgradeProgress(@RequestBody RemotePrarm remotePrarm) {
+// if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_START.getCode())) {
+// return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+// }
+ String deviceType = remotePrarm.getDeviceType();
+
+ isDeviceType(deviceType);
+
+ RemoteUpgradeProgress progress = new RemoteUpgradeProgress();
+ String s = RedisUtils.getBean().get(deviceType + ":" + SecurityUtils.getUserId() + remotePrarm.getMac());
+ if (s != null) {
+ RemoteUpgradeProgress temp = JSON.parseObject(s, RemoteUpgradeProgress.class);
+ BeanUtils.copyProperties(temp, progress);
+ }
+ Map map = new HashMap<>();
+ if (progress.getTotalProgress() != 0) {
+ //璇存槑寮�濮嬪崌绾ф垚鍔� 瀛樺湪闈�0杩涘害
+ BigDecimal divide = BigDecimal.valueOf(progress.getCurrentProgress()).divide(BigDecimal.valueOf(progress.getTotalProgress()), 2, BigDecimal.ROUND_HALF_UP);
+ map.put("progress", divide);
+
+ return ResponseUtil.success(map);
+ } else {
+ map.put("progress", BigDecimal.valueOf(0.0));
+ return ResponseUtil.success(map);
+ }
+ }
/**
* 鏌ヨ鍥轰欢鐗堟湰鍙�
@@ -125,30 +174,15 @@
* @param remotePrarm
* @return
*/
- @AnonymousAccess
@PostMapping("/searchUpdateResult")
public ResponseVO<Object> searchUpdateResult(@RequestBody RemotePrarm remotePrarm) {
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_VERSION.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
if (remotePrarm.getMac() == null || remotePrarm.getDeviceType() == null) {
throw new BusinessException("缂哄皯鐩稿叧鍙傛暟锛�");
}
- String orderType;
- switch (remotePrarm.getDeviceType()) {
- case "MQTT涓插彛":
- case "CAT1":
- orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
- break;
- case "澶ф皵":
- orderType = A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode();
- break;
- case "C3鍏呯數妗�":
- orderType = A5OrderEnum.REQUEST_C3_DATA.getCode();
- break;
- case "鏉嗕綋鍊炬枩":
- orderType = A5OrderEnum.REQUEST_POLE_MONITOR_DATA.getCode();
- break;
- default:
- throw new BusinessException("鍗囩骇纭欢璁惧绫诲瀷鎸囦护鏈夎锛岃纭锛�");
- }
+ String orderType = deviceType2OrderType(remotePrarm.getDeviceType());
//鏈嶅姟鍣ㄤ笅鍙戝崌绾х粨鏋滄煡璇�
String result = remoteUpdateService.SearchUpdateResult(orderType, remotePrarm.getMac());
@@ -161,30 +195,15 @@
* @param remotePrarm
* @return
*/
- @AnonymousAccess
@PostMapping("/stopUpdate")
public ResponseVO<Object> stopUpdate(@RequestBody RemotePrarm remotePrarm) {
+ if (!permissionConfig.check(MenuEnum.REMOTE_UPDATE_STOP.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
if (remotePrarm.getMac() == null || remotePrarm.getDeviceType() == null) {
throw new BusinessException("缂哄皯鐩稿叧鍙傛暟锛�");
}
- String orderType;
- switch (remotePrarm.getDeviceType()) {
- case "MQTT涓插彛":
- case "CAT1":
- orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
- break;
- case "澶ф皵":
- orderType = A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode();
- break;
- case "C3鍏呯數妗�":
- orderType = A5OrderEnum.REQUEST_C3_DATA.getCode();
- break;
- case "鏉嗕綋鍊炬枩":
- orderType = A5OrderEnum.REQUEST_POLE_MONITOR_DATA.getCode();
- break;
- default:
- throw new BusinessException("鍗囩骇纭欢璁惧绫诲瀷鎸囦护鏈夎锛岃纭锛�");
- }
+ String orderType = deviceType2OrderType(remotePrarm.getDeviceType());
//鏈嶅姟鍣ㄤ笅鍙戝崌绾х粨鏋滄煡璇�
boolean flag = remoteUpdateService.stopUpdate(orderType, remotePrarm.getMac());
@@ -194,4 +213,66 @@
return ResponseUtil.success("绱ф�ョ粨鏉熷崌绾уけ璐�");
}
}
+
+ /**
+ * 璁惧绫诲瀷杞寚浠ょ被鍨�
+ *
+ * @param deviceType
+ * @return
+ */
+ private String deviceType2OrderType(String deviceType) {
+ String orderType;
+ if (RemoteUpdateTypeEnum.MQTT_MAIN.equals(deviceType)) {
+ //MQTT涓绘澘
+ orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
+ } else if (RemoteUpdateTypeEnum.MQTT_CORE.equals(deviceType)) {
+ //MQTT鏍稿績鏉�
+ orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
+ } else if (RemoteUpdateTypeEnum.LIGHT.equals(deviceType)) {
+ //鍗曠伅妯″潡
+ orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
+ } else if (RemoteUpdateTypeEnum.C3_CHARGING.equals(deviceType)) {
+ //C3鍏呯數妗╂ā鍧�
+ orderType = A5OrderEnum.REQUEST_C3_DATA.getCode();
+ } else if (RemoteUpdateTypeEnum.CAT1_MAIN.equals(deviceType)) {
+ //Cat.1涓绘澘
+ orderType = A5OrderEnum.REQUEST_LIGHT_DATA.getCode();
+ } else if (RemoteUpdateTypeEnum.LIGHT_POLE_HELING.equals(deviceType)) {
+ //鐏潌鍊炬枩妯″潡
+ orderType = A5OrderEnum.REQUEST_POLE_MONITOR_DATA.getCode();
+ } else if (RemoteUpdateTypeEnum.AIR_EQUIPMENT.equals(deviceType)) {
+ //澶ф皵璁惧妯″潡
+ orderType = A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode();
+ } else {
+ throw new BusinessException("鍗囩骇纭欢璁惧绫诲瀷鎸囦护鏈夎锛岃纭锛�");
+ }
+ return orderType;
+ }
+
+ /**
+ * 鏄惁涓虹郴缁熷唴鐨勮澶囩被鍨�
+ *
+ * @param deviceType
+ * @return
+ */
+ private boolean isDeviceType(String deviceType) {
+ if (RemoteUpdateTypeEnum.MQTT_MAIN.equals(deviceType)) {
+ //MQTT涓绘澘
+ } else if (RemoteUpdateTypeEnum.MQTT_CORE.equals(deviceType)) {
+ //MQTT鏍稿績鏉�
+ } else if (RemoteUpdateTypeEnum.LIGHT.equals(deviceType)) {
+ //鍗曠伅妯″潡
+ } else if (RemoteUpdateTypeEnum.C3_CHARGING.equals(deviceType)) {
+ //C3鍏呯數妗╂ā鍧�
+ } else if (RemoteUpdateTypeEnum.CAT1_MAIN.equals(deviceType)) {
+ //Cat.1涓绘澘
+ } else if (RemoteUpdateTypeEnum.LIGHT_POLE_HELING.equals(deviceType)) {
+ //鐏潌鍊炬枩妯″潡
+ } else if (RemoteUpdateTypeEnum.AIR_EQUIPMENT.equals(deviceType)) {
+ //澶ф皵璁惧妯″潡
+ } else {
+ throw new BusinessException("鍗囩骇纭欢璁惧绫诲瀷鎸囦护鏈夎锛岃纭锛�");
+ }
+ return true;
+ }
}
--
Gitblit v1.9.3