fastbee/docs/big-screen-implementation-plan.md
2026-07-21 09:05:31 +08:00

25 KiB

Big Screen Transformation Implementation Plan

Executive Summary

This plan outlines the implementation of project management functionality for the "岩安测控大数据中心" (Yan'an Control Big Data Center). The transformation includes adding business project entities, enhancing the map mode with project visualization, implementing personnel-based device viewing, and completing analysis mode integration.

Current Architecture Understanding

Backend Structure (RuoYi Framework)

  • Entities: fastbee-iot-service/src/main/java/com/fastbee/iot/domain
  • Services: fastbee-iot-service/src/main/java/com/fastbee/iot/service
  • Controllers: fastbee-open-api/src/main/java/com/fastbee/controller
  • Mappers: fastbee-iot-service/src/main/resources/mapper/iot
  • BaseEntity: Extends from RuoYi framework with standard fields (createBy, createTime, updateBy, updateTime, remark)

Frontend Structure

  • Vue Pages: yack-web/src/views
  • API Files: yack-web/src/api
  • BigScreen: yack-web/src/views/bigScreen/home.vue (already implemented dual mode)
  • Router: yack-web/src/router/index.js

Database Schema (Existing)

  • iot_group: Device groups (group_id, group_name, user_id)
  • iot_device_group: Device-group relationship (device_id, group_id)
  • iot_device: Devices with longitude, latitude, tenant_id
  • iot_device_user: Device-user relationship (device_id, user_id)
  • sys_user: User information

Implementation Plan

Phase 1: Database Schema Design

1.1 Create Project Table (iot_project)

CREATE TABLE `iot_project` (
    `project_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '项目ID',
    `project_name` VARCHAR(100) NOT NULL COMMENT '项目名称',
    `project_code` VARCHAR(50) DEFAULT NULL COMMENT '项目编码',
    `tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID',
    `tenant_name` VARCHAR(30) DEFAULT '' COMMENT '租户名称',
    `responsible_user_id` BIGINT(20) DEFAULT NULL COMMENT '负责人ID',
    `responsible_user_name` VARCHAR(30) DEFAULT '' COMMENT '负责人姓名',
    `longitude` DOUBLE(11,6) DEFAULT NULL COMMENT '项目经度',
    `latitude` DOUBLE(11,6) DEFAULT NULL COMMENT '项目纬度',
    `address` VARCHAR(255) DEFAULT NULL COMMENT '项目地址',
    `project_status` TINYINT(1) DEFAULT 1 COMMENT '项目状态(1-预警,2-运行中,3-完结)',
    `start_time` DATETIME DEFAULT NULL COMMENT '开始时间',
    `end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
    `project_desc` VARCHAR(500) DEFAULT NULL COMMENT '项目描述',
    `img_url` VARCHAR(255) DEFAULT NULL COMMENT '项目图片',
    `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)',
    `create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
    `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
    `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
    `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`project_id`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_responsible_user` (`responsible_user_id`),
    KEY `idx_project_status` (`project_status`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='业务项目表';

1.2 Create Project-Group Relationship Table (iot_project_group)

CREATE TABLE `iot_project_group` (
    `project_id` BIGINT(20) NOT NULL COMMENT '项目ID',
    `group_id` BIGINT(20) NOT NULL COMMENT '设备分组ID',
    PRIMARY KEY (`project_id`, `group_id`),
    KEY `idx_project_id` (`project_id`),
    KEY `idx_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='项目-设备分组关系表';

1.3 Project Status Enum

Define constants for project status:

  • 1 = WARNING (预警项目)
  • 2 = RUNNING (运行中项目)
  • 3 = COMPLETED (完结项目)

Phase 2: Backend Implementation

2.1 Entity Classes

File: /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Project.java

package com.fastbee.iot.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.fastbee.common.core.domain.BaseEntity;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 业务项目对象 iot_project
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Project", description = "业务项目对象 iot_project")
@Data
@TableName("iot_project")
public class Project extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("项目ID")
    private Long projectId;

    @ApiModelProperty("项目名称")
    private String projectName;

    @ApiModelProperty("项目编码")
    private String projectCode;

    @ApiModelProperty("租户ID")
    private Long tenantId;

    @ApiModelProperty("租户名称")
    private String tenantName;

    @ApiModelProperty("负责人ID")
    private Long responsibleUserId;

    @ApiModelProperty("负责人姓名")
    private String responsibleUserName;

    @ApiModelProperty("项目经度")
    private BigDecimal longitude;

    @ApiModelProperty("项目纬度")
    private BigDecimal latitude;

    @ApiModelProperty("项目地址")
    private String address;

    @ApiModelProperty("项目状态(1-预警,2-运行中,3-完结)")
    private Integer projectStatus;

    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    @ApiModelProperty("项目描述")
    private String projectDesc;

    @ApiModelProperty("项目图片")
    private String imgUrl;

    @ApiModelProperty("删除标志")
    private String delFlag;

    @ApiModelProperty("关联分组ID列表")
    private List<Long> groupIds;
}

