diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/ComputerRoomController.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/ComputerRoomController.java new file mode 100644 index 0000000..a6710ef --- /dev/null +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/ComputerRoomController.java @@ -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> getList(@RequestParam("substationId") Long substationId) { + return ApiResult.success(computerRoomService.getComputerRoomList(substationId)); + } +} diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/DataModelController.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/DataModelController.java index 2673e35..9207d5b 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/DataModelController.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/DataModelController.java @@ -31,16 +31,14 @@ public class DataModelController { } /** - * 保存或者更新数据模型 + * 保存数据模型 * * @param dataModelDTO * @return */ @PostMapping("/saveOrUpdate/modelData") public ApiResult saveOrUpdateModelData( - @RequestBody DataModelDTO dataModelDTO, - HttpServletRequest request, - HttpServletResponse response) { + @RequestBody DataModelDTO dataModelDTO, HttpServletRequest request, HttpServletResponse response) { return dataModelService.saveOrUpdateModelData(dataModelDTO, request, response); } diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/TreeController.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/TreeController.java index 4a72efd..dff2310 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/TreeController.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/controller/TreeController.java @@ -39,4 +39,9 @@ public class TreeController { public ApiResult> getTreePreview() { return ApiResult.success(treeService.buildTreePreview()); } + @Operation(summary = "获取变电站的机房的树型结构数据") + @GetMapping("/substation") + public ApiResult> getTreeSubstation() { + return ApiResult.success(treeService.buildTreeComputeRoom()); + } } diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ComputeRoomMapper.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ComputeRoomMapper.java new file mode 100644 index 0000000..03d6d0e --- /dev/null +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ComputeRoomMapper.java @@ -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 { +} diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ModelContentMapper.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ModelContentMapper.java index e4aea4e..8c21dd1 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ModelContentMapper.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/mapper/ModelContentMapper.java @@ -2,12 +2,24 @@ 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 { + default void deleteByRoomIds(Set roomIds) + { + QueryWrapper wrapper = QueryWrapper.create() + .select() + .from(ModelContentDO.class) + .where(ModelContentDO::getRoomId).in(roomIds); + this.deleteByQuery(wrapper); + } } \ No newline at end of file diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/DataModelDTO.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/DataModelDTO.java index 13a2dc4..1a70f52 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/DataModelDTO.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/DataModelDTO.java @@ -1,6 +1,7 @@ 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; @@ -22,6 +23,15 @@ public class DataModelDTO { * 模型数据对象 */ private CanvasCfgDTO canvasCfg; + /** + * 变电站ID + */ + private Long substationId; + + /** + *机房ID + */ + private Long roomId; /** * 画布配置数据对象 diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/ModelContentDTO.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/ModelContentDTO.java index 5b51957..e2b2342 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/ModelContentDTO.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/dto/dataModel/ModelContentDTO.java @@ -34,6 +34,16 @@ public class ModelContentDTO { */ private Integer modelIndex=99; + /** + * 变电站ID + */ + private Long substationId; + + /** + *机房ID + */ + private Long roomId; + /** * 模型名称 */ diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ComputerRoom.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ComputerRoom.java new file mode 100644 index 0000000..1e9f982 --- /dev/null +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ComputerRoom.java @@ -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; +} diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ModelContentDO.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ModelContentDO.java index 42542c2..6ea7a9a 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ModelContentDO.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/po/ModelContentDO.java @@ -34,6 +34,17 @@ public class ModelContentDO { @Schema(description = "模型id") private String id; + /** + * 变电站ID + */ + @Schema(description = "变电站ID") + private Long substationId; + + /** + *机房ID + */ + @Schema(description = "机房ID") + private Long roomId; /** * 索引 */ diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/que/dataModel/DataModelQue.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/que/dataModel/DataModelQue.java index 9db71f6..c79acff 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/que/dataModel/DataModelQue.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/que/dataModel/DataModelQue.java @@ -23,4 +23,9 @@ public class DataModelQue { * 目录类型 */ private String menuType; + + /** + * 机房的ID + */ + private Long roomId; } diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/ComputerRoomNodeVO.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/ComputerRoomNodeVO.java new file mode 100644 index 0000000..f7fe361 --- /dev/null +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/ComputerRoomNodeVO.java @@ -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; //所属变电站 +} diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/TreeNodeVO.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/TreeNodeVO.java index 86acc22..f1258b7 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/TreeNodeVO.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/pojo/vo/tree/TreeNodeVO.java @@ -17,7 +17,7 @@ import java.util.List; public class TreeNodeVO { private Long id; private String name; - private Integer type; // 0: Region, 1: Substation, 2: NVR,3: Camera + private Integer type; // 0: Region, 1: Substation, 2: NVR,3: Camera,4: room private List children; public TreeNodeVO(Long id, String name, Integer type) { this.id = id; diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ComputerRoomService.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ComputerRoomService.java new file mode 100644 index 0000000..74cffbc --- /dev/null +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ComputerRoomService.java @@ -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 { + // 获取变电站的机房列表 + List getComputerRoomList(Long substationId); +} diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ModelContentService.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ModelContentService.java index 3c7a35d..90bf64a 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ModelContentService.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/ModelContentService.java @@ -14,5 +14,5 @@ import java.util.List; * @version 1.0 */ public interface ModelContentService extends IService { - HashMap> saveOrUpdateModel(List list,String menuType); + void saveOrUpdateModel(List list,String menuType); } diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/TreeService.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/TreeService.java index 495a59f..8bb10a6 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/TreeService.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/TreeService.java @@ -17,4 +17,7 @@ public interface TreeService { // 获取视频预览的树型结构数据 List buildTreePreview(); + + List buildTreeComputeRoom(); + } diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ComputerRoomServiceImpl.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ComputerRoomServiceImpl.java new file mode 100644 index 0000000..e5aa78a --- /dev/null +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ComputerRoomServiceImpl.java @@ -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 implements ComputerRoomService { + @Resource + private ComputeRoomMapper computerRoomMapper; + @Override + public List 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); + } +} diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/DataModelServiceImpl.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/DataModelServiceImpl.java index e6c86b2..21e56db 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/DataModelServiceImpl.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/DataModelServiceImpl.java @@ -64,10 +64,6 @@ public class DataModelServiceImpl { // 获取画板数据 CanvasCfgDO canvasCfgDO = canvasCfgService.getOne(queryWrapper); -// CanvasCfgDO canvasCfgDO = canvasCfgService.getOne(new QueryWrapper() -// .eq(CanvasCfgDO.USER_ID, que.getUserId()) -// .last("limit 1") -// ); if (ObjectUtil.isEmpty(canvasCfgDO)) { canvasCfgDO = initCanvasCfg(); canvasCfgService.saveOrUpdate(canvasCfgDO); @@ -79,10 +75,6 @@ public class DataModelServiceImpl { .eq(GridCfgDO.USER_ID, que.getUserId()) .limit(1) ); -// GridCfgDO gridCfgDO = gridCfgService.getOne(new QueryWrapper() -// .eq(GridCfgDO.USER_ID, userId) -// .last("limit 1") -// ); if (ObjectUtil.isEmpty(gridCfgDO)) { gridCfgDO = initGridCfg(); gridCfgService.saveOrUpdate(gridCfgDO); @@ -94,13 +86,8 @@ public class DataModelServiceImpl { .eq(UserModelContentDO.USER_ID, userId) .eq(UserModelContentDO.MENU_TYPE, que.getMenuType()) ); -// List userModelList = userModelContentService.list(new QueryWrapper() -// .eq(UserModelContentDO.USER_ID, userId) -// .eq(UserModelContentDO.MENU_TYPE, que.getMenuType()) -// ); ArrayList objects = new ArrayList<>(); - if (CollectionUtil.isEmpty(userModelList)) { DataModelDTO build = DataModelDTO.builder() .canvasCfg(CanvasCfgDO.doConvertDTO(canvasCfgDO)) @@ -110,17 +97,17 @@ public class DataModelServiceImpl { return ApiResult.success(build); } - List collect = userModelList.stream() - .map(item -> item.getModelContentId()) - .collect(Collectors.toList()); +// List collect = userModelList.stream() +// .map(item -> item.getModelContentId()) +// .collect(Collectors.toList()); List modelContentDOS = modelContentService.list(QueryWrapper.create() .from(ModelContentDO.class) - .in(ModelContentDO.ID, collect) + .eq(ModelContentDO::getRoomId, que.getRoomId()) + // .in(ModelContentDO.ID, collect) .orderBy(ModelContentDO.MODEL_INDEX, true) ); -// List modelContentDOS = modelContentService.listByIds(collect); for (ModelContentDO modelContentDO : modelContentDOS) { objects.add(ModelContentDO.doConvertDTO(modelContentDO)); } @@ -185,83 +172,19 @@ public class DataModelServiceImpl { 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); - //保存数据模型 - HashMap> map = modelContentService.saveOrUpdateModel(json, dataModelDTO.getMenuType()); - - //获取中间表 - List list = userModelContentService.list(QueryWrapper.create() - .from(UserModelContentDO.class) - .eq(UserModelContentDO.USER_ID, userId) //先写死 - .eq(UserModelContentDO.MENU_TYPE, dataModelDTO.getMenuType()) - ); -// List list = userModelContentService.list(new QueryWrapper() -// .eq(UserModelContentDO.USER_ID, userId) //先写死 -// .eq(UserModelContentDO.MENU_TYPE, dataModelDTO.getMenuType()) -// ); + modelContentService.saveOrUpdateModel(json, dataModelDTO.getMenuType()); - if (CollectionUtil.isEmpty(map)) { - List modelIds = list.stream() - .map(item -> item.getModelContentId()) - .collect(Collectors.toList()); - modelContentService.removeByIds(modelIds); - - userModelContentService.remove(QueryWrapper.create() - .from(UserModelContentDO.class) - .eq(UserModelContentDO.USER_ID, userId) - .eq(UserModelContentDO.MENU_TYPE, dataModelDTO.getMenuType())); - return ApiResult.success(); - } - - //增加的id集合 - List addIdModels = map.get("addIdModels"); - //跟新的id集合 - List updateIdModels = map.get("updateIdModels"); - if (CollectionUtil.isEmpty(addIdModels)) - return ApiResult.success(); - - //中间表没有数据,直接添加 - if (CollectionUtil.isEmpty(list)) { - List allModelIds = Stream.concat(addIdModels.stream(), updateIdModels.stream()) - .distinct() - .collect(Collectors.toList()); - - for (String modelId : allModelIds) { - UserModelContentDO build = UserModelContentDO.builder() - .userId(userId) - .menuType(dataModelDTO.getMenuType()) - .modelContentId(modelId) - .build(); - userModelContentService.save(build); - } - return ApiResult.success(); - } else { //中间表有数据 - List collect = list.stream().map(UserModelContentDO::getModelContentId).collect(Collectors.toList()); - collect.removeAll(updateIdModels); - modelContentService.removeByIds(collect); - List targetCollect = list.stream() - .filter(item -> collect.contains(item.getModelContentId())) - .map(UserModelContentDO::getId) - .collect(Collectors.toList()); - userModelContentService.removeByIds(targetCollect); - for (String addIdModel : addIdModels) { - UserModelContentDO build = UserModelContentDO.builder() - .userId(userId) - .menuType(dataModelDTO.getMenuType()) - .modelContentId(addIdModel) - .build(); - userModelContentService.save(build); - } - } return ApiResult.success(); } diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ModelContentServiceImpl.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ModelContentServiceImpl.java index 93a052c..45e9323 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ModelContentServiceImpl.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/ModelContentServiceImpl.java @@ -11,12 +11,15 @@ import com.sz.admin.monitor.pojo.po.ModelContentDO; import com.sz.admin.monitor.pojo.po.UserModelContentDO; import com.sz.admin.monitor.service.ModelContentService; import com.sz.admin.monitor.service.UserModelContentService; +import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * @author xq @@ -28,7 +31,8 @@ public class ModelContentServiceImpl extends ServiceImpl> saveOrUpdateModel(List list, String menuType) { + public void saveOrUpdateModel(List list, String menuType) { if (CollectionUtil.isEmpty(list)) - return null; - - //获取需要保存的id,然后返回给中间表 - List addIdModels = new ArrayList<>(); - List updateIdModels = new ArrayList<>(); + return; + // 获取所有roomIds + Set roomIds = list.stream().map(ModelContentDTO::getRoomId).collect(Collectors.toSet()); + // DELETE FROM ry_model_content WHERE room_id in '1' + if (!roomIds.isEmpty()) + { + modelContentMapper.deleteByRoomIds(roomIds); + } for (ModelContentDTO modelContentDTO : list) { ModelContentDO modelContentDO = ModelContentDTO.dtoConvertDO(modelContentDTO); - disposeDO(modelContentDO, updateIdModels); - - //这种情况可能是直接复用其他组件 - if (StrUtil.isNotEmpty(modelContentDO.getId())) { - QueryWrapper queryWrapper = QueryWrapper.create() - .select() - .from(UserModelContentDO.class) - .eq(UserModelContentDO.MODEL_CONTENT_ID, modelContentDO.getId()) - .eq(UserModelContentDO.MENU_TYPE, menuType) - //true:ASC false:DESC - .orderBy(UserModelContentDO.ID, false) - .limit(1); - - List doList = userModelContentService.list(queryWrapper); - if (CollectionUtil.isEmpty(doList)) - modelContentDO.setId(null); - else - updateIdModels.add(modelContentDO.getId()); - } - - - saveOrUpdate(modelContentDO); - if (!updateIdModels.contains(modelContentDO.getId())) - addIdModels.add(modelContentDO.getId()); + disposeDO(modelContentDO); + save(modelContentDO); } - HashMap> map = new HashMap<>(); - map.put("addIdModels", addIdModels); - map.put("updateIdModels", updateIdModels); - return map; } /** @@ -82,7 +63,7 @@ public class ModelContentServiceImpl extends ServiceImpl updateIdModels) { + public void disposeDO(ModelContentDO modelContentDO) { //这里是空,肯定是add if (StrUtil.isEmpty(modelContentDO.getId())) return; diff --git a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/TreeServiceImpl.java b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/TreeServiceImpl.java index 86b83a3..04ff3e9 100644 --- a/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/TreeServiceImpl.java +++ b/sz-service/sz-service-admin/src/main/java/com/sz/admin/monitor/service/impl/TreeServiceImpl.java @@ -1,16 +1,11 @@ package com.sz.admin.monitor.service.impl; import com.mybatisflex.core.query.QueryWrapper; -import com.sz.admin.monitor.mapper.CameraMapper; -import com.sz.admin.monitor.mapper.NvrMapper; -import com.sz.admin.monitor.mapper.RegionMapper; -import com.sz.admin.monitor.mapper.SubstationMapper; +import com.sz.admin.monitor.mapper.*; -import com.sz.admin.monitor.pojo.po.Camera; -import com.sz.admin.monitor.pojo.po.Nvr; -import com.sz.admin.monitor.pojo.po.Region; -import com.sz.admin.monitor.pojo.po.Substation; +import com.sz.admin.monitor.pojo.po.*; import com.sz.admin.monitor.pojo.vo.tree.CameraNodeVO; +import com.sz.admin.monitor.pojo.vo.tree.ComputerRoomNodeVO; import com.sz.admin.monitor.pojo.vo.tree.NvrNodeVO; import com.sz.admin.monitor.pojo.vo.tree.TreeNodeVO; import com.sz.admin.monitor.service.TreeService; @@ -38,6 +33,8 @@ public class TreeServiceImpl implements TreeService { private NvrMapper nvrMapper; @Resource private CameraMapper cameraMapper; + @Resource + private ComputeRoomMapper computeRoomMapper; @Override public List buildTree() { @@ -68,6 +65,37 @@ public class TreeServiceImpl implements TreeService { return treeRootList; } + @Override + public List buildTreeComputeRoom() { + // 查询出所有的边电站 + List substationList = substationMapper.selectAll(); + List treeRootList = new ArrayList<>(); + for (Substation substation : substationList) { + TreeNodeVO rootNode = new TreeNodeVO(substation.getId(), substation.getName(), 1, null); + List computeChildren = loadChildrenForRoom(substation.getId()); + rootNode.setChildren(computeChildren); + treeRootList.add(rootNode); + } + return treeRootList; + } + + private List loadChildrenForRoom(Long id) { + QueryWrapper computeRoomQuery = new QueryWrapper(); + computeRoomQuery.eq("substation_id", id); + List computeRoomList = computeRoomMapper.selectListByQuery(computeRoomQuery); + List children = new ArrayList<>(); + for (ComputerRoom computeRoom : computeRoomList) { + ComputerRoomNodeVO computeRoomNode =new ComputerRoomNodeVO(); + computeRoomNode.setId(computeRoom.getId()); + computeRoomNode.setName(computeRoom.getName()); + computeRoomNode.setType(4); + computeRoomNode.setSubstationId(computeRoom.getSubstationId()); + computeRoomNode.setChildren(null); + children.add(computeRoomNode); + } + return children; + } + private List loadChildrenForRegion(Long id) { QueryWrapper childRegionQuery = new QueryWrapper(); childRegionQuery.eq("parent_id", id); diff --git a/sz-service/sz-service-admin/src/main/resources/db/changelog/sql/dev_0.0.1_xq.sql b/sz-service/sz-service-admin/src/main/resources/db/changelog/sql/dev_0.0.1_xq.sql index 67cb88e..26699e2 100644 --- a/sz-service/sz-service-admin/src/main/resources/db/changelog/sql/dev_0.0.1_xq.sql +++ b/sz-service/sz-service-admin/src/main/resources/db/changelog/sql/dev_0.0.1_xq.sql @@ -12,6 +12,8 @@ create table ry_model_content ( id varchar(32) not null comment '模型id' primary key, + substation_id bigint null comment '变电站ID', + room_id bigint null comment '机房ID', title varchar(32) null comment '模型名称', type varchar(32) null comment '模型类型', binfo varchar(128) null comment '位置(json)', @@ -27,7 +29,15 @@ create table ry_model_content `index` int null comment '索引' ) comment '模型内容'; - +create table ry_computer_room +( + id bigint not null comment '机房id' auto_increment + primary key, + substation_id bigint null comment '变电站ID', + name varchar(32) null comment '机房名称', + description varchar(128) null comment '机房描述' +) +comment '机房表'; create table ry_canvas_cfg (