当前位置: 首页 > news >正文

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

前言

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

工厂管理

数据模型

工厂使用自关联的树形结构,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与品牌定制

http://www.jsqmd.com/news/1326710/

相关文章:

  • A股短线交易策略深度解析:极限补仓的逻辑、风险与系统化验证方法
  • AI职场助手项目评估指南:从部署到测试的完整技术实践
  • 碎片化人事管理弊病凸显,数据孤岛制约企业人力精细化运营
  • 大模型输出JSON不稳定?从提示词到后处理的完整解决方案
  • Codex新特性解析:AI Agent技能集成与上下文感知代码生成实战
  • Wireshark流量分析——2026-01-31Lumma Stealer
  • 泛微OA手写签名功能配置与二次开发指南
  • 跨平台局域网文件传输实战:深度解析LAN Share的高效传输架构与高级配置
  • 大模型JSON输出不稳定?从提示词到后处理的完整工程化解决方案
  • SAP系统高效复制粘贴技巧与优化方案
  • 收费合理的大众搬家公司哪家好?2026年上海地区厂家推荐与选择指南 - 优质品牌商家
  • 一人公司爆单秘籍:AI选品助手秒变高效数字员工
  • Diablo Edit2终极指南:免费开源的暗黑破坏神2存档修改器完全教程
  • GPT5.6、Claude4.8、Gemini3.5学术写作实测:AI辅助论文写作能力对比
  • 2026年8月亲测:成都三发科技真的靠谱!
  • 从噱头到落地:如何系统评估与部署本地AI工具
  • 2026长沙中职择校完整攻略:选赛道、辨性质、挑专业、避陷阱 - 资讯综合
  • VoiceFixer:让任何受损语音重获新生的AI修复神器
  • 09_大模型里的竞品分析怎么做_AnswerBit对比监控指南 - 领先技术探路人
  • MMD Tools插件深度解析:高效实现Blender与MikuMikuDance的无缝整合
  • 【AI合规落地黄金 checklist】:20年监管专家亲授,7大必检项避坑指南(附GDPR+《生成式AI服务管理暂行办法》双对标表)
  • 华为P20开机故障自救指南:从强制重启到Recovery修复全解析
  • 高校AI课程作业:机器学习流程实现与优化
  • 六面体单元热传导有限元分析MATLAB实现
  • WindowResizer免费工具终极指南:三步掌握强制调整任意窗口大小
  • 电商价格监控系统:Python+淘宝API实战指南
  • 2026平湖工业废料回收攻略|电缆空调稀有金属电机电瓶回收精选口碑** - 精彩城市
  • 如何快速扒谱?AI扒谱工具如何自动识别歌曲旋律和乐器?
  • 企业采购必看:滴滴企业版差旅真实使用体验全解析 - 资讯综合
  • 危化品重大危险源监测加密AQ3067判定到数据加密选型