package org.jeecg.modules.iot.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.modules.iot.entity.*; import org.jeecg.modules.iot.service.IEquipmentService; import org.jeecg.modules.iot.service.IParameterGroupService; import org.jeecg.modules.iot.service.IProjectClassifyService; import org.jeecg.modules.iot.service.IServerDeployService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; /** * @Description: 项目分类 * @Author: cuikaidong * @Date: 2024-12-20 * @Version: V1.0 */ @Api(tags = "项目分类") @RestController @RequestMapping("/projectClassify") @Slf4j public class ProjectClassifyController extends JeecgController { @Autowired private IProjectClassifyService projectClassifyService; @Autowired private IServerDeployService serverDeployService; @Autowired private IEquipmentService equipmentService; @Autowired private IParameterGroupService parameterGroupService; /** * 查询项目分类树结构 * * @return projectClassifyList */ @AutoLog(value = "查询项目分类树结构") @ApiOperation(value = "查询项目分类树结构", notes = "查询项目分类树结构") @GetMapping(value = "/tree") public Result queryPageList() { // 树图标 Map iconIot = new HashMap<>(); // iot图标 iconIot.put("icon", "iot"); Map iconProject = new HashMap<>(); // iconProject.put("icon", "classify"); Map iconProject1 = new HashMap<>(); // 服务器图标 iconProject1.put("icon", "project"); Map iconEmpty = new HashMap<>(); iconEmpty.put("icon", "empty"); Map iconSolid = new HashMap<>(); iconSolid.put("icon", "solid"); Map iconParameter = new HashMap<>(); iconParameter.put("icon", ""); // 查询数据 List projectList = projectClassifyService.list(); List serverDeployList = serverDeployService.list(); List equipmentList = equipmentService.list(); List groupList = parameterGroupService.list(); // 树结构 List trees1 = new ArrayList<>(); List trees2 = new ArrayList<>(); List treeList = new ArrayList<>(); IotTree iotTree = new IotTree(); iotTree.setTitle("IOT采集平台"); iotTree.setKey("0"); iotTree.setSlots(iconIot); for (ProjectClassify project : projectList) { IotTree it = new IotTree(); it.setTitle(project.getProjectName()); it.setKey(project.getProjectCode()); it.setSlots(iconProject); trees2 = new ArrayList<>(); for (ServerDeploy serverDeploy : serverDeployList) { if (project.getId().equals(serverDeploy.getProjectClassifyId())) { List treeList1 = new ArrayList<>();// 实设备 List treeList2 = new ArrayList<>(); //虚设备 List trees3 = new ArrayList<>(); // 分类 IotTree itProject = new IotTree(); itProject.setTitle(serverDeploy.getServerCode() + "-" + serverDeploy.getServerName()); itProject.setKey("fwq_" + serverDeploy.getServerCode()); itProject.setSlots(iconProject1); // 实设备添加 IotTree empty = new IotTree(); empty.setTitle("实设备"); empty.setKey("solid_" + serverDeploy.getServerCode()); empty.setSlots(iconParameter); // 虚设备添加 IotTree solid = new IotTree(); solid.setTitle("虚设备"); solid.setKey("empty_" + serverDeploy.getServerCode()); solid.setSlots(iconParameter); // 遍历设备信息 equipmentList.forEach(eq -> { IotTree emptyEquipment = new IotTree(); emptyEquipment.setTitle(eq.getEqptName()); List treeList4 = new ArrayList<>();// 参数组 // 遍历参数组信息 groupList.forEach(g -> { if (eq.getId().equals(g.getEquipmentId())) { IotTree groupTree = new IotTree(); groupTree.setTitle(g.getName()); groupTree.setKey("ssb_" + g.getId()); groupTree.setSlots(iconParameter); treeList4.add(groupTree); } }); if (serverDeploy.getId().equals(eq.getServerId()) && eq.getEquipmentType().equals(1)) { emptyEquipment.setSlots(iconSolid); emptyEquipment.setKey("group_" + eq.getId()); emptyEquipment.setChildren(treeList4); treeList1.add(emptyEquipment); } else if (serverDeploy.getId().equals(eq.getServerId()) && eq.getEquipmentType().equals(0)) { emptyEquipment.setKey("xxb_" + eq.getId()); emptyEquipment.setSlots(iconEmpty); treeList2.add(emptyEquipment); } }); solid.setChildren(treeList2); empty.setChildren(treeList1); trees3.add(empty); trees3.add(solid); itProject.setChildren(trees3); trees2.add(itProject); } } it.setChildren(trees2); trees1.add(it); } iotTree.setChildren(trees1); treeList.add(iotTree); return Result.ok(treeList); } /** * 通过projectCode查询 * * @param projectCode * @return */ @ApiOperation(value = "项目分类-通过projectCode查询", notes = "项目分类-通过projectCode查询") @GetMapping(value = "/queryByProjectCode") public Result queryByProjectCode(@RequestParam(name = "projectCode", required = true) String projectCode) { ProjectClassify projectClassify = projectClassifyService.findByProjectCode(projectCode); return Result.ok(projectClassify); } /** * 添加 * * @param projectClassify * @return */ @AutoLog(value = "项目分类-添加") @ApiOperation(value = "项目分类-添加", notes = "项目分类-添加") @PostMapping(value = "/add") public Result add(@RequestBody ProjectClassify projectClassify) { projectClassify.setProjectCode(randomDigit()); projectClassifyService.addProjectClassify(projectClassify); return Result.ok("添加成功!"); } /** * 编辑 * * @param projectClassify * @return */ @AutoLog(value = "项目分类-编辑") @ApiOperation(value = "项目分类-编辑", notes = "项目分类-编辑") @PutMapping(value = "/edit") public Result edit(@RequestBody ProjectClassify projectClassify) { projectClassifyService.updateById(projectClassify); return Result.ok("编辑成功!"); } /** * 通过id删除 * * @param id * @return */ @AutoLog(value = "项目分类-通过id删除") @ApiOperation(value = "项目分类-通过id删除", notes = "项目分类-通过id删除") @DeleteMapping(value = "/delete") public Result delete(@RequestParam(name = "id", required = true) String id) { return Result.ok(projectClassifyService.projectClassifyRemoveById(id)); } private String randomDigit() { Random random = new Random(); String randomNumber = "xm_" + random.nextInt(9000) + 1000; ProjectClassify projectClassify = projectClassifyService.findByProjectCode(randomNumber); if (projectClassify != null) { randomDigit(); } return randomNumber; } }