diff --git a/lib/oamapi.jar b/lib/oamapi.jar new file mode 100644 index 0000000..13f09c8 Binary files /dev/null and b/lib/oamapi.jar differ diff --git a/lib/oamserver.jar b/lib/oamserver.jar new file mode 100644 index 0000000..1e9eea7 Binary files /dev/null and b/lib/oamserver.jar differ diff --git a/pom.xml b/pom.xml index 7c0c368..d2956e3 100644 --- a/pom.xml +++ b/pom.xml @@ -187,7 +187,7 @@ com.zznode.cap capapi system - 1.0 + 2.0 ${project.basedir}/lib/capapi.jar @@ -204,6 +204,69 @@ 1.0 ${project.basedir}/lib/resourceapi.jar + + com.zznode.itms + acsapi + system + 1.0 + ${project.basedir}/lib/acsapi.jar + + + com.corba + OB + system + 1.0 + ${project.basedir}/lib/OB.jar + + + com.corba + OBEvent + system + 1.0 + ${project.basedir}/lib/OBEvent.jar + + + com.corba + OBNaming + system + 1.0 + ${project.basedir}/lib/OBNaming.jar + + + com.corba + OBNotify + system + 1.0 + ${project.basedir}/lib/OBNotify.jar + + + com.corba + OBTime + system + 1.0 + ${project.basedir}/lib/OBTime.jar + + + com.bellmann + server + system + 1.0 + ${project.basedir}/lib/server.jar + + + com.bellmann + CloudApi + system + 1.0 + ${project.basedir}/lib/CloudApi.jar + + + com.zznode.itms + oamapi + system + 1.0 + ${project.basedir}/lib/oamapi.jar + diff --git a/src/main/java/com/bellmann/common/enums/SoapDirectEnum.java b/src/main/java/com/bellmann/common/enums/SoapDirectEnum.java new file mode 100644 index 0000000..256a5e8 --- /dev/null +++ b/src/main/java/com/bellmann/common/enums/SoapDirectEnum.java @@ -0,0 +1,22 @@ +package com.bellmann.common.enums; + +import com.bellmann.common.base.IBaseEnum; +import lombok.Getter; + +public enum SoapDirectEnum implements IBaseEnum { + + NORMAL("0","CPE-->ACS"), + SIGN_OUT("1","ACS-->CPE"), + ; + + @Getter + private String value; + + @Getter + private String label; + + SoapDirectEnum(String value, String label){ + this.label = label; + this.value = value; + } +} diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 7633983..f18cf1c 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -113,7 +113,11 @@ public enum ResultCode implements IResultCode, Serializable { LOGICID_ALREADY_UNBINDING_ORDER_ALREADY_EXIST("F0022","逻辑ID已解绑,工单已存在!" ), UPDATE_DEVICE_FAILED("F0023", "更新设备信息失败"), - DEVICE_BINDING_FAILED("F0024","设备更换失败"); + DEVICE_BINDING_FAILED("F0024","设备更换失败"), + THE_PARAMETER_CANNOT_BE_EMPTY("F0025","参数不能为空" ), + OAM_INTERFACE_ERROR("F0026", "调用OAM接口报错"), + ACS_INTERFACE_ERROR("F0028", "调用ACS接口报错"); + @Override public String getCode() { return code; diff --git a/src/main/java/com/bellmann/controller/DeviceSoapLogController.java b/src/main/java/com/bellmann/controller/DeviceSoapLogController.java new file mode 100644 index 0000000..378b506 --- /dev/null +++ b/src/main/java/com/bellmann/controller/DeviceSoapLogController.java @@ -0,0 +1,69 @@ +package com.bellmann.controller; + + +import com.alibaba.excel.EasyExcel; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.result.PageResult; +import com.bellmann.common.result.Result; +import com.bellmann.model.vo.DeviceSoapLogExportVO; +import com.bellmann.model.vo.DeviceSoapLogVO; +import com.bellmann.service.DeviceSoapLogService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author 李小林 + * @since 2024-07-06 + */ +@Tag(name = "24.SOAP包日志") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/device-soap-log/v1") +public class DeviceSoapLogController { + + private final DeviceSoapLogService deviceSoapLogService; + @PostMapping("/page/{devId}") + @Operation(summary = "SOAP列表-page") + public PageResult soapPage(@RequestBody BasePageQuery query, @PathVariable Long devId){ + return PageResult.success(deviceSoapLogService.soapPage(query,devId)); + } + @PutMapping("/start/{devId}") + @Operation(summary = "soap-开始") + public Result soapStart(@PathVariable Long devId){ + return deviceSoapLogService.soapStart(devId); + } + @PutMapping("/stop/{devId}") + @Operation(summary = "soap-结束") + public Result soapEnd(@PathVariable Long devId){ + return deviceSoapLogService.soapEnd(devId); + } + @PutMapping("/delete/{devId}") + @Operation(summary = "soap-结束") + public Result soapDelete(@PathVariable Long devId){ + return deviceSoapLogService.soapDelete(devId); + } + + @Operation(summary = "导出SOAP") + @GetMapping("/_export/{devId}") + public void exportUsers(BasePageQuery query, HttpServletResponse response, @PathVariable Long devId) throws IOException { + String fileName = "SOAP.xlsx"; + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); + + List exportUserList = deviceSoapLogService.listExportSoaps(query,devId); + EasyExcel.write(response.getOutputStream(), DeviceSoapLogExportVO.class).sheet("SOAP") + .doWrite(exportUserList); + } +} + diff --git a/src/main/java/com/bellmann/converter/DeviceSoapLogConverter.java b/src/main/java/com/bellmann/converter/DeviceSoapLogConverter.java new file mode 100644 index 0000000..d9d775c --- /dev/null +++ b/src/main/java/com/bellmann/converter/DeviceSoapLogConverter.java @@ -0,0 +1,30 @@ +package com.bellmann.converter; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.model.entity.DeviceSoapLog; +import com.bellmann.model.vo.DeviceSoapLogExportVO; +import com.bellmann.model.vo.DeviceSoapLogVO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +import java.util.List; + +/** + * 用户对象转换器 + * + * + * @since 2022/6/8 + */ +@Mapper(componentModel = "spring") +public interface DeviceSoapLogConverter { + + @Mappings({ + @Mapping(target = "soapDirect", expression = "java(com.bellmann.common.base.IBaseEnum.getLabelByValue(entity.getSoapDirect(), com.bellmann.common.enums.SoapDirectEnum.class))"), + }) + DeviceSoapLogVO entityPage2VoPage(DeviceSoapLog entity); + + Page entityPage2VoPage(Page entityPage); + + List VO2Export(List records); +} diff --git a/src/main/java/com/bellmann/mapper/DeviceSoapLogMapper.java b/src/main/java/com/bellmann/mapper/DeviceSoapLogMapper.java new file mode 100644 index 0000000..47af102 --- /dev/null +++ b/src/main/java/com/bellmann/mapper/DeviceSoapLogMapper.java @@ -0,0 +1,18 @@ +package com.bellmann.mapper; + +import com.bellmann.model.entity.DeviceSoapLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-06 + */ +@Mapper +public interface DeviceSoapLogMapper extends BaseMapper { + +} diff --git a/src/main/java/com/bellmann/model/entity/DeviceSoapLog.java b/src/main/java/com/bellmann/model/entity/DeviceSoapLog.java new file mode 100644 index 0000000..413b055 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/DeviceSoapLog.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-06 + */ +@Data +@TableName("itms_device_soap_log") +@EqualsAndHashCode(callSuper = false) +public class DeviceSoapLog implements Serializable { + + private static final long serialVersionUID = 1L; + + private Date operTime; + + private String soapDirect; + + private String soapDesc; + + private Long devId; + + +} diff --git a/src/main/java/com/bellmann/model/vo/DeviceSoapLogExportVO.java b/src/main/java/com/bellmann/model/vo/DeviceSoapLogExportVO.java new file mode 100644 index 0000000..ab94c63 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DeviceSoapLogExportVO.java @@ -0,0 +1,29 @@ +package com.bellmann.model.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author 李小林 + * @since 2024-07-06 + */ +@Data +@ColumnWidth(20) +public class DeviceSoapLogExportVO { + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") + @ExcelProperty(value = "操作时间") + private Date operTime; + @ExcelProperty(value = "操作方向") + private String soapDirect; + @ExcelProperty(value = "描述") + private String soapDesc; + +} diff --git a/src/main/java/com/bellmann/model/vo/DeviceSoapLogVO.java b/src/main/java/com/bellmann/model/vo/DeviceSoapLogVO.java new file mode 100644 index 0000000..4f00acb --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DeviceSoapLogVO.java @@ -0,0 +1,29 @@ +package com.bellmann.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author 李小林 + * @since 2024-07-06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(description = "SOAP包列表视图") +public class DeviceSoapLogVO{ + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") + private Date operTime; + + private String soapDirect; + + private String soapDesc; + +} diff --git a/src/main/java/com/bellmann/service/DeviceSoapLogService.java b/src/main/java/com/bellmann/service/DeviceSoapLogService.java new file mode 100644 index 0000000..002e345 --- /dev/null +++ b/src/main/java/com/bellmann/service/DeviceSoapLogService.java @@ -0,0 +1,30 @@ +package com.bellmann.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.result.Result; +import com.bellmann.model.vo.DeviceSoapLogExportVO; +import com.bellmann.model.vo.DeviceSoapLogVO; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-06 + */ +public interface DeviceSoapLogService { + + Page soapPage(BasePageQuery query, Long devId); + + Result soapStart(Long devId); + + Result soapEnd(Long devId); + + Result soapDelete(Long devId); + + List listExportSoaps(BasePageQuery query, Long devId); +} diff --git a/src/main/java/com/bellmann/service/impl/DeviceSoapLogServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceSoapLogServiceImpl.java new file mode 100644 index 0000000..698796a --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/DeviceSoapLogServiceImpl.java @@ -0,0 +1,90 @@ +package com.bellmann.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.exception.BusinessException; +import com.bellmann.common.result.Result; +import com.bellmann.common.result.ResultCode; +import com.bellmann.converter.DeviceSoapLogConverter; +import com.bellmann.mapper.DeviceSoapLogMapper; +import com.bellmann.model.entity.DeviceSoapLog; +import com.bellmann.model.vo.DeviceSoapLogExportVO; +import com.bellmann.model.vo.DeviceSoapLogVO; +import com.bellmann.service.DeviceSoapLogService; +import com.zznode.itms.api.OAMManager; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-06 + */ +@Service +@RequiredArgsConstructor +public class DeviceSoapLogServiceImpl implements DeviceSoapLogService { + + private final DeviceSoapLogMapper deviceSoapLogMapper; + + private final DeviceSoapLogConverter deviceSoapLogConverter; + @Override + public Page soapPage(BasePageQuery query, Long devId) { + int pageNum = query.getPageNum(); + int pageSize = query.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + Page entityPage = deviceSoapLogMapper.selectPage(page, new LambdaQueryWrapper() + .eq(DeviceSoapLog::getDevId, devId) + ); + return deviceSoapLogConverter.entityPage2VoPage(entityPage); + } + + @Override + public Result soapStart(Long devId) { + if (devId==null){ + throw new BusinessException(ResultCode.THE_PARAMETER_CANNOT_BE_EMPTY); + } + try { + OAMManager.startSoapMonitor(devId); + return Result.success(); + }catch (Exception e){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + } + + @Override + public Result soapEnd(Long devId) { + if (devId==null){ + throw new BusinessException(ResultCode.THE_PARAMETER_CANNOT_BE_EMPTY); + } + try { + OAMManager.stopSoapMonitor(devId); + return Result.success(); + }catch (Exception e){ + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + } + + @Override + public Result soapDelete(Long devId) { + if (devId==null){ + throw new BusinessException(ResultCode.THE_PARAMETER_CANNOT_BE_EMPTY); + } + deviceSoapLogMapper.delete(new LambdaQueryWrapper() + .eq(DeviceSoapLog::getDevId,devId) + ); + return Result.success(); + } + + @Override + public List listExportSoaps(BasePageQuery query, Long devId) { + List records = soapPage(query, devId).getRecords(); + return deviceSoapLogConverter.VO2Export(records); + + } +} diff --git a/src/main/resources/mapper/DeviceSoapLogMapper.xml b/src/main/resources/mapper/DeviceSoapLogMapper.xml new file mode 100644 index 0000000..d5e368f --- /dev/null +++ b/src/main/resources/mapper/DeviceSoapLogMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + oper_time, soap_direct, soap_desc, dev_id + + +