File: /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/ProjectGroup.java

package com.fastbee.iot.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 项目-分组关系对象 iot_project_group
 */
@ApiModel(value = "ProjectGroup", description = "项目-设备分组关系对象 iot_project_group")
@Data
public class ProjectGroup {
    @ApiModelProperty("项目ID")
    private Long projectId;

    @ApiModelProperty("分组ID")
    private Long groupId;
}

2.2 Service Interface and Implementation

File: /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IProjectService.java

package com.fastbee.iot.service;

import com.fastbee.iot.domain.Project;
import java.util.List;

/**
 * 项目管理Service接口
 */
public interface IProjectService {
    /**
     * 查询项目
     */
    public Project selectProjectById(Long projectId);

    /**
     * 查询项目列表
     */
    public List<Project> selectProjectList(Project project);

    /**
     * 根据负责人查询项目
     */
    public List<Project> selectProjectsByUserId(Long userId);

    /**
     * 根据租户查询项目
     */
    public List<Project> selectProjectsByTenantId(Long tenantId);

    /**
     * 查询项目关联的分组ID数组
     */
    public Long[] selectGroupIdsByProjectId(Long projectId);

    /**
     * 新增项目
     */
    public int insertProject(Project project);

    /**
     * 修改项目
     */
    public int updateProject(Project project);

    /**
     * 更新项目关联的分组
     */
    public int updateProjectGroups(Long projectId, Long[] groupIds);

    /**
     * 删除项目
     */
    public int deleteProjectById(Long projectId);

    /**
     * 批量删除项目
     */
    public int deleteProjectByIds(Long[] projectIds);

    /**
     * 查询项目设备统计
     */
    public Project selectProjectDeviceStats(Long projectId);
}

File: /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ProjectServiceImpl.java

Implementation pattern should follow existing service implementations like GroupServiceImpl, using:

  • @Autowired for mapper injection
  • Transaction management for project-group relationship updates
  • TenantId filtering from SecurityUtils.getLoginUser()
  • delFlag = '0' for active records

2.3 Mapper Interface and XML

File: /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/ProjectMapper.java

package com.fastbee.iot.mapper;

import com.fastbee.iot.domain.Project;
import java.util.List;

/**
 * 项目Mapper接口
 */
public interface ProjectMapper {
    public Project selectProjectById(Long projectId);
    public List<Project> selectProjectList(Project project);
    public List<Project> selectProjectsByUserId(Long userId);
    public List<Project> selectProjectsByTenantId(Long tenantId);
    public Long[] selectGroupIdsByProjectId(Long projectId);
    public int insertProject(Project project);
    public int updateProject(Project project);
    public int deleteProjectById(Long projectId);
    public int deleteProjectByIds(Long[] projectIds);
    public int insertProjectGroups(Long projectId, Long[] groupIds);
    public int deleteProjectGroupsByProjectId(Long projectId);
}

File: /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ProjectMapper.xml

XML should follow GroupMapper.xml pattern with:

  • resultMap for Project entity
  • selectGroupIdsByProjectId joining iot_project_group
  • insertProjectGroups batch insert
  • delFlag filtering

2.4 Controller Implementation

File: /Users/admin/IdeaProjects/fastbee/fastbee-open-api/src/main/java/com/fastbee/controller/project/ProjectController.java

package com.fastbee.controller.project;

import com.fastbee.common.core.controller.BaseController;
import com.fastbee.common.core.domain.AjaxResult;
import com.fastbee.iot.domain.Project;
import com.fastbee.iot.service.IProjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Api(tags = "项目管理")
@RestController
@RequestMapping("/iot/project")
public class ProjectController extends BaseController {
    @Autowired
    private IProjectService projectService;

    @ApiOperation("项目列表")
    @PreAuthorize("@ss.hasPermi('iot:project:list')")
    @GetMapping("/list")
    public AjaxResult list(Project project) {
        startPage();
        List<Project> list = projectService.selectProjectList(project);
        return getDataTable(list);
    }

    @ApiOperation("项目详情")
    @PreAuthorize("@ss.hasPermi('iot:project:query')")
    @GetMapping("/{projectId}")
    public AjaxResult getInfo(@PathVariable Long projectId) {
        Project project = projectService.selectProjectById(projectId);
        project.setGroupIds(projectService.selectGroupIdsByProjectId(projectId));
        return AjaxResult.success(project);
    }

