Compare commits
6 Commits
dev_xq_0.0
...
main
| Author | SHA1 | Date |
|---|---|---|
|
|
d098154f5a | 2 weeks ago |
|
|
198c50c082 | 3 weeks ago |
|
|
e13645639e | 3 weeks ago |
|
|
f8e3ec4db8 | 3 weeks ago |
|
|
bd1e474de7 | 3 weeks ago |
|
|
35d6b29dda | 3 weeks ago |
@ -1,28 +0,0 @@
|
|||||||
package com.sz.admin.monitor.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class CameraThreadPoolConfig {
|
|
||||||
|
|
||||||
@Bean("cameraInspectionExecutor")
|
|
||||||
public Executor cameraInspectionExecutor() {
|
|
||||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
|
||||||
// 核心线程数:
|
|
||||||
executor.setCorePoolSize(10);
|
|
||||||
// 最大线程数:并发峰值
|
|
||||||
executor.setMaxPoolSize(50);
|
|
||||||
// 队列容量:如果超过核心线程数的任务,先放进队列排队
|
|
||||||
executor.setQueueCapacity(200);
|
|
||||||
// 线程前缀名,方便以后看日志排查问题
|
|
||||||
executor.setThreadNamePrefix("Camera-Inspect-");
|
|
||||||
// 拒绝策略:如果队列满了,由调用者所在线程(即定时任务主线程)自己去执行
|
|
||||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
|
||||||
executor.initialize();
|
|
||||||
return executor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
package com.sz.admin.monitor.controller;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.blurDetection.BlurDetectionDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.blurDetection.BlurDetectionUpdateDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.BlurDetection;
|
|
||||||
import com.sz.admin.monitor.pojo.vo.blurDetection.BlurDetectionVO;
|
|
||||||
import com.sz.admin.monitor.service.BlurDetectionService;
|
|
||||||
import com.sz.core.common.entity.ApiResult;
|
|
||||||
import com.sz.core.util.BeanCopyUtils;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: BlurDetectionController
|
|
||||||
* Package: com.sz.admin.monitor.controller
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
@Tag(name = "模糊检测")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("blur-detection")
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class BlurDetectionController {
|
|
||||||
private final BlurDetectionService blurDetectionService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增模糊检测配置
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增模糊检测配置")
|
|
||||||
@PostMapping("/add")
|
|
||||||
public ApiResult<Boolean> add(@RequestBody BlurDetectionDTO blurDetectionDTO) {
|
|
||||||
BlurDetection detection = BeanCopyUtils.copy(blurDetectionDTO, BlurDetection.class);
|
|
||||||
return ApiResult.success(blurDetectionService.save(detection));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新配置信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "更新配置信息")
|
|
||||||
@PutMapping("/update")
|
|
||||||
public ApiResult<Boolean> update(@RequestBody BlurDetectionUpdateDTO blurDetectionUpdateDTO) {
|
|
||||||
return ApiResult.success(blurDetectionService.updateById(BeanCopyUtils.copy(blurDetectionUpdateDTO, BlurDetection.class)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "新增或者更新配置信息")
|
|
||||||
@PostMapping("/addOrUpdate")
|
|
||||||
public ApiResult<Boolean> addOrUpdate(@RequestBody BlurDetectionDTO blurDetectionDTO) {
|
|
||||||
return ApiResult.success(blurDetectionService.saveOrUpdateBlur(blurDetectionDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/get")
|
|
||||||
@Operation(summary = "根据摄像头id查询模糊配置")
|
|
||||||
public ApiResult<BlurDetectionVO> getById(@RequestParam Long id) {
|
|
||||||
QueryWrapper wrapper = blurDetectionService.query().eq(BlurDetection::getCameraId, id);
|
|
||||||
BlurDetection blurDetection = blurDetectionService.getOne(wrapper);
|
|
||||||
if (blurDetection == null) {
|
|
||||||
return ApiResult.success(null);
|
|
||||||
}
|
|
||||||
return ApiResult.success(BeanCopyUtils.copy(blurDetection, BlurDetectionVO.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
package com.sz.admin.monitor.controller;
|
|
||||||
|
|
||||||
import com.sz.admin.monitor.pojo.po.ComputerRoom;
|
|
||||||
import com.sz.admin.monitor.service.ComputerRoomService;
|
|
||||||
import com.sz.core.common.entity.ApiResult;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.context.annotation.Profile;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: ComputerRootController
|
|
||||||
* Package: com.sz.admin.monitor.controller
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
@Tag(name = "机房表")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("computerRoom")
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Profile({"dev", "local", "preview"})
|
|
||||||
public class ComputerRoomController {
|
|
||||||
private final ComputerRoomService computerRoomService;
|
|
||||||
@Operation(summary = "获取变电站下的机房列表")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public ApiResult<List<ComputerRoom>> getList(@RequestParam("substationId") Long substationId) {
|
|
||||||
return ApiResult.success(computerRoomService.getComputerRoomList(substationId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
package com.sz.admin.monitor.controller;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.DataModelDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.que.dataModel.DataModelQue;
|
|
||||||
import com.sz.admin.monitor.service.impl.DataModelServiceImpl;
|
|
||||||
import com.sz.core.common.entity.ApiResult;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/3/14 12:35
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/data/model")
|
|
||||||
public class DataModelController {
|
|
||||||
@Autowired
|
|
||||||
private DataModelServiceImpl dataModelService;
|
|
||||||
|
|
||||||
@PostMapping("/getModelData")
|
|
||||||
@SaIgnore
|
|
||||||
public ApiResult<DataModelDTO> getModelData(@RequestBody DataModelQue que) {
|
|
||||||
return dataModelService.getModelData(que);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存数据模型
|
|
||||||
*
|
|
||||||
* @param dataModelDTO
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@PostMapping("/saveOrUpdate/modelData")
|
|
||||||
public ApiResult saveOrUpdateModelData(
|
|
||||||
@RequestBody DataModelDTO dataModelDTO, HttpServletRequest request, HttpServletResponse response) {
|
|
||||||
return dataModelService.saveOrUpdateModelData(dataModelDTO, request, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/test")
|
|
||||||
public ApiResult test() {
|
|
||||||
return ApiResult.success(dataModelService.getList());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,67 +0,0 @@
|
|||||||
package com.sz.admin.monitor.controller;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.file.FileEntityDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.file.FileStorageDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.que.file.FileStorageQue;
|
|
||||||
import com.sz.admin.monitor.service.impl.FileServiceImpl;
|
|
||||||
import com.sz.core.common.entity.ApiResult;
|
|
||||||
import com.sz.core.common.entity.PageResult;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/2/2 22:31
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/fileStorage")
|
|
||||||
public class FileController {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private FileServiceImpl fileService;
|
|
||||||
|
|
||||||
@GetMapping("/deleteFileById")
|
|
||||||
public ApiResult<String> deleteFileById(@RequestParam("id") String id){
|
|
||||||
return fileService.deleteFileById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/editFileNameById")
|
|
||||||
public ApiResult<String> editFileNameById(@RequestBody FileEntityDTO dto){
|
|
||||||
return fileService.editFileNameById(dto);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/file/list")
|
|
||||||
public ApiResult<PageResult<FileEntityDTO>> getFileObjectList(@RequestBody FileStorageQue que){
|
|
||||||
return fileService.getFileObjectList(que);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/getPreviewFile/{id}")
|
|
||||||
@SaIgnore
|
|
||||||
public ResponseEntity<byte[]> getPreviewFile(@PathVariable String id){
|
|
||||||
return fileService.getPreviewFile(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/getFile")
|
|
||||||
@SaIgnore
|
|
||||||
public ApiResult<FileStorageDTO> getFile(@RequestParam("id") String id) {
|
|
||||||
return fileService.getFile(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/saveFile")
|
|
||||||
@SaIgnore
|
|
||||||
public ApiResult<FileStorageDTO> saveFile(@RequestParam("file") MultipartFile file) {
|
|
||||||
return fileService.saveFile(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/test")
|
|
||||||
public void test01(){
|
|
||||||
fileService.test01();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.sz.admin.monitor.listener.mode;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClassName: CameraDeleteEvent
|
||||||
|
* Package: com.sz.admin.monitor.listener.mode
|
||||||
|
* Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class CameraDeleteEvent {
|
||||||
|
// 携带需要删除的摄像头 ID 集合
|
||||||
|
private List<Long> cameraIds;
|
||||||
|
}
|
||||||
@ -1,12 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.BlurDetection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: BlurDetectionMapper
|
|
||||||
* Package: com.sz.admin.monitor.mapper
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
public interface BlurDetectionMapper extends BaseMapper<BlurDetection> {
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description:画板
|
|
||||||
* @author xq
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public interface CanvasCfgMapper extends BaseMapper<CanvasCfgDO> {
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ComputerRoom;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: ComputeRoomMapper
|
|
||||||
* Package: com.sz.admin.monitor.mapper
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
public interface ComputeRoomMapper extends BaseMapper<ComputerRoom> {
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.FileStorageDO;
|
|
||||||
|
|
||||||
public interface FileStorageMapper extends BaseMapper<FileStorageDO> {
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 网格
|
|
||||||
* @author xq
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public interface GridCfgMapper extends BaseMapper<GridCfgDO> {
|
|
||||||
}
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.mybatisflex.core.update.UpdateChain;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ModelContentDO;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 存储模型的基本信息和配置
|
|
||||||
* @author xq
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public interface ModelContentMapper extends BaseMapper<ModelContentDO> {
|
|
||||||
default void deleteByRoomIds(Set<Long> roomIds)
|
|
||||||
{
|
|
||||||
QueryWrapper wrapper = QueryWrapper.create()
|
|
||||||
.select()
|
|
||||||
.from(ModelContentDO.class)
|
|
||||||
.where(ModelContentDO::getRoomId).in(roomIds);
|
|
||||||
this.deleteByQuery(wrapper);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
package com.sz.admin.monitor.mapper;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.Substation;
|
|
||||||
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
|
||||||
|
|
||||||
public interface UserModelContentMapper extends BaseMapper<UserModelContentDO> {
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.dto.blurDetection;
|
|
||||||
|
|
||||||
import com.sz.admin.monitor.pojo.po.BlurDetection;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: BlurDetectionDTO
|
|
||||||
* Package: com.sz.admin.monitor.pojo.dto.blurDetection
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class BlurDetectionDTO extends BlurDetection {
|
|
||||||
}
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.dto.dataModel;
|
|
||||||
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:返回给前端的数据对象
|
|
||||||
* @date 2026/1/29 11:47
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class DataModelDTO {
|
|
||||||
/**
|
|
||||||
* 模型数据对象
|
|
||||||
*/
|
|
||||||
private CanvasCfgDTO canvasCfg;
|
|
||||||
/**
|
|
||||||
* 变电站ID
|
|
||||||
*/
|
|
||||||
private Long substationId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*机房ID
|
|
||||||
*/
|
|
||||||
private Long roomId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 画布配置数据对象
|
|
||||||
*/
|
|
||||||
private GridCfgDTO gridCfg;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 模型数据对象
|
|
||||||
*/
|
|
||||||
private List<ModelContentDTO> json;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 目录类型
|
|
||||||
*/
|
|
||||||
private String menuType;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,53 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.dto.dataModel;
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 网格配置数据对象
|
|
||||||
* @description: 存储网格的基本配置信息
|
|
||||||
* @author xq
|
|
||||||
* @date 2026/1/29 11:35
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class GridCfgDTO {
|
|
||||||
/**
|
|
||||||
* 网格id
|
|
||||||
*/
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户id
|
|
||||||
*/
|
|
||||||
private String userId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 网格是否启用
|
|
||||||
*/
|
|
||||||
private Boolean enabled;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对齐
|
|
||||||
*/
|
|
||||||
private Boolean align;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 大小
|
|
||||||
*/
|
|
||||||
private Integer size;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为数据库对象
|
|
||||||
* @param dto
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static GridCfgDO dtoConvertDO(GridCfgDTO dto){
|
|
||||||
GridCfgDO gridCfgDO = BeanUtil.copyProperties(dto, GridCfgDO.class);
|
|
||||||
return gridCfgDO;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.dto.dataModel;
|
|
||||||
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/1/29 11:50
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class UserModelContentDTO {
|
|
||||||
/**
|
|
||||||
* 表id
|
|
||||||
*/
|
|
||||||
private String id;
|
|
||||||
/**
|
|
||||||
* 用户id
|
|
||||||
*/
|
|
||||||
private String userId;
|
|
||||||
/**
|
|
||||||
* 目录类型
|
|
||||||
*/
|
|
||||||
private String menuType;
|
|
||||||
/**
|
|
||||||
* 模型内容
|
|
||||||
*/
|
|
||||||
private String modelContentId;
|
|
||||||
}
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.dto.file;
|
|
||||||
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/2/3 14:27
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class FileEntityDTO {
|
|
||||||
/**
|
|
||||||
* id
|
|
||||||
*/
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件名称
|
|
||||||
*/
|
|
||||||
private String fileName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加时间
|
|
||||||
*/
|
|
||||||
private Long addTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取文件的path
|
|
||||||
*/
|
|
||||||
private String filePath;
|
|
||||||
}
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.dto.file;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.sz.admin.monitor.pojo.po.FileStorageDO;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:文件存储数据对象
|
|
||||||
* @date 2026/2/2 22:18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class FileStorageDTO {
|
|
||||||
/**
|
|
||||||
* id
|
|
||||||
*/
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件路径
|
|
||||||
*/
|
|
||||||
private String fileUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件大小
|
|
||||||
*/
|
|
||||||
private String fileSize;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件名称
|
|
||||||
*/
|
|
||||||
private String fileName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件后缀
|
|
||||||
*/
|
|
||||||
private String fileSuffix;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* base64数据
|
|
||||||
*/
|
|
||||||
private String base64Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加时间
|
|
||||||
*/
|
|
||||||
private Date addTime;
|
|
||||||
|
|
||||||
public static FileStorageDO dtoConvertDO(FileStorageDTO dto) {
|
|
||||||
return BeanUtil.copyProperties(dto, FileStorageDO.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.po;
|
|
||||||
|
|
||||||
import com.mybatisflex.annotation.Id;
|
|
||||||
import com.mybatisflex.annotation.KeyType;
|
|
||||||
import com.mybatisflex.annotation.Table;
|
|
||||||
import com.sz.mysql.EntityChangeListener;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: ComputerRoom
|
|
||||||
* Package: com.sz.admin.monitor.pojo.po
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Table(value = "ry_computer_room", onInsert = EntityChangeListener.class, onUpdate = EntityChangeListener.class)
|
|
||||||
@Schema(description = "机房表")
|
|
||||||
public class ComputerRoom {
|
|
||||||
@Id(keyType = KeyType.Auto)
|
|
||||||
@Schema(description = "id")
|
|
||||||
private Long id;
|
|
||||||
@Schema(description = "名称")
|
|
||||||
private String name;
|
|
||||||
@Schema(description = "描述")
|
|
||||||
private String description;
|
|
||||||
@Schema(description = "变电站ID")
|
|
||||||
private Long substationId;
|
|
||||||
}
|
|
||||||
@ -1,69 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.po;
|
|
||||||
|
|
||||||
import com.mybatisflex.annotation.Id;
|
|
||||||
import com.mybatisflex.annotation.KeyType;
|
|
||||||
import com.mybatisflex.annotation.Table;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:文件存储数据对象
|
|
||||||
* @date 2026/2/2 22:18
|
|
||||||
*/
|
|
||||||
@Table("ry_file_storage")
|
|
||||||
@Schema(description = "文件存储数据对象")
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class FileStorageDO {
|
|
||||||
/**
|
|
||||||
* id
|
|
||||||
*/
|
|
||||||
@Id(keyType = KeyType.Generator, value = "uuid")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件路径
|
|
||||||
*/
|
|
||||||
@Schema(description = "文件路径")
|
|
||||||
private String fileUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件大小
|
|
||||||
*/
|
|
||||||
@Schema(description = "文件大小")
|
|
||||||
private String fileSize;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件名称
|
|
||||||
*/
|
|
||||||
@Schema(description = "文件名称")
|
|
||||||
private String fileName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件后缀
|
|
||||||
*/
|
|
||||||
@Schema(description = "文件后缀")
|
|
||||||
private String fileSuffix;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加时间
|
|
||||||
*/
|
|
||||||
@Schema(description = "添加时间")
|
|
||||||
private Date addTime;
|
|
||||||
|
|
||||||
public static final String ID="id";
|
|
||||||
public static final String FILE_URL="file_url";
|
|
||||||
public static final String FILE_SIZE="file_size";
|
|
||||||
public static final String FILE_NAME="file_name";
|
|
||||||
public static final String FILE_SUFFIX="file_suffix";
|
|
||||||
public static final String ADD_TIME="add_time";
|
|
||||||
}
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.po;
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.mybatisflex.annotation.Id;
|
|
||||||
import com.mybatisflex.annotation.KeyType;
|
|
||||||
import com.mybatisflex.annotation.Table;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 网格配置数据对象
|
|
||||||
* @description: 存储网格的基本配置信息
|
|
||||||
* @author xq
|
|
||||||
* @date 2026/1/29 11:35
|
|
||||||
*/
|
|
||||||
@Table("ry_grid_cfg")
|
|
||||||
@Schema(description = "存储网格的基本配置信息")
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class GridCfgDO {
|
|
||||||
/**
|
|
||||||
* 网格id
|
|
||||||
*/
|
|
||||||
@Id(keyType = KeyType.Generator, value = "uuid")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户id
|
|
||||||
*/
|
|
||||||
@Schema(description = "用户id")
|
|
||||||
private String userId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 网格是否启用
|
|
||||||
*/
|
|
||||||
@Schema(description = "网格是否启用")
|
|
||||||
private Boolean enabled;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对齐
|
|
||||||
*/
|
|
||||||
@Schema(description = "对齐")
|
|
||||||
private Boolean align;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 大小
|
|
||||||
*/
|
|
||||||
@Schema(description = "大小")
|
|
||||||
private Integer size;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为DTO对象
|
|
||||||
* @param gridCfgDO
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static GridCfgDTO doConvertDTO(GridCfgDO gridCfgDO){
|
|
||||||
GridCfgDTO gridCfgDTO = BeanUtil.copyProperties(gridCfgDO, GridCfgDTO.class);
|
|
||||||
return gridCfgDTO;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static final String ID = "id";
|
|
||||||
public static final String USER_ID = "user_id";
|
|
||||||
public static final String ENABLED = "enabled";
|
|
||||||
public static final String ALIGN = "align";
|
|
||||||
public static final String SIZE = "size";
|
|
||||||
}
|
|
||||||
@ -1,53 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.po;
|
|
||||||
|
|
||||||
import com.mybatisflex.annotation.Id;
|
|
||||||
import com.mybatisflex.annotation.KeyType;
|
|
||||||
import com.mybatisflex.annotation.Table;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/** 用户模型中间表
|
|
||||||
* @description:
|
|
||||||
* @author xq
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@Table("ry_user_model_content")
|
|
||||||
@Schema(description = "用户模型中间表")
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class UserModelContentDO implements Serializable {
|
|
||||||
/**
|
|
||||||
* id
|
|
||||||
*/
|
|
||||||
@Id(keyType = KeyType.Generator, value = "uuid")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private String id;
|
|
||||||
/**
|
|
||||||
* 用户id
|
|
||||||
*/
|
|
||||||
@Schema(description = "用户id")
|
|
||||||
private String userId;
|
|
||||||
/**
|
|
||||||
* 目录类型
|
|
||||||
*/
|
|
||||||
@Schema(description = "目录类型")
|
|
||||||
private String menuType;
|
|
||||||
/**
|
|
||||||
* 模型内容
|
|
||||||
*/
|
|
||||||
@Schema(description = "模型内容")
|
|
||||||
private String modelContentId;
|
|
||||||
|
|
||||||
public static final String ID="id";
|
|
||||||
public static final String USER_ID="user_id";
|
|
||||||
public static final String MENU_TYPE="menu_type";
|
|
||||||
public static final String MODEL_CONTENT_ID="model_content_id";
|
|
||||||
}
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.que;
|
|
||||||
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/2/3 14:21
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class BasePage<T> {
|
|
||||||
private List<T> list;
|
|
||||||
/**
|
|
||||||
* 总数
|
|
||||||
*/
|
|
||||||
private long total;
|
|
||||||
/**
|
|
||||||
* 每页数量
|
|
||||||
*/
|
|
||||||
private long size;
|
|
||||||
/**
|
|
||||||
* 当前页
|
|
||||||
*/
|
|
||||||
private long current;
|
|
||||||
/**
|
|
||||||
* 总页数
|
|
||||||
*/
|
|
||||||
private long pages;
|
|
||||||
}
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.que;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description: 公共查询父类
|
|
||||||
* @date 2026/2/3 13:36
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class BaseQue {
|
|
||||||
/**
|
|
||||||
* 当前页数
|
|
||||||
*/
|
|
||||||
private Integer pageNum;
|
|
||||||
/**
|
|
||||||
* 当前页数量
|
|
||||||
*/
|
|
||||||
private Integer pageSize;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化分页参数
|
|
||||||
* @param base
|
|
||||||
*/
|
|
||||||
// public static <T> Page<T> init(BaseQue base,Class<T> cla){
|
|
||||||
// if(ObjectUtil.isEmpty(base))
|
|
||||||
// return null;
|
|
||||||
// base.setPageNum(ObjectUtil.isNotEmpty(base.getPageNum())?base.getPageNum():0);
|
|
||||||
// base.setPageSize(ObjectUtil.isNotEmpty(base.getPageSize())?base.getPageSize():10);
|
|
||||||
// return new Page<>(base.getPageNum(), base.getPageSize());
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.que.dataModel;
|
|
||||||
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description: 查询参数对象
|
|
||||||
* @date 2026/1/29 21:47
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class DataModelQue {
|
|
||||||
/**
|
|
||||||
* 用户ID
|
|
||||||
*/
|
|
||||||
private String userId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 目录类型
|
|
||||||
*/
|
|
||||||
private String menuType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 机房的ID
|
|
||||||
*/
|
|
||||||
private Long roomId;
|
|
||||||
}
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.que.file;
|
|
||||||
|
|
||||||
|
|
||||||
import com.sz.admin.monitor.pojo.que.BaseQue;
|
|
||||||
import com.sz.core.common.entity.PageQuery;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/2/3 13:35
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@Schema(description = "文件查询Que")
|
|
||||||
public class FileStorageQue extends PageQuery {
|
|
||||||
/**
|
|
||||||
* id
|
|
||||||
*/
|
|
||||||
@Schema(description = "id")
|
|
||||||
private String id;
|
|
||||||
/**
|
|
||||||
* 文件名称
|
|
||||||
*/
|
|
||||||
@Schema(description = "文件名称")
|
|
||||||
private String fileName;
|
|
||||||
/**
|
|
||||||
* 开始时间
|
|
||||||
*/
|
|
||||||
@Schema(description = "开始时间")
|
|
||||||
private Long startTime;
|
|
||||||
/**
|
|
||||||
* 结束时间
|
|
||||||
*/
|
|
||||||
@Schema(description = "结束时间")
|
|
||||||
private Long endTime;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.sz.admin.monitor.pojo.vo.tree;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: ComputerRoomNodeVO
|
|
||||||
* Package: com.sz.admin.monitor.pojo.vo.tree
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class ComputerRoomNodeVO extends TreeNodeVO{
|
|
||||||
private Long substationId; //所属变电站
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.blurDetection.BlurDetectionDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.BlurDetection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: BlurDetectionService
|
|
||||||
* Package: com.sz.admin.monitor.service
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
public interface BlurDetectionService extends IService<BlurDetection> {
|
|
||||||
Boolean saveOrUpdateBlur(BlurDetectionDTO blurDetectionDTO);
|
|
||||||
}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.CanvasCfgDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 画板
|
|
||||||
* @author xq
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public interface CanvasCfgService extends IService<CanvasCfgDO> {
|
|
||||||
void saveOrUpdateCanvas(CanvasCfgDTO canvasCfgDTO);
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ComputerRoom;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: ComputerRoomService
|
|
||||||
* Package: com.sz.admin.monitor.service
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
public interface ComputerRoomService extends IService<ComputerRoom> {
|
|
||||||
// 获取变电站的机房列表
|
|
||||||
List<ComputerRoom> getComputerRoomList(Long substationId);
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.po.FileStorageDO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:文件存储数据对象
|
|
||||||
* @date 2026/2/2 22:18
|
|
||||||
*/
|
|
||||||
public interface FileStorageService extends IService<FileStorageDO> {
|
|
||||||
}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:网格
|
|
||||||
* @date 2026/1/29 11:45
|
|
||||||
*/
|
|
||||||
public interface GridCfgService extends IService<GridCfgDO> {
|
|
||||||
void saveOrUpdateGrid(GridCfgDTO gridCfgDTO);
|
|
||||||
}
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ModelContentDO;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 存储模型的基本信息和配置
|
|
||||||
* @author xq
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public interface ModelContentService extends IService<ModelContentDO> {
|
|
||||||
void saveOrUpdateModel(List<ModelContentDTO> list,String menuType);
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.service.IService;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.Substation;
|
|
||||||
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface UserModelContentService extends IService<UserModelContentDO> {
|
|
||||||
public void saveOrUpdateModel(List<ModelContentDTO> list);
|
|
||||||
}
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
||||||
import com.sz.admin.monitor.mapper.CanvasCfgMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.CanvasCfgDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
|
||||||
import com.sz.admin.monitor.service.CanvasCfgService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description: 画板
|
|
||||||
* @date 2026/1/29 11:34
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class CanvasCfgServiceImpl extends ServiceImpl<CanvasCfgMapper, CanvasCfgDO> implements CanvasCfgService {
|
|
||||||
@Override
|
|
||||||
public void saveOrUpdateCanvas(CanvasCfgDTO canvasCfgDTO) {
|
|
||||||
if(ObjectUtil.isEmpty(canvasCfgDTO))
|
|
||||||
return;
|
|
||||||
CanvasCfgDO canvasCfgDO = CanvasCfgDTO.dtoConvertDO(canvasCfgDTO);
|
|
||||||
if(StrUtil.isEmpty(canvasCfgDO.getUserId())) {
|
|
||||||
saveOrUpdate(canvasCfgDO);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryWrapper queryWrapper = QueryWrapper
|
|
||||||
.create()
|
|
||||||
.from(CanvasCfgDO.class)
|
|
||||||
.eq(CanvasCfgDO.USER_ID, canvasCfgDTO.getUserId())
|
|
||||||
.limit(1);
|
|
||||||
|
|
||||||
CanvasCfgDO one = getOne(queryWrapper);
|
|
||||||
|
|
||||||
// CanvasCfgDO one = getOne(new QueryWrapper<CanvasCfgDO>()
|
|
||||||
// .eq(CanvasCfgDO.USER_ID, canvasCfgDTO.getUserId())
|
|
||||||
// .last("limit 1")
|
|
||||||
// );
|
|
||||||
|
|
||||||
if(ObjectUtil.isEmpty(one)) {
|
|
||||||
saveOrUpdate(canvasCfgDO);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
canvasCfgDO.setId(one.getId());
|
|
||||||
saveOrUpdate(canvasCfgDO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
||||||
import com.sz.admin.monitor.mapper.ComputeRoomMapper;
|
|
||||||
import com.sz.admin.monitor.mapper.NvrMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ComputerRoom;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ModelContentDO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.Nvr;
|
|
||||||
import com.sz.admin.monitor.pojo.po.table.ComputerRoomTableDef;
|
|
||||||
import com.sz.admin.monitor.pojo.po.table.ModelContentDOTableDef;
|
|
||||||
import com.sz.admin.monitor.pojo.po.table.NvrTableDef;
|
|
||||||
import com.sz.admin.monitor.service.ComputerRoomService;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClassName: ComputerRoomServiceImpl
|
|
||||||
* Package: com.sz.admin.monitor.service.impl
|
|
||||||
* Description:
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class ComputerRoomServiceImpl extends ServiceImpl<ComputeRoomMapper, ComputerRoom> implements ComputerRoomService {
|
|
||||||
@Resource
|
|
||||||
private ComputeRoomMapper computerRoomMapper;
|
|
||||||
@Override
|
|
||||||
public List<ComputerRoom> getComputerRoomList(Long substationId) {
|
|
||||||
// 构建 EXISTS 子查询
|
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
|
||||||
.select(
|
|
||||||
ComputerRoomTableDef.COMPUTER_ROOM.ID,
|
|
||||||
ComputerRoomTableDef.COMPUTER_ROOM.SUBSTATION_ID,
|
|
||||||
ComputerRoomTableDef.COMPUTER_ROOM.NAME,
|
|
||||||
ComputerRoomTableDef.COMPUTER_ROOM.DESCRIPTION
|
|
||||||
)
|
|
||||||
.from(ComputerRoomTableDef.COMPUTER_ROOM)
|
|
||||||
.where(ComputerRoomTableDef.COMPUTER_ROOM.SUBSTATION_ID.eq(substationId))
|
|
||||||
.and(ComputerRoomTableDef.COMPUTER_ROOM.ID.in(
|
|
||||||
QueryWrapper.create()
|
|
||||||
.select(ModelContentDOTableDef.MODEL_CONTENT_DO.ROOM_ID)
|
|
||||||
.from(ModelContentDOTableDef.MODEL_CONTENT_DO)
|
|
||||||
));
|
|
||||||
return computerRoomMapper.selectListByQuery(queryWrapper);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.CanvasCfgDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.DataModelDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.ModelContentDO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
|
||||||
import com.sz.admin.monitor.pojo.que.dataModel.DataModelQue;
|
|
||||||
import com.sz.admin.monitor.service.CanvasCfgService;
|
|
||||||
import com.sz.admin.monitor.service.GridCfgService;
|
|
||||||
import com.sz.admin.monitor.service.ModelContentService;
|
|
||||||
import com.sz.admin.monitor.service.UserModelContentService;
|
|
||||||
import com.sz.core.common.entity.ApiResult;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/1/29 10:51
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class DataModelServiceImpl {
|
|
||||||
@Autowired
|
|
||||||
private CanvasCfgService canvasCfgService; // 画板
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private GridCfgService gridCfgService; // 网格
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ModelContentService modelContentService; //模型
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private UserModelContentService userModelContentService; //用户模型中间表
|
|
||||||
|
|
||||||
private static final String userId = "1";
|
|
||||||
|
|
||||||
public ApiResult<DataModelDTO> getModelData(DataModelQue que) {
|
|
||||||
if (StrUtil.isEmpty(que.getUserId()))
|
|
||||||
que.setUserId(userId);
|
|
||||||
|
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
|
||||||
.from(CanvasCfgDO.class)
|
|
||||||
.eq(CanvasCfgDO.USER_ID, que.getUserId())
|
|
||||||
.limit(1);
|
|
||||||
|
|
||||||
// 获取画板数据
|
|
||||||
CanvasCfgDO canvasCfgDO = canvasCfgService.getOne(queryWrapper);
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(canvasCfgDO)) {
|
|
||||||
canvasCfgDO = initCanvasCfg();
|
|
||||||
canvasCfgService.saveOrUpdate(canvasCfgDO);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取网格数据
|
|
||||||
GridCfgDO gridCfgDO = gridCfgService.getOne(QueryWrapper.create()
|
|
||||||
.from(GridCfgDO.class)
|
|
||||||
.eq(GridCfgDO.USER_ID, que.getUserId())
|
|
||||||
.limit(1)
|
|
||||||
);
|
|
||||||
if (ObjectUtil.isEmpty(gridCfgDO)) {
|
|
||||||
gridCfgDO = initGridCfg();
|
|
||||||
gridCfgService.saveOrUpdate(gridCfgDO);
|
|
||||||
}
|
|
||||||
|
|
||||||
//中间表
|
|
||||||
List<UserModelContentDO> userModelList = userModelContentService.list(QueryWrapper.create()
|
|
||||||
.from(UserModelContentDO.class)
|
|
||||||
.eq(UserModelContentDO.USER_ID, userId)
|
|
||||||
.eq(UserModelContentDO.MENU_TYPE, que.getMenuType())
|
|
||||||
);
|
|
||||||
|
|
||||||
ArrayList<ModelContentDTO> objects = new ArrayList<>();
|
|
||||||
if (CollectionUtil.isEmpty(userModelList)) {
|
|
||||||
DataModelDTO build = DataModelDTO.builder()
|
|
||||||
.canvasCfg(CanvasCfgDO.doConvertDTO(canvasCfgDO))
|
|
||||||
.gridCfg(GridCfgDO.doConvertDTO(gridCfgDO))
|
|
||||||
.json(objects)
|
|
||||||
.build();
|
|
||||||
return ApiResult.success(build);
|
|
||||||
}
|
|
||||||
|
|
||||||
// List<String> collect = userModelList.stream()
|
|
||||||
// .map(item -> item.getModelContentId())
|
|
||||||
// .collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<ModelContentDO> modelContentDOS = modelContentService.list(QueryWrapper.create()
|
|
||||||
.from(ModelContentDO.class)
|
|
||||||
.eq(ModelContentDO::getRoomId, que.getRoomId())
|
|
||||||
// .in(ModelContentDO.ID, collect)
|
|
||||||
.orderBy(ModelContentDO.MODEL_INDEX, true)
|
|
||||||
);
|
|
||||||
|
|
||||||
for (ModelContentDO modelContentDO : modelContentDOS) {
|
|
||||||
objects.add(ModelContentDO.doConvertDTO(modelContentDO));
|
|
||||||
}
|
|
||||||
DataModelDTO build = DataModelDTO.builder()
|
|
||||||
.canvasCfg(CanvasCfgDO.doConvertDTO(canvasCfgDO))
|
|
||||||
.gridCfg(GridCfgDO.doConvertDTO(gridCfgDO))
|
|
||||||
.json(objects)
|
|
||||||
.build();
|
|
||||||
return ApiResult.success(build);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化网格数据
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public GridCfgDO initGridCfg() {
|
|
||||||
return GridCfgDO.builder()
|
|
||||||
.userId(userId)
|
|
||||||
.enabled(true)
|
|
||||||
.align(true)
|
|
||||||
.size(10)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化画板数据
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public CanvasCfgDO initCanvasCfg() {
|
|
||||||
return CanvasCfgDO.builder()
|
|
||||||
.width(1920)
|
|
||||||
.userId(userId)
|
|
||||||
.height(1080)
|
|
||||||
.scale(1D)
|
|
||||||
.color("")
|
|
||||||
.img("")
|
|
||||||
.guide(true)
|
|
||||||
.adsorp(true)
|
|
||||||
.adsorpDiff(5D)
|
|
||||||
.transformOrigin("{\"x\":0,\"y\":0}")
|
|
||||||
.dragOffset("{\"x\":0,\"y\":0}")
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存模型数据
|
|
||||||
*
|
|
||||||
* @param dataModelDTO
|
|
||||||
* @param request
|
|
||||||
* @param response
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Transactional
|
|
||||||
public ApiResult saveOrUpdateModelData(DataModelDTO dataModelDTO, HttpServletRequest request, HttpServletResponse response) {
|
|
||||||
if (ObjectUtil.isEmpty(dataModelDTO))
|
|
||||||
throw new IllegalArgumentException("传值错误");
|
|
||||||
CanvasCfgDTO canvasCfg = dataModelDTO.getCanvasCfg();
|
|
||||||
GridCfgDTO gridCfg = dataModelDTO.getGridCfg();
|
|
||||||
List<ModelContentDTO> json=new ArrayList<>();
|
|
||||||
for (int i = 0; i < dataModelDTO.getJson().size(); i++) {
|
|
||||||
ModelContentDTO modelContentDTO = dataModelDTO.getJson().get(i);
|
|
||||||
modelContentDTO.setModelIndex(i);
|
|
||||||
modelContentDTO.setSubstationId(dataModelDTO.getSubstationId());
|
|
||||||
modelContentDTO.setRoomId(dataModelDTO.getRoomId());
|
|
||||||
json.add(modelContentDTO);
|
|
||||||
}
|
|
||||||
//保存、更新面板
|
|
||||||
canvasCfg.setUserId(userId);
|
|
||||||
canvasCfgService.saveOrUpdateCanvas(canvasCfg);
|
|
||||||
//保存、更新网格
|
|
||||||
gridCfg.setUserId(userId);
|
|
||||||
gridCfgService.saveOrUpdateGrid(gridCfg);
|
|
||||||
//保存数据模型
|
|
||||||
modelContentService.saveOrUpdateModel(json, dataModelDTO.getMenuType());
|
|
||||||
|
|
||||||
return ApiResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<UserModelContentDO> getList() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,274 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import cn.hutool.core.codec.Base64;
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.mybatisflex.core.paginate.Page;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.camera.CameraListDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.file.FileEntityDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.file.FileStorageDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.Camera;
|
|
||||||
import com.sz.admin.monitor.pojo.po.FileStorageDO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.Nvr;
|
|
||||||
import com.sz.admin.monitor.pojo.que.file.FileStorageQue;
|
|
||||||
import com.sz.admin.monitor.pojo.vo.camera.CameraVO;
|
|
||||||
import com.sz.admin.monitor.service.FileStorageService;
|
|
||||||
import com.sz.core.common.entity.ApiResult;
|
|
||||||
import com.sz.core.common.entity.PageResult;
|
|
||||||
import com.sz.core.datascope.SimpleDataScopeHelper;
|
|
||||||
import com.sz.core.util.PageUtils;
|
|
||||||
import com.sz.core.util.Utils;
|
|
||||||
import com.sz.platform.enums.AdminResponseEnum;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.http.HttpHeaders;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.MediaType;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:文件存储业务
|
|
||||||
* @date 2026/3/13 15:28
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class FileServiceImpl {
|
|
||||||
@Autowired
|
|
||||||
private FileStorageService fileStorageService;
|
|
||||||
|
|
||||||
@Value("${file.object.storage.targetDir:/defaultFile}")
|
|
||||||
private String targetDir;
|
|
||||||
|
|
||||||
// 获取当前操作系统的文件分隔符
|
|
||||||
private static String separator = "/";
|
|
||||||
|
|
||||||
//获取文件流路径(请求路径)
|
|
||||||
private static String path = "/fileStorage/getPreviewFile/";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除文件
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ApiResult<String> deleteFileById(String id) {
|
|
||||||
if (ObjectUtil.isEmpty(id))
|
|
||||||
return ApiResult.error(AdminResponseEnum.OPERATION_FAIL);
|
|
||||||
FileStorageDO fileStorageDO = fileStorageService.getById(id);
|
|
||||||
if (ObjectUtil.isEmpty(fileStorageDO))
|
|
||||||
return ApiResult.error(AdminResponseEnum.OPERATION_FAIL);
|
|
||||||
fileStorageService.removeById(id);
|
|
||||||
return ApiResult.success("删除成功");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改文件名称
|
|
||||||
*
|
|
||||||
* @param dto
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ApiResult<String> editFileNameById(FileEntityDTO dto) {
|
|
||||||
if (ObjectUtil.isEmpty(dto.getId()))
|
|
||||||
return ApiResult.error(AdminResponseEnum.OPERATION_FAIL);
|
|
||||||
FileStorageDO fileStorageDO = fileStorageService.getById(dto.getId());
|
|
||||||
if (ObjectUtil.isEmpty(fileStorageDO))
|
|
||||||
return ApiResult.error(AdminResponseEnum.OPERATION_FAIL);
|
|
||||||
fileStorageDO.setFileName(dto.getFileName());
|
|
||||||
fileStorageService.saveOrUpdate(fileStorageDO);
|
|
||||||
return ApiResult.success("修改成功");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询
|
|
||||||
*
|
|
||||||
* @param que
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ApiResult<PageResult<FileEntityDTO>> getFileObjectList(FileStorageQue que) {
|
|
||||||
SimpleDataScopeHelper.start(FileStorageDO.class); // 指定要追加条件的表PO实体
|
|
||||||
|
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
|
||||||
.from(FileStorageDO.class)
|
|
||||||
.eq(FileStorageDO.ID, que.getId(), ObjectUtil.isNotEmpty(que.getId()))
|
|
||||||
.like(FileStorageDO.FILE_NAME, que.getFileName(), ObjectUtil.isNotEmpty(que.getFileName()));
|
|
||||||
if (ObjectUtil.isNotEmpty(que.getStartTime()) && ObjectUtil.isNotEmpty(que.getEndTime())) {
|
|
||||||
queryWrapper.between(
|
|
||||||
FileStorageDO.ADD_TIME,
|
|
||||||
new Date(que.getStartTime()),
|
|
||||||
new Date(que.getEndTime())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
queryWrapper.orderBy(FileStorageDO.ADD_TIME, false);
|
|
||||||
|
|
||||||
|
|
||||||
Page<FileStorageDO> page = fileStorageService.pageAs(PageUtils.getPage(que), queryWrapper, FileStorageDO.class);// 调试sql
|
|
||||||
if (ObjectUtil.isEmpty(page) || page.getRecords().isEmpty())
|
|
||||||
return ApiResult.success(new PageResult<>(que.getPage().longValue(), que.getLimit().longValue(), 0, 0, new ArrayList<>()));
|
|
||||||
|
|
||||||
List<FileEntityDTO> fileEntityDTOS = new ArrayList<>();
|
|
||||||
for (FileStorageDO record : page.getRecords()) {
|
|
||||||
FileEntityDTO fileEntityDTO = BeanUtil.copyProperties(record, FileEntityDTO.class);
|
|
||||||
fileEntityDTO.setFilePath(path + record.getId());
|
|
||||||
fileEntityDTOS.add(fileEntityDTO);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ApiResult.success(new PageResult<>(
|
|
||||||
page.getPageNumber(),
|
|
||||||
page.getPageSize(),
|
|
||||||
page.getTotalPage(),
|
|
||||||
page.getTotalRow(),
|
|
||||||
fileEntityDTOS));
|
|
||||||
}
|
|
||||||
|
|
||||||
// public ApiResult<PageResult<FileEntityDTO>> getFileObjectList(FileStorageQue que) {
|
|
||||||
// Page<FileStorageDO> doPage = BaseQue.init(que, FileStorageDO.class);
|
|
||||||
// Page<FileStorageDO> page = fileStorageService.page(doPage, new QueryWrapper<FileStorageDO>()
|
|
||||||
// .eq(ObjectUtil.isNotEmpty(que.getId()), FileStorageDO.ID, que.getId())
|
|
||||||
// .like(ObjectUtil.isNotEmpty(que.getFileName()), FileStorageDO.FILE_NAME, que.getFileName())
|
|
||||||
// .between(
|
|
||||||
// ObjectUtil.isNotEmpty(que.getStartTime()) && ObjectUtil.isNotEmpty(que.getEndTime())
|
|
||||||
// , FileStorageDO.ADD_TIME
|
|
||||||
// , que.getStartTime(), que.getEndTime())
|
|
||||||
// .orderByDesc(FileStorageDO.ADD_TIME)
|
|
||||||
// );
|
|
||||||
// if(ObjectUtil.isEmpty(page) || page.getRecords().isEmpty())
|
|
||||||
// return ResponseBody.ok();
|
|
||||||
//
|
|
||||||
// BasePage<FileEntityDTO> basePage = new BasePage();
|
|
||||||
// basePage.setTotal(page.getTotal());
|
|
||||||
// basePage.setSize(page.getSize());
|
|
||||||
// basePage.setCurrent(page.getCurrent());
|
|
||||||
// basePage.setPages(page.getPages());
|
|
||||||
//
|
|
||||||
// List<FileEntityDTO> fileEntityDTOS = new ArrayList<>();
|
|
||||||
// for (FileStorageDO record : page.getRecords()) {
|
|
||||||
// FileEntityDTO fileEntityDTO = BeanUtil.copyProperties(record, FileEntityDTO.class);
|
|
||||||
// fileEntityDTO.setFilePath(path+record.getId());
|
|
||||||
// fileEntityDTOS.add(fileEntityDTO);
|
|
||||||
// }
|
|
||||||
// basePage.setList(fileEntityDTOS);
|
|
||||||
// return ApiResult.success(basePage);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回文件流
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ResponseEntity<byte[]> getPreviewFile(String id) {
|
|
||||||
FileStorageDO fileStorageDO = fileStorageService.getById(id);
|
|
||||||
String filePath = fileStorageDO.getFileUrl();
|
|
||||||
// 使用Hutool读取文件并转换为Base64编码
|
|
||||||
byte[] imageBytes = FileUtil.readBytes(filePath);
|
|
||||||
String mimeType = getMimeType(filePath);
|
|
||||||
|
|
||||||
HttpHeaders headers = new HttpHeaders();
|
|
||||||
headers.setContentType(MediaType.parseMediaType(mimeType));
|
|
||||||
headers.setContentLength(imageBytes.length);
|
|
||||||
|
|
||||||
return new ResponseEntity<>(imageBytes, headers, HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取文件
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ApiResult<FileStorageDTO> getFile(String id) {
|
|
||||||
FileStorageDO fileStorageDO = fileStorageService.getById(id);
|
|
||||||
if (ObjectUtil.isEmpty(fileStorageDO))
|
|
||||||
return ApiResult.error(AdminResponseEnum.OPERATION_FAIL);
|
|
||||||
|
|
||||||
String filePath = fileStorageDO.getFileUrl();
|
|
||||||
// 使用Hutool读取文件并转换为Base64编码
|
|
||||||
byte[] fileBytes = FileUtil.readBytes(filePath);
|
|
||||||
String base64Data = Base64.encode(fileBytes);
|
|
||||||
String mimeType = getMimeType(filePath);
|
|
||||||
String dataUrl = "data:" + mimeType + ";base64," + base64Data;
|
|
||||||
FileStorageDTO fileStorageDTO = BeanUtil.copyProperties(fileStorageDO, FileStorageDTO.class);
|
|
||||||
fileStorageDTO.setBase64Data(dataUrl);
|
|
||||||
return ApiResult.success(fileStorageDTO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 图片存储
|
|
||||||
*
|
|
||||||
* @param file
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ApiResult<FileStorageDTO> saveFile(MultipartFile file) {
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
|
|
||||||
if (file.isEmpty())
|
|
||||||
return ApiResult.error(AdminResponseEnum.OPERATION_FAIL);
|
|
||||||
|
|
||||||
String path = targetDir;
|
|
||||||
try {
|
|
||||||
FileUtil.mkdir(path);
|
|
||||||
|
|
||||||
// 生成唯一文件名
|
|
||||||
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
|
|
||||||
String filePath = path + separator + fileName;
|
|
||||||
|
|
||||||
// 使用Hutool保存文件
|
|
||||||
FileUtil.writeBytes(file.getBytes(), filePath);
|
|
||||||
|
|
||||||
String mimeType = getMimeType(filePath);
|
|
||||||
FileStorageDTO fileDTO = FileStorageDTO.builder()
|
|
||||||
.fileUrl(filePath)
|
|
||||||
.fileSize(ObjectUtil.isNotEmpty(file.getSize()) ? String.valueOf(file.getSize()) : "0")
|
|
||||||
.fileName(file.getOriginalFilename())
|
|
||||||
.fileSuffix(mimeType)
|
|
||||||
.addTime(new Date())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
FileStorageDO fileStorageDO = FileStorageDTO.dtoConvertDO(fileDTO);
|
|
||||||
fileStorageService.saveOrUpdate(fileStorageDO);
|
|
||||||
fileDTO.setId(fileStorageDO.getId());
|
|
||||||
|
|
||||||
String base64Data = Base64.encode(file.getBytes());
|
|
||||||
String dataUrl = "data:" + mimeType + ";base64," + base64Data;
|
|
||||||
fileDTO.setBase64Data(dataUrl);
|
|
||||||
|
|
||||||
return ApiResult.success(fileDTO);
|
|
||||||
} catch (IOException e) {
|
|
||||||
result.put("success", false);
|
|
||||||
result.put("message", "文件上传失败: " + e.getMessage());
|
|
||||||
return ApiResult.error(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void test01() {
|
|
||||||
fileStorageService.list().forEach(System.out::println);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据文件扩展名获取MIME类型
|
|
||||||
*/
|
|
||||||
private String getMimeType(String filePath) {
|
|
||||||
String lowerPath = filePath.toLowerCase();
|
|
||||||
if (lowerPath.endsWith(".jpg") || lowerPath.endsWith(".jpeg")) {
|
|
||||||
return "image/jpeg";
|
|
||||||
} else if (lowerPath.endsWith(".png")) {
|
|
||||||
return "image/png";
|
|
||||||
} else if (lowerPath.endsWith(".gif")) {
|
|
||||||
return "image/gif";
|
|
||||||
} else if (lowerPath.endsWith(".bmp")) {
|
|
||||||
return "image/bmp";
|
|
||||||
} else {
|
|
||||||
return "image/jpeg"; // 默认JPEG类型
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
||||||
import com.sz.admin.monitor.mapper.FileStorageMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.po.FileStorageDO;
|
|
||||||
import com.sz.admin.monitor.service.FileStorageService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:文件存储数据对象
|
|
||||||
* @date 2026/2/2 22:18
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class FileStorageServiceImpl extends ServiceImpl<FileStorageMapper, FileStorageDO> implements FileStorageService {
|
|
||||||
}
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
||||||
import com.sz.admin.monitor.mapper.GridCfgMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
|
||||||
import com.sz.admin.monitor.service.GridCfgService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:网格
|
|
||||||
* @date 2026/1/29 11:45
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class GridCfgServiceImpl extends ServiceImpl<GridCfgMapper, GridCfgDO> implements GridCfgService {
|
|
||||||
@Override
|
|
||||||
public void saveOrUpdateGrid(GridCfgDTO dto) {
|
|
||||||
if (ObjectUtil.isEmpty(dto))
|
|
||||||
return;
|
|
||||||
GridCfgDO gridCfgDO = GridCfgDTO.dtoConvertDO(dto);
|
|
||||||
if (StrUtil.isEmpty(gridCfgDO.getUserId())) {
|
|
||||||
saveOrUpdate(gridCfgDO);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
|
||||||
.from(GridCfgDO.class)
|
|
||||||
.eq(GridCfgDO.USER_ID, gridCfgDO.getUserId())
|
|
||||||
.limit(1);
|
|
||||||
|
|
||||||
GridCfgDO one = getOne(queryWrapper);
|
|
||||||
|
|
||||||
// GridCfgDO one = getOne(new QueryWrapper<GridCfgDO>()
|
|
||||||
// .eq(GridCfgDO.USER_ID, gridCfgDO.getUserId())
|
|
||||||
// .last("limit 1")
|
|
||||||
// );
|
|
||||||
if (ObjectUtil.isEmpty(one)) {
|
|
||||||
saveOrUpdate(gridCfgDO);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
gridCfgDO.setId(one.getId());
|
|
||||||
saveOrUpdate(gridCfgDO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
package com.sz.admin.monitor.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
||||||
import com.sz.admin.monitor.mapper.SubstationMapper;
|
|
||||||
import com.sz.admin.monitor.mapper.UserModelContentMapper;
|
|
||||||
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
|
||||||
import com.sz.admin.monitor.pojo.po.Substation;
|
|
||||||
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
|
||||||
import com.sz.admin.monitor.service.SubstationService;
|
|
||||||
import com.sz.admin.monitor.service.UserModelContentService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xq
|
|
||||||
* @description:
|
|
||||||
* @date 2026/3/13 10:23
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class UserModelContentServiceImpl extends ServiceImpl<UserModelContentMapper, UserModelContentDO> implements UserModelContentService {
|
|
||||||
@Override
|
|
||||||
public void saveOrUpdateModel(List<ModelContentDTO> list) {
|
|
||||||
if(CollectionUtil.isEmpty(list))
|
|
||||||
return;
|
|
||||||
for (ModelContentDTO modelContentDTO : list) {
|
|
||||||
ModelContentDTO.dtoConvertDO(modelContentDTO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue