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
+
+
+