From 468d5a64c2e80973a09ef1634a21c60b54e8869c Mon Sep 17 00:00:00 2001 From: lvys Date: Fri, 28 Feb 2025 11:03:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DklSecurityEquipmentControllerTest.java | 283 +++++++++++++++ .../large/domain/DklSecurityEquipment.java | 102 ++++++ .../mapper/DklSecurityEquipmentMapper.java | 61 ++++ .../service/IDklSecurityEquipmentService.java | 74 ++++ .../impl/DklSecurityEquipmentServiceImpl.java | 333 ++++++++++++++++++ .../large/DklSecurityEquipmentMapper.xml | 152 ++++++++ 6 files changed, 1005 insertions(+) create mode 100644 Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/controller/DklSecurityEquipmentControllerTest.java create mode 100644 Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/domain/DklSecurityEquipment.java create mode 100644 Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/mapper/DklSecurityEquipmentMapper.java create mode 100644 Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/IDklSecurityEquipmentService.java create mode 100644 Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/impl/DklSecurityEquipmentServiceImpl.java create mode 100644 Dkl-Vue-master/dkl-large/src/test/resources/mapper/large/DklSecurityEquipmentMapper.xml diff --git a/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/controller/DklSecurityEquipmentControllerTest.java b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/controller/DklSecurityEquipmentControllerTest.java new file mode 100644 index 0000000..11f3809 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/controller/DklSecurityEquipmentControllerTest.java @@ -0,0 +1,283 @@ +package com.dkl.large.controller; + +import com.dkl.common.core.domain.AjaxResult; +import com.dkl.common.core.page.TableDataInfo; +import com.dkl.large.domain.DklSecurityEquipment; +import com.dkl.large.service.IDklSecurityEquipmentService; +import com.koal.kms.sdk.ed.KmsSdkException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +/** + * 安保力量(物)Controller单元测试 + * 与之前风格保持一致:JUnit 5 + Mockito,覆盖所有核心接口 + * + * @author Falling + * @date 2025-06-16 + */ +@ExtendWith(MockitoExtension.class) +public class DklSecurityEquipmentControllerTest { + + // 待测试的Controller(自动注入Mock的Service依赖) + @InjectMocks + private DklSecurityEquipmentController securityEquipmentController; + + // 模拟Controller依赖的Service层(解耦真实数据库与业务逻辑) + @Mock + private IDklSecurityEquipmentService securityEquipmentService; + + // 模拟HTTP响应对象(用于导出/导入模板接口) + private MockHttpServletResponse mockResponse; + + // 测试用的核心实体数据 + private DklSecurityEquipment testEquipment; + + // 测试用的实体列表数据 + private List testEquipmentList; + + /** + * 每个测试方法执行前初始化数据(保证测试用例独立性) + */ + @BeforeEach + void setUp() { + // 1. 初始化模拟HTTP响应 + mockResponse = new MockHttpServletResponse(); + + // 2. 初始化单个安保力量(物)实体 + testEquipment = new DklSecurityEquipment(); + testEquipment.setId(1L); + testEquipment.setDelFlag("0"); + testEquipment.setCreateTime(new Date()); + testEquipment.setCreateBy("admin"); + testEquipment.setDeptId(100L); + testEquipment.setUpdateTime(new Date()); + testEquipment.setUpdateBy("admin"); + + // 3. 初始化实体列表 + testEquipmentList = new ArrayList<>(); + testEquipmentList.add(testEquipment); + + // 4. 模拟Security上下文(解决getUsername()/getDeptId()等权限方法依赖) + Authentication authentication = mock(Authentication.class); + SecurityContextHolder.getContext().setAuthentication(authentication); + doReturn("admin").when(authentication).getName(); + } + + /** + * 测试:查询安保力量(物)列表(list接口) + */ + @Test + void testList() throws KmsSdkException { + // 步骤1:模拟Service层返回数据 + when(securityEquipmentService.selectDklSecurityEquipmentList(any(DklSecurityEquipment.class))) + .thenReturn(testEquipmentList); + + // 步骤2:调用Controller接口执行测试 + TableDataInfo result = securityEquipmentController.list(testEquipment); + + // 步骤3:断言结果(验证返回数据的有效性) + assertNotNull(result, "返回的TableDataInfo不能为null"); + assertEquals(1, result.getRows().size(), "返回的列表数据条数应为1"); + assertEquals(testEquipment.getId(), ((DklSecurityEquipment) result.getRows().get(0)).getId(), "返回的实体ID应与测试数据一致"); + + // 步骤4:验证Service方法被正确调用(确保流程无遗漏) + verify(securityEquipmentService, times(1)).selectDklSecurityEquipmentList(any(DklSecurityEquipment.class)); + } + + /** + * 测试:查询安保力量(物)消息(listMessage接口) + */ + @Test + void testListMessage() throws KmsSdkException { + // 步骤1:模拟Service层返回消息 + String mockSuccessMsg = "查询成功,共获取1条安保力量数据"; + when(securityEquipmentService.selectDklSecurityEquipmentListMessage(any(DklSecurityEquipment.class))) + .thenReturn(mockSuccessMsg); + + // 步骤2:调用Controller接口执行测试 + AjaxResult result = securityEquipmentController.listMessage(testEquipment); + + // 步骤3:断言结果 + assertNotNull(result, "返回的AjaxResult不能为null"); + assertTrue(result.isSuccess(), "接口应返回成功状态"); + assertEquals(mockSuccessMsg, result.getData(), "返回的消息应与模拟数据一致"); + + // 步骤4:验证Service方法调用 + verify(securityEquipmentService, times(1)).selectDklSecurityEquipmentListMessage(any(DklSecurityEquipment.class)); + } + + /** + * 测试:导出安保力量(物)列表(export接口,无返回值,验证流程有效性) + */ + @Test + void testExport() throws KmsSdkException { + // 步骤1:模拟Service层返回列表数据 + when(securityEquipmentService.selectDklSecurityEquipmentList(any(DklSecurityEquipment.class))) + .thenReturn(testEquipmentList); + + // 步骤2:调用导出接口(无返回值,验证无异常抛出即可) + assertDoesNotThrow(() -> securityEquipmentController.export(mockResponse, testEquipment), + "导出接口执行过程中不应抛出异常"); + + // 步骤3:验证Service方法被调用,且响应状态正常 + verify(securityEquipmentService, times(1)).selectDklSecurityEquipmentList(any(DklSecurityEquipment.class)); + assertEquals(200, mockResponse.getStatus(), "HTTP响应状态码应为200"); + } + + /** + * 测试:获取安保力量(物)详细信息(getInfo接口) + */ + @Test + void testGetInfo() throws KmsSdkException { + // 步骤1:模拟Service层返回单个实体数据 + when(securityEquipmentService.selectDklSecurityEquipmentById(anyLong())).thenReturn(testEquipment); + + // 步骤2:调用Controller接口执行测试 + AjaxResult result = securityEquipmentController.getInfo(1L); + + // 步骤3:断言结果 + assertNotNull(result, "返回的AjaxResult不能为null"); + assertTrue(result.isSuccess(), "接口应返回成功状态"); + assertEquals(testEquipment.getId(), ((DklSecurityEquipment) result.getData()).getId(), "返回的实体ID应与测试数据一致"); + + // 步骤4:验证Service方法调用 + verify(securityEquipmentService, times(1)).selectDklSecurityEquipmentById(1L); + } + + /** + * 测试:新增安保力量(物)(add接口) + */ + @Test + void testAdd() throws KmsSdkException { + // 步骤1:模拟Service层新增成功(返回1表示操作成功) + when(securityEquipmentService.insertDklSecurityEquipment(any(DklSecurityEquipment.class))).thenReturn(1); + + // 步骤2:调用Controller接口执行测试 + AjaxResult result = securityEquipmentController.add(testEquipment); + + // 步骤3:断言结果 + assertNotNull(result, "返回的AjaxResult不能为null"); + assertTrue(result.isSuccess(), "新增接口应返回成功状态"); + assertEquals(1, result.getData(), "新增操作应返回1表示成功"); + + // 步骤4:验证实体系统字段被正确设置(核心业务逻辑校验) + verify(securityEquipmentService).insertDklSecurityEquipment(argThat(equipment -> + "0".equals(equipment.getDelFlag()) && + "admin".equals(equipment.getCreateBy()) && + 100L.equals(equipment.getDeptId()) && + equipment.getCreateTime() != null && + equipment.getUpdateTime() != null + )); + } + + /** + * 测试:修改安保力量(物)(edit接口) + */ + @Test + void testEdit() throws KmsSdkException { + // 步骤1:模拟Service层修改成功(返回1表示操作成功) + when(securityEquipmentService.updateDklSecurityEquipment(any(DklSecurityEquipment.class))).thenReturn(1); + + // 步骤2:调用Controller接口执行测试 + AjaxResult result = securityEquipmentController.edit(testEquipment); + + // 步骤3:断言结果 + assertNotNull(result, "返回的AjaxResult不能为null"); + assertTrue(result.isSuccess(), "修改接口应返回成功状态"); + assertEquals(1, result.getData(), "修改操作应返回1表示成功"); + + // 步骤4:验证实体更新字段被正确设置 + verify(securityEquipmentService).updateDklSecurityEquipment(argThat(equipment -> + "admin".equals(equipment.getUpdateBy()) && + equipment.getUpdateTime() != null + )); + } + + /** + * 测试:删除安保力量(物)(remove接口,批量删除) + */ + @Test + void testRemove() { + // 步骤1:准备批量删除ID数组 + Long[] ids = {1L, 2L}; + + // 步骤2:模拟Service层删除成功(返回2表示删除2条数据) + when(securityEquipmentService.deleteDklSecurityEquipmentByIds(any(Long[].class))).thenReturn(2); + + // 步骤3:调用Controller接口执行测试 + AjaxResult result = securityEquipmentController.remove(ids); + + // 步骤4:断言结果 + assertNotNull(result, "返回的AjaxResult不能为null"); + assertTrue(result.isSuccess(), "删除接口应返回成功状态"); + assertEquals(2, result.getData(), "删除操作应返回2表示成功删除2条数据"); + + // 步骤5:验证Service方法调用 + verify(securityEquipmentService, times(1)).deleteDklSecurityEquipmentByIds(any(Long[].class)); + } + + /** + * 测试:导入安保力量(物)数据(importData接口) + * @throws Exception 导入过程中的异常 + */ + @Test + void testImportData() throws Exception { + // 步骤1:模拟Excel上传文件(空流,仅验证流程有效性) + MockMultipartFile mockFile = new MockMultipartFile( + "file", + "security_equipment.xlsx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + new ByteArrayInputStream(new byte[0]) + ); + + // 步骤2:模拟Service层返回导入成功消息 + String mockImportMsg = "导入成功,共导入0条有效数据"; + when(securityEquipmentService.importData(anyList(), anyBoolean(), anyString())) + .thenReturn(mockImportMsg); + + // 步骤3:调用Controller接口执行测试(updateSupport为true) + AjaxResult result = securityEquipmentController.importData(mockFile, true); + + // 步骤4:断言结果 + assertNotNull(result, "返回的AjaxResult不能为null"); + assertTrue(result.isSuccess(), "导入接口应返回成功状态"); + assertEquals(mockImportMsg, result.getData(), "导入消息应与模拟数据一致"); + + // 步骤5:验证Service方法调用 + verify(securityEquipmentService, times(1)).importData(anyList(), eq(true), eq("admin")); + } + + /** + * 测试:下载安保力量(物)导入模板(importTemplate接口) + */ + @Test + void testImportTemplate() { + // 步骤1:调用导入模板接口(无返回值,验证无异常抛出) + assertDoesNotThrow(() -> securityEquipmentController.importTemplate(mockResponse), + "下载导入模板接口不应抛出异常"); + + // 步骤2:验证响应状态正常(模板下载流程有效) + assertEquals(200, mockResponse.getStatus(), "HTTP响应状态码应为200"); + assertTrue(mockResponse.getContentType().contains("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"), + "响应内容应为Excel格式"); + } +} \ No newline at end of file diff --git a/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/domain/DklSecurityEquipment.java b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/domain/DklSecurityEquipment.java new file mode 100644 index 0000000..5e714ff --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/domain/DklSecurityEquipment.java @@ -0,0 +1,102 @@ +package com.dkl.large.domain; + +import java.math.BigDecimal; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.dkl.common.annotation.Excel; +import com.dkl.common.core.domain.BaseEntity; + +/** + * 安保力量(物)对象 dkl_security_equipment + * + * @author Falling + * @date 2025-06-16 + */ +@Data +public class DklSecurityEquipment extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + private Long id; + + /** 设备名称 */ + @Excel(name = "设备名称") + private String deviceName; + + /** 型号 */ + @Excel(name = "型号") + private String model; + + /** 安装位置 */ + @Excel(name = "安装位置") + private String installationPosition; + + /** 购置日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "购置日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date buyTime; + + /** 价格 */ + @Excel(name = "价格") + private BigDecimal price; + + /** 维护周期 */ + @Excel(name = "维护周期") + private String maintenanceCycle; + + /** 上次维护日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "上次维护日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date lastMaintenanceTime; + + /** 维护情况 */ + @Excel(name = "维护情况") + private String maintenanceSituation; + + /** 维护责任人 */ + @Excel(name = "维护责任人") + private String maintenancePersonnel; + + /** 设备状态 */ + @Excel(name = "设备状态") + private String state; + + /** 监控点信息ID */ +// @Excel(name = "监控点信息ID") + private Long monitoringPointsId; + + /** '删除标志(0代表存在 2代表删除) */ + private String delFlag; + + /** 部门id */ +// @Excel(name = "部门id") + private Long deptId; + + /** 名称 */ + @Excel(name = "监控点名称") + private String pointName; + /** 地址 */ + private String pointAddress; + /** 经度 */ + private String lng; + /** 纬度 */ + private String lat; + + private String sigenCode; + /** 开始时间 */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** 结束时间 */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + +} diff --git a/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/mapper/DklSecurityEquipmentMapper.java b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/mapper/DklSecurityEquipmentMapper.java new file mode 100644 index 0000000..9030cc5 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/mapper/DklSecurityEquipmentMapper.java @@ -0,0 +1,61 @@ +package com.dkl.large.mapper; + +import java.util.List; +import com.dkl.large.domain.DklSecurityEquipment; + +/** + * 安保力量(物)Mapper接口 + * + * @author Falling + * @date 2025-06-16 + */ +public interface DklSecurityEquipmentMapper +{ + /** + * 查询安保力量(物) + * + * @param id 安保力量(物)主键 + * @return 安保力量(物) + */ + public DklSecurityEquipment selectDklSecurityEquipmentById(Long id); + + /** + * 查询安保力量(物)列表 + * + * @param dklSecurityEquipment 安保力量(物) + * @return 安保力量(物)集合 + */ + public List selectDklSecurityEquipmentList(DklSecurityEquipment dklSecurityEquipment); + + /** + * 新增安保力量(物) + * + * @param dklSecurityEquipment 安保力量(物) + * @return 结果 + */ + public int insertDklSecurityEquipment(DklSecurityEquipment dklSecurityEquipment); + + /** + * 修改安保力量(物) + * + * @param dklSecurityEquipment 安保力量(物) + * @return 结果 + */ + public int updateDklSecurityEquipment(DklSecurityEquipment dklSecurityEquipment); + + /** + * 删除安保力量(物) + * + * @param id 安保力量(物)主键 + * @return 结果 + */ + public int deleteDklSecurityEquipmentById(Long id); + + /** + * 批量删除安保力量(物) + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDklSecurityEquipmentByIds(Long[] ids); +} diff --git a/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/IDklSecurityEquipmentService.java b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/IDklSecurityEquipmentService.java new file mode 100644 index 0000000..8f923af --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/IDklSecurityEquipmentService.java @@ -0,0 +1,74 @@ +package com.dkl.large.service; + +import java.util.List; + +import com.koal.kms.sdk.ed.KmsSdkException; +import com.dkl.common.core.domain.entity.SysUser; +import com.dkl.large.domain.DklSecurityEquipment; + +/** + * 安保力量(物)Service接口 + * + * @author Falling + * @date 2025-06-16 + */ +public interface IDklSecurityEquipmentService +{ + /** + * 查询安保力量(物) + * + * @param id 安保力量(物)主键 + * @return 安保力量(物) + */ + public DklSecurityEquipment selectDklSecurityEquipmentById(Long id) throws KmsSdkException; + + /** + * 查询安保力量(物)列表 + * + * @param dklSecurityEquipment 安保力量(物) + * @return 安保力量(物)集合 + */ + public List selectDklSecurityEquipmentList(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException; + public String selectDklSecurityEquipmentListMessage(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException; + /** + * 新增安保力量(物) + * + * @param dklSecurityEquipment 安保力量(物) + * @return 结果 + */ + public int insertDklSecurityEquipment(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException; + + /** + * 修改安保力量(物) + * + * @param dklSecurityEquipment 安保力量(物) + * @return 结果 + */ + public int updateDklSecurityEquipment(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException; + + /** + * 批量删除安保力量(物) + * + * @param ids 需要删除的安保力量(物)主键集合 + * @return 结果 + */ + public int deleteDklSecurityEquipmentByIds(Long[] ids); + + /** + * 删除安保力量(物)信息 + * + * @param id 安保力量(物)主键 + * @return 结果 + */ + public int deleteDklSecurityEquipmentById(Long id); + + /** + * 导入数据 + * + * @param list 数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + public String importData(List list, Boolean isUpdateSupport, String operName) throws KmsSdkException; +} diff --git a/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/impl/DklSecurityEquipmentServiceImpl.java b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/impl/DklSecurityEquipmentServiceImpl.java new file mode 100644 index 0000000..993725e --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/test/java/com/dkl/large/service/impl/DklSecurityEquipmentServiceImpl.java @@ -0,0 +1,333 @@ +package com.dkl.large.service.impl; + +import java.util.Date; +import java.util.List; +import java.util.regex.Pattern; + +import com.koal.kms.sdk.ed.KmsSdkException; +import com.dkl.common.core.domain.entity.SysDictData; +import com.dkl.common.core.domain.entity.SysUser; +import com.dkl.common.exception.ServiceException; +import com.dkl.common.utils.DateUtils; +import com.dkl.common.utils.SecurityUtils; +import com.dkl.common.utils.StringUtils; +import com.dkl.common.utils.bean.BeanValidators; +import com.dkl.large.domain.DklActivity; +import com.dkl.large.domain.DklMonitoringPoints; +import com.dkl.large.mapper.DklMonitoringPointsMapper; +import com.dkl.large.service.IDklMonitoringPointsService; +import com.dkl.large.utli.EnciphermentUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.dkl.large.mapper.DklSecurityEquipmentMapper; +import com.dkl.large.domain.DklSecurityEquipment; +import com.dkl.large.service.IDklSecurityEquipmentService; + +import static com.dkl.common.utils.SecurityUtils.getDeptId; +import static com.dkl.common.utils.SecurityUtils.getUsername; +import static org.springframework.util.SerializationUtils.serialize; + +/** + * 安保力量(物)Service业务层处理 + * + * @author Falling + * @date 2025-06-16 + */ +@Service +public class DklSecurityEquipmentServiceImpl implements IDklSecurityEquipmentService +{ + private static final Logger log = LoggerFactory.getLogger(DklSecurityEquipmentServiceImpl.class); + + @Autowired + private DklSecurityEquipmentMapper dklSecurityEquipmentMapper; + + @Autowired + private DklMonitoringPointsMapper dklMonitoringPointsMapper; + + /** + * 查询安保力量(物) + * + * @param id 安保力量(物)主键 + * @return 安保力量(物) + */ + @Override + public DklSecurityEquipment selectDklSecurityEquipmentById(Long id) throws KmsSdkException { + DklSecurityEquipment dklSecurityEquipmentInfo = dklSecurityEquipmentMapper.selectDklSecurityEquipmentById(id); + if (StringUtils.isNotEmpty(dklSecurityEquipmentInfo.getMaintenancePersonnel())){ + String maintenancePersonnel = dklSecurityEquipmentInfo.getMaintenancePersonnel(); + dklSecurityEquipmentInfo.setMaintenancePersonnel(EnciphermentUtil.kmsDencrypt(maintenancePersonnel)); + } + return dklSecurityEquipmentInfo; + } + + /** + * 查询安保力量(物)列表 + * + * @param dklSecurityEquipment 安保力量(物) + * @return 安保力量(物) + */ + @Override + public List selectDklSecurityEquipmentList(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException { + List dklSecurityEquipmentList = dklSecurityEquipmentMapper.selectDklSecurityEquipmentList(dklSecurityEquipment); + for (DklSecurityEquipment dklSecurityEquipmentInfo : dklSecurityEquipmentList) { + if (StringUtils.isNotEmpty(dklSecurityEquipmentInfo.getMaintenancePersonnel())) { + String maintenancePersonnel = dklSecurityEquipmentInfo.getMaintenancePersonnel(); + dklSecurityEquipmentInfo.setMaintenancePersonnel(EnciphermentUtil.kmsDencrypt(maintenancePersonnel)); + } + } + return dklSecurityEquipmentList; + } + + @Override + public String selectDklSecurityEquipmentListMessage(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException { + StringBuilder successMsg = new StringBuilder(); + List dklSecurityEquipmentList = dklSecurityEquipmentMapper.selectDklSecurityEquipmentList(dklSecurityEquipment); + for (DklSecurityEquipment dklSecurityEquipmentInfo : dklSecurityEquipmentList) { + if (StringUtils.isNotEmpty(dklSecurityEquipmentInfo.getMaintenancePersonnel())) { + String maintenancePersonnel = dklSecurityEquipmentInfo.getMaintenancePersonnel(); + dklSecurityEquipmentInfo.setMaintenancePersonnel(EnciphermentUtil.kmsDencrypt(maintenancePersonnel)); + } + if (StringUtils.isNotEmpty(dklSecurityEquipmentInfo.getSigenCode()) && ("0").equals(dklSecurityEquipmentInfo.getDelFlag())) { + byte[] bytes = serialize(dklSecurityEquipmentInfo.getMaintenancePersonnel()); + String isor = EnciphermentUtil.kmsSign(bytes); + if (!isor.equals(dklSecurityEquipmentInfo.getSigenCode())) { + successMsg.append("活名称为" + dklSecurityEquipmentInfo.getMaintenancePersonnel() + "的数据被篡改"); + } + + } + } + + return successMsg.toString(); + } + + /** + * 新增安保力量(物) + * + * @param dklSecurityEquipment 安保力量(物) + * @return 结果 + */ + @Override + public int insertDklSecurityEquipment(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException { + dklSecurityEquipment.setCreateTime(DateUtils.getNowDate()); + if (StringUtils.isNotEmpty(dklSecurityEquipment.getMaintenancePersonnel())) { + String maintenancePersonnel = dklSecurityEquipment.getMaintenancePersonnel(); + dklSecurityEquipment.setMaintenancePersonnel(EnciphermentUtil.kmsEncrypt(maintenancePersonnel)); + // (序列化) + byte[] bytes = serialize(maintenancePersonnel); + String sigenCode = EnciphermentUtil.kmsSign(bytes); + dklSecurityEquipment.setSigenCode(sigenCode); + } + + return dklSecurityEquipmentMapper.insertDklSecurityEquipment(dklSecurityEquipment); + } + + /** + * 修改安保力量(物) + * + * @param dklSecurityEquipment 安保力量(物) + * @return 结果 + */ + @Override + public int updateDklSecurityEquipment(DklSecurityEquipment dklSecurityEquipment) throws KmsSdkException { + dklSecurityEquipment.setUpdateTime(DateUtils.getNowDate()); + if (StringUtils.isNotEmpty(dklSecurityEquipment.getMaintenancePersonnel())) { + String maintenancePersonnel = dklSecurityEquipment.getMaintenancePersonnel(); + dklSecurityEquipment.setMaintenancePersonnel(EnciphermentUtil.kmsEncrypt(maintenancePersonnel)); + // (序列化) + byte[] bytes = serialize(maintenancePersonnel); + String sigenCode = EnciphermentUtil.kmsSign(bytes); + dklSecurityEquipment.setSigenCode(sigenCode); + } + return dklSecurityEquipmentMapper.updateDklSecurityEquipment(dklSecurityEquipment); + } + + /** + * 批量删除安保力量(物) + * + * @param ids 需要删除的安保力量(物)主键 + * @return 结果 + */ + @Override + public int deleteDklSecurityEquipmentByIds(Long[] ids) + { + return dklSecurityEquipmentMapper.deleteDklSecurityEquipmentByIds(ids); + } + + /** + * 删除安保力量(物)信息 + * + * @param id 安保力量(物)主键 + * @return 结果 + */ + @Override + public int deleteDklSecurityEquipmentById(Long id) + { + return dklSecurityEquipmentMapper.deleteDklSecurityEquipmentById(id); + } + + /** + * 导入数据 + * + * @param list 数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + @Override + public String importData(List list, Boolean isUpdateSupport, String operName) throws KmsSdkException { + DklMonitoringPoints points = new DklMonitoringPoints(); + List pointsList = dklMonitoringPointsMapper.selectDklMonitoringPointsList(points); + + if (StringUtils.isNull(list) || list.size() == 0) { + throw new ServiceException("导入数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + try + { + //设备名称 + if (StringUtils.isEmpty(list.get(i).getDeviceName())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据设备名称为空"); + }else{ + if (list.get(i).getDeviceName().length()>=100){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据设备名称长度过长"); + } + } + + //型号 + if (StringUtils.isEmpty(list.get(i).getModel())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据型号为空"); + }else{ + if (list.get(i).getModel().length()>=30){ + failureNum++; + failureMsg.append("
第" +(i+1)+ "条数据型号长度过长"); + } + } + + //安装位置 + if (StringUtils.isEmpty(list.get(i).getInstallationPosition())){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据安装位置为空"); + }else{ + if (list.get(i).getInstallationPosition().length()>=255){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据安装位置长度过长"); + } + } + + //购置日期 + if (StringUtils.isEmpty(list.get(i).getBuyTime().toString())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据购置时间为空,时间应该为yyyy-MM-dd"); + } else if (list.get(i).getBuyTime() == null || list.get(i).getBuyTime().getTime() == 0) { + failureMsg.append("
第" + (i+1) + "条数据购置时间无效,时间应该为yyyy-MM-dd"); + } + + //价格 + if (StringUtils.isEmpty(list.get(i).getPrice().toString())){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据价格为空"); + }else{ + if (list.get(i).getInstallationPosition().length()>=9){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据价格长度过长"); + } + } + + //维护周期 + if (StringUtils.isNotEmpty(list.get(i).getMaintenanceCycle()) && list.get(i).getMaintenanceCycle().length()>=30 ){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据维护周期长度过长"); + } + + //上次维护日期 + if (StringUtils.isEmpty(list.get(i).getLastMaintenanceTime().toString())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据上次维护日期为空,时间应该为yyyy-MM-dd"); + }else if (list.get(i).getLastMaintenanceTime() == null || list.get(i).getLastMaintenanceTime().getTime() == 0) { + failureMsg.append("
第" + (i+1) + "条数据上次维护日期无效,时间应该为yyyy-MM-dd"); + } + + //维护情况 + if (StringUtils.isNotEmpty(list.get(i).getMaintenanceSituation()) && list.get(i).getMaintenanceSituation().length()>=255 ){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据维护周期长度过长"); + } + //维护责任人 + if (StringUtils.isNotEmpty(list.get(i).getMaintenancePersonnel()) && list.get(i).getMaintenancePersonnel().length()>=30 ){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据维护周期长度过长"); + } + + //状态 + if (StringUtils.isEmpty(list.get(i).getState())){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据设备状态为空"); + }else{ + if (list.get(i).getState().length()>=9){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据设备状态长度过长"); + } + } + + //监控点 + if (StringUtils.isNotEmpty(list.get(i).getPointName())){ + for (DklMonitoringPoints monitoringPoints: pointsList){ + if (monitoringPoints.getPointName().equals(list.get(i).getPointName())){ + list.get(i).setMonitoringPointsId((long) monitoringPoints.getId()); + } + } + if (StringUtils.isNull(String.valueOf(list.get(i).getMonitoringPointsId()))){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据监控点名称找不到"); + } + } + + } + catch (Exception e) + { + failureNum++; + String msg = "
" + failureNum + "导入失败请检查数据类型"; + failureMsg.append(msg + e.getMessage()); + } + } + if (failureNum > 0) + { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } + else + { + for (DklSecurityEquipment equipment :list){ + //添加系统信息 + equipment.setDelFlag("0"); + equipment.setCreateTime(new Date()); + equipment.setCreateBy(getUsername()); + equipment.setDeptId(getDeptId()); + equipment.setUpdateTime(new Date()); + equipment.setUpdateBy(getUsername()); + if (StringUtils.isNotEmpty(equipment.getMaintenancePersonnel())) { + String maintenancePersonnel = equipment.getMaintenancePersonnel(); + equipment.setMaintenancePersonnel(EnciphermentUtil.kmsEncrypt(maintenancePersonnel)); + // (序列化) + byte[] bytes = serialize(maintenancePersonnel); + String sigenCode = EnciphermentUtil.kmsSign(bytes); + equipment.setSigenCode(sigenCode); + } + + dklSecurityEquipmentMapper.insertDklSecurityEquipment(equipment); + } + successMsg.insert(0, "恭喜您,数据已全部导入成功!"); + } + + return successMsg.toString(); + } +} diff --git a/Dkl-Vue-master/dkl-large/src/test/resources/mapper/large/DklSecurityEquipmentMapper.xml b/Dkl-Vue-master/dkl-large/src/test/resources/mapper/large/DklSecurityEquipmentMapper.xml new file mode 100644 index 0000000..8536855 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/test/resources/mapper/large/DklSecurityEquipmentMapper.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select dsp.id, dsp.device_name, dsp.model, dsp.installation_position, dsp.buy_time, dsp.price, dsp.maintenance_cycle, dsp.last_maintenance_time, dsp.maintenance_situation, dsp.maintenance_personnel, dsp.state, dsp.remark, + dsp.monitoring_points_id, dsp.create_by, dsp.create_time, dsp.update_by, dsp.update_time, dsp.del_flag, dsp.dept_id,dsp.sigen_code, + dmp.lng, dmp.lat, dmp.point_name AS pointName, dmp.point_address + from dkl_security_equipment dsp + Left join sys_dept d on dsp.dept_id = d.dept_id + Left Join dkl_monitoring_points dmp on dmp.id = dsp.monitoring_points_id + + + + + + + + insert into dkl_security_equipment + + id, + device_name, + model, + installation_position, + buy_time, + price, + maintenance_cycle, + last_maintenance_time, + maintenance_situation, + maintenance_personnel, + state, + remark, + monitoring_points_id, + create_by, + create_time, + update_by, + update_time, + del_flag, + dept_id, + sigen_code, + + + #{id}, + #{deviceName}, + #{model}, + #{installationPosition}, + #{buyTime}, + #{price}, + #{maintenanceCycle}, + #{lastMaintenanceTime}, + #{maintenanceSituation}, + #{maintenancePersonnel}, + #{state}, + #{remark}, + #{monitoringPointsId}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{delFlag}, + #{deptId}, + #{sigenCode}, + + + + + update dkl_security_equipment + + device_name = #{deviceName}, + model = #{model}, + installation_position = #{installationPosition}, + buy_time = #{buyTime}, + price = #{price}, + maintenance_cycle = #{maintenanceCycle}, + last_maintenance_time = #{lastMaintenanceTime}, + maintenance_situation = #{maintenanceSituation}, + maintenance_personnel = #{maintenancePersonnel}, + state = #{state}, + remark = #{remark}, + monitoring_points_id = #{monitoringPointsId}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + dept_id = #{deptId}, + sigen_code = #{sigenCode}, + + where id = #{id} + + + + delete from dkl_security_equipment where id = #{id} + + + + delete from dkl_security_equipment where id in + + #{id} + + +