From 9e485b479f2ae719d5cbc397784147e5fe570787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E6=9E=97?= <320730042@qq.com> Date: Wed, 17 Jul 2024 16:07:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=9C=E7=A8=8B=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/SystemConstants.java | 5 + .../common/enums/RemoteOperateMsgEnum.java | 7 +- .../bellmann/common/result/ResultCode.java | 6 +- .../com/bellmann/common/util/FTPUtils.java | 3 + .../controller/DeviceSpeedInfoController.java | 21 + .../controller/DeviceStaticController.java | 142 ++++++- .../controller/DeviceTypeVerController.java | 7 + .../controller/OperateTask2Controller.java | 8 +- .../bellmann/controller/SpeedController.java | 39 ++ .../controller/SpeedServerController.java | 39 ++ .../com/bellmann/mapper/DeviceLogMapper.java | 2 + .../mapper/DeviceSpeedInfoMapper.java | 20 + .../bellmann/mapper/DeviceStaticMapper.java | 2 + .../bellmann/mapper/DeviceTypeVerMapper.java | 3 + .../bellmann/mapper/OperateTask2Mapper.java | 2 + .../bellmann/mapper/SpeedServerMapper.java | 24 ++ .../com/bellmann/model/bo/DownloadInfo.java | 15 + .../model/entity/DeviceSpeedInfo.java | 144 +++++++ .../bellmann/model/entity/SpeedServer.java | 75 ++++ .../model/form/DeviceMonitorForm.java | 27 ++ .../com/bellmann/model/form/PingForm.java | 41 ++ .../com/bellmann/model/vo/FileRecordVO.java | 11 +- .../model/vo/RemoteOperateResult.java | 4 + .../model/vo/SoftVersionUpgradeVO.java | 17 + .../service/DeviceSpeedInfoService.java | 14 + .../bellmann/service/DeviceStaticService.java | 23 +- .../service/DeviceTypeVerService.java | 4 +- .../bellmann/service/OperateTask2Service.java | 2 + .../service/RemoteOperateTaskService.java | 2 +- .../bellmann/service/SpeedServerService.java | 16 + .../impl/DeviceSpeedInfoServiceImpl.java | 40 ++ .../service/impl/DeviceStaticServiceImpl.java | 392 +++++++++++++++++- .../impl/DeviceTypeVerServiceImpl.java | 7 + .../service/impl/FileOptionServiceImpl.java | 1 + .../service/impl/OperateTask2ServiceImpl.java | 9 + .../impl/RemoteOperateTaskServiceImpl.java | 11 + .../service/impl/SpeedServerServiceImpl.java | 48 +++ src/main/resources/mapper/DeviceLogMapper.xml | 14 + .../mapper/DeviceSpeedInfoMapper.xml | 46 ++ .../resources/mapper/DeviceStaticMapper.xml | 11 + .../resources/mapper/DeviceTypeVerMapper.xml | 14 + .../resources/mapper/FileRecordMapper.xml | 1 + .../resources/mapper/OperateTask2Mapper.xml | 15 + .../resources/mapper/SpeedServerMapper.xml | 40 ++ 44 files changed, 1343 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/bellmann/controller/DeviceSpeedInfoController.java create mode 100644 src/main/java/com/bellmann/controller/SpeedController.java create mode 100644 src/main/java/com/bellmann/controller/SpeedServerController.java create mode 100644 src/main/java/com/bellmann/mapper/DeviceSpeedInfoMapper.java create mode 100644 src/main/java/com/bellmann/mapper/SpeedServerMapper.java create mode 100644 src/main/java/com/bellmann/model/bo/DownloadInfo.java create mode 100644 src/main/java/com/bellmann/model/entity/DeviceSpeedInfo.java create mode 100644 src/main/java/com/bellmann/model/entity/SpeedServer.java create mode 100644 src/main/java/com/bellmann/model/form/DeviceMonitorForm.java create mode 100644 src/main/java/com/bellmann/model/form/PingForm.java create mode 100644 src/main/java/com/bellmann/model/vo/SoftVersionUpgradeVO.java create mode 100644 src/main/java/com/bellmann/service/DeviceSpeedInfoService.java create mode 100644 src/main/java/com/bellmann/service/SpeedServerService.java create mode 100644 src/main/java/com/bellmann/service/impl/DeviceSpeedInfoServiceImpl.java create mode 100644 src/main/java/com/bellmann/service/impl/SpeedServerServiceImpl.java create mode 100644 src/main/resources/mapper/DeviceSpeedInfoMapper.xml create mode 100644 src/main/resources/mapper/SpeedServerMapper.xml diff --git a/src/main/java/com/bellmann/common/constant/SystemConstants.java b/src/main/java/com/bellmann/common/constant/SystemConstants.java index 9fcbbef..23f983f 100644 --- a/src/main/java/com/bellmann/common/constant/SystemConstants.java +++ b/src/main/java/com/bellmann/common/constant/SystemConstants.java @@ -38,5 +38,10 @@ public interface SystemConstants { public static final long TASK_TIME_OUT_CONST = 60 * 1000; public static final long TASK_TIME_OUT_CONST1 = 4 * 1000; + public static final long TASK_TIME_OUT_CONST3 = 6 * 1000; + public static final long TASK_TIME_OUT_CONST2 = 2 * 1000; public static final String NULL_RESULT = "操作进行中..."; + public static final String CONN_TYPE_REGEX = "connectionType = (\\w+)"; + public static final String DOWNLOAD_INFO_REGEX = "DownloadInfo = (.*)"; + public static final String SPEED_FAIL = "测速失败,请查看操作日志"; } diff --git a/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java b/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java index 2339082..36c2dd6 100644 --- a/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java +++ b/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java @@ -27,13 +27,18 @@ public enum RemoteOperateMsgEnum implements IBaseEnum { FACTORY_RESET("FactoryReset", "恢复设备出厂设置"), UPLOAD_LOG("UploadLog", "获取设备日志文件"), + GetConnType("GetConnType","GetConnType"), BASIC_PARAMETER("basicparameter","获取设备链路信息"), FTTR_CONFIG("FTTRCONFIG","刷新设备主网关信息"), - FTTR_STATS("FTTRSTATS","刷新子网关信息"); + FTTR_STATS("FTTRSTATS","刷新子网关信息"), + SET_TR143_PARAMETER("SetTR143Parameter","SetTR143Parameter"), + DOWNLOAD_DIAGNOSTICS_QUERY("DownloadDiagnosticsQuery","DownloadDiagnosticsQuery"), + + X_REGISTER("x_Register","开启终端注册页面"), ; @Getter private String value; diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 864f907..bd24e64 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -118,7 +118,11 @@ public enum ResultCode implements IResultCode, Serializable { OAM_INTERFACE_ERROR("F0026", "调用OAM接口报错"), ACS_INTERFACE_ERROR("F0028", "调用ACS接口报错"), QUERY_DEV_ONLINE_ERROR("F0029","查询设备在线状态出错" ), - LINK_INFO_ERROR("F0030","获取设备链路失败"); + LINK_INFO_ERROR("F0030","获取设备链路失败"), + DOMAIN_IS_NULL("F0031","系统管理域为空"), + LOGIC_IS_NULL("F0032","逻辑ID为空"), + TASK_NOT_FOUND("F0033","任务不存在"), + TASK_NOT_EXE("F0034", "任务未执行"); @Override public String getCode() { diff --git a/src/main/java/com/bellmann/common/util/FTPUtils.java b/src/main/java/com/bellmann/common/util/FTPUtils.java index a6b4b7c..0311320 100644 --- a/src/main/java/com/bellmann/common/util/FTPUtils.java +++ b/src/main/java/com/bellmann/common/util/FTPUtils.java @@ -142,6 +142,7 @@ public class FTPUtils { */ public static boolean upload (FileServer oaFtp, String filename, String dirPath, InputStream in) throws IOException { login(oaFtp); + if (!ftpClient.isConnected()) { return false; } @@ -210,8 +211,10 @@ public class FTPUtils { if (ftpClient != null) { try { String path = changeEncoding(dirPath); + log.info("path:{}",path); changeAndMakeWorkingDir(path); String[] fileNames = ftpClient.listNames(); + log.info("fileName:{}",Arrays.toString(fileNames)); if (fileNames == null || fileNames.length == 0) { throw new BusinessException(ResultCode.FILE_NOT_EXIST); } diff --git a/src/main/java/com/bellmann/controller/DeviceSpeedInfoController.java b/src/main/java/com/bellmann/controller/DeviceSpeedInfoController.java new file mode 100644 index 0000000..8709d60 --- /dev/null +++ b/src/main/java/com/bellmann/controller/DeviceSpeedInfoController.java @@ -0,0 +1,21 @@ +package com.bellmann.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 终端测速信息 前端控制器 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@RestController +@RequestMapping("/deviceSpeedInfo") +public class DeviceSpeedInfoController { + +} + diff --git a/src/main/java/com/bellmann/controller/DeviceStaticController.java b/src/main/java/com/bellmann/controller/DeviceStaticController.java index ac13e50..f092f2e 100644 --- a/src/main/java/com/bellmann/controller/DeviceStaticController.java +++ b/src/main/java/com/bellmann/controller/DeviceStaticController.java @@ -2,15 +2,13 @@ package com.bellmann.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.constant.SystemConstants; +import com.bellmann.common.enums.OperateTaskStateEnum; import com.bellmann.common.enums.RemoteOperateMsgEnum; import com.bellmann.common.exception.BusinessException; import com.bellmann.common.result.PageResult; import com.bellmann.common.result.Result; import com.bellmann.common.result.ResultCode; -import com.bellmann.model.form.EquipmentAddForm; -import com.bellmann.model.form.EquipmentDetailForm; -import com.bellmann.model.form.PrivateProfileForm; -import com.bellmann.model.form.UnBindingForm; +import com.bellmann.model.form.*; import com.bellmann.model.query.DevOuiSnoQuery; import com.bellmann.model.query.SelectQuery; import com.bellmann.model.vo.*; @@ -25,6 +23,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -150,7 +149,7 @@ public class DeviceStaticController { @PreventDuplicateSubmit public Result> remoteDeviceLinkInfo(@PathVariable Long devId) { Long count = remoteOperateTaskService.sendTaskByDevId(devId, SecurityUtils.getUsername(), RemoteOperateMsgEnum.BASIC_PARAMETER.getValue()); - log.info("{}任务执行中: {}", RemoteOperateMsgEnum.TOUCH_DEVICE.getLabel(), count); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.BASIC_PARAMETER.getLabel(), count); try { TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); List result = operateResultArgsService.getDeviceLinkInfo(devId); @@ -178,7 +177,7 @@ public class DeviceStaticController { @PreventDuplicateSubmit public Result> remoteFTTRPrimaryGateway(@PathVariable Long devId) { Long count = remoteOperateTaskService.sendTaskByDevId(devId, SecurityUtils.getUsername(), RemoteOperateMsgEnum.FTTR_CONFIG.getValue()); - log.info("{}任务执行中: {}", RemoteOperateMsgEnum.TOUCH_DEVICE.getLabel(), count); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.FTTR_CONFIG.getLabel(), count); try { TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); List result = operateResultArgsService.getFTTRPrimaryGateway(devId); @@ -192,7 +191,33 @@ public class DeviceStaticController { @PreventDuplicateSubmit public Result remoteFTTRSubGateway(@PathVariable Long devId) { Long count = remoteOperateTaskService.sendTaskByDevId(devId, SecurityUtils.getUsername(), RemoteOperateMsgEnum.FTTR_STATS.getValue()); - log.info("{}任务执行中: {}", RemoteOperateMsgEnum.TOUCH_DEVICE.getLabel(), count); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.FTTR_STATS.getLabel(), count); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + return Result.success(); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @PostMapping("/remote/ip-ping") + @Operation(summary = "远程操作-设备Ping测试") + @PreventDuplicateSubmit + public Result remoteIpPing(@RequestBody @Valid PingForm form) { + Long taskId = deviceStaticService.remoteIpPing(form); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.IP_PING.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + return Result.success(); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @GetMapping("/remote/upload-log/{devId}") + @Operation(summary = "远程操作-获取设备日志文件") + @PreventDuplicateSubmit + public Result remoteUploadLog(@PathVariable Long devId) { + Long taskId = remoteOperateTaskService.sendTaskByDevId(devId,SecurityUtils.getUsername(),RemoteOperateMsgEnum.UPLOAD_LOG.getValue()); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.UPLOAD_LOG.getLabel(), taskId); try { TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); return Result.success(); @@ -201,4 +226,107 @@ public class DeviceStaticController { } } + @GetMapping("/remote/upload-config/{devId}") + @Operation(summary = "远程操作-获取配置文件") + @PreventDuplicateSubmit + public Result remoteUploadConfig(@PathVariable Long devId) { + Long taskId = remoteOperateTaskService.sendTaskByDevId(devId,SecurityUtils.getUsername(),RemoteOperateMsgEnum.UPLOAD_CONFIG.getValue()); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.UPLOAD_CONFIG.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + return Result.success(); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @GetMapping("/remote/factory-reset/{devId}") + @Operation(summary = "远程操作-恢复设备出厂设置") + @PreventDuplicateSubmit + public Result remoteFactoryReset(@PathVariable Long devId) { + Long taskId = remoteOperateTaskService.sendTaskByDevId(devId,SecurityUtils.getUsername(),RemoteOperateMsgEnum.FACTORY_RESET.getValue()); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.FACTORY_RESET.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + return Result.success(); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @GetMapping("/remote/reboot/{devId}") + @Operation(summary = "远程操作-远程重启") + @PreventDuplicateSubmit + public Result remoteReboot(@PathVariable Long devId) { + Long taskId = remoteOperateTaskService.sendTaskByDevId(devId,SecurityUtils.getUsername(),RemoteOperateMsgEnum.REBOOT.getValue()); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.REBOOT.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + return Result.success(); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + + @PostMapping("/remote/device-monitor") + @Operation(summary = "远程操作-设备监控") + @PreventDuplicateSubmit + public Result remoteDeviceMonitor(@RequestBody @Valid DeviceMonitorForm form) { + Long taskId = deviceStaticService.remoteDeviceMonitor(form); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.IP_PING.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + return Result.success(); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @GetMapping("/remote/check-conn-type/{devId}") + @Operation(summary = "远程操作-测速-上网方式") + @PreventDuplicateSubmit + public Result remoteCheckConnType(@PathVariable Long devId) { + Long taskId = deviceStaticService.remoteCheckConnType(devId); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.REBOOT.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST2); + String connType = deviceStaticService.remoteConnType(taskId, devId); + return Result.success(connType); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @GetMapping("/remote/tr143-speed/{devId}") + @Operation(summary = "远程操作-测速") + @PreventDuplicateSubmit + public Result TR143Speed(@PathVariable Long devId,@RequestParam String downloadUrl) { + Long taskId = deviceStaticService.TR143Speed(devId,downloadUrl); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.SET_TR143_PARAMETER.getLabel(), taskId); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST3); + RemoteOperateResult result = deviceStaticService.checkTR143Speed(taskId, devId); + if (OperateTaskStateEnum.THE_EXECUTION_WAS_SUCCESSFUL.getValue().equals(result.getResultState())){ + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST2); + Long taskId1 = remoteOperateTaskService.sendTaskByDevId(devId, SecurityUtils.getUsername(), RemoteOperateMsgEnum.DOWNLOAD_DIAGNOSTICS_QUERY.getValue()); + RemoteOperateResult result1 = deviceStaticService.checkTr143SpeedResult(devId,taskId1); + return Result.success(result1); + } + return Result.success(result); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.LINK_INFO_ERROR); + } + } + @GetMapping("/remote/soft-version-upgrade/{devId}/{fileId}") + @Operation(summary = "远程操作-软件版本升级") + @PreventDuplicateSubmit + public Result remoteSoftVerUpgrade(@PathVariable Long devId,@PathVariable Long fileId){ + Long taskId = remoteOperateTaskService.sendTaskByDevIdByFileId(devId, SecurityUtils.getUsername(), fileId, RemoteOperateMsgEnum.DOWNLOAD_SOFT_VER_FILE.getValue()); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.DOWNLOAD_SOFT_VER_FILE.getLabel(), taskId); + return Result.success(); + } + @GetMapping("/remote/register/{devId}") + @Operation(summary = "远程操作-开启终端注册页面") + @PreventDuplicateSubmit + public Result remoteOpenRegister(@PathVariable Long devId){ + Long taskId = deviceStaticService.remoteOpenRegister(devId); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.X_REGISTER.getLabel(), taskId); + return Result.success(); + } } diff --git a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java index a328e1e..fa987a2 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java @@ -11,6 +11,7 @@ import com.bellmann.model.query.DeviceTypeToVerQuery; import com.bellmann.model.vo.DeviceServiceVO; import com.bellmann.model.vo.DeviceTypeToVerVO; import com.bellmann.model.vo.FileRecordVO; +import com.bellmann.model.vo.SoftVersionUpgradeVO; import com.bellmann.service.DeviceTypeVerService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -143,4 +144,10 @@ public class DeviceTypeVerController { return deviceTypeVerService.tr069BindingDevType(form); } + @GetMapping("/upgrade-soft-ver/{devId}") + @Operation(summary = "升级软件版本列表") + public Result> upgradeSoftVerTable(@PathVariable Long devId){ + List list = deviceTypeVerService.upgradeSoftVerTable(devId); + return Result.success(list); + } } diff --git a/src/main/java/com/bellmann/controller/OperateTask2Controller.java b/src/main/java/com/bellmann/controller/OperateTask2Controller.java index 14bb1f5..0247830 100644 --- a/src/main/java/com/bellmann/controller/OperateTask2Controller.java +++ b/src/main/java/com/bellmann/controller/OperateTask2Controller.java @@ -27,10 +27,16 @@ public class OperateTask2Controller { private final OperateTask2Service operateTask2Service; @PostMapping("/page/{devId}") - @Operation(summary = "设备任务列表-page") + @Operation(summary = "远程操作-设备任务列表") public PageResult page(@PathVariable Long devId, @RequestBody BasePageQuery query){ return operateTask2Service.page(devId,query); } + @PostMapping("/task-page") + @Operation(summary = "设备任务列表") + public PageResult taskPage(@RequestBody BasePageQuery query){ + return operateTask2Service.taskPage(query); + } + } diff --git a/src/main/java/com/bellmann/controller/SpeedController.java b/src/main/java/com/bellmann/controller/SpeedController.java new file mode 100644 index 0000000..9a4310e --- /dev/null +++ b/src/main/java/com/bellmann/controller/SpeedController.java @@ -0,0 +1,39 @@ +package com.bellmann.controller; + +import cn.hutool.core.map.MapUtil; +import com.bellmann.common.result.Result; +import com.bellmann.service.DeviceSpeedInfoService; +import com.bellmann.service.SpeedServerService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Tag(name = "28.测速服务器信息") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/speed/v1") +public class SpeedController { + + private final SpeedServerService speedServerService; + + private final DeviceSpeedInfoService deviceSpeedInfoService; + @GetMapping("/speed-info/{devId}") + @Operation(summary = "测速服务器URL列表") + public Result> getSpeedInfo(@PathVariable Long devId){ + List downloadUrls = speedServerService.downloadUrls(devId); + String speedMaxRate = deviceSpeedInfoService.getSpeedMaxRate(devId); + Map map = MapUtil.builder(new HashMap()) + .put("downloadUrls", downloadUrls) + .put("speedMaxRate", speedMaxRate) + .build(); + return Result.success(map); + } +} diff --git a/src/main/java/com/bellmann/controller/SpeedServerController.java b/src/main/java/com/bellmann/controller/SpeedServerController.java new file mode 100644 index 0000000..b6fcfba --- /dev/null +++ b/src/main/java/com/bellmann/controller/SpeedServerController.java @@ -0,0 +1,39 @@ +package com.bellmann.controller; + + +import com.bellmann.common.result.Result; +import com.bellmann.service.SpeedServerService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + *

+ * 服务器信息 前端控制器 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@Tag(name = "27.测速服务器信息") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/speed-server/v1") +public class SpeedServerController { + + private final SpeedServerService speedServerService; + + @GetMapping("/download-url/{devId}") + @Operation(summary = "测速服务器URL列表") + public Result> downloadUrls(@PathVariable Long devId){ + List list = speedServerService.downloadUrls(devId); + return Result.success(list); + } +} + diff --git a/src/main/java/com/bellmann/mapper/DeviceLogMapper.java b/src/main/java/com/bellmann/mapper/DeviceLogMapper.java index 539c454..e19cfdf 100644 --- a/src/main/java/com/bellmann/mapper/DeviceLogMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceLogMapper.java @@ -3,6 +3,7 @@ package com.bellmann.mapper; import com.bellmann.model.entity.DeviceLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +16,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface DeviceLogMapper extends BaseMapper { + String getTaskResultByTaskId(@Param("taskId") Long taskId,@Param("operateName") String operateName); } diff --git a/src/main/java/com/bellmann/mapper/DeviceSpeedInfoMapper.java b/src/main/java/com/bellmann/mapper/DeviceSpeedInfoMapper.java new file mode 100644 index 0000000..7c5cbf1 --- /dev/null +++ b/src/main/java/com/bellmann/mapper/DeviceSpeedInfoMapper.java @@ -0,0 +1,20 @@ +package com.bellmann.mapper; + +import com.bellmann.model.entity.DeviceSpeedInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 终端测速信息 Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@Mapper +public interface DeviceSpeedInfoMapper extends BaseMapper { + + String getSpeedMaxRate(@Param("devId") Long devId,@Param("logicId") String logicId); +} diff --git a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java index a461c2b..400b36f 100644 --- a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java @@ -33,4 +33,6 @@ public interface DeviceStaticMapper extends BaseMapper { DevOnlineStatus devOnlineStatusByPppoe(@Param("pppoe") String pppoe); DeviceDetail findRDeviceDetailStructByDevId(@Param("devId") Long devId); + + String getLogicIdByDevId(@Param("devId") Long devId); } diff --git a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java index 40614e1..fe786e2 100644 --- a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java @@ -7,6 +7,7 @@ import com.bellmann.model.bo.DeviceTypeToVerBO; import com.bellmann.model.entity.DeviceType; import com.bellmann.model.entity.DeviceTypeVer; import com.bellmann.model.form.DeviceTypeVerForm; +import com.bellmann.model.vo.SoftVersionUpgradeVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -30,4 +31,6 @@ public interface DeviceTypeVerMapper extends BaseMapper { DeviceTypeVerForm findDevTypeVerEditForm(@Param("typeAndVerId") Long typeAndVerId); Long getTypeAndVerId(); + + List upgradeSoftVerTable(@Param("devId") Long devId); } diff --git a/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java b/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java index 0c6b597..48a09c0 100644 --- a/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java +++ b/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java @@ -23,4 +23,6 @@ public interface OperateTask2Mapper extends BaseMapper { OperateTask2 findDOperateTask2StructByDevIdAndOperateName(@Param("devId") Long devId, @Param("operateName")String operateName); OperateTask2 getLatestTaskByOperateName(@Param("devId") Long devId, @Param("operateName") String operateName); + + Page taskPage(Page page); } diff --git a/src/main/java/com/bellmann/mapper/SpeedServerMapper.java b/src/main/java/com/bellmann/mapper/SpeedServerMapper.java new file mode 100644 index 0000000..ab3400d --- /dev/null +++ b/src/main/java/com/bellmann/mapper/SpeedServerMapper.java @@ -0,0 +1,24 @@ +package com.bellmann.mapper; + +import com.bellmann.model.entity.SpeedServer; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务器信息 Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@Mapper +public interface SpeedServerMapper extends BaseMapper { + + List findDownloadUrlByDomainId(@Param("areaId") String areaId); + + List findDownloadUrlByRootDomainId(@Param("regionAreaId") Long regionAreaId); +} diff --git a/src/main/java/com/bellmann/model/bo/DownloadInfo.java b/src/main/java/com/bellmann/model/bo/DownloadInfo.java new file mode 100644 index 0000000..c2ec5e3 --- /dev/null +++ b/src/main/java/com/bellmann/model/bo/DownloadInfo.java @@ -0,0 +1,15 @@ +package com.bellmann.model.bo; + +import lombok.Data; + +@Data +public class DownloadInfo { + private String state; + private String romTime; + private Long bomTime; + private Long eomTime; + private Long testBytesReceived; // 使用Long以便能够处理null值 + private Long totalBytesReceived; + private Long tcpOpenRequestTime; // 使用Long以便能够处理null值 + private Long tcpOpenResponseTime; +} diff --git a/src/main/java/com/bellmann/model/entity/DeviceSpeedInfo.java b/src/main/java/com/bellmann/model/entity/DeviceSpeedInfo.java new file mode 100644 index 0000000..ac3ead4 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/DeviceSpeedInfo.java @@ -0,0 +1,144 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 终端测速信息 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("itms_device_speed_info") +public class DeviceSpeedInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 测速ID + */ + @TableId(value = "speed_id", type = IdType.AUTO) + private Long speedId; + + /** + * 逻辑ID + */ + private String loid; + + /** + * 设备ID + */ + private Long devId; + + /** + * 设备序列号 + */ + private String devSno; + + /** + * 测速方式 0:TTCP 1:TR143 + */ + private String speedMode; + + /** + * 测速时间 + */ + private Date speedTime; + + /** + * 测速来源 0:ITMS后台 1:ITMS前台 2:综合测试 3:上网助手 + */ + private String speedSource; + + /** + * 测速操作人员 + */ + private String speedOperator; + + /** + * 速率 + */ + private Double rate; + + /** + * 单位 + */ + private String unit; + + /** + * 测速开始时间 + */ + private Date speedStarttime; + + /** + * 测速结束时间 + */ + private Date speedEndtime; + + /** + * 执行时间(备用) + */ + private Date exctime; + + /** + * 执行时间1(备用) + */ + private Date exctime1; + + /** + * 执行时间2(备用) + */ + private Date exctime2; + + /** + * 执行时间3(备用) + */ + private Date exctime3; + + /** + * 执行时间4(备用) + */ + private Date exctime4; + + /** + * 测速URL + */ + private String url; + + /** + * 上网账号 + */ + private String devPppoe; + + /** + * 调用系统 + */ + private String sysid; + + /** + * 密钥 + */ + private String syspass; + + /** + * 带宽 + */ + private String bandwidth; + + /** + * 区域 + */ + private String areaid; + + +} diff --git a/src/main/java/com/bellmann/model/entity/SpeedServer.java b/src/main/java/com/bellmann/model/entity/SpeedServer.java new file mode 100644 index 0000000..298df9e --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/SpeedServer.java @@ -0,0 +1,75 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 服务器信息 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("itms_speed_server") +public class SpeedServer implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务器ID + */ + @TableId(value = "serv_id", type = IdType.AUTO) + private Long servId; + + /** + * 服务器名称 + */ + private String servName; + + /** + * 支持传输方式(0 HTTP 1 FTP 2 SFTP 3 TELNET 4 SSH ) + */ + private String supportMode; + + /** + * 服务器地址 + */ + private String ip; + + /** + * 访问端口 + */ + private String port; + + /** + * 登录用户名 + */ + private String userName; + + /** + * 登录密码 + */ + private String passwd; + + /** + * 管理域ID + */ + private Long groupid; + + /** + * 备注 + */ + private String remark; + + private String downloadurl; + + +} diff --git a/src/main/java/com/bellmann/model/form/DeviceMonitorForm.java b/src/main/java/com/bellmann/model/form/DeviceMonitorForm.java new file mode 100644 index 0000000..0a2bb4d --- /dev/null +++ b/src/main/java/com/bellmann/model/form/DeviceMonitorForm.java @@ -0,0 +1,27 @@ +package com.bellmann.model.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +@Schema(description = "设备监控表单") +public class DeviceMonitorForm { + + @NotNull(message = "设备ID不能为空") + private Long devId; + + /** + *监控时长 + */ + @NotBlank(message = "监控时长不能为空") + private String monitorPeriod; + + /** + *采样周期 + */ + @NotBlank(message = "monitorInterval不能为空") + private String monitorInterval; +} diff --git a/src/main/java/com/bellmann/model/form/PingForm.java b/src/main/java/com/bellmann/model/form/PingForm.java new file mode 100644 index 0000000..144bc32 --- /dev/null +++ b/src/main/java/com/bellmann/model/form/PingForm.java @@ -0,0 +1,41 @@ +package com.bellmann.model.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +@Schema(description = "ping 表单") +public class PingForm { + /** + * 设备ID + */ + @NotNull(message = "设备ID不能为空") + private Long deviceId; + + /** + * HOST参数 + */ + @NotBlank(message = "HOST参数不能为空") + private String host; + + /** + * pingNumber参数 + */ + @NotBlank(message = "pingNumber参数不能为空") + private String pingNumber; + + /** + * packageSize参数 + */ + @NotBlank(message = "packageSize参数不能为空") + private String packSize; + + /** + * pingInterface参数 + */ + @NotBlank(message = "pingInterface参数不能为空") + private String pingInterface; +} diff --git a/src/main/java/com/bellmann/model/vo/FileRecordVO.java b/src/main/java/com/bellmann/model/vo/FileRecordVO.java index 73c1d40..4d9a811 100644 --- a/src/main/java/com/bellmann/model/vo/FileRecordVO.java +++ b/src/main/java/com/bellmann/model/vo/FileRecordVO.java @@ -1,14 +1,10 @@ package com.bellmann.model.vo; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.io.Serializable; -import java.util.Date; +import java.time.LocalDateTime; /** *

@@ -51,7 +47,8 @@ public class FileRecordVO { * 文件上传时间 */ @Schema(description = "文件上传时间") - private Date fileCreateTime; + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss" ,timezone = "GMT+8") + private LocalDateTime fileCreateTime; /** * 文件描述 diff --git a/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java b/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java index 53b10ab..04a32e2 100644 --- a/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java +++ b/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java @@ -1,12 +1,16 @@ package com.bellmann.model.vo; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data @Schema(description = "远程操作结果") @Builder +@AllArgsConstructor +@NoArgsConstructor public class RemoteOperateResult { private String resultState; diff --git a/src/main/java/com/bellmann/model/vo/SoftVersionUpgradeVO.java b/src/main/java/com/bellmann/model/vo/SoftVersionUpgradeVO.java new file mode 100644 index 0000000..51e35dc --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/SoftVersionUpgradeVO.java @@ -0,0 +1,17 @@ +package com.bellmann.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "软件版本升级列表视图") +public class SoftVersionUpgradeVO { + + private Long typeAndVerId; + + private Long fileId; + + private String softVer; + + private String devTypeVerDesc; +} diff --git a/src/main/java/com/bellmann/service/DeviceSpeedInfoService.java b/src/main/java/com/bellmann/service/DeviceSpeedInfoService.java new file mode 100644 index 0000000..dfa2fec --- /dev/null +++ b/src/main/java/com/bellmann/service/DeviceSpeedInfoService.java @@ -0,0 +1,14 @@ +package com.bellmann.service; + +/** + *

+ * 终端测速信息 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +public interface DeviceSpeedInfoService { + + String getSpeedMaxRate(Long devId); +} diff --git a/src/main/java/com/bellmann/service/DeviceStaticService.java b/src/main/java/com/bellmann/service/DeviceStaticService.java index 2167ced..3a3c2a5 100644 --- a/src/main/java/com/bellmann/service/DeviceStaticService.java +++ b/src/main/java/com/bellmann/service/DeviceStaticService.java @@ -3,15 +3,13 @@ package com.bellmann.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.result.PageResult; import com.bellmann.common.result.Result; -import com.bellmann.model.form.EquipmentAddForm; -import com.bellmann.model.form.EquipmentDetailForm; -import com.bellmann.model.form.PrivateProfileForm; -import com.bellmann.model.form.UnBindingForm; +import com.bellmann.model.form.*; import com.bellmann.model.query.DevOuiSnoQuery; import com.bellmann.model.query.SelectQuery; import com.bellmann.model.vo.EquipmentVO; import com.bellmann.model.vo.RemoteDevInfoVO; import com.bellmann.model.vo.RemoteEquipmentVO; +import com.bellmann.model.vo.RemoteOperateResult; import java.util.List; import java.util.Map; @@ -44,4 +42,21 @@ public interface DeviceStaticService { Result deleteProfile(Long devId, Long fileId); int compareParameter(Long devId, String serviceName, Long serviceId, String serviceVerName); + + Long remoteIpPing(PingForm form); + + Long remoteDeviceMonitor(DeviceMonitorForm form); + + Long remoteCheckConnType(Long devId); + + String remoteConnType(Long taskId,Long devId); + + + Long TR143Speed(Long devId, String downloadUrl); + + RemoteOperateResult checkTR143Speed(Long taskId, Long devId); + + RemoteOperateResult checkTr143SpeedResult(Long devId, Long taskId); + + Long remoteOpenRegister(Long devId); } diff --git a/src/main/java/com/bellmann/service/DeviceTypeVerService.java b/src/main/java/com/bellmann/service/DeviceTypeVerService.java index 6a3c73d..99eb84c 100644 --- a/src/main/java/com/bellmann/service/DeviceTypeVerService.java +++ b/src/main/java/com/bellmann/service/DeviceTypeVerService.java @@ -10,9 +10,9 @@ import com.bellmann.model.query.DeviceTypeToVerQuery; import com.bellmann.model.vo.DeviceServiceVO; import com.bellmann.model.vo.DeviceTypeToVerVO; import com.bellmann.model.vo.FileRecordVO; +import com.bellmann.model.vo.SoftVersionUpgradeVO; import java.util.List; -import java.util.concurrent.Future; public interface DeviceTypeVerService { Page deviceTypeToVerPage(DeviceTypeToVerQuery query); @@ -48,4 +48,6 @@ public interface DeviceTypeVerService { int addTypeVer(DeviceTypeVerForm form, Long devTypeId); Result tr069BindingDevType(BindingTr069Form form); + + List upgradeSoftVerTable(Long devId); } diff --git a/src/main/java/com/bellmann/service/OperateTask2Service.java b/src/main/java/com/bellmann/service/OperateTask2Service.java index be5fc7d..7d7ae3f 100644 --- a/src/main/java/com/bellmann/service/OperateTask2Service.java +++ b/src/main/java/com/bellmann/service/OperateTask2Service.java @@ -15,4 +15,6 @@ import com.bellmann.model.vo.OperateTask2TableVO; public interface OperateTask2Service { PageResult page(Long devId, BasePageQuery query); + + PageResult taskPage(BasePageQuery query); } diff --git a/src/main/java/com/bellmann/service/RemoteOperateTaskService.java b/src/main/java/com/bellmann/service/RemoteOperateTaskService.java index f81c91f..c135222 100644 --- a/src/main/java/com/bellmann/service/RemoteOperateTaskService.java +++ b/src/main/java/com/bellmann/service/RemoteOperateTaskService.java @@ -6,7 +6,7 @@ import com.bellmann.model.vo.RemoteOperateResult; public interface RemoteOperateTaskService { public Long sendTaskByDevId(Long devId,String createUser,String command); - + public Long sendTaskByDevIdByFileId(Long devId,String createUser,Long fileId,String command); public long insertOperationTask(OperationTask operationTask); RemoteOperateResult findDevInfoArgsByDevIdIsTimeOut(Long devId, String command); diff --git a/src/main/java/com/bellmann/service/SpeedServerService.java b/src/main/java/com/bellmann/service/SpeedServerService.java new file mode 100644 index 0000000..470d141 --- /dev/null +++ b/src/main/java/com/bellmann/service/SpeedServerService.java @@ -0,0 +1,16 @@ +package com.bellmann.service; + +import java.util.List; + +/** + *

+ * 服务器信息 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +public interface SpeedServerService { + + List downloadUrls(Long devId); +} diff --git a/src/main/java/com/bellmann/service/impl/DeviceSpeedInfoServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceSpeedInfoServiceImpl.java new file mode 100644 index 0000000..957fac8 --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/DeviceSpeedInfoServiceImpl.java @@ -0,0 +1,40 @@ +package com.bellmann.service.impl; + +import com.bellmann.common.exception.BusinessException; +import com.bellmann.common.result.ResultCode; +import com.bellmann.mapper.DeviceSpeedInfoMapper; +import com.bellmann.mapper.DeviceStaticMapper; +import com.bellmann.service.DeviceSpeedInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + *

+ * 终端测速信息 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpeedInfoServiceImpl implements DeviceSpeedInfoService { + + private final DeviceSpeedInfoMapper deviceSpeedInfoMapper; + + private final DeviceStaticMapper deviceStaticMapper; + @Override + public String getSpeedMaxRate(Long devId) { + String logicId = deviceStaticMapper.getLogicIdByDevId(devId); + if (logicId.isEmpty()){ + throw new BusinessException(ResultCode.LOGIC_IS_NULL); + } + String speedMaxRate = deviceSpeedInfoMapper.getSpeedMaxRate(devId,logicId); + if (speedMaxRate!=null){ + speedMaxRate = speedMaxRate+" Mbit/sec"; + }else { + speedMaxRate = "暂无测速历史记录"; + } + return speedMaxRate; + } +} diff --git a/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java index 1bab0e1..97115a6 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java @@ -17,13 +17,12 @@ import com.bellmann.common.result.ResultCode; import com.bellmann.converter.DeviceStaticConverter; import com.bellmann.manger.*; import com.bellmann.mapper.*; +import com.bellmann.model.bo.DownloadInfo; import com.bellmann.model.bo.EquipmentBO; import com.bellmann.model.bo.RemoteEquipmentBO; +import com.bellmann.model.dto.OperationTask; import com.bellmann.model.entity.*; -import com.bellmann.model.form.EquipmentAddForm; -import com.bellmann.model.form.EquipmentDetailForm; -import com.bellmann.model.form.PrivateProfileForm; -import com.bellmann.model.form.UnBindingForm; +import com.bellmann.model.form.*; import com.bellmann.model.query.DevOuiSnoQuery; import com.bellmann.model.query.SelectQuery; import com.bellmann.model.vo.*; @@ -48,11 +47,13 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Service @@ -93,6 +94,10 @@ public class DeviceStaticServiceImpl implements DeviceStaticService { private final DeviceServiceArgsMapper deviceServiceArgsMapper; + private final OperateResult2Mapper operateResult2Mapper; + + private final DeviceLogMapper deviceLogMapper; + @Override public Page resourcePage(SelectQuery query) { @@ -500,4 +505,375 @@ public class DeviceStaticServiceImpl implements DeviceStaticService { } return result; } + + @Override + public Long remoteIpPing(PingForm ping) { + long taskId = 0; + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operTaskStruct = new DOperTask2Struct(); + operTaskStruct.devId = ping.getDeviceId(); + operTaskStruct.operName = RemoteOperateMsgEnum.IP_PING.getValue(); + operTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operTaskStruct.operTaskDesc = RemoteOperateMsgEnum.IP_PING.getLabel(); + operTaskStruct.operTaskId = Utils.LONG_NULL; + operTaskStruct.userName = SecurityUtils.getUsername(); + detailStruct.operTask = operTaskStruct; + + DOperTaskArgsStruct[] argsStruct = new DOperTaskArgsStruct[4]; + argsStruct[0] = new DOperTaskArgsStruct(); + argsStruct[0].argsName = "host"; + argsStruct[0].argsValue = ping.getHost() == null ? "8.8.8.8" : ping.getHost(); + argsStruct[0].operTaskId = Utils.LONG_NULL; + argsStruct[1] = new DOperTaskArgsStruct(); + argsStruct[1].argsName = "pingNumber"; + argsStruct[1].argsValue = ping.getPingNumber() == null ? "3" : ping.getPingNumber(); + argsStruct[1].operTaskId = Utils.LONG_NULL; + argsStruct[2] = new DOperTaskArgsStruct(); + argsStruct[2].argsName = "packSize"; + argsStruct[2].argsValue = ping.getPackSize() == null ? "32" : ping.getPackSize(); + argsStruct[2].operTaskId = Utils.LONG_NULL; + argsStruct[3] = new DOperTaskArgsStruct(); + argsStruct[3].argsName = "pingInterface"; + argsStruct[3].argsValue = ping.getPingInterface() == null ? "INTERNET" : ping.getPingInterface(); + argsStruct[3].operTaskId = Utils.LONG_NULL; + detailStruct.operTaskArgsList = argsStruct; + + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder( + detailStruct); + int result = OAMManager.sendDeviceOper2Task(detailStructHolder); + if (result!=0){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + taskId = detailStructHolder.value.operTask.operTaskId; + return taskId; + } + + @Override + public Long remoteDeviceMonitor(DeviceMonitorForm form) { + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operTaskStruct = new DOperTask2Struct(); + operTaskStruct.devId = form.getDevId(); + operTaskStruct.operName = RemoteOperateMsgEnum.DEVICE_MONITOR.getValue(); + operTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operTaskStruct.operTaskDesc = RemoteOperateMsgEnum.DEVICE_MONITOR.getLabel(); + operTaskStruct.operTaskId = Utils.LONG_NULL; + operTaskStruct.userName = SecurityUtils.getUsername(); + detailStruct.operTask = operTaskStruct; + + DOperTaskArgsStruct[] argsStruct = new DOperTaskArgsStruct[2]; + argsStruct[0] = new DOperTaskArgsStruct(); + argsStruct[0].argsName = "MONITOR_PERIOD"; + argsStruct[0].argsValue = String.valueOf(Long.parseLong(form + .getMonitorPeriod()) * 1000); + argsStruct[0].operTaskId = Utils.LONG_NULL; + argsStruct[1] = new DOperTaskArgsStruct(); + argsStruct[1].argsName = "MONITOR_INTERVAL"; + argsStruct[1].argsValue = String.valueOf(Long.parseLong(form + .getMonitorInterval()) * 1000); + argsStruct[1].operTaskId = Utils.LONG_NULL; + detailStruct.operTaskArgsList = argsStruct; + + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder( + detailStruct); + int result = OAMManager.sendDeviceOper2Task(detailStructHolder); + if (result!=0){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + return detailStructHolder.value.operTask.operTaskId; + } + + @Override + public Long remoteCheckConnType(Long devId) { + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operTaskStruct = new DOperTask2Struct(); + operTaskStruct.devId = devId; + operTaskStruct.operName = RemoteOperateMsgEnum.GetConnType.getValue(); + operTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operTaskStruct.operTaskDesc = RemoteOperateMsgEnum.GetConnType.getLabel(); + operTaskStruct.operTaskId = -999; + operTaskStruct.userName = "system"; + detailStruct.operTask = operTaskStruct; + + DOperTaskArgsStruct[] argsStruct = new DOperTaskArgsStruct[1]; + argsStruct[0] = new DOperTaskArgsStruct(); + argsStruct[0].argsName = ""; + argsStruct[0].argsValue = ""; + argsStruct[0].operTaskId = operTaskStruct.operTaskId; + detailStruct.operTaskArgsList = argsStruct; + + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder(detailStruct); + int result = OAMManager.sendDeviceOper2Task(detailStructHolder); + if (result!=0){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + return detailStructHolder.value.operTask.operTaskId; + } + + @Override + public String remoteConnType(Long taskId,Long devId) { + boolean found = true; + int attempt = 0; + String connType = "v不在线"; + while (attempt < 5 && found) { + OperateResult2 operateResult2 = operateResult2Mapper.selectOne( + new QueryWrapper() + .eq("oper_task_id", taskId) + ); + if (operateResult2 == null) { + throw new BusinessException(ResultCode.TASK_NOT_FOUND); + } + String state = operateResult2.getResultState(); + if (OperateTaskStateEnum.NOT_EXECUTED.getValue().equals(state)) { + throw new BusinessException(ResultCode.TASK_NOT_EXE); + } + if (!OperateTaskStateEnum.ONGOING.getValue().equals(state)) { + if (OperateTaskStateEnum.THE_EXECUTION_WAS_SUCCESSFUL.getValue().equals(state)){ + String desc = deviceLogMapper.getTaskResultByTaskId(taskId,RemoteOperateMsgEnum.GetConnType.getValue()); + String regex = SystemConstants.CONN_TYPE_REGEX; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(desc); + String connectionType = ""; + if (matcher.find()){ + connectionType = matcher.group(1).trim(); + if ("IP_Routed".equals(connectionType)){ + connType = SystemConstants.CONN_TYPE_IP_ROUTED; + }else if ("PPPoE_Bridged".equals(connectionType)){ + connType = SystemConstants.CONN_TYPE_PPPOE_BRIDGE; + } + }else { + connType = "v不在线"; + } + + }else { + connType = "v不在线"; + } + found = false; + } + if(found) { + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST2); + + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + connType = "v不在线"; + return connType; + } + } + attempt++; + } + return connType; + } + + @Override + public Long TR143Speed(Long devId, String downloadUrl) { + + OperationTask operationTask = new OperationTask(); + operationTask.setDeviceId(devId); + operationTask.setOperationName(RemoteOperateMsgEnum.SET_TR143_PARAMETER.getValue()); + operationTask.setOperationTaskDescription("SetTR143Parameter test"); + operationTask.setCreateUser(SecurityUtils.getUsername()); + + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operTaskStruct = new DOperTask2Struct(); + operTaskStruct.devId = operationTask.getDeviceId() == 0 ? Utils.LONG_NULL : operationTask.getDeviceId(); + operTaskStruct.operName = operationTask.getOperationName() == null ? "" : operationTask.getOperationName(); + operTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operTaskStruct.operTaskDesc = RemoteOperateMsgEnum.SET_TR143_PARAMETER.getLabel(); + operTaskStruct.operTaskId = operationTask.getOperationTaskId() == 0 ? Utils.LONG_NULL : operationTask + .getOperationTaskId(); + operTaskStruct.userName = operationTask.getCreateUser() == null ? "" : operationTask.getCreateUser(); + detailStruct.operTask = operTaskStruct; + + DOperTaskArgsStruct[] argsStruct = new DOperTaskArgsStruct[3]; + argsStruct[0] = new DOperTaskArgsStruct(); + argsStruct[0].argsName = "speed_source"; + argsStruct[0].argsValue = "1"; + argsStruct[0].operTaskId = operTaskStruct.operTaskId; + + argsStruct[1] = new DOperTaskArgsStruct(); + argsStruct[1].argsName = "downloadUrl"; + argsStruct[1].argsValue = downloadUrl; + argsStruct[1].operTaskId = operTaskStruct.operTaskId; + + argsStruct[2] = new DOperTaskArgsStruct(); + argsStruct[2].argsName = "time"; + argsStruct[2].argsValue = "5"; //默认测速时间 + argsStruct[2].operTaskId = operTaskStruct.operTaskId; + + detailStruct.operTaskArgsList = argsStruct; + + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder(detailStruct); + + int result = OAMManager.sendDeviceOper2Task(detailStructHolder); + if (result!=0){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + return detailStructHolder.value.operTask.operTaskId; + } + + @Override + public RemoteOperateResult checkTR143Speed(Long taskId, Long devId) { + boolean found = true; + int attempt = 0; + RemoteOperateResult result= new RemoteOperateResult(); + while (attempt < 5 && found) { + OperateResult2 operateResult2 = operateResult2Mapper.selectOne( + new QueryWrapper() + .eq("oper_task_id", taskId) + ); + if (operateResult2 == null) { + throw new BusinessException(ResultCode.TASK_NOT_FOUND); + } + String state = operateResult2.getResultState(); + if (OperateTaskStateEnum.NOT_EXECUTED.getValue().equals(state)) { + result.setResultState(OperateTaskStateEnum.NOT_EXECUTED.getValue()); + result.setResultCode(SystemConstants.SPEED_FAIL); + return result; + } + if (!OperateTaskStateEnum.ONGOING.getValue().equals(state)) { + if (OperateTaskStateEnum.THE_EXECUTION_WAS_SUCCESSFUL.getValue().equals(state)){ + result.setResultState(OperateTaskStateEnum.THE_EXECUTION_WAS_SUCCESSFUL.getValue()); + result.setResultCode(OperateTaskStateEnum.THE_EXECUTION_WAS_SUCCESSFUL.getLabel()); + }else { + result.setResultState(state); + result.setResultCode(SystemConstants.SPEED_FAIL); + } + found = false; + } + if(found) { + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST2); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + attempt++; + } + + return result; + } + + @Override + public RemoteOperateResult checkTr143SpeedResult(Long devId, Long taskId) { + boolean found = true; + int attempt = 0; + RemoteOperateResult result= new RemoteOperateResult(); + while (attempt < 5 && found) { + OperateResult2 operateResult2 = operateResult2Mapper.selectOne( + new QueryWrapper() + .eq("oper_task_id", taskId) + ); + if (operateResult2 == null) { + throw new BusinessException(ResultCode.TASK_NOT_FOUND); + } + String state = operateResult2.getResultState(); + if (OperateTaskStateEnum.NOT_EXECUTED.getValue().equals(state)) { + result.setResultState(OperateTaskStateEnum.NOT_EXECUTED.getValue()); + result.setResultCode(SystemConstants.SPEED_FAIL); + return result; + } + if (!OperateTaskStateEnum.ONGOING.getValue().equals(state)) { + if (OperateTaskStateEnum.THE_EXECUTION_WAS_SUCCESSFUL.getValue().equals(state)){ + String desc = deviceLogMapper.getTaskResultByTaskId(taskId,RemoteOperateMsgEnum.DOWNLOAD_DIAGNOSTICS_QUERY.getValue()); + String regex = SystemConstants.DOWNLOAD_INFO_REGEX; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(desc); + if (matcher.find()){ + String input = matcher.group(1).trim(); + DownloadInfo downloadInfo = parseFromString(input); + String state1 = downloadInfo.getState(); + if (state1.equalsIgnoreCase("Completed")) { + Long eomTime = downloadInfo.getEomTime(); + Long bomTime = downloadInfo.getBomTime(); + Long totalBytesReceived = downloadInfo.getTotalBytesReceived(); + long speedResult=8*1000*totalBytesReceived/(eomTime-bomTime)/1024/1024; + BigDecimal value = new BigDecimal(speedResult); + String speed = value.divide(new BigDecimal(1), 3, RoundingMode.HALF_UP).toString(); + result.setResultState(state); + result.setResultCode(speed); + }else { + result.setResultState("5"); + result.setResultCode(SystemConstants.SPEED_FAIL); + } + } + }else { + result.setResultState(state); + result.setResultCode(SystemConstants.SPEED_FAIL); + } + found = false; + } + if(found) { + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST2); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + attempt++; + } + + return result; + } + private static DownloadInfo parseFromString(String input) { + DownloadInfo downloadInfo = new DownloadInfo(); + Map properties = new HashMap<>(); + + // 使用"^"作为分隔符分割字符串,并填充到Map中 + for (String part : input.split("\\^")) { + String[] keyValue = part.split("="); + if (keyValue.length == 2) { + properties.put(keyValue[0], keyValue[1]); + } + } + + // 从Map中提取值并设置到DownloadInfo对象中 + downloadInfo.setState(properties.getOrDefault("state", null)); + downloadInfo.setRomTime(properties.getOrDefault("romTime", null)); + downloadInfo.setBomTime(parseLong(properties.get("bomTime"))); + downloadInfo.setEomTime(parseLong(properties.get("eomTime"))); + downloadInfo.setTestBytesReceived(parseLong(properties.get("testBytesReceived"))); + downloadInfo.setTotalBytesReceived(parseLong(properties.get("totalBytesReceived"))); + downloadInfo.setTcpOpenRequestTime(parseLong(properties.get("tcpOpenRequestTime"))); + downloadInfo.setTcpOpenResponseTime(parseLong(properties.get("tcpOpenResponseTime"))); + + return downloadInfo; + } + private static Long parseLong(String value) { + if (value == null || "null".equals(value)) { + return null; + } + return Long.parseLong(value); + } + + @Override + public Long remoteOpenRegister(Long devId) { + long taskId = 0; + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operTaskStruct = new DOperTask2Struct(); + operTaskStruct.devId = devId; + operTaskStruct.operName = RemoteOperateMsgEnum.X_REGISTER.getValue(); + operTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operTaskStruct.operTaskDesc = RemoteOperateMsgEnum.X_REGISTER.getLabel(); + operTaskStruct.operTaskId = Utils.LONG_NULL; + operTaskStruct.userName = SecurityUtils.getUsername(); + detailStruct.operTask = operTaskStruct; + + DOperTaskArgsStruct[] argsStruct = new DOperTaskArgsStruct[2]; + argsStruct[0] = new DOperTaskArgsStruct(); + argsStruct[0].argsName = "BIND_STATUS"; + argsStruct[0].argsValue = "99"; + argsStruct[0].operTaskId = Utils.LONG_NULL; + argsStruct[1] = new DOperTaskArgsStruct(); + argsStruct[1].argsName = "BIND_RESULT"; + argsStruct[1].argsValue = "99"; + argsStruct[1].operTaskId = Utils.LONG_NULL; + detailStruct.operTaskArgsList = argsStruct; + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder( + detailStruct); + int result = OAMManager.sendDeviceOper2Task(detailStructHolder); + if (result!=0){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + return detailStructHolder.value.operTask.operTaskId; + } } diff --git a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java index bd36166..7a8146e 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java @@ -28,6 +28,7 @@ import com.bellmann.model.query.DeviceTypeToVerQuery; import com.bellmann.model.vo.DeviceServiceVO; import com.bellmann.model.vo.DeviceTypeToVerVO; import com.bellmann.model.vo.FileRecordVO; +import com.bellmann.model.vo.SoftVersionUpgradeVO; import com.bellmann.security.util.SecurityUtils; import com.bellmann.service.DeviceTypeVerService; import com.bellmann.service.FileOptionService; @@ -374,4 +375,10 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { } return Result.success(); } + + @Override + public List upgradeSoftVerTable(Long devId) { + return deviceTypeVerMapper.upgradeSoftVerTable(devId); + + } } diff --git a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java index 9380242..ef70a7d 100644 --- a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java @@ -125,6 +125,7 @@ public class FileOptionServiceImpl implements FileOptionService { //文件存放地址 //文件在FTP服务器所在文件夹目录 String dirPath = fileServer.getFtpRootDir() + String.format(IBaseEnum.getLabelByValue(fileType,FileUrlEnum.class),fileType)+System.currentTimeMillis()/1000; + log.info("dirPath:{}",dirPath); try(InputStream in = file.getInputStream()) { boolean upload = FTPUtils.upload(fileServer, newFileName, dirPath, in); if (!upload){ diff --git a/src/main/java/com/bellmann/service/impl/OperateTask2ServiceImpl.java b/src/main/java/com/bellmann/service/impl/OperateTask2ServiceImpl.java index 913f2d9..b78e6d6 100644 --- a/src/main/java/com/bellmann/service/impl/OperateTask2ServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/OperateTask2ServiceImpl.java @@ -34,4 +34,13 @@ public class OperateTask2ServiceImpl implements OperateTask2Service { Page boPage = operateTask2Mapper.tablePage(page,devId); return PageResult.success(operateTask2Converter.pageBo2PageVo(boPage)); } + + @Override + public PageResult taskPage(BasePageQuery query) { + int pageSize = query.getPageSize(); + int pageNum = query.getPageNum(); + Page page = new Page<>(pageNum,pageSize); + Page boPage = operateTask2Mapper.taskPage(page); + return PageResult.success(operateTask2Converter.pageBo2PageVo(boPage)); + } } diff --git a/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java b/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java index 28bea66..78d9f8f 100644 --- a/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java @@ -61,6 +61,17 @@ public class RemoteOperateTaskServiceImpl implements RemoteOperateTaskService { return insertOperationTask(operationTask); } + @Override + public Long sendTaskByDevIdByFileId(Long devId, String createUser, Long fileId, String command) { + OperationTask operationTask = new OperationTask(); + operationTask.setDeviceId(devId); + operationTask.setOperationName(command); + operationTask.setFileId(fileId.toString()); + operationTask.setOperationTaskDescription("test"); + operationTask.setCreateUser(createUser); + return insertOperationTask(operationTask); + } + @Override public long insertOperationTask(OperationTask operationTask) { DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); diff --git a/src/main/java/com/bellmann/service/impl/SpeedServerServiceImpl.java b/src/main/java/com/bellmann/service/impl/SpeedServerServiceImpl.java new file mode 100644 index 0000000..275388a --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/SpeedServerServiceImpl.java @@ -0,0 +1,48 @@ +package com.bellmann.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.bellmann.common.exception.BusinessException; +import com.bellmann.common.result.ResultCode; +import com.bellmann.mapper.DeviceStaticMapper; +import com.bellmann.mapper.SpeedServerMapper; +import com.bellmann.model.entity.DeviceStatic; +import com.bellmann.service.SpeedServerService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务器信息 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-15 + */ +@Service +@RequiredArgsConstructor +public class SpeedServerServiceImpl implements SpeedServerService { + + private final SpeedServerMapper speedServerMapper; + + private final DeviceStaticMapper deviceStaticMapper; + @Override + public List downloadUrls(Long devId) { + Long regionAreaId = deviceStaticMapper.selectOne(new QueryWrapper() + .eq("dev_id", devId) + .select("region_area_id") + ).getRegionAreaId(); + if (regionAreaId==null){ + throw new BusinessException(ResultCode.DOMAIN_IS_NULL); + } + List list; + if (regionAreaId!=0){ + String areaId = regionAreaId.toString().substring(0, 2); + list = speedServerMapper.findDownloadUrlByDomainId(areaId); + }else { + list = speedServerMapper.findDownloadUrlByRootDomainId(regionAreaId); + } + return list; + } +} diff --git a/src/main/resources/mapper/DeviceLogMapper.xml b/src/main/resources/mapper/DeviceLogMapper.xml index 7a45bca..02267a5 100644 --- a/src/main/resources/mapper/DeviceLogMapper.xml +++ b/src/main/resources/mapper/DeviceLogMapper.xml @@ -15,4 +15,18 @@ dev_id, oper_time, oper_desc, oper_name + diff --git a/src/main/resources/mapper/DeviceSpeedInfoMapper.xml b/src/main/resources/mapper/DeviceSpeedInfoMapper.xml new file mode 100644 index 0000000..081500e --- /dev/null +++ b/src/main/resources/mapper/DeviceSpeedInfoMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + speed_id, loid, dev_id, dev_sno, speed_mode, speed_time, speed_source, speed_operator, rate, unit, speed_starttime, speed_endtime, exctime, exctime1, exctime2, exctime3, exctime4, url, dev_pppoe, sysid, syspass, bandwidth, areaid + + + + diff --git a/src/main/resources/mapper/DeviceStaticMapper.xml b/src/main/resources/mapper/DeviceStaticMapper.xml index 1a27079..7bf388a 100644 --- a/src/main/resources/mapper/DeviceStaticMapper.xml +++ b/src/main/resources/mapper/DeviceStaticMapper.xml @@ -311,4 +311,15 @@ ITMS_DEVICE_STATIC.DEV_ID = #{devId} limit 1 + + diff --git a/src/main/resources/mapper/DeviceTypeVerMapper.xml b/src/main/resources/mapper/DeviceTypeVerMapper.xml index de7c48b..0069c05 100644 --- a/src/main/resources/mapper/DeviceTypeVerMapper.xml +++ b/src/main/resources/mapper/DeviceTypeVerMapper.xml @@ -123,4 +123,18 @@ AND DEV_TYPE_VER_STATUS = '1' LIMIT 1 + + diff --git a/src/main/resources/mapper/FileRecordMapper.xml b/src/main/resources/mapper/FileRecordMapper.xml index d40ec5a..cb9a8d0 100644 --- a/src/main/resources/mapper/FileRecordMapper.xml +++ b/src/main/resources/mapper/FileRecordMapper.xml @@ -54,5 +54,6 @@ ITMS_FILE.FILE_ID = ITMS_FILE_DEV_MAP.FILE_ID AND ITMS_FILE_DEV_MAP.DEV_ID = #{devId} AND ITMS_FILE.FILE_TYPE = #{fileType} + order by ITMS_FILE.file_create_time desc diff --git a/src/main/resources/mapper/OperateTask2Mapper.xml b/src/main/resources/mapper/OperateTask2Mapper.xml index 4a508f6..8b358fe 100644 --- a/src/main/resources/mapper/OperateTask2Mapper.xml +++ b/src/main/resources/mapper/OperateTask2Mapper.xml @@ -102,4 +102,19 @@ ITMS_OPER_TASK_2.OPER_TASK_CREATE_TIME DESC limit 1 + diff --git a/src/main/resources/mapper/SpeedServerMapper.xml b/src/main/resources/mapper/SpeedServerMapper.xml new file mode 100644 index 0000000..e399e3f --- /dev/null +++ b/src/main/resources/mapper/SpeedServerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + serv_id, serv_name, support_mode, ip, port, user_name, passwd, groupid, remark, downloadurl + + + + +