    @ApiOperation("新增项目")
    @PreAuthorize("@ss.hasPermi('iot:project:add')")
    @PostMapping
    public AjaxResult add(@RequestBody Project project) {
        return toAjax(projectService.insertProject(project));
    }

    @ApiOperation("修改项目")
    @PreAuthorize("@ss.hasPermi('iot:project:edit')")
    @PutMapping
    public AjaxResult edit(@RequestBody Project project) {
        return toAjax(projectService.updateProject(project));
    }

    @ApiOperation("更新项目分组")
    @PreAuthorize("@ss.hasPermi('iot:project:edit')")
    @PutMapping("/updateProjectGroups")
    public AjaxResult updateProjectGroups(@RequestParam Long projectId, @RequestBody Long[] groupIds) {
        return toAjax(projectService.updateProjectGroups(projectId, groupIds));
    }

    @ApiOperation("删除项目")
    @PreAuthorize("@ss.hasPermi('iot:project:remove')")
    @DeleteMapping("/{projectIds}")
    public AjaxResult remove(@PathVariable Long[] projectIds) {
        return toAjax(projectService.deleteProjectByIds(projectIds));
    }

    @ApiOperation("按人员查询项目")
    @PreAuthorize("@ss.hasPermi('iot:project:list')")
    @GetMapping("/listByUser/{userId}")
    public AjaxResult listByUser(@PathVariable Long userId) {
        return AjaxResult.success(projectService.selectProjectsByUserId(userId));
    }

    @ApiOperation("项目设备统计")
    @PreAuthorize("@ss.hasPermi('iot:project:query')")
    @GetMapping("/deviceStats/{projectId}")
    public AjaxResult deviceStats(@PathVariable Long projectId) {
        return AjaxResult.success(projectService.selectProjectDeviceStats(projectId));
    }
}

Phase 3: Frontend Implementation

3.1 Project API File

File: /Users/admin/IdeaProjects/fastbee/yack-web/src/api/iot/project.js

import request from '@/utils/request'

// 查询项目列表
export function listProject(query) {
  return request({
    url: '/iot/project/list',
    method: 'get',
    params: query
  })
}

// 查询项目详情
export function getProject(projectId) {
  return request({
    url: '/iot/project/' + projectId,
    method: 'get'
  })
}

// 新增项目
export function addProject(data) {
  return request({
    url: '/iot/project',
    method: 'post',
    data: data
  })
}

// 修改项目
export function updateProject(data) {
  return request({
    url: '/iot/project',
    method: 'put',
    data: data
  })
}

// 更新项目分组
export function updateProjectGroups(projectId, groupIds) {
  return request({
    url: '/iot/project/updateProjectGroups',
    method: 'put',
    params: { projectId },
    data: groupIds
  })
}

// 删除项目
export function delProject(projectId) {
  return request({
    url: '/iot/project/' + projectId,
    method: 'delete'
  })
}

// 按人员查询项目
export function listProjectByUser(userId) {
  return request({
    url: '/iot/project/listByUser/' + userId,
    method: 'get'
  })
}

// 项目设备统计
export function getProjectDeviceStats(projectId) {
  return request({
    url: '/iot/project/deviceStats/' + projectId,
    method: 'get'
  })
}

3.2 Project Configuration Page

File: /Users/admin/IdeaProjects/fastbee/yack-web/src/views/iot/project/index.vue

Key features:

  • Project list table with CRUD operations
  • Project creation/edit form with:
    • Project name, code, description
    • Responsible person selection (user dropdown)
    • Device group binding (multi-select)
    • Map coordinate picker (integrate tdtMap.js)
    • Project status selection (dropdown)
    • Start/end time
  • Integration with Tianditu map for coordinate selection
  • Reuse patterns from /Users/admin/IdeaProjects/fastbee/yack-web/src/views/iot/group/index.vue

3.3 Map Mode Enhancements

File: /Users/admin/IdeaProjects/fastbee/yack-web/src/views/bigScreen/home.vue (Enhancement)

Enhancements needed:

  1. Project Points Visualization:

    • Load projects via API on map initialization
    • Create map markers for each project (based on longitude/latitude)
    • Color markers based on project status (warning=red, running=green, completed=gray)
    • Click marker to show project details panel
  2. Project Status Display:

    • Add status legend in map toolbar (already partially implemented)
    • Count projects by status
    • Display warningProjectCount, runningProjectCount, completedProjectCount
  3. Group Expansion:

    • Click project marker to show associated groups
    • Expand groups to show devices in each group
    • Device list with status indicators
  4. Code Structure:

// Add to data():
projectList: [],
selectedProject: null,
projectDeviceMap: {}, // projectId -> { groups: [], devices: [] }

// Add computed:
warningProjectCount() {
  return this.projectList.filter(p => p.projectStatus === 1).length;
},
runningProjectCount() {
  return this.projectList.filter(p => p.projectStatus === 2).length;
},
completedProjectCount() {
  return this.projectList.filter(p => p.projectStatus === 3).length;
}

// Add methods:
async loadProjects() {
  const res = await listProject({});
  this.projectList = res.rows || [];
  this.createProjectMarkers();
},
createProjectMarkers() {
  // Use Tianditu API to create markers with custom icons
  // Bind click events to show project details
},
async loadProjectDevices(projectId) {
  // Get groupIds from project
  // For each groupId, load devices
  // Build projectDeviceMap
},
focusProject(project) {
  // Center map on project coordinates
  // Show project details panel
  // Load and display associated devices
}

3.4 View Devices by Personnel

New Feature: Add personnel device view panel

Implementation approach:

  1. Add a panel in left column showing "人员设备视图"
  2. User selection dropdown (list all users in tenant)
  3. When user selected, show:
    • Projects responsible by this user
    • Devices in those projects (via groups)
    • Device status summary

API Endpoint (Backend): Add to IProjectService and implement:

/**
 * 查询人员负责的项目及关联设备
 */
public List<Project> selectUserProjectsAndDevices(Long userId);

Frontend Integration in home.vue:

// Add to data:
selectedUserId: null,
userProjects: [],
userDeviceSummary: { total: 0, online: 0, offline: 0, alarms: 0 }

// Add methods:
async loadUserDeviceView(userId) {
  // Load projects by responsibleUserId
  // Aggregate device stats from all project groups
  // Display in panel
}

Phase 4: Analysis Mode Completion

4.1 Data Center API Integration

The DataCenterController already provides comprehensive analysis APIs:

  • /data/center/deviceHistory - Device historical data
  • /data/center/deviceStats - Device statistics
  • /data/center/deviceDataQuality - Data quality analysis
  • /data/center/deviceHistogram - Value distribution
  • /data/center/subDeviceComparativeHistory - Multi-device comparison

Enhancement: Integrate these APIs into bigScreen analysis mode

File: /Users/admin/IdeaProjects/fastbee/yack-web/src/views/bigScreen/home.vue (Analysis section)

Enhancements:

  1. Connect analysisQuery device selection to project devices
  2. Load identifierList from selected device's things models
  3. Display analysis results using existing chart components
  4. Add project-context filtering (only show devices from selected project)

Phase 5: Menu and Permission Configuration

5.1 Menu SQL Script

File: /Users/admin/IdeaProjects/fastbee/sql/project-menu.sql

-- 项目管理菜单
-- 菜单ID范围: 3600-3620
-- 父菜单: 2000 (设备管理)

INSERT INTO `sys_menu` VALUES(3600, '项目管理', 2000, 1, 'project', 'iot/project/index', NULL, 1, 0, 'C', '0', '0', 'iot:project:list', 'project', 'admin', NOW(), '', NULL, '项目管理菜单');
INSERT INTO `sys_menu` VALUES(3601, '项目查询', 3600, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'iot:project:query', '#', 'admin', NOW(), '', NULL, '');
INSERT INTO `sys_menu` VALUES(3602, '项目新增', 3600, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'iot:project:add', '#', 'admin', NOW(), '', NULL, '');
INSERT INTO `sys_menu` VALUES(3603, '项目修改', 3600, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'iot:project:edit', '#', 'admin', NOW(), '', NULL, '');
INSERT INTO `sys_menu` VALUES(3604, '项目删除', 3600, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'iot:project:remove', '#', 'admin', NOW(), '', NULL, '');

5.2 Router Configuration

Add route in /Users/admin/IdeaProjects/fastbee/yack-web/src/router/index.js:

{
  path: '/iot/project',
  component: Layout,
  redirect: '/iot/project/index',
  children: [
    {
      path: 'index',
      component: () => import('@/views/iot/project/index'),
      name: 'Project',
      meta: { title: '项目管理', icon: 'project' }
    }
  ]
}

Phase 6: Testing and Validation

6.1 Backend Testing Checklist

  • Project CRUD operations with tenantId filtering
  • Project-group relationship updates (batch insert/delete)
  • User-project queries with proper permission checks
  • Project device stats calculation (count devices in all associated groups)
  • Coordinate validation (longitude/latitude ranges)

