工厂环境监测系统实战(五):工厂与设备管理

工厂环境监测系统实战(五):工厂与设备管理

前言

监控大屏展示的是结果,本章介绍数据源头——工厂和设备的增删改查管理。

工厂管理

数据模型

工厂使用自关联的树形结构,parentId指向上级工厂:

总厂 (Id=1, parentId=null) ├── 一车间 (Id=2, parentId=1) │ ├── 产线A (Id=4, parentId=2) │ └── 产线B (Id=5, parentId=2) └── 二车间 (Id=3, parentId=1)
public class Company : AggregateRoot { public string CompanyName { get; set; } public int? parentId { get; set; } // 父工厂ID public bool IsContainsLowerLevel { get; set; } // 是否含子工厂 public bool IsEnable { get; set; } }

工厂CRUD Controller

public class CompanyController : BaseController { // 工厂列表 public ActionResult CompanyList() { var list = _companyAppService.GetAllCompany(); return View(list); } // 新增工厂 [HttpPost] public ActionResult CompanyList_AddCompany(CompanyDtoModel model) { _companyAppService.Add(model); return RedirectToAction("CompanyList"); } // 编辑工厂 [HttpPost] public ActionResult CompanyList_EditCompany(CompanyDtoModel model) { _companyAppService.Update(model); return RedirectToAction("CompanyList"); } // 删除工厂(软删除) [HttpPost] public ActionResult RemoveCompany(string companyIds) { _companyAppService.Remove(companyIds); return Json(new { success = true }); } }

全部使用软删除(IsDeleted = true),不物理删除数据。

设备管理

设备Facility表与工厂关联,同时绑定 TCP 传感器编号:

public class Facility : AggregateRoot { public string FacilityName { get; set; } // 设备名称 public int CompanyId { get; set; } // 所属工厂 public string Address { get; set; } // 安装位置 public int SensorBN { get; set; } // TCP 传感器编号 // ... }

传感器上报数据时通过BN(传感器编号)匹配到具体设备。

用户与工厂权限

用户能看到哪些工厂由UserCompany表控制:

-- 给用户分配工厂 INSERT INTO UserCompany (UserId, CompanyId, IsDeleted) VALUES (1, 2, 0);

用户登录后,系统自动查询所有关联工厂(含子工厂)供切换。

页面入口

功能URL
工厂列表/Company/CompanyList
新增工厂/Company/CompanyList_AddCompany
编辑工厂/Company/CompanyList_EditCompany
设备管理/Facility/FacilityList

小结

  • 工厂用parentId自关联支持多级树形结构
  • 全部采用软删除,数据可恢复
  • 设备通过传感器编号BN关联 TCP 数据源
  • 用户-工厂权限通过中间表控制

下一章介绍系统 Logo 和品牌定制的实现。


> 上一篇:第4章 — 前端监控大屏:实时数据展示
> 下一篇:第6章 — 系统Logo与品牌定制