Compare commits
16 Commits
main
...
dev_xq_0.0
| Author | SHA1 | Date |
|---|---|---|
|
|
65e5982524 | 3 days ago |
|
|
c1b99b4d84 | 2 weeks ago |
|
|
9c2f796334 | 2 weeks ago |
|
|
f856a9614d | 2 weeks ago |
|
|
9ee720b792 | 2 weeks ago |
|
|
da8f4f3307 | 3 weeks ago |
|
|
8fcae28c5e | 3 weeks ago |
|
|
e1bbab6710 | 3 weeks ago |
|
|
4cbb8e9b89 | 3 weeks ago |
|
|
d5892fc679 | 3 weeks ago |
|
|
95b62c3b0d | 3 weeks ago |
|
|
52f8c1ad80 | 3 weeks ago |
|
|
abc58af9d2 | 3 weeks ago |
|
|
417322f1f4 | 3 weeks ago |
|
|
17bc3392ad | 3 weeks ago |
|
|
c5cdcd4730 | 3 weeks ago |
@ -0,0 +1,28 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
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,12 @@
|
||||
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> {
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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> {
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
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> {
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
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> {
|
||||
}
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
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> {
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
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> {
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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 {
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
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;
|
||||
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
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;
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
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;
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
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;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
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";
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
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";
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
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";
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
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;
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
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());
|
||||
// }
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
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;
|
||||
}
|
||||
@ -0,0 +1,46 @@
|
||||
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;
|
||||
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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; //所属变电站
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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);
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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);
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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);
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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> {
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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);
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
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);
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
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);
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,195 @@
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,274 @@
|
||||
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类型
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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 {
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
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