测试用例单元
This commit is contained in:
parent
467edd7002
commit
7ee6ce6389
|
|
@ -0,0 +1,246 @@
|
|||
package com.dkl.large.controller;
|
||||
|
||||
import com.dkl.common.core.domain.AjaxResult;
|
||||
import com.dkl.common.core.page.TableDataInfo;
|
||||
import com.dkl.large.domain.DklMonitoringCamera;
|
||||
import com.dkl.large.service.IDklMonitoringCameraService;
|
||||
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 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单元测试
|
||||
*
|
||||
* @author Dkl
|
||||
* @date 2025-06-10
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class DklMonitoringCameraControllerTest {
|
||||
|
||||
// 待测试的Controller(自动注入Mock依赖)
|
||||
@InjectMocks
|
||||
private DklMonitoringCameraController cameraController;
|
||||
|
||||
// 模拟服务层依赖
|
||||
@Mock
|
||||
private IDklMonitoringCameraService cameraService;
|
||||
|
||||
// 模拟HttpServletResponse
|
||||
private MockHttpServletResponse mockResponse;
|
||||
|
||||
// 测试用的摄像头实体
|
||||
private DklMonitoringCamera testCamera;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
// 初始化模拟对象
|
||||
mockResponse = new MockHttpServletResponse();
|
||||
|
||||
// 初始化测试实体
|
||||
testCamera = new DklMonitoringCamera();
|
||||
testCamera.setId(1L);
|
||||
testCamera.setDelFlag("0");
|
||||
testCamera.setCreateTime(new Date());
|
||||
testCamera.setCreateBy("testUser");
|
||||
testCamera.setDeptId(100L);
|
||||
|
||||
// 模拟Security上下文(解决getUsername()/getDeptId()等方法依赖)
|
||||
Authentication authentication = mock(Authentication.class);
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
doReturn("testUser").when(authentication).getName();
|
||||
|
||||
// 若BaseController的getDeptId()有自定义逻辑,需额外mock
|
||||
doReturn(100L).when(cameraController).getDeptId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试list接口:查询监控点摄像头列表
|
||||
*/
|
||||
@Test
|
||||
void testList() {
|
||||
// 1. 准备测试数据
|
||||
List<DklMonitoringCamera> cameraList = new ArrayList<>();
|
||||
cameraList.add(testCamera);
|
||||
|
||||
// 2. 模拟服务层返回
|
||||
doReturn(cameraList).when(cameraService).selectDklMonitoringCameraList(any(DklMonitoringCamera.class));
|
||||
|
||||
// 3. 执行接口
|
||||
TableDataInfo result = cameraController.list(testCamera);
|
||||
|
||||
// 4. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(1, result.getRows().size());
|
||||
assertEquals(testCamera.getId(), ((DklMonitoringCamera) result.getRows().get(0)).getId());
|
||||
|
||||
// 验证服务层方法被调用
|
||||
verify(cameraService, times(1)).selectDklMonitoringCameraList(any(DklMonitoringCamera.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试listAll接口:查询全部有效摄像头(delFlag=0)
|
||||
*/
|
||||
@Test
|
||||
void testListAll() {
|
||||
// 1. 准备测试数据
|
||||
List<DklMonitoringCamera> cameraList = new ArrayList<>();
|
||||
cameraList.add(testCamera);
|
||||
|
||||
// 2. 模拟服务层返回
|
||||
doReturn(cameraList).when(cameraService).selectDklMonitoringCameraList(any(DklMonitoringCamera.class));
|
||||
|
||||
// 3. 执行接口
|
||||
TableDataInfo result = cameraController.listAll(testCamera);
|
||||
|
||||
// 4. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(1, result.getRows().size());
|
||||
// 验证入参的delFlag被设置为0
|
||||
verify(cameraService).selectDklMonitoringCameraList(argThat(camera -> "0".equals(camera.getDelFlag())));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试getInfo接口:根据ID查询摄像头详情
|
||||
*/
|
||||
@Test
|
||||
void testGetInfo() {
|
||||
// 1. 模拟服务层返回
|
||||
doReturn(testCamera).when(cameraService).selectDklMonitoringCameraById(1L);
|
||||
|
||||
// 2. 执行接口
|
||||
AjaxResult result = cameraController.getInfo(1L);
|
||||
|
||||
// 3. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(200, result.get("code")); // 成功状态码(AjaxResult.success默认200)
|
||||
assertEquals(testCamera.getId(), ((DklMonitoringCamera) result.get("data")).getId());
|
||||
|
||||
// 验证服务层方法被调用
|
||||
verify(cameraService, times(1)).selectDklMonitoringCameraById(1L);
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试add接口:新增摄像头信息
|
||||
*/
|
||||
@Test
|
||||
void testAdd() {
|
||||
// 1. 模拟服务层返回(新增成功返回1)
|
||||
doReturn(1).when(cameraService).insertDklMonitoringCamera(any(DklMonitoringCamera.class));
|
||||
|
||||
// 2. 执行接口
|
||||
AjaxResult result = cameraController.add(testCamera);
|
||||
|
||||
// 3. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(200, result.get("code")); // 新增成功
|
||||
// 验证实体的系统字段被正确设置
|
||||
verify(cameraService).insertDklMonitoringCamera(argThat(camera ->
|
||||
"0".equals(camera.getDelFlag()) &&
|
||||
camera.getCreateBy().equals("testUser") &&
|
||||
camera.getDeptId().equals(100L) &&
|
||||
camera.getCreateTime() != null
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试edit接口:修改摄像头信息
|
||||
*/
|
||||
@Test
|
||||
void testEdit() {
|
||||
// 1. 模拟服务层返回(修改成功返回1)
|
||||
doReturn(1).when(cameraService).updateDklMonitoringCamera(any(DklMonitoringCamera.class));
|
||||
|
||||
// 2. 执行接口
|
||||
AjaxResult result = cameraController.edit(testCamera);
|
||||
|
||||
// 3. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(200, result.get("code"));
|
||||
// 验证更新时间和更新人被设置
|
||||
verify(cameraService).updateDklMonitoringCamera(argThat(camera ->
|
||||
camera.getUpdateBy().equals("testUser") &&
|
||||
camera.getUpdateTime() != null
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试remove接口:删除摄像头(批量)
|
||||
*/
|
||||
@Test
|
||||
void testRemove() {
|
||||
// 1. 准备删除ID数组
|
||||
int[] ids = {1, 2};
|
||||
// 2. 模拟服务层返回(删除成功返回2)
|
||||
doReturn(2).when(cameraService).deleteDklMonitoringCameraByIds(ids);
|
||||
|
||||
// 3. 执行接口
|
||||
AjaxResult result = cameraController.remove(ids);
|
||||
|
||||
// 4. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(200, result.get("code"));
|
||||
verify(cameraService, times(1)).deleteDklMonitoringCameraByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试importData接口:导入Excel数据
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
@Test
|
||||
void testImportData() throws Exception {
|
||||
// 1. 模拟Excel文件(空流,仅测试流程)
|
||||
MockMultipartFile mockFile = new MockMultipartFile(
|
||||
"file",
|
||||
"camera.xlsx",
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
new ByteArrayInputStream(new byte[0])
|
||||
);
|
||||
// 2. 模拟服务层返回提示语
|
||||
String successMsg = "导入成功,共导入0条数据";
|
||||
doReturn(successMsg).when(cameraService).importDate(anyList(), eq("testUser"));
|
||||
|
||||
// 3. 执行接口
|
||||
AjaxResult result = cameraController.importData(mockFile);
|
||||
|
||||
// 4. 断言结果
|
||||
assertNotNull(result);
|
||||
assertEquals(200, result.get("code"));
|
||||
assertEquals(successMsg, result.get("msg"));
|
||||
verify(cameraService, times(1)).importDate(anyList(), eq("testUser"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试export接口:导出摄像头列表(无返回值,验证流程)
|
||||
*/
|
||||
@Test
|
||||
void testExport() {
|
||||
// 1. 准备测试数据
|
||||
List<DklMonitoringCamera> cameraList = new ArrayList<>();
|
||||
cameraList.add(testCamera);
|
||||
doReturn(cameraList).when(cameraService).selectDklMonitoringCameraList(any(DklMonitoringCamera.class));
|
||||
|
||||
// 2. 执行接口(无返回值,验证无异常即可)
|
||||
assertDoesNotThrow(() -> cameraController.export(mockResponse, testCamera));
|
||||
|
||||
// 3. 验证服务层和Excel导出逻辑被调用
|
||||
verify(cameraService, times(1)).selectDklMonitoringCameraList(any(DklMonitoringCamera.class));
|
||||
assertTrue(mockResponse.getContentType().contains("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package com.dkl.large.domain;
|
||||
|
||||
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;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 监控点摄像头信息对象 dkl_monitoring_camera
|
||||
*
|
||||
* @author Dkl
|
||||
* @date 2025-06-10
|
||||
*/
|
||||
@Data
|
||||
public class DklMonitoringCamera extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** id */
|
||||
private int id;
|
||||
|
||||
/** 名称 */
|
||||
@Excel(name = "名称")
|
||||
private String name;
|
||||
|
||||
/** 类型 */
|
||||
private String types;
|
||||
|
||||
@Excel(name = "类型")
|
||||
private String typesName;
|
||||
|
||||
/** 删除标志(0代表存在 2代表删除) */
|
||||
private String delFlag;
|
||||
|
||||
/** 部门id */
|
||||
private Long deptId;
|
||||
|
||||
/** 通道号 */
|
||||
private String channelNumber;
|
||||
|
||||
/** 文件地址 */
|
||||
@Excel(name = "文件地址")
|
||||
private String filePath;
|
||||
|
||||
/** 备用 */
|
||||
private String standby;
|
||||
|
||||
/** 备用1 */
|
||||
private String standby1;
|
||||
|
||||
/** 备用2 */
|
||||
private String standby2;
|
||||
|
||||
/** 监控点id */
|
||||
private Long pointsId;
|
||||
|
||||
/** 经度 */
|
||||
@Excel(name = "经度")
|
||||
private String lng;
|
||||
|
||||
/** 纬度 */
|
||||
@Excel(name = "纬度")
|
||||
private String lat;
|
||||
|
||||
/** 地址 */
|
||||
@Excel(name = "地址")
|
||||
private String address;
|
||||
|
||||
@Excel(name = "监控点名称")
|
||||
private String pointName;
|
||||
/** 开始时间 */
|
||||
@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;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
package com.dkl.large.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.dkl.large.domain.DklMonitoringCamera;
|
||||
import com.dkl.large.domain.vo.DeptWwsVo;
|
||||
|
||||
/**
|
||||
* 监控点摄像头信息Mapper接口
|
||||
*
|
||||
* @author Dkl
|
||||
* @date 2025-06-10
|
||||
*/
|
||||
public interface DklMonitoringCameraMapper
|
||||
{
|
||||
/**
|
||||
* 查询监控点摄像头信息
|
||||
*
|
||||
* @param id 监控点摄像头信息主键
|
||||
* @return 监控点摄像头信息
|
||||
*/
|
||||
public DklMonitoringCamera selectDklMonitoringCameraById(Long id);
|
||||
|
||||
public DklMonitoringCamera selectDklMonitoringCameraByPath(String path); /**
|
||||
* 查询监控点摄像头信息列表
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 监控点摄像头信息集合
|
||||
*/
|
||||
public List<DklMonitoringCamera> selectDklMonitoringCameraList(DklMonitoringCamera dklMonitoringCamera);
|
||||
|
||||
/**
|
||||
* 新增监控点摄像头信息
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertDklMonitoringCamera(DklMonitoringCamera dklMonitoringCamera);
|
||||
|
||||
/**
|
||||
* 修改监控点摄像头信息
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateDklMonitoringCamera(DklMonitoringCamera dklMonitoringCamera);
|
||||
|
||||
/**
|
||||
* 删除监控点摄像头信息
|
||||
*
|
||||
* @param id 监控点摄像头信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteDklMonitoringCameraById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除监控点摄像头信息
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteDklMonitoringCameraByIds(int[] ids);
|
||||
|
||||
/**
|
||||
* @Author :rq
|
||||
* @Description :监控点摄像头数量
|
||||
* @Date :2025/06/12 11:14
|
||||
* @Param :[]
|
||||
* @return :java.lang.String
|
||||
**/
|
||||
public String getDklMonitoringCameraCount();
|
||||
/**
|
||||
* @return :java.util.List<com.dkl.large.domain.vo.RiskVo>
|
||||
* @Author :rq
|
||||
* @Description :大屏部门下拉框展示
|
||||
* @Date :2025/07/07 16:15
|
||||
* @Param :[]
|
||||
**/
|
||||
public List<DeptWwsVo> getDeptOfWws();
|
||||
/**
|
||||
* @Author :rq
|
||||
* @Description :获取视频url
|
||||
* @Date :2025/07/07 16:15
|
||||
* @Param :[]
|
||||
* @return :java.util.List<com.dkl.large.domain.vo.RiskVo>
|
||||
**/
|
||||
public List<DeptWwsVo> getDeptOfWwsUrl(DeptWwsVo deptWwsVo);
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
package com.dkl.large.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.dkl.large.domain.DklMonitoringCamera;
|
||||
import com.dkl.large.domain.DklMonitoringCameraData;
|
||||
import com.dkl.large.domain.vo.DeptWwsVo;
|
||||
|
||||
/**
|
||||
* 监控点摄像头信息Service接口
|
||||
*
|
||||
* @author Dkl
|
||||
* @date 2025-06-10
|
||||
*/
|
||||
public interface IDklMonitoringCameraService
|
||||
{
|
||||
/**
|
||||
* 查询监控点摄像头信息
|
||||
*
|
||||
* @param id 监控点摄像头信息主键
|
||||
* @return 监控点摄像头信息
|
||||
*/
|
||||
public DklMonitoringCamera selectDklMonitoringCameraById(Long id);
|
||||
|
||||
/**
|
||||
* 查询监控点摄像头信息列表
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 监控点摄像头信息集合
|
||||
*/
|
||||
public List<DklMonitoringCamera> selectDklMonitoringCameraList(DklMonitoringCamera dklMonitoringCamera);
|
||||
|
||||
/**
|
||||
* 新增监控点摄像头信息
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertDklMonitoringCamera(DklMonitoringCamera dklMonitoringCamera);
|
||||
|
||||
/**
|
||||
* 修改监控点摄像头信息
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateDklMonitoringCamera(DklMonitoringCamera dklMonitoringCamera);
|
||||
|
||||
/**
|
||||
* 批量删除监控点摄像头信息
|
||||
*
|
||||
* @param ids 需要删除的监控点摄像头信息主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteDklMonitoringCameraByIds(int[] ids);
|
||||
|
||||
/**
|
||||
* 删除监控点摄像头信息信息
|
||||
*
|
||||
* @param id 监控点摄像头信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteDklMonitoringCameraById(Long id);
|
||||
/**
|
||||
* @Author :rq
|
||||
* @Description :大屏部门下拉框展示
|
||||
* @Date :2025/07/07 16:15
|
||||
* @Param :[]
|
||||
* @return :java.util.List<com.dkl.large.domain.vo.RiskVo>
|
||||
**/
|
||||
public List<DeptWwsVo> getDeptOfWws();
|
||||
|
||||
/**
|
||||
* @Author :rq
|
||||
* @Description :获取视频url
|
||||
* @Date :2025/07/07 16:15
|
||||
* @Param :[]
|
||||
* @return :java.util.List<com.dkl.large.domain.vo.RiskVo>
|
||||
**/
|
||||
public List<DeptWwsVo> getDeptOfWwsUrl(DeptWwsVo deptWwsVo) throws Exception;
|
||||
/**
|
||||
* 导入数据
|
||||
*
|
||||
* @param dklMonitoringCameraList 数据列表
|
||||
* @param operName 操作用户
|
||||
* @return 结果
|
||||
*/
|
||||
public String importDate(List<DklMonitoringCamera> dklMonitoringCameraList, String operName);
|
||||
}
|
||||
|
|
@ -0,0 +1,310 @@
|
|||
package com.dkl.large.service.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.dkl.common.core.domain.entity.SysDictData;
|
||||
import com.dkl.common.exception.ServiceException;
|
||||
import com.dkl.common.utils.DateUtils;
|
||||
import com.dkl.common.utils.StringUtils;
|
||||
import com.dkl.large.domain.DklActivity;
|
||||
import com.dkl.large.domain.DklMonitoringPoints;
|
||||
import com.dkl.large.domain.VideoStorageInformation;
|
||||
import com.dkl.large.domain.vo.DeptWwsVo;
|
||||
import com.dkl.large.mapper.DklMonitoringPointsMapper;
|
||||
import com.dkl.large.utli.GetCameraPreviewURL;
|
||||
import com.dkl.system.mapper.SysDictDataMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dkl.large.mapper.DklMonitoringCameraMapper;
|
||||
import com.dkl.large.domain.DklMonitoringCamera;
|
||||
import com.dkl.large.service.IDklMonitoringCameraService;
|
||||
|
||||
import static com.dkl.common.utils.SecurityUtils.getDeptId;
|
||||
import static com.dkl.common.utils.SecurityUtils.getUsername;
|
||||
|
||||
/**
|
||||
* 监控点摄像头信息Service业务层处理
|
||||
*
|
||||
* @author Dkl
|
||||
* @date 2025-06-10
|
||||
*/
|
||||
@Service
|
||||
public class DklMonitoringCameraServiceImpl implements IDklMonitoringCameraService
|
||||
{
|
||||
@Autowired
|
||||
private DklMonitoringCameraMapper dklMonitoringCameraMapper;
|
||||
//经度
|
||||
private static final String LNG_REGEX = "^-?\\d{1,3}(\\.\\d+)?$";
|
||||
//维度
|
||||
private static final String LAT_REGEX = "^-?\\d{1,2}(\\.\\d+)?$";
|
||||
@Autowired
|
||||
private SysDictDataMapper sysDictDataMapper;
|
||||
@Autowired
|
||||
private DklMonitoringPointsMapper dklMonitoringPointsMapper;
|
||||
|
||||
/**
|
||||
* 查询监控点摄像头信息
|
||||
*
|
||||
* @param id 监控点摄像头信息主键
|
||||
* @return 监控点摄像头信息
|
||||
*/
|
||||
@Override
|
||||
public DklMonitoringCamera selectDklMonitoringCameraById(Long id)
|
||||
{
|
||||
return dklMonitoringCameraMapper.selectDklMonitoringCameraById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询监控点摄像头信息列表
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 监控点摄像头信息
|
||||
*/
|
||||
@Override
|
||||
public List<DklMonitoringCamera> selectDklMonitoringCameraList(DklMonitoringCamera dklMonitoringCamera)
|
||||
{
|
||||
return dklMonitoringCameraMapper.selectDklMonitoringCameraList(dklMonitoringCamera);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增监控点摄像头信息
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertDklMonitoringCamera(DklMonitoringCamera dklMonitoringCamera)
|
||||
{
|
||||
dklMonitoringCamera.setCreateTime(DateUtils.getNowDate());
|
||||
return dklMonitoringCameraMapper.insertDklMonitoringCamera(dklMonitoringCamera);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改监控点摄像头信息
|
||||
*
|
||||
* @param dklMonitoringCamera 监控点摄像头信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateDklMonitoringCamera(DklMonitoringCamera dklMonitoringCamera)
|
||||
{
|
||||
dklMonitoringCamera.setUpdateTime(DateUtils.getNowDate());
|
||||
return dklMonitoringCameraMapper.updateDklMonitoringCamera(dklMonitoringCamera);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除监控点摄像头信息
|
||||
*
|
||||
* @param ids 需要删除的监控点摄像头信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteDklMonitoringCameraByIds(int[] ids)
|
||||
{
|
||||
return dklMonitoringCameraMapper.deleteDklMonitoringCameraByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除监控点摄像头信息信息
|
||||
*
|
||||
* @param id 监控点摄像头信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteDklMonitoringCameraById(Long id)
|
||||
{
|
||||
return dklMonitoringCameraMapper.deleteDklMonitoringCameraById(id);
|
||||
}
|
||||
/**
|
||||
* @Author :rq
|
||||
* @Description :大屏部门下拉框展示
|
||||
* @Date :2025/07/07 16:15
|
||||
* @Param :[]
|
||||
* @return :java.util.List<com.dkl.large.domain.vo.RiskVo>
|
||||
**/
|
||||
@Override
|
||||
public List<DeptWwsVo> getDeptOfWws() {
|
||||
return dklMonitoringCameraMapper.getDeptOfWws();
|
||||
}
|
||||
|
||||
/**
|
||||
* @Author :rq
|
||||
* @Description : 获取视频url
|
||||
* @Date :2025/07/07 16:23
|
||||
* @Param :[deptWwsVo]
|
||||
* @return :java.util.List<com.dkl.large.domain.vo.DeptWwsVo>
|
||||
**/
|
||||
@Override
|
||||
public List<DeptWwsVo> getDeptOfWwsUrl(DeptWwsVo deptWwsVo) throws Exception {
|
||||
int urlSize=0;
|
||||
List <DeptWwsVo> deptWwsVos =dklMonitoringCameraMapper.getDeptOfWwsUrl(deptWwsVo);
|
||||
if (("0").equals(deptWwsVo.getType())){
|
||||
urlSize = 4;
|
||||
}
|
||||
if (("1").equals(deptWwsVo.getType())){
|
||||
urlSize = 9;
|
||||
}
|
||||
int outUrlSize=0;
|
||||
for (int i = 0; i < deptWwsVos.size(); i++) {
|
||||
String wwsurl= GetCameraPreviewURL.GetCameraPreviewURL(deptWwsVos.get(i).getCode());
|
||||
if (StringUtils.isNotEmpty(wwsurl)&&outUrlSize!=urlSize){
|
||||
deptWwsVos.get(i).setDepturl(wwsurl);
|
||||
outUrlSize++;
|
||||
}else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return deptWwsVos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String importDate(List<DklMonitoringCamera> dklMonitoringCameraList, String operName) {
|
||||
//类型集合
|
||||
List<SysDictData> areaDict=sysDictDataMapper.selectDictDataByType("monitoring_type");
|
||||
DklMonitoringPoints dklMonitoringPoints = new DklMonitoringPoints();
|
||||
dklMonitoringPoints.setDelFlag("0");
|
||||
//活动集合
|
||||
List<DklMonitoringPoints> dklMonitoringPointsList=dklMonitoringPointsMapper.selectDklMonitoringPointsList(dklMonitoringPoints);
|
||||
if (StringUtils.isNull(dklMonitoringCameraList) || dklMonitoringCameraList.size() == 0) {
|
||||
throw new ServiceException("导入数据不能为空!");
|
||||
}
|
||||
int successNum = 0;
|
||||
int failureNum = 0;
|
||||
StringBuilder successMsg = new StringBuilder();
|
||||
StringBuilder failureMsg = new StringBuilder();
|
||||
for (int i = 0; i < dklMonitoringCameraList.size(); i++) {
|
||||
try
|
||||
{
|
||||
//活动名称
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getName())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据名称为空");
|
||||
}else{
|
||||
if (dklMonitoringCameraList.get(i).getName().length()>=30){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据名称长度过长");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//类型
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getTypesName())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1)+ "条数据类型为空");
|
||||
}else{
|
||||
if (dklMonitoringCameraList.get(i).getTypesName().length()>=30){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" +(i+1) + "条数据类型过长");
|
||||
}else{
|
||||
for (SysDictData sysDictData : areaDict) {
|
||||
if (sysDictData.getDictLabel().equals(dklMonitoringCameraList.get(i).getTypesName())) {
|
||||
dklMonitoringCameraList.get(i).setTypes(sysDictData.getDictValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getTypes())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" +(i+1) + "条数据类型未找到");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//经度
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getLng())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据经度为空");
|
||||
}else{
|
||||
if (dklMonitoringCameraList.get(i).getLng().length()>=30){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据经度长度过长");
|
||||
}else if (!Pattern.matches(LNG_REGEX, dklMonitoringCameraList.get(i).getLng())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据值经度有误");
|
||||
}
|
||||
}
|
||||
|
||||
//纬度
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getLat())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据纬度为空");
|
||||
}else{
|
||||
if (dklMonitoringCameraList.get(i).getLat().length()>=30){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据纬度长度过长");
|
||||
}else if (!Pattern.matches(LAT_REGEX, dklMonitoringCameraList.get(i).getLat())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据值纬度有误");
|
||||
}
|
||||
}
|
||||
|
||||
//地址
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getAddress())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1)+ "条数据地址为空");
|
||||
}else{
|
||||
if (dklMonitoringCameraList.get(i).getAddress().length()>=30){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1) + "条数据地址长度过长");
|
||||
}
|
||||
}
|
||||
//活动
|
||||
if (StringUtils.isEmpty(dklMonitoringCameraList.get(i).getPointName())){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" + (i+1)+ "条监控点名称为空");
|
||||
}else{
|
||||
if (dklMonitoringCameraList.get(i).getPointName().length()>=30){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" +(i+1) + "条监控点名称过长");
|
||||
}else{
|
||||
for (DklMonitoringPoints monitoringPoints : dklMonitoringPointsList) {
|
||||
if (monitoringPoints.getPointName().equals(dklMonitoringCameraList.get(i).getPointName())) {
|
||||
dklMonitoringCameraList.get(i).setPointsId((long) monitoringPoints.getId());
|
||||
}
|
||||
}
|
||||
if (StringUtils.isEmpty(Collections.singleton(dklMonitoringCameraList.get(i).getPointsId()))){
|
||||
failureNum++;
|
||||
failureMsg.append("<br/> 第" +(i+1) + "条活动名称未找到");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
failureNum++;
|
||||
String msg = "<br/>" + failureNum + "导入失败:";
|
||||
failureMsg.append(msg + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
if (failureNum > 0)
|
||||
{
|
||||
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
||||
throw new ServiceException(failureMsg.toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
for (DklMonitoringCamera dklMonitoringCamera :dklMonitoringCameraList){
|
||||
//添加系统信息
|
||||
dklMonitoringCamera.setDelFlag("0");
|
||||
dklMonitoringCamera.setCreateTime(new Date());
|
||||
dklMonitoringCamera.setCreateBy(getUsername());
|
||||
dklMonitoringCamera.setDeptId(getDeptId());
|
||||
dklMonitoringCamera.setUpdateTime(new Date());
|
||||
dklMonitoringCamera.setUpdateBy(getUsername());
|
||||
dklMonitoringCameraMapper.insertDklMonitoringCamera(dklMonitoringCamera);
|
||||
}
|
||||
successMsg.insert(0, "恭喜您,数据已全部导入成功!");
|
||||
}
|
||||
|
||||
return successMsg.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.dkl.large.mapper.DklMonitoringCameraMapper">
|
||||
|
||||
<resultMap type="DklMonitoringCamera" id="DklMonitoringCameraResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="name" column="name" />
|
||||
<result property="types" column="types" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
<result property="deptId" column="dept_id" />
|
||||
<result property="channelNumber" column="channel_number" />
|
||||
<result property="filePath" column="file_path" />
|
||||
<result property="standby" column="standby" />
|
||||
<result property="standby1" column="standby1" />
|
||||
<result property="standby2" column="standby2" />
|
||||
<result property="pointsId" column="points_id" />
|
||||
<result property="lng" column="lng" />
|
||||
<result property="lat" column="lat" />
|
||||
<result property="address" column="address" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectDklMonitoringCameraVo">
|
||||
select dmc.id, dmc.name, dmc.types, dmc.create_by, dmc.create_time, dmc.update_by, dmc.update_time, dmc.del_flag, dmc.dept_id, dmc.channel_number,
|
||||
dmc.file_path, dmc.standby, dmc.standby1, dmc.standby2, dmc.points_id, dmc.lng, dmc.lat, dmc.address ,dmp.point_name AS pointName ,sdd.dict_label AS typesName from dkl_monitoring_camera AS dmc
|
||||
left join sys_dept d on dmc.dept_id = d.dept_id
|
||||
left join dkl_monitoring_points dmp on dmp.id = dmc.points_id
|
||||
left join sys_dict_data sdd on sdd.dict_value = dmc.types and sdd.dict_type ='monitoring_type'
|
||||
</sql>
|
||||
|
||||
<select id="selectDklMonitoringCameraList" parameterType="DklMonitoringCamera" resultMap="DklMonitoringCameraResult">
|
||||
<include refid="selectDklMonitoringCameraVo"/>
|
||||
<where>
|
||||
<if test="name != null and name != ''"> and dmc.name like concat('%', #{name}, '%')</if>
|
||||
<if test="types != null and types != ''"> and dmc.types = #{types}</if>
|
||||
<if test="deptId != null "> and dmc.dept_id = #{deptId}</if>
|
||||
<if test="channelNumber != null and channelNumber != ''"> and dmc.channel_number = #{channelNumber}</if>
|
||||
<if test="filePath != null and filePath != ''"> and dmc.file_path = #{filePath}</if>
|
||||
<if test="standby != null and standby != ''"> and dmc.standby = #{standby}</if>
|
||||
<if test="standby1 != null and standby1 != ''"> and dmc.standby1 = #{standby1}</if>
|
||||
<if test="standby2 != null and standby2 != ''"> and dmc.standby2 = #{standby2}</if>
|
||||
<if test="pointsId != null "> and dmc.points_id = #{pointsId}</if>
|
||||
<if test="lng != null and lng != ''"> and dmc.lng = #{lng}</if>
|
||||
<if test="lat != null and lat != ''"> and dmc.lat = #{lat}</if>
|
||||
<if test="address != null and address != ''"> and dmc.address = #{address}</if>
|
||||
<if test="delFlag != null and delFlag != ''"> and dmc.del_flag = #{delFlag}</if>
|
||||
<if test="startTime != null and endTime != null ">
|
||||
AND dmc.create_time BETWEEN #{startTime} and #{endTime}
|
||||
</if>
|
||||
</where>
|
||||
<!-- 数据范围过滤 -->
|
||||
${params.dataScope}
|
||||
order by dmc.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectDklMonitoringCameraById" parameterType="Long" resultMap="DklMonitoringCameraResult">
|
||||
<include refid="selectDklMonitoringCameraVo"/>
|
||||
where dmc.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="selectDklMonitoringCameraByPath" parameterType="String" resultMap="DklMonitoringCameraResult">
|
||||
<include refid="selectDklMonitoringCameraVo"/>
|
||||
where dmc.file_path = #{path}
|
||||
</select>
|
||||
|
||||
<insert id="insertDklMonitoringCamera" parameterType="DklMonitoringCamera">
|
||||
insert into dkl_monitoring_camera
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null">name,</if>
|
||||
<if test="types != null">types,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="delFlag != null">del_flag,</if>
|
||||
<if test="deptId != null">dept_id,</if>
|
||||
<if test="channelNumber != null">channel_number,</if>
|
||||
<if test="filePath != null">file_path,</if>
|
||||
<if test="standby != null">standby,</if>
|
||||
<if test="standby1 != null">standby1,</if>
|
||||
<if test="standby2 != null">standby2,</if>
|
||||
<if test="pointsId != null">points_id,</if>
|
||||
<if test="lng != null">lng,</if>
|
||||
<if test="lat != null">lat,</if>
|
||||
<if test="address != null">address,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null">#{name},</if>
|
||||
<if test="types != null">#{types},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="delFlag != null">#{delFlag},</if>
|
||||
<if test="deptId != null">#{deptId},</if>
|
||||
<if test="channelNumber != null">#{channelNumber},</if>
|
||||
<if test="filePath != null">#{filePath},</if>
|
||||
<if test="standby != null">#{standby},</if>
|
||||
<if test="standby1 != null">#{standby1},</if>
|
||||
<if test="standby2 != null">#{standby2},</if>
|
||||
<if test="pointsId != null">#{pointsId},</if>
|
||||
<if test="lng != null">#{lng},</if>
|
||||
<if test="lat != null">#{lat},</if>
|
||||
<if test="address != null">#{address},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateDklMonitoringCamera" parameterType="DklMonitoringCamera">
|
||||
update dkl_monitoring_camera
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="name != null">name = #{name},</if>
|
||||
<if test="types != null">types = #{types},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
||||
<if test="deptId != null">dept_id = #{deptId},</if>
|
||||
<if test="channelNumber != null">channel_number = #{channelNumber},</if>
|
||||
<if test="filePath != null">file_path = #{filePath},</if>
|
||||
<if test="standby != null">standby = #{standby},</if>
|
||||
<if test="standby1 != null">standby1 = #{standby1},</if>
|
||||
<if test="standby2 != null">standby2 = #{standby2},</if>
|
||||
<if test="pointsId != null">points_id = #{pointsId},</if>
|
||||
<if test="lng != null">lng = #{lng},</if>
|
||||
<if test="lat != null">lat = #{lat},</if>
|
||||
<if test="address != null">address = #{address},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="deleteDklMonitoringCameraById" parameterType="int">
|
||||
update dkl_monitoring_camera set del_flag = 2 where id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="deleteDklMonitoringCameraByIds" parameterType="int">
|
||||
update dkl_monitoring_camera set del_flag = 2 where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
|
||||
</update>
|
||||
|
||||
<select id="getDklMonitoringCameraCount" parameterType="string">
|
||||
SELECT COUNT(*) FROM dkl_monitoring_camera WHERE del_flag = '0'
|
||||
</select>
|
||||
|
||||
<select id="getDeptOfWws" resultType="deptWwsVo">
|
||||
SELECT
|
||||
sd.dept_id as deptid,
|
||||
sd.dept_name as deptname
|
||||
FROM
|
||||
dkl_monitoring_camera AS dmc
|
||||
LEFT JOIN sys_dept AS sd ON sd.dept_id = dmc.dept_id
|
||||
WHERE
|
||||
dmc.del_flag = '0'
|
||||
GROUP BY
|
||||
sd.dept_id,
|
||||
sd.dept_name
|
||||
</select>
|
||||
|
||||
<select id="getDeptOfWwsUrl" parameterType="deptWwsVo" resultType="deptWwsVo">
|
||||
SELECT
|
||||
sd.dept_id as deptid,
|
||||
sd.dept_name as deptname,
|
||||
dmc.file_path as code,
|
||||
dmc. name as name
|
||||
FROM
|
||||
dkl_monitoring_camera AS dmc
|
||||
LEFT JOIN sys_dept AS sd ON sd.dept_id = dmc.dept_id
|
||||
WHERE
|
||||
dmc.del_flag = '0'
|
||||
<if test="deptid != null">
|
||||
and dmc.dept_id = #{deptid}
|
||||
</if>
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue