From 28d7ad2c73fd050a63975a76585d651cb8672ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E6=9E=97?= <320730042@qq.com> Date: Thu, 11 Jul 2024 18:07:04 +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 --- .../com/bellmann/BellmannBootApplication.java | 1 - .../common/constant/SystemConstants.java | 5 + .../common/enums/RemoteOperateMsgEnum.java | 44 ++++ .../bellmann/common/result/ResultCode.java | 3 +- .../com/bellmann/common/util/CommonUtils.java | 26 +++ .../controller/DeviceStaticController.java | 92 ++++++-- .../OperateResultArgsController.java | 46 ++++ .../controller/OrderInfoController.java | 6 +- .../controller/TypeVerExtController.java | 2 +- .../mapper/DeviceStaticDetailMapper.java | 2 + .../bellmann/mapper/DeviceStaticMapper.java | 3 + .../bellmann/mapper/OperateResult2Mapper.java | 2 + .../mapper/OperateResultArgsMapper.java | 18 ++ .../bellmann/mapper/OperateTask2Mapper.java | 5 + .../com/bellmann/mapper/OrderInfoMapper.java | 2 +- .../com/bellmann/model/dto/DeviceDetail.java | 54 +++++ .../model/dto/OperationResultArguments.java | 22 ++ .../com/bellmann/model/dto/OperationTask.java | 52 +++++ .../bellmann/model/dto/RemoteOperation.java | 159 ++++++++++++++ .../com/bellmann/model/entity/FileServer.java | 6 +- .../model/entity/OperateResultArgs.java | 34 +++ .../com/bellmann/model/entity/TypeVerExt.java | 2 +- .../bellmann/model/form/CapabilityForm.java | 2 +- .../model/query/DeviceOrderQuery.java | 9 +- .../com/bellmann/model/vo/CapabilityVO.java | 2 +- .../com/bellmann/model/vo/DeviceLinkVO.java | 17 ++ .../model/vo/RemoteOperateResult.java | 15 ++ .../bellmann/runner/ServiceManagerRunner.java | 2 +- .../{InterfaceService.java => UIService.java} | 10 +- .../service/OperateResultArgsService.java | 19 ++ .../bellmann/service/OrderInfoService.java | 2 +- .../service/RemoteOperateTaskService.java | 15 ++ .../bellmann/service/TypeVerExtService.java | 2 +- .../service/impl/DeviceLogServiceImpl.java | 23 +- .../impl/OperateResultArgsServiceImpl.java | 62 ++++++ .../service/impl/OrderInfoServiceImpl.java | 15 +- .../impl/RemoteOperateTaskServiceImpl.java | 205 ++++++++++++++++++ .../service/impl/TypeVerExtServiceImpl.java | 4 +- .../mapper/DeviceStaticDetailMapper.xml | 17 ++ .../resources/mapper/DeviceStaticMapper.xml | 32 +++ .../resources/mapper/OperateResult2Mapper.xml | 17 ++ .../mapper/OperateResultArgsMapper.xml | 18 ++ .../resources/mapper/OperateTask2Mapper.xml | 42 ++++ src/main/resources/mapper/OrderInfoMapper.xml | 7 +- 44 files changed, 1036 insertions(+), 87 deletions(-) create mode 100644 src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java create mode 100644 src/main/java/com/bellmann/controller/OperateResultArgsController.java create mode 100644 src/main/java/com/bellmann/mapper/OperateResultArgsMapper.java create mode 100644 src/main/java/com/bellmann/model/dto/DeviceDetail.java create mode 100644 src/main/java/com/bellmann/model/dto/OperationResultArguments.java create mode 100644 src/main/java/com/bellmann/model/dto/OperationTask.java create mode 100644 src/main/java/com/bellmann/model/dto/RemoteOperation.java create mode 100644 src/main/java/com/bellmann/model/entity/OperateResultArgs.java create mode 100644 src/main/java/com/bellmann/model/vo/DeviceLinkVO.java create mode 100644 src/main/java/com/bellmann/model/vo/RemoteOperateResult.java rename src/main/java/com/bellmann/runner/{InterfaceService.java => UIService.java} (82%) create mode 100644 src/main/java/com/bellmann/service/OperateResultArgsService.java create mode 100644 src/main/java/com/bellmann/service/RemoteOperateTaskService.java create mode 100644 src/main/java/com/bellmann/service/impl/OperateResultArgsServiceImpl.java create mode 100644 src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java create mode 100644 src/main/resources/mapper/DeviceStaticDetailMapper.xml create mode 100644 src/main/resources/mapper/OperateResultArgsMapper.xml diff --git a/src/main/java/com/bellmann/BellmannBootApplication.java b/src/main/java/com/bellmann/BellmannBootApplication.java index e008e0e..af34267 100644 --- a/src/main/java/com/bellmann/BellmannBootApplication.java +++ b/src/main/java/com/bellmann/BellmannBootApplication.java @@ -1,6 +1,5 @@ package com.bellmann; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/com/bellmann/common/constant/SystemConstants.java b/src/main/java/com/bellmann/common/constant/SystemConstants.java index 0f23ad4..7226825 100644 --- a/src/main/java/com/bellmann/common/constant/SystemConstants.java +++ b/src/main/java/com/bellmann/common/constant/SystemConstants.java @@ -34,4 +34,9 @@ public interface SystemConstants { public static final String CONN_TYPE_PPPOE_BRIDGE = "桥接"; public static final String CONN_TYPE_IP_ROUTED = "路由"; public static final String CONN_TYPE = "LAST_rg_mode"; + + public static final long TASK_TIME_OUT_CONST = 60 * 1000; + public static final long TASK_TIME_OUT_CONST1 = 6 * 1000; + + public static final String NULL_RESULT = "操作进行中..."; } diff --git a/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java b/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java new file mode 100644 index 0000000..2852af5 --- /dev/null +++ b/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java @@ -0,0 +1,44 @@ +package com.bellmann.common.enums; + +import com.bellmann.common.base.IBaseEnum; +import lombok.Getter; + +public enum RemoteOperateMsgEnum implements IBaseEnum { + + GET_OBJECT_INFOS("GetObjectInfos", "设备浏览"), + IP_PING("ipping", "IP Ping 测试"), + DEVICE_MONITOR("devicemonitor", "设备监控"), + SET_PARAMETER_VALUES("SetParameterValues", "设置设备参数值"), + GET_PARAMETER_VALUES("GetParameterValues", "获取设备参数值"), + SET_PARAMETER_ATTRIBUTES("SetParameterAttributes", "设置设备参数属性"), + GET_PARAMETER_ATTRIBUTES("GetParameterAttributes", "获取设备参数属性"), + ADD_OBJECT("AddObject", "添加设备参数实例"), + DELETE_OBJECT("DeleteObject", "删除设备参数实例"), + DOWNLOAD("Download", "下载文件"), + UPLOAD("Upload", "上传文件"), + REBOOT("Reboot", "重启设备"), + TOUCH_DEVICE("TouchDevice", "设备在线测试"), + UPLOAD_CONFIG("UploadConfig", "设备配置文件上传"), + DOWNLOAD_CONFIG("DownloadConfig", "设备配置文件下发"), + DSL_LOOP_DIAGNOSTICS("DslLoopDiagnostics", "DslLoop诊断"), + ATMF5_LOOP_BACK_DIAGNOSTICS("ATMF5LoopbackDiagnostics", "ATMF5Loopback诊断"), + DOWNLOAD_SOFT_VER_FILE("DownloadSoftVerFile", "设备软件版本升级"), + + FACTORY_RESET("FactoryReset", "恢复设备出厂设置"), + + UPLOAD_LOG("UploadLog", "获取设备日志文件"), + + BASIC_PARAMETER("basicparameter","获取设备链路信息") + + ; + @Getter + private String value; + + @Getter + private String label; + + RemoteOperateMsgEnum(String value, String label) { + this.value = value; + this.label = label; + } +} diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index f18cf1c..c23257e 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -116,7 +116,8 @@ public enum ResultCode implements IResultCode, Serializable { DEVICE_BINDING_FAILED("F0024","设备更换失败"), THE_PARAMETER_CANNOT_BE_EMPTY("F0025","参数不能为空" ), OAM_INTERFACE_ERROR("F0026", "调用OAM接口报错"), - ACS_INTERFACE_ERROR("F0028", "调用ACS接口报错"); + ACS_INTERFACE_ERROR("F0028", "调用ACS接口报错"), + QUERY_DEV_ONLINE_ERROR("F0029","查询设备在线状态出错" ); @Override public String getCode() { diff --git a/src/main/java/com/bellmann/common/util/CommonUtils.java b/src/main/java/com/bellmann/common/util/CommonUtils.java index b2aca62..6f0f812 100644 --- a/src/main/java/com/bellmann/common/util/CommonUtils.java +++ b/src/main/java/com/bellmann/common/util/CommonUtils.java @@ -1,5 +1,13 @@ package com.bellmann.common.util; +import com.bellmann.model.dto.ParamInfo; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.ArrayList; +import java.util.List; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -25,4 +33,22 @@ public class CommonUtils { // 判断是否找到匹配 return matcher.find(); } + + + public static List parseHtmlToParamInfo(String html){ + List list = new ArrayList<>(); + Document doc = Jsoup.parse(html); + Element table = doc.select("table.tableFormTable").first(); + assert table != null; + Elements rows = table.select("tr"); + for (int i = 2; i < rows.size(); i++) { + ParamInfo paramInfo = new ParamInfo(); + Elements cols = rows.get(i).select("td"); + paramInfo.setParameterName(cols.get(0).text().trim()); + paramInfo.setActualValue(cols.get(1).text().trim()); + paramInfo.setRemarks(cols.get(2).text().trim()); + list.add(paramInfo); + } + return list; + } } diff --git a/src/main/java/com/bellmann/controller/DeviceStaticController.java b/src/main/java/com/bellmann/controller/DeviceStaticController.java index 0dc9a4e..d9b7748 100644 --- a/src/main/java/com/bellmann/controller/DeviceStaticController.java +++ b/src/main/java/com/bellmann/controller/DeviceStaticController.java @@ -1,80 +1,96 @@ package com.bellmann.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.constant.SystemConstants; +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.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.*; +import com.bellmann.plugin.dupsubmit.annotation.PreventDuplicateSubmit; +import com.bellmann.security.util.SecurityUtils; import com.bellmann.service.DeviceStaticService; +import com.bellmann.service.OperateResultArgsService; +import com.bellmann.service.RemoteOperateTaskService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; @Tag(name = "16.设备管理") @RestController @RequiredArgsConstructor @RequestMapping("/api/equipment/v1") +@Slf4j public class DeviceStaticController { private final DeviceStaticService deviceStaticService; + private final RemoteOperateTaskService remoteOperateTaskService; + + private final OperateResultArgsService operateResultArgsService; + //--------------资源管理API开始-------------------- @PostMapping("resource-page") @Operation(summary = "资源管理-设备管理表格接口") - public PageResult resourcePage(@RequestBody SelectQuery query){ + public PageResult resourcePage(@RequestBody SelectQuery query) { Page page = deviceStaticService.resourcePage(query); return PageResult.success(page); } @GetMapping("resource-detail/{devId}") @Operation(summary = "资源管理-设备管理详细信息接口") - public Result> resourceDeviceDetail(@PathVariable Long devId){ - Map map = deviceStaticService.resourceDeviceDetail(devId); + public Result> resourceDeviceDetail(@PathVariable Long devId) { + Map map = deviceStaticService.resourceDeviceDetail(devId); return Result.success(map); } + @PostMapping("resource-edit") @Operation(summary = "资源管理-设备详细信息保存接口") - public Result editResourceEquipment(@RequestBody EquipmentDetailForm form){ + public Result editResourceEquipment(@RequestBody EquipmentDetailForm form) { return deviceStaticService.editResourceEquipment(form); } @PostMapping("resource-add") @Operation(summary = "资源管理-设备详细信息新增接口") - public Result addResourceEquipment(@RequestBody EquipmentAddForm form){ + public Result addResourceEquipment(@RequestBody EquipmentAddForm form) { return deviceStaticService.addResourceEquipment(form); } @PostMapping("private-file") @Operation(summary = "资源管理-设备详细信息-添加私有配置文件信息") - public Result privateProfile(@RequestBody PrivateProfileForm form){ + public Result privateProfile(@RequestBody PrivateProfileForm form) { return deviceStaticService.privateProfile(form); } @PutMapping("binding-custom/{devId}/{customId}") @Operation(summary = "资源管理-设备详细信息-绑定客户") - public Result bindingCustom(@PathVariable Long customId, @PathVariable Long devId){ - return deviceStaticService.bindingCustom(customId,devId); + public Result bindingCustom(@PathVariable Long customId, @PathVariable Long devId) { + return deviceStaticService.bindingCustom(customId, devId); } + @PostMapping("delete-dev") @Operation(summary = "资源管理-删除设备") - public Result deleteDev(@RequestBody List ids){ + public Result deleteDev(@RequestBody List ids) { return deviceStaticService.deleteDev(ids); } + @PutMapping("unbinding-custom/{devId}") @Operation(summary = "资源管理-设备详细信息-解除用户绑定") - public Result unbindingCustom(@PathVariable Long devId){ + public Result unbindingCustom(@PathVariable Long devId) { return deviceStaticService.unbindingCustom(devId); } //--------------资源管理API结束-------------------- @@ -82,7 +98,7 @@ public class DeviceStaticController { //--------------工单管理查询devOuiSno分页开始--------------------------------- @PostMapping("dev-oui-sno-page") @Operation(summary = "工单管理查询devOuiSno") - public PageResult devOuiSnoPage(@RequestBody DevOuiSnoQuery query){ + public PageResult devOuiSnoPage(@RequestBody DevOuiSnoQuery query) { return deviceStaticService.devOuiSnoPage(query); } //--------------工单管理查询devOuiSno分页结束------------------------ @@ -90,26 +106,60 @@ public class DeviceStaticController { //-------------------远程操作-------------------------- @PostMapping("/remote/page") @Operation(summary = "远程操作-设备管理表格接口") - public PageResult remotePage(@RequestBody SelectQuery query){ + public PageResult remotePage(@RequestBody SelectQuery query) { Page page = deviceStaticService.remotePage(query); return PageResult.success(page); } + @GetMapping("/remote/{devId}") @Operation(summary = "远程操作-设备信息") - public Result remoteDevInfo(@PathVariable Long devId){ + public Result remoteDevInfo(@PathVariable Long devId) { return deviceStaticService.remoteDevInfo(devId); } - @PostMapping("remote/unbinding") + @PostMapping("/remote/unbinding") @Operation(summary = "远程操作-解绑LogicID") - public Result unbindingLogicId(@RequestBody UnBindingForm form){ + public Result unbindingLogicId(@RequestBody UnBindingForm form) { return deviceStaticService.unbindingLogicId(form); } - @DeleteMapping("remote/delete-profile/{devId}/{fileId}") + @DeleteMapping("/remote/delete-profile/{devId}/{fileId}") @Operation(summary = "远程操作-删除私有厂商配置文件") - public Result deleteProfile(@PathVariable Long devId, @PathVariable Long fileId){ - return deviceStaticService.deleteProfile(devId,fileId); + public Result deleteProfile(@PathVariable Long devId, @PathVariable Long fileId) { + return deviceStaticService.deleteProfile(devId, fileId); } + + @GetMapping("/remote/check-dev-online/{devId}") + @Operation(summary = "远程操作-查询设备状态") + @PreventDuplicateSubmit + public Result checkDevOnline(@PathVariable Long devId) { + Long count = remoteOperateTaskService.sendTaskByDevId(devId, SecurityUtils.getUsername(), RemoteOperateMsgEnum.TOUCH_DEVICE.getValue()); + log.info("{}任务执行中: {}", RemoteOperateMsgEnum.TOUCH_DEVICE.getLabel(), count); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + RemoteOperateResult result = remoteOperateTaskService.findDevInfoArgsByDevIdIsTimeOut(devId, RemoteOperateMsgEnum.TOUCH_DEVICE.getValue()); + return Result.success(result); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.QUERY_DEV_ONLINE_ERROR); + } + } + + @GetMapping("/remote/device-link-info/{devId}") + @Operation(summary = "远程操作-获取设备链路信息") + @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); + try { + TimeUnit.MILLISECONDS.sleep(SystemConstants.TASK_TIME_OUT_CONST1); + List result = operateResultArgsService.getDeviceLinkInfo(devId); + return Result.success(result); + } catch (InterruptedException e) { + throw new BusinessException(ResultCode.QUERY_DEV_ONLINE_ERROR); + } + } + + + } diff --git a/src/main/java/com/bellmann/controller/OperateResultArgsController.java b/src/main/java/com/bellmann/controller/OperateResultArgsController.java new file mode 100644 index 0000000..78c77a1 --- /dev/null +++ b/src/main/java/com/bellmann/controller/OperateResultArgsController.java @@ -0,0 +1,46 @@ +package com.bellmann.controller; + + +import com.bellmann.common.result.Result; +import com.bellmann.model.vo.DeviceLinkVO; +import com.bellmann.plugin.dupsubmit.annotation.PreventDuplicateSubmit; +import com.bellmann.service.OperateResultArgsService; +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-11 + */ +@Tag(name = "26.设备操作结果参数") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/operate-result-args/v1") +public class OperateResultArgsController { + + private final OperateResultArgsService operateResultArgsService; + + @GetMapping("/device-link-info/{devId}") + @Operation(summary = "远程操作-获取设备链路信息") + @PreventDuplicateSubmit + public Result> getDeviceLinkInfo(@PathVariable Long devId) { + + List result = operateResultArgsService.getDeviceLinkInfo(devId); + return Result.success(result); + + } + +} + diff --git a/src/main/java/com/bellmann/controller/OrderInfoController.java b/src/main/java/com/bellmann/controller/OrderInfoController.java index a28d0dd..b57683c 100644 --- a/src/main/java/com/bellmann/controller/OrderInfoController.java +++ b/src/main/java/com/bellmann/controller/OrderInfoController.java @@ -83,10 +83,10 @@ public class OrderInfoController { Page page = orderInfoService.deviceOrderPage(query); return PageResult.success(page); } - @GetMapping("check-dev/{devSnoOui}") + @GetMapping("check-dev/{adNo}") @Operation(summary = "检验设备是否存在") - public Result> checkDev(@PathVariable String devSnoOui){ - return orderInfoService.checkDev(devSnoOui); + public Result> checkDev(@PathVariable String adNo){ + return orderInfoService.checkDev(adNo); } } diff --git a/src/main/java/com/bellmann/controller/TypeVerExtController.java b/src/main/java/com/bellmann/controller/TypeVerExtController.java index e99f6b2..1d78869 100644 --- a/src/main/java/com/bellmann/controller/TypeVerExtController.java +++ b/src/main/java/com/bellmann/controller/TypeVerExtController.java @@ -20,7 +20,7 @@ public class TypeVerExtController { @Operation(summary = "设备能力信息表单接口") @GetMapping("/{typeAndVerId}") - public Result getCapabilityForm(@PathVariable String typeAndVerId){ + public Result getCapabilityForm(@PathVariable Long typeAndVerId){ CapabilityForm capabilityForm = typeVerExtService.getCapabilityForm(typeAndVerId); return Result.success(capabilityForm); } diff --git a/src/main/java/com/bellmann/mapper/DeviceStaticDetailMapper.java b/src/main/java/com/bellmann/mapper/DeviceStaticDetailMapper.java index 9533774..90cc418 100644 --- a/src/main/java/com/bellmann/mapper/DeviceStaticDetailMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceStaticDetailMapper.java @@ -3,7 +3,9 @@ package com.bellmann.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bellmann.model.entity.DeviceStaticDetail; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; @Mapper public interface DeviceStaticDetailMapper extends BaseMapper { + String getDeviceAccessType(@Param("devId") long devId); } diff --git a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java index ead4e67..a461c2b 100644 --- a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java @@ -6,6 +6,7 @@ import com.bellmann.model.bo.DevOnlineStatus; import com.bellmann.model.bo.DeviceDetailBO; import com.bellmann.model.bo.EquipmentBO; import com.bellmann.model.bo.RemoteEquipmentBO; +import com.bellmann.model.dto.DeviceDetail; import com.bellmann.model.entity.DeviceStatic; import com.bellmann.model.vo.EquipmentDetailVO; import org.apache.ibatis.annotations.Mapper; @@ -30,4 +31,6 @@ public interface DeviceStaticMapper extends BaseMapper { DevOnlineStatus devOnlineStatusBySno(@Param("devSno") String devSno); DevOnlineStatus devOnlineStatusByPppoe(@Param("pppoe") String pppoe); + + DeviceDetail findRDeviceDetailStructByDevId(@Param("devId") Long devId); } diff --git a/src/main/java/com/bellmann/mapper/OperateResult2Mapper.java b/src/main/java/com/bellmann/mapper/OperateResult2Mapper.java index feb25de..0c3ce1d 100644 --- a/src/main/java/com/bellmann/mapper/OperateResult2Mapper.java +++ b/src/main/java/com/bellmann/mapper/OperateResult2Mapper.java @@ -3,6 +3,7 @@ package com.bellmann.mapper; import com.bellmann.model.entity.OperateResult2; 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 OperateResult2Mapper extends BaseMapper { + OperateResult2 findDOperateResultDetailStructByTaskIdAndDevId(@Param("operateTaskId") Long operateTaskId, @Param("devId") Long devId); } diff --git a/src/main/java/com/bellmann/mapper/OperateResultArgsMapper.java b/src/main/java/com/bellmann/mapper/OperateResultArgsMapper.java new file mode 100644 index 0000000..7b0fd81 --- /dev/null +++ b/src/main/java/com/bellmann/mapper/OperateResultArgsMapper.java @@ -0,0 +1,18 @@ +package com.bellmann.mapper; + +import com.bellmann.model.entity.OperateResultArgs; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-11 + */ +@Mapper +public interface OperateResultArgsMapper extends BaseMapper { + +} diff --git a/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java b/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java index 4327654..0c6b597 100644 --- a/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java +++ b/src/main/java/com/bellmann/mapper/OperateTask2Mapper.java @@ -5,6 +5,7 @@ import com.bellmann.model.bo.OperateTask2TableBO; import com.bellmann.model.entity.OperateTask2; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -18,4 +19,8 @@ import org.apache.ibatis.annotations.Mapper; public interface OperateTask2Mapper extends BaseMapper { Page tablePage(Page page, Long devId); + + OperateTask2 findDOperateTask2StructByDevIdAndOperateName(@Param("devId") Long devId, @Param("operateName")String operateName); + + OperateTask2 getLatestTaskByOperateName(@Param("devId") Long devId, @Param("operateName") String operateName); } diff --git a/src/main/java/com/bellmann/mapper/OrderInfoMapper.java b/src/main/java/com/bellmann/mapper/OrderInfoMapper.java index f5175fe..faddfdb 100644 --- a/src/main/java/com/bellmann/mapper/OrderInfoMapper.java +++ b/src/main/java/com/bellmann/mapper/OrderInfoMapper.java @@ -29,5 +29,5 @@ public interface OrderInfoMapper extends BaseMapper { String selectOui(@Param("devOuiSno") String devOuiSno, @Param("userSnNo") String userSnNo); - List deviceOrderPage(Page page,@Param("devSnoOui") String devSnoOui,@Param("pppoeAccount") String pppoeAccount,@Param("domain") Long domain); + List deviceOrderPage(Page page,@Param("devAdNo") String devAdNo,@Param("domain") Long domain); } diff --git a/src/main/java/com/bellmann/model/dto/DeviceDetail.java b/src/main/java/com/bellmann/model/dto/DeviceDetail.java new file mode 100644 index 0000000..1d7b758 --- /dev/null +++ b/src/main/java/com/bellmann/model/dto/DeviceDetail.java @@ -0,0 +1,54 @@ +package com.bellmann.model.dto; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class DeviceDetail { + private Long devId; + + private Long typeAndVerId; + + private Long custId; + + private Long regionAreaId; + + private Long corpAreaId; + + private String devSno; + + private String devMac; + + private String devPppoe; + + private String devAdNo; + + private String devStatus; + + private LocalDateTime devCreateTime; + + private LocalDateTime devModifyTime; + + private String devSoapFlag; + + private String devInformFlag; + + private String devRemark1; + + private String devRemark2; + + private String devRemark3; + + private String devRemark4; + + private String devRemark5; + + private String connectReqUrl; + + private String devIp; + + private String devOnline; + + private LocalDateTime devOnlineTime; +} diff --git a/src/main/java/com/bellmann/model/dto/OperationResultArguments.java b/src/main/java/com/bellmann/model/dto/OperationResultArguments.java new file mode 100644 index 0000000..d9bc0c8 --- /dev/null +++ b/src/main/java/com/bellmann/model/dto/OperationResultArguments.java @@ -0,0 +1,22 @@ +package com.bellmann.model.dto; + +import lombok.Data; + +@Data +public class OperationResultArguments { + + /** + * 参数名 + */ + private String argumentName ; + + /** + * 参数值 + */ + private String argumentValue ; + + /** + * 时间值 + */ + private String argumentTime; +} diff --git a/src/main/java/com/bellmann/model/dto/OperationTask.java b/src/main/java/com/bellmann/model/dto/OperationTask.java new file mode 100644 index 0000000..0e2d980 --- /dev/null +++ b/src/main/java/com/bellmann/model/dto/OperationTask.java @@ -0,0 +1,52 @@ +package com.bellmann.model.dto; + +import lombok.Data; + +@Data +public class OperationTask { + + /** + * 操作任务ID + */ + private long operationTaskId = -1; + + /** + * 设备ID + */ + private long deviceId = -1; + + /** + * 操作创建用户名 + */ + private String createUser ; + + /** + * 操作说明 + */ + private String operationTaskDescription ; + + /** + * 监控时长(分钟) + */ + private int monitorTime = -1 ; + + /** + * 监控间隔(秒) + */ + private int monitorPeriod = -1 ; + + /** + * 操作创建时间 + */ + private long createTime = -1; + + /** + * 操作名称(对应ITMS_DEV_OPER_TYPE中OPER_NAME) + */ + private String operationName ; + + /** + * 文件ID + */ + private String fileId ; +} diff --git a/src/main/java/com/bellmann/model/dto/RemoteOperation.java b/src/main/java/com/bellmann/model/dto/RemoteOperation.java new file mode 100644 index 0000000..2264be6 --- /dev/null +++ b/src/main/java/com/bellmann/model/dto/RemoteOperation.java @@ -0,0 +1,159 @@ +package com.bellmann.model.dto; + +import com.bellmann.common.constant.SystemConstants; +import com.bellmann.model.entity.OperateResult2; +import com.bellmann.model.entity.OperateTask2; +import lombok.Data; + +import java.text.SimpleDateFormat; +import java.util.Map; + +@Data +public class RemoteOperation { + /** + * 远程操作编号 + */ + private long operationId = -1 ; + + /** + * 设备ID + */ + private long deviceId = -1 ; + + private String deviceSno; + + /** + * 远程操作任务名称 + */ + private String operationTaskName ; + + /** + * 操作描述 + */ + private String operationDescription ; + + /** + * 创建时间 + */ + private String createTime ; + + /** + * 创建人 + */ + private String createUser ; + + /** + * 执行开始时间 + */ + private String beginTime ; + + /** + * 执行结束时间 + */ + private String endTime ; + + /** + * 操作结果 + */ + private String operationResult ; + + /** + * 结果CODE + */ + private String resultCode ; + + /** + * 结果描述 + */ + private String resultDescription ; + + /** + * 结果参数信息 + */ + private OperationResultArguments[] arguments ; + + /** + * 参数名称列表 + */ + private Map parameterNameList; + + /** + * 参数名称 + */ + private String parameterName; + + //用于设备监控:从数据库中取出设备监控信息 + /** + * 设备监控信息:监控时长字符描述 MONITOR_PERIOD + */ + private String monitorPeriod; + + /** + * 设备监控信息:监控时长值:(秒) + */ + private String monitorPeriodValue; + + /** + * 设备监控信息:采样周期字符描述 MONITOR_INTERVAL + */ + private String monitorInterval; + + /** + * 设备监控信息:采样周期值:(秒) + */ + private String monitorIntervalValue; + + /** + * 设备ID编号 + */ + private String devADNo; + + /** + * 卡信息 + */ + private String cardId; + + + private String cardNo; + + /** + * 构造函数 + */ + public RemoteOperation(){ + + } + public RemoteOperation(OperateTask2 operateTask2, DeviceDetail deviceDetail, OperateResult2 operateResult2){ + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + this.createTime = operateTask2.getOperTaskCreateTime()==null?"":dateFormat.format(operateTask2.getOperTaskCreateTime()); + + this.createUser = operateTask2.getUserName(); + + this.deviceId = operateTask2.getDevId(); + + this.operationTaskName = operateTask2.getOperName(); + + this.operationDescription = operateTask2.getOperTaskDesc(); + + this.operationId = operateTask2.getOperTaskId(); + + if (operateResult2!=null){ + this.operationResult = operateResult2.getResultState(); + + this.resultCode = operateResult2.getErrorCode(); + + this.resultDescription =operateResult2.getErrorDesc(); + + this.beginTime =operateResult2.getOperStartTime()==null?"":dateFormat.format(operateResult2.getOperStartTime()); + + this.endTime = operateResult2.getOperEndTime()==null?"":dateFormat.format(operateResult2.getOperEndTime()); + }else { + this.operationResult = SystemConstants.NULL_RESULT; + this.resultCode = ""; + this.resultDescription = SystemConstants.NULL_RESULT; + this.beginTime = ""; + this.endTime = ""; + } + + } +} diff --git a/src/main/java/com/bellmann/model/entity/FileServer.java b/src/main/java/com/bellmann/model/entity/FileServer.java index c627cda..8d4d4e3 100644 --- a/src/main/java/com/bellmann/model/entity/FileServer.java +++ b/src/main/java/com/bellmann/model/entity/FileServer.java @@ -1,13 +1,14 @@ package com.bellmann.model.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; - import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import java.io.Serializable; + /** *

* @@ -62,6 +63,7 @@ public class FileServer implements Serializable { /** * ftp跟路径 */ + @TableField("ftp_rootdir") private String ftpRootDir; /** diff --git a/src/main/java/com/bellmann/model/entity/OperateResultArgs.java b/src/main/java/com/bellmann/model/entity/OperateResultArgs.java new file mode 100644 index 0000000..74858f7 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/OperateResultArgs.java @@ -0,0 +1,34 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author 李小林 + * @since 2024-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("itms_oper_result_args") +public class OperateResultArgs implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long operTaskId; + + private String argsName; + + private String argsValue; + + private Date recTime; + + +} diff --git a/src/main/java/com/bellmann/model/entity/TypeVerExt.java b/src/main/java/com/bellmann/model/entity/TypeVerExt.java index 64dd0fa..ddb2c79 100644 --- a/src/main/java/com/bellmann/model/entity/TypeVerExt.java +++ b/src/main/java/com/bellmann/model/entity/TypeVerExt.java @@ -15,7 +15,7 @@ import java.io.Serializable; public class TypeVerExt implements Serializable { private static final long serialVersionUID = -1903207386413130730L; - private String typeAndVerId; + private Long typeAndVerId; @TableField("displayname") private String displayName; diff --git a/src/main/java/com/bellmann/model/form/CapabilityForm.java b/src/main/java/com/bellmann/model/form/CapabilityForm.java index 66b692d..31a86a3 100644 --- a/src/main/java/com/bellmann/model/form/CapabilityForm.java +++ b/src/main/java/com/bellmann/model/form/CapabilityForm.java @@ -8,7 +8,7 @@ import lombok.Data; public class CapabilityForm { @Schema(description = "设备类型软件版本ID") - private String typeAndVerId; + private Long typeAndVerId; @Schema(description = "LAN口数量") private String lanNumber=""; diff --git a/src/main/java/com/bellmann/model/query/DeviceOrderQuery.java b/src/main/java/com/bellmann/model/query/DeviceOrderQuery.java index 46fa605..1bb4a4c 100644 --- a/src/main/java/com/bellmann/model/query/DeviceOrderQuery.java +++ b/src/main/java/com/bellmann/model/query/DeviceOrderQuery.java @@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode; @Data public class DeviceOrderQuery extends BasePageQuery { - @Schema(description="设备序列号") - private String devSno; - - @Schema(description="Oui") - private String devOui; - @Schema(description = "pppoe账号") - private String pppoeAccount; + @Schema(description = "设备AD编号") + private String devAdNo; } diff --git a/src/main/java/com/bellmann/model/vo/CapabilityVO.java b/src/main/java/com/bellmann/model/vo/CapabilityVO.java index fdb5073..7ee8a80 100644 --- a/src/main/java/com/bellmann/model/vo/CapabilityVO.java +++ b/src/main/java/com/bellmann/model/vo/CapabilityVO.java @@ -8,7 +8,7 @@ import lombok.Data; public class CapabilityVO { @Schema(description = "设备类型软件版本ID") - private String typeAndVerId; + private Long typeAndVerId; @Schema(description = "LAN口数量") private String lanNumber; diff --git a/src/main/java/com/bellmann/model/vo/DeviceLinkVO.java b/src/main/java/com/bellmann/model/vo/DeviceLinkVO.java new file mode 100644 index 0000000..5d13dac --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DeviceLinkVO.java @@ -0,0 +1,17 @@ +package com.bellmann.model.vo; + +import com.bellmann.model.dto.ParamInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "设备链路信息视图") +@Builder +public class DeviceLinkVO { + private String title; + + private List list; +} diff --git a/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java b/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java new file mode 100644 index 0000000..53b10ab --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/RemoteOperateResult.java @@ -0,0 +1,15 @@ +package com.bellmann.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +@Data +@Schema(description = "远程操作结果") +@Builder +public class RemoteOperateResult { + + private String resultState; + + private String resultCode; +} diff --git a/src/main/java/com/bellmann/runner/ServiceManagerRunner.java b/src/main/java/com/bellmann/runner/ServiceManagerRunner.java index c7137fa..6ee6cbf 100644 --- a/src/main/java/com/bellmann/runner/ServiceManagerRunner.java +++ b/src/main/java/com/bellmann/runner/ServiceManagerRunner.java @@ -16,7 +16,7 @@ public class ServiceManagerRunner implements ApplicationRunner { new Thread("ServiceManager") { @Override public void run() { - InterfaceService.getInstance().start(); + UIService.getInstance().start(); } }.start(); log.info("ServiceManager started"); diff --git a/src/main/java/com/bellmann/runner/InterfaceService.java b/src/main/java/com/bellmann/runner/UIService.java similarity index 82% rename from src/main/java/com/bellmann/runner/InterfaceService.java rename to src/main/java/com/bellmann/runner/UIService.java index fb3c14f..2639d84 100644 --- a/src/main/java/com/bellmann/runner/InterfaceService.java +++ b/src/main/java/com/bellmann/runner/UIService.java @@ -10,14 +10,14 @@ import com.zznode.itms.api.OAMManager; import lombok.Getter; -public class InterfaceService extends ServiceManager { - static InterfaceService service = null; +public class UIService extends ServiceManager { + static UIService service = null; //任务超时的时间 @Getter private static String task_timeOut; - public InterfaceService(String[] args) { + public UIService(String[] args) { super(args); } @Override @@ -37,12 +37,12 @@ public class InterfaceService extends ServiceManager { } - public synchronized static InterfaceService getInstance(){ + public synchronized static UIService getInstance(){ if(service != null){ return service; } String[] arg = new String[] { "-ServerName", "UIServer" }; - service = new InterfaceService(arg); + service = new UIService(arg); return service; } diff --git a/src/main/java/com/bellmann/service/OperateResultArgsService.java b/src/main/java/com/bellmann/service/OperateResultArgsService.java new file mode 100644 index 0000000..3f67172 --- /dev/null +++ b/src/main/java/com/bellmann/service/OperateResultArgsService.java @@ -0,0 +1,19 @@ +package com.bellmann.service; + +import com.bellmann.model.vo.DeviceLinkVO; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-11 + */ +public interface OperateResultArgsService{ + + List getDeviceLinkInfo(Long devId); + +} diff --git a/src/main/java/com/bellmann/service/OrderInfoService.java b/src/main/java/com/bellmann/service/OrderInfoService.java index f8ee5b9..8eecc30 100644 --- a/src/main/java/com/bellmann/service/OrderInfoService.java +++ b/src/main/java/com/bellmann/service/OrderInfoService.java @@ -36,5 +36,5 @@ public interface OrderInfoService { Page deviceOrderPage(DeviceOrderQuery query); - Result> checkDev(String devSnoOui); + Result> checkDev(String adNo); } diff --git a/src/main/java/com/bellmann/service/RemoteOperateTaskService.java b/src/main/java/com/bellmann/service/RemoteOperateTaskService.java new file mode 100644 index 0000000..f81c91f --- /dev/null +++ b/src/main/java/com/bellmann/service/RemoteOperateTaskService.java @@ -0,0 +1,15 @@ +package com.bellmann.service; + +import com.bellmann.model.dto.OperationTask; +import com.bellmann.model.vo.RemoteOperateResult; + +public interface RemoteOperateTaskService { + + public Long sendTaskByDevId(Long devId,String createUser,String command); + + public long insertOperationTask(OperationTask operationTask); + + RemoteOperateResult findDevInfoArgsByDevIdIsTimeOut(Long devId, String command); + + +} diff --git a/src/main/java/com/bellmann/service/TypeVerExtService.java b/src/main/java/com/bellmann/service/TypeVerExtService.java index 831fec8..7661a06 100644 --- a/src/main/java/com/bellmann/service/TypeVerExtService.java +++ b/src/main/java/com/bellmann/service/TypeVerExtService.java @@ -5,7 +5,7 @@ import com.bellmann.model.form.CapabilityForm; import com.bellmann.model.vo.CapabilityVO; public interface TypeVerExtService { - CapabilityForm getCapabilityForm(String typeAndVerId); + CapabilityForm getCapabilityForm(Long typeAndVerId); Result editCapabilityForm(CapabilityForm form); diff --git a/src/main/java/com/bellmann/service/impl/DeviceLogServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceLogServiceImpl.java index e8c8d6d..735e35e 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceLogServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceLogServiceImpl.java @@ -6,15 +6,10 @@ import com.bellmann.common.base.BasePageQuery; import com.bellmann.common.result.PageResult; import com.bellmann.common.util.CommonUtils; import com.bellmann.mapper.DeviceLogMapper; -import com.bellmann.model.dto.ParamInfo; import com.bellmann.model.entity.DeviceLog; import com.bellmann.model.vo.DeviceLogVO; import com.bellmann.service.DeviceLogService; import lombok.RequiredArgsConstructor; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -56,7 +51,7 @@ public class DeviceLogServiceImpl implements DeviceLogService { String paramValue = desc.substring(startIndex + targetText.length()).trim(); if (!paramValue.isEmpty()&& CommonUtils.containsHtmlTag(paramValue)){ desc = desc.substring(0,startIndex); - deviceLogVO.setParamInfoList(parseHtmlToParamInfo(paramValue)); + deviceLogVO.setParamInfoList(CommonUtils.parseHtmlToParamInfo(paramValue)); } } deviceLogVO.setDevId(obj.getDevId()); @@ -72,20 +67,4 @@ public class DeviceLogServiceImpl implements DeviceLogService { return PageResult.success(voPage); } - private static List parseHtmlToParamInfo(String html){ - List list = new ArrayList<>(); - Document doc = Jsoup.parse(html); - Element table = doc.select("table.tableFormTable").first(); - assert table != null; - Elements rows = table.select("tr"); - for (int i = 2; i < rows.size(); i++) { - ParamInfo paramInfo = new ParamInfo(); - Elements cols = rows.get(i).select("td"); - paramInfo.setParameterName(cols.get(0).text().trim()); - paramInfo.setActualValue(cols.get(1).text().trim()); - paramInfo.setRemarks(cols.get(2).text().trim()); - list.add(paramInfo); - } - return list; - } } diff --git a/src/main/java/com/bellmann/service/impl/OperateResultArgsServiceImpl.java b/src/main/java/com/bellmann/service/impl/OperateResultArgsServiceImpl.java new file mode 100644 index 0000000..64f7f4c --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/OperateResultArgsServiceImpl.java @@ -0,0 +1,62 @@ +package com.bellmann.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.bellmann.common.enums.RemoteOperateMsgEnum; +import com.bellmann.common.util.CommonUtils; +import com.bellmann.mapper.OperateResultArgsMapper; +import com.bellmann.mapper.OperateTask2Mapper; +import com.bellmann.model.dto.ParamInfo; +import com.bellmann.model.entity.OperateResultArgs; +import com.bellmann.model.entity.OperateTask2; +import com.bellmann.model.vo.DeviceLinkVO; +import com.bellmann.service.OperateResultArgsService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-11 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class OperateResultArgsServiceImpl implements OperateResultArgsService { + + private final OperateTask2Mapper operateTask2Mapper; + + private final OperateResultArgsMapper operateResultArgsMapper; + @Override + public List getDeviceLinkInfo(Long devId) { + OperateTask2 operateTask2 = operateTask2Mapper.getLatestTaskByOperateName(devId, RemoteOperateMsgEnum.BASIC_PARAMETER.getValue()); + List list = operateResultArgsMapper.selectList(new LambdaQueryWrapper() + .eq(OperateResultArgs::getOperTaskId, operateTask2.getOperTaskId()) + ); + StringBuilder html = new StringBuilder(); + if (list.isEmpty()){ + return new ArrayList(); + } + for (OperateResultArgs args:list){ + html.append(args.getArgsValue()); + } + SimpleDateFormat dateFormat = new SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss"); + List paramInfos = CommonUtils.parseHtmlToParamInfo(html.toString()); + List links = new ArrayList<>(); + DeviceLinkVO deviceLinkVO = DeviceLinkVO + .builder() + .title("设备链路信息: " + dateFormat.format(operateTask2.getOperTaskCreateTime())) + .list(paramInfos) + .build(); + links.add(deviceLinkVO); + return links; + } +} diff --git a/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java index db0803a..3efdd1e 100644 --- a/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java @@ -413,9 +413,8 @@ public class OrderInfoServiceImpl implements OrderInfoService { int pageSize = query.getPageSize(); Page page = new Page<>(pageNum, pageSize); Long domain = SecurityUtils.getGroupId(); - String devSnoOui = query.getDevOui() + "-" + query.getDevSno(); - String pppoeAccount = query.getPppoeAccount(); - List list = orderInfoMapper.deviceOrderPage(page, devSnoOui, pppoeAccount, domain); + String devAdNo = query.getDevAdNo(); + List list = orderInfoMapper.deviceOrderPage(page, devAdNo, domain); return getOrderInfoTableVOPage(page, list); } @@ -449,18 +448,14 @@ public class OrderInfoServiceImpl implements OrderInfoService { } @Override - public Result> checkDev(String devSnoOui) { - if (devSnoOui == null || !devSnoOui.contains("-")) { + public Result> checkDev(String adNo) { + if (adNo.isEmpty()) { return Result.failed(ResultCode.NOT_GET_DEVICE); } - - String[] split = devSnoOui.split("-"); DeviceStatic deviceStatic = deviceStaticMapper.selectOne(new QueryWrapper() - .eq("dev_sno", split[1]) - .eq("dev_remark3", split[0]) + .eq("dev_ad_no", adNo) .select("dev_id", "type_and_ver_id") ); - if (deviceStatic != null) { Map map = MapUtil .builder() diff --git a/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java b/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java new file mode 100644 index 0000000..464bb6c --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/RemoteOperateTaskServiceImpl.java @@ -0,0 +1,205 @@ +package com.bellmann.service.impl; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.bellmann.common.base.IBaseEnum; +import com.bellmann.common.constant.StringUtilsConstants; +import com.bellmann.common.enums.DevAccessTypeEnum; +import com.bellmann.common.enums.DevOnlineEnum; +import com.bellmann.common.enums.RemoteOperateMsgEnum; +import com.bellmann.common.exception.BusinessException; +import com.bellmann.common.result.ResultCode; +import com.bellmann.mapper.*; +import com.bellmann.model.dto.DeviceDetail; +import com.bellmann.model.dto.OperationTask; +import com.bellmann.model.dto.RemoteOperation; +import com.bellmann.model.entity.DeviceDynamic; +import com.bellmann.model.entity.OperateResult2; +import com.bellmann.model.entity.OperateTask2; +import com.bellmann.model.vo.RemoteOperateResult; +import com.bellmann.runner.UIService; +import com.bellmann.service.RemoteOperateTaskService; +import com.zznode.itms.api.InventoryManager; +import com.zznode.itms.api.OAMManager; +import com.zznode.itms.api.Utils; +import com.zznode.itms.idl.device.DOperTask2DetailStruct; +import com.zznode.itms.idl.device.DOperTask2DetailStructHolder; +import com.zznode.itms.idl.device.DOperTask2Struct; +import com.zznode.itms.idl.device.DOperTaskArgsStruct; +import com.zznode.itms.idl.resourcedefinition.RFileInfoListHolder; +import com.zznode.itms.idl.resourcedefinition.RFileInfoStruct; +import com.zznode.itms.idl.resourcedefinition.RFileServerDetailListHolder; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import static com.bellmann.common.constant.SystemConstants.TASK_TIME_OUT_CONST; + +@Service +@RequiredArgsConstructor +public class RemoteOperateTaskServiceImpl implements RemoteOperateTaskService { + + private final DeviceStaticDetailMapper deviceStaticDetailMapper; + + private final OperateTask2Mapper operateTask2Mapper; + + private final DeviceStaticMapper deviceStaticMapper; + + private final OperateResult2Mapper operateResult2Mapper; + + private final DeviceDynamicMapper deviceDynamicMapper; + @Override + public Long sendTaskByDevId(Long devId, String createUser, String command) { + OperationTask operationTask = new OperationTask(); + operationTask.setDeviceId(devId); + operationTask.setOperationName(command); + operationTask.setOperationTaskDescription("test"); + operationTask.setCreateUser(createUser); + return insertOperationTask(operationTask); + } + + @Override + public long insertOperationTask(OperationTask operationTask) { + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operateTaskStruct = new DOperTask2Struct(); + operateTaskStruct.devId = operationTask.getDeviceId()==0? StringUtilsConstants.LONG_NULL:operationTask.getDeviceId(); + operateTaskStruct.operName = (null == operationTask.getOperationName() ? "" + : operationTask.getOperationName()); + operateTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operateTaskStruct.operTaskDesc = IBaseEnum.getLabelByValue(operationTask.getOperationName(), RemoteOperateMsgEnum.class); + operateTaskStruct.operTaskId = operationTask.getOperationTaskId() == 0 ? Utils.LONG_NULL + : operationTask.getOperationTaskId(); + operateTaskStruct.userName = (null == operationTask.getCreateUser() ? "" + : operationTask.getCreateUser()); + detailStruct.operTask = operateTaskStruct; + + DOperTaskArgsStruct[] argsStruct = new DOperTaskArgsStruct[2]; + argsStruct[0] = new DOperTaskArgsStruct(); + argsStruct[0].argsName = "FILE_URL"; + argsStruct[0].argsValue = findFileURLByOperation(Long + .parseLong(null == operationTask.getFileId() ? "0" + : operationTask.getFileId()), operateTaskStruct.operName); + argsStruct[0].operTaskId = operateTaskStruct.operTaskId; + String accessType = deviceStaticDetailMapper.getDeviceAccessType(operateTaskStruct.devId); + argsStruct[1] = new DOperTaskArgsStruct(); + argsStruct[1].argsName = "AccessType"; + argsStruct[1].argsValue = accessType == null ? "" : IBaseEnum.getLabelByValue(accessType, DevAccessTypeEnum.class); + ; + argsStruct[1].operTaskId = operateTaskStruct.operTaskId; + detailStruct.operTaskArgsList = argsStruct; + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder( + detailStruct); + int result = 0; + try { + result = OAMManager.sendDeviceOper2Task(detailStructHolder); + }catch (Exception e){ + throw new BusinessException(ResultCode.NOT_GET_DEVICE); + } + if (result != 0) { + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + return detailStructHolder.value.operTask.operTaskId; + } + + private String findFileURLByOperation(long fileId, String operation){ + String url = ""; + if ("DownloadSoftVerFile".equals(operation)) { + url = findFileURLByFileId(fileId); + } else if ("DownloadConfig".equals(operation)) { + url = findFileURLByFileId(fileId); + } + return url; + } + private String findFileURLByFileId(long fileId){ + StringBuffer sb = new StringBuffer("FTP://"); + RFileInfoListHolder fileInfoListHolder = new RFileInfoListHolder(); + String sql = "from ITMS_FILE where ITMS_FILE.FILE_ID= " + fileId; + int result = InventoryManager.getFilesBySql(sql, 1, 10, + fileInfoListHolder); + if (result != 0) { + throw new BusinessException(ResultCode.DATA_NOT_FOUND); + } + + if (fileInfoListHolder.value.length > 0) { + RFileInfoStruct fileInfoStruct = fileInfoListHolder.value[0]; + RFileServerDetailListHolder fileServerDetailListHolder = new RFileServerDetailListHolder(); + result = InventoryManager + .getFileServerDetailByFileServerID( + fileInfoStruct.fileServerId, + fileServerDetailListHolder); + if (result != 0) { + throw new BusinessException(ResultCode.DATA_NOT_FOUND); + } + if (fileServerDetailListHolder.value.length > 0) { + sb.append(fileServerDetailListHolder.value[0].fileServer.ftpUsername) + .append(":") + .append(fileServerDetailListHolder.value[0].fileServer.ftpPassword) + .append("@").append(fileServerDetailListHolder.value[0].fileServer.ftpIp) + .append(":").append(fileServerDetailListHolder.value[0].fileServer.ftpPort) + .append("/").append(fileServerDetailListHolder.value[0].fileServer.ftpRootdir); + } + sb.append(fileInfoStruct.fileURL).append(fileInfoStruct.fileName); + } + return sb.toString(); + } + + @Override + public RemoteOperateResult findDevInfoArgsByDevIdIsTimeOut(Long devId, String command) { + String taskTimeOut = UIService.getTask_timeOut(); + if (StringUtils.isEmpty(taskTimeOut)) { + taskTimeOut = "10"; + } + long time = Long.parseLong(taskTimeOut) * TASK_TIME_OUT_CONST; + RemoteOperation operation = findDevInfoArgsByDevId(devId, command); + String tasktime = operation.getCreateTime(); + if (StringUtils.isNotEmpty(tasktime)) { + SimpleDateFormat dateFormat = new SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss"); + Date date0; + try { + date0 = dateFormat.parse(tasktime); + } catch (ParseException e) { + date0 = new Date(); + } + Date date1 = new Date(); + long taskTime = date1.getTime() - date0.getTime(); + // 连接设备超过20秒为超时 + if (command.equalsIgnoreCase("TouchDevice")) { + if (taskTime > 11 * 60 * 1000) //原30分钟 + // 连接超时时间设为11分钟 + { + operation.setOperationResult("1"); + deviceDynamicMapper.update(null,new LambdaUpdateWrapper() + .eq(DeviceDynamic::getDevId,devId) + .set(DeviceDynamic::getDevOnline, DevOnlineEnum.OFF_LINE.getValue()) + ); + } + } else if (taskTime >= time) { + operation.setOperationResult("2"); + } + // 连接设备超过20秒为超时 + } + return RemoteOperateResult. + builder() + .resultState(operation.getOperationResult()) + .resultCode(operation.getResultCode()) + .build(); + } + + private RemoteOperation findDevInfoArgsByDevId (Long devId, String operateName){ + OperateTask2 operateTask2 = operateTask2Mapper.findDOperateTask2StructByDevIdAndOperateName(devId,operateName); + if (operateTask2==null){ + return new RemoteOperation(); + } + DeviceDetail deviceDetail = deviceStaticMapper.findRDeviceDetailStructByDevId(devId); + if (deviceDetail!=null){ + OperateResult2 operateResult2 = operateResult2Mapper.findDOperateResultDetailStructByTaskIdAndDevId(operateTask2.getOperTaskId(),operateTask2.getDevId()); + return new RemoteOperation(operateTask2,deviceDetail,operateResult2); + } + return new RemoteOperation(); + } + +} diff --git a/src/main/java/com/bellmann/service/impl/TypeVerExtServiceImpl.java b/src/main/java/com/bellmann/service/impl/TypeVerExtServiceImpl.java index cc39ccf..287ccf9 100644 --- a/src/main/java/com/bellmann/service/impl/TypeVerExtServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/TypeVerExtServiceImpl.java @@ -24,7 +24,7 @@ public class TypeVerExtServiceImpl implements TypeVerExtService { private final TypeVerExtMapper typeVerExtMapper; @Override - public CapabilityForm getCapabilityForm(String typeAndVerId) { + public CapabilityForm getCapabilityForm(Long typeAndVerId) { List list = typeVerExtMapper.selectList( new LambdaUpdateWrapper() .eq(TypeVerExt::getTypeAndVerId, typeAndVerId) @@ -150,7 +150,7 @@ public class TypeVerExtServiceImpl implements TypeVerExtService { @Override public Result devCapabilityInfo(Long typeAndVerId) { - CapabilityForm capabilityForm = getCapabilityForm(typeAndVerId.toString()); + CapabilityForm capabilityForm = getCapabilityForm(typeAndVerId); if (capabilityForm==null){ return Result.success(new CapabilityVO()); } diff --git a/src/main/resources/mapper/DeviceStaticDetailMapper.xml b/src/main/resources/mapper/DeviceStaticDetailMapper.xml new file mode 100644 index 0000000..89072f8 --- /dev/null +++ b/src/main/resources/mapper/DeviceStaticDetailMapper.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/src/main/resources/mapper/DeviceStaticMapper.xml b/src/main/resources/mapper/DeviceStaticMapper.xml index 917f27d..1a27079 100644 --- a/src/main/resources/mapper/DeviceStaticMapper.xml +++ b/src/main/resources/mapper/DeviceStaticMapper.xml @@ -279,4 +279,36 @@ and b.dev_sno= #{pppoe} limit 1 + diff --git a/src/main/resources/mapper/OperateResult2Mapper.xml b/src/main/resources/mapper/OperateResult2Mapper.xml index 1a063d8..e57f18c 100644 --- a/src/main/resources/mapper/OperateResult2Mapper.xml +++ b/src/main/resources/mapper/OperateResult2Mapper.xml @@ -19,4 +19,21 @@ oper_task_id, dev_id, oper_start_time, oper_end_time, action_name, error_code, error_desc, result_state + diff --git a/src/main/resources/mapper/OperateResultArgsMapper.xml b/src/main/resources/mapper/OperateResultArgsMapper.xml new file mode 100644 index 0000000..3140e13 --- /dev/null +++ b/src/main/resources/mapper/OperateResultArgsMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + oper_task_id, args_name, args_value, rec_time + + + diff --git a/src/main/resources/mapper/OperateTask2Mapper.xml b/src/main/resources/mapper/OperateTask2Mapper.xml index d00fd2a..97315be 100644 --- a/src/main/resources/mapper/OperateTask2Mapper.xml +++ b/src/main/resources/mapper/OperateTask2Mapper.xml @@ -59,4 +59,46 @@ ORDER BY aa.OPER_TASK_CREATE_TIME DESC limit 1 + + + diff --git a/src/main/resources/mapper/OrderInfoMapper.xml b/src/main/resources/mapper/OrderInfoMapper.xml index e75d014..8592d69 100644 --- a/src/main/resources/mapper/OrderInfoMapper.xml +++ b/src/main/resources/mapper/OrderInfoMapper.xml @@ -161,11 +161,8 @@ LEFT JOIN ITMS_ORDER_INFO_DETAIL BB ON AA.ORDER_ID = BB.ORDER_ID where aa.system_domain >= #{domain} - - and aa.dev_sno_oui = #{devSnoOui} - - - and aa.pppoe_account = #{pppoeAccount} + + and aa.ad_no = #{devAdNo}