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<ProjectClassify, IProjectClassifyService> {
|
@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<String, String> iconIot = new HashMap<>(); // iot图标
|
iconIot.put("icon", "iot");
|
Map<String, String> iconProject = new HashMap<>(); //
|
iconProject.put("icon", "classify");
|
Map<String, String> iconProject1 = new HashMap<>(); // 服务器图标
|
iconProject1.put("icon", "project");
|
Map<String, String> iconEmpty = new HashMap<>();
|
iconEmpty.put("icon", "empty");
|
Map<String, String> iconSolid = new HashMap<>();
|
iconSolid.put("icon", "solid");
|
Map<String, String> iconParameter = new HashMap<>();
|
iconParameter.put("icon", "");
|
// 查询数据
|
List<ProjectClassify> projectList = projectClassifyService.list();
|
List<ServerDeploy> serverDeployList = serverDeployService.list();
|
List<Equipment> equipmentList = equipmentService.list();
|
List<ParameterGroup> groupList = parameterGroupService.list();
|
// 树结构
|
List<IotTree> trees1 = new ArrayList<>();
|
List<IotTree> trees2 = new ArrayList<>();
|
List<IotTree> 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<IotTree> treeList1 = new ArrayList<>();// 实设备
|
List<IotTree> treeList2 = new ArrayList<>(); //虚设备
|
List<IotTree> 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<IotTree> 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;
|
}
|
|
}
|