6.2 Frontend Testing Checklist

  • Project list display with pagination
  • Project creation with coordinate picker
  • Responsible user selection dropdown
  • Group binding multi-select
  • Map marker creation with proper icons
  • Project click to show details and devices
  • Personnel device view panel functionality
  • Analysis mode data loading and chart rendering

Implementation Sequence

Week 1: Database and Backend Core

  1. Create SQL scripts for iot_project and iot_project_group tables
  2. Execute SQL in database
  3. Create Project.java and ProjectGroup.java entities
  4. Create IProjectService interface
  5. Create ProjectMapper interface and XML
  6. Implement ProjectServiceImpl
  7. Create ProjectController with basic CRUD APIs
  8. Test backend APIs using Swagger

Week 2: Frontend Project Management

  1. Create project.js API file
  2. Create project/index.vue configuration page
  3. Implement project CRUD forms
  4. Integrate Tianditu coordinate picker
  5. Implement group binding multi-select
  6. Add menu SQL and router configuration
  7. Test frontend project management page

Week 3: Map Mode Enhancements

  1. Enhance home.vue to load projects
  2. Implement project marker creation on Tianditu map
  3. Add status-based marker coloring
  4. Implement project click handler
  5. Load project devices via group expansion
  6. Display project details panel
  7. Test map mode visualization

Week 4: Personnel View and Analysis

  1. Implement backend API for user projects and devices
  2. Add personnel device view panel to home.vue
  3. Connect analysis mode to DataCenter APIs
  4. Add project-context filtering in analysis
  5. Implement device stats aggregation
  6. Complete analysis chart integration
  7. End-to-end testing

Key Technical Considerations

Multi-Tenancy Support

  • All queries must filter by tenantId from SecurityUtils.getLoginUser()
  • Project tenantId should match user's tenant
  • Use delFlag = '0' for active records filtering

Map Integration

  • Reuse tdtMap.js from /Users/admin/IdeaProjects/fastbee/yack-web/src/utils/tdtMap.js
  • Tianditu API key: c9ef88370bacf8f51662c01ad80a580c (or custom)
  • Handle fallback map when Tianditu tiles fail to load
  • Marker icons: Create custom SVG or use default T.Marker

Performance Optimization

  • Lazy load project devices on marker click (not on initial load)
  • Use batch queries for group-device relationships
  • Implement device stats caching if needed
  • Consider pagination for large device lists

Data Consistency

  • When updating project groups: delete old relationships first, then insert new
  • Validate group existence before binding
  • Validate user existence as responsible person
  • Check coordinate ranges (longitude: -180 to 180, latitude: -90 to 90)

Potential Challenges

  1. Map Marker Performance: With many projects, markers may slow down map rendering

    • Solution: Implement marker clustering or lazy loading
  2. Device Aggregation: Counting devices across multiple groups may be complex

    • Solution: Use SQL aggregation queries or cache results
  3. Coordinate Accuracy: User-entered coordinates may not be precise

    • Solution: Validate coordinates and provide map picker UI
  4. Permission Complexity: Users may need access to projects they don't own

    • Solution: Implement project sharing or role-based access control
  5. Analysis Mode Scalability: Loading large datasets for analysis may timeout

    • Solution: Implement time range limits and pagination

Dependencies

Backend Dependencies:

  • Existing Group and Device entities
  • SecurityUtils for tenant and user context
  • BaseEntity for standard fields
  • AjaxResult for responses
  • MyBatis for data access

Frontend Dependencies:

  • Vue.js and Element UI
  • tdtMap.js for Tianditu integration
  • echarts-extension-leaflet for charts
  • Existing API request utility
  • Vuex store for user context

External APIs:

Critical Files for Implementation

The following files are most critical for implementing this plan:

  1. /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Project.java

    • Core entity defining project structure
  2. /Users/admin/IdeaProjects/fastbee/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IProjectService.java

    • Service interface defining all project operations
  3. /Users/admin/IdeaProjects/fastbee/fastbee-open-api/src/main/java/com/fastbee/controller/project/ProjectController.java

    • REST API endpoints for frontend integration
  4. /Users/admin/IdeaProjects/fastbee/yack-web/src/views/bigScreen/home.vue

    • Main big screen page requiring map mode enhancements
  5. /Users/admin/IdeaProjects/fastbee/yack-web/src/views/iot/project/index.vue

    • Project configuration management page

These files form the core of the implementation, handling data modeling, business logic, API exposure, and user interface respectively.


This implementation plan provides a comprehensive roadmap for transforming the big screen into a full-featured project management and visualization platform, following existing architectural patterns and ensuring seamless integration with the current system.