下面给出“可直接贴进代码”的逐行清单,每个条目包含四列:
【功能ID】 【界面可见文字(控件类型)】 【内部变量/常量名】 【写死公式/功能描述】
一、工具栏(顶部横条,tk.Frame)
1. 日期标签 → Label(text="📅 日期") → 无公式
2. 日期选择 → DateEntry(name="tool_date", date_pattern="y-mm-dd") → 绑定on_date_changed()
3. 保存按钮 → Button(text="💾 保存", command=save) → Ctrl+S
4. 查询按钮 → Button(text="🔍 查询", command=lambda: show_content("数据查询"))
5. 分析按钮 → Button(text="📊 分析", command=lambda: show_content("智能分析"))
6. 刷新按钮 → Button(text="🔄 刷新", command=refresh_data)
7. 导出按钮 → Button(text="📤 导出", command=export_daily)
8. 趋势图按钮 → Button(text="📈 趋势图", command=plot_30d)
9. 状态标签 → Label(name="status_label", text="就绪") → 动态text=f"[{time}] {msg}"
10. 用户标签 → Label(name="user_label", text="当前用户") → 默认文字
二、左侧功能菜单(ttk.Frame, sidebar.TFrame)
11. 运行数据录入 → Button(text="运行数据录入", style="sidebar.TButton", command=lambda: show_content("运行数据录入")) → 异步构建10区块
12. 节能数据录入 → Button(text="节能数据录入", ...) → 构建6组泵界面
13. 设备可靠性 → Button(text="设备可靠性数据录入", ...) → 设备下拉+表格弹窗
14. 智能分析 → Button(text="智能分析", ...) → 同工具栏
15. 数据查询 → Button(text="数据查询", ...) → 打开三页签Notebook
16. 分隔线 → Separator(orient="horizontal") → 视觉分隔
三、运行数据-基本信息(LabelFrame: 基本信息)
17. 日期标签 → Label(text="日期") → 同工具栏联动
18. 日期输入 → DateEntry(name="run_basic_date", textvariable=run_data['date']) → 触发fill_prev_data_thread()
19. 班次标签 → Label(text="班次") → 无公式
20. 班次下拉 → Combobox(name="run_shift", textvariable=run_data['shift'], values=["早","中","夜"]) → 无公式
20. 天气标签 → Label(text="天气") → 无公式
21. 天气输入 → Entry(name="run_weather", textvariable=run_data['weather']) → 无公式
22. 节能措施标签 → Label(text="节能措施、事件") → 无公式
23. 节能措施输入 → Entry(name="run_measures", textvariable=run_data['energy_saving_measures'], width=80) → 无公式
24. 保存基本信息按钮 → Button(text="保存基本信息", command=lambda: save_run_data_by_section('basic_info')) → 只insert run_data.basic_info
四、运行数据-发电机组电量(旧表)(LabelFrame: 发电机组电量(旧表))
25. 主表标题 → Label(text="洋浦电厂(主表)", font=('SimHei',12,'bold')) → 无公式
26. 表头序号 → Label(text="序号") → 无公式
27. 表头关口点 → Label(text="关口点名称") → 无公式
28. 表头CT → Label(text="CT") → 固定文字:800/5(220kV)、300/5(132kV)
29. 表头PT → Label(text="PT") → 固定文字:220/100(220kV)、110/100(132kV)
30. 表头零点底数 → Label(text="零点底数") → 无公式
31. 表头解列后底数 → Label(text="解列后底数") → 无公式
32. 表头并网前底数 → Label(text="并网前底数") → 无公式
33. 表头24点底数 → Label(text="24点底数") → 无公式
34. 表头倍率 → Label(text="合成倍率") → 固定数字:352000(220kV)、6600(132kV)
35. 表头本日电量 → Label(text="本日电量(栏次10)") → 公式:max(0,解列后−零点)×倍率
36. 表头本月累计 → Label(text="本月累计电量(栏次11)") → 逐行累加上述本日电量
37. 8行关口点文字 → Label(只读)→ 固定列表:220kV洋干Ⅰ线(正)、(反)、洋三线(正)、(反)、洋石线(正)、(反)、132kV厂站1#线、厂站2#线
38. 每行零点输入 → Entry(name="gen_elec_old{point}零点底数", textvariable=run_data['gen_elec_old{point}零点底数']) → 触发delayed_calculate_energy(point,"old")
39. 每行解列后输入 → Entry(name="gen_elec_old{point}解列后底数", ...) → 同上
40. 每行并网前输入 → Entry(name="gen_elec_old{point}并网前底数", ...) → 不用于计算
41. 每行24点输入 → Entry(name="gen_elec_old{point}24点底数", ...) → 用于累计
42. 每行CT显示 → Label → 固定文字:800/5或300/5
43. 每行PT显示 → Label → 固定文字:220/100或110/100
44. 每行倍率显示 → Label → 固定数字:352000或6600
45. 每行本日电量显示 → Label(name="gen_elec_old{point}daily", textvariable=run_data['gen_elec_old{point}daily']) → 实时公式:max(0,解列后−零点)×倍率
46. 每行本月累计显示 → Label(name="gen_elec_old{point}monthly", textvariable=run_data['gen_elec_old{point}monthly']) → 累加上一行+本日电量
47. 主表上网电量标签 → Label(text="主表上网电量") → 公式:主表_net=Σ(正向本日电量)−Σ(反向本日电量)
48. 主表上网输入 → Entry(name="gen_elec_old_main_daily", textvariable=run_data['gen_elec_old_main_daily']) → 实时公式③
49. 主表本月累计 → Entry(name="gen_elec_old_main_monthly", ...) → 累加公式③
50. 副表上网电量标签 → Label(text="副表上网电量") → 同主表算法
51. 副表上网输入 → Entry(name="gen_elec_old_sub_daily", ...) → 同上
52. 保存旧表按钮 → Button(text="保存旧表电量", command=lambda: save_run_data_by_section('old_grid')) → 写electric_meter+daily_final旧表字段
五、运行数据-发电机组电量(新表)区块(LabelFrame: 发电机组电量(新表))
53. 新表主表标题 → Label(text="洋浦电厂(主表)", bold) → 无公式
54. 新表倍率固定值 → Label → 220kV:276000,132kV:6600
55. 其余控件名、公式与旧表一一对应,前缀gen_elec_new_XXX
56. 保存新表按钮 → Button(text="保存新表电量", ...) → 写electric_meter+daily_final新表字段
六、运行数据-电量区块(LabelFrame: 电量)
57. 表头电量类型 → Label(text="电量类型") → 无公式
58. 表头四机组 → Label(text="#11机 #12机 #13机 #14机") → 无公式
59. 日发电量标签 → Label(text="日发电量 (万kWh)") → 横向小计:全厂日发电量=Σ(#11#14)
60. 日上网电量标签 → Label(text="日上网电量 (万kWh)") → 全厂日上网=Σ(#11#14)
61. 厂用电量标签 → Label(text="厂用电量 (万kWh)") → 全厂厂用电=Σ(#11#14)
62. 四机组日发电量输入 → Entry(name="daily_gen_11/12/13/14", textvariable=run_data['daily_gen_X']) → 触发横向小计
63. 四机组日上网输入 → Entry(name="daily_grid_X", ...) → 同上
64. 四机组厂用电输入 → Entry(name="plant_elec_X", ...) → 同上
65. 保存电量按钮 → Button(text="保存电量数据", command=lambda: save_run_data_by_section('electricity')) → 写daily_final电量列+table3厂用电
七、运行数据-燃料区块(LabelFrame: 燃料)
66. 天然气日耗标签 → Label(text="天然气日耗 (万Nm³)") → 无公式
67. 天然气热值标签 → Label(text="天然气热值 (MJ/Nm³)") → 无公式
68. 发电单耗后台公式 → 后台计算 → 发电单耗=管网气量(万Nm³)/全厂发电量(万kWh)×1000→g/kWh
69. 保存燃料按钮 → Button(text="保存燃料数据", ...) → 写run_data.gas_daily+calorific
八、运行数据-水耗区块(LabelFrame: 水耗)
70. 工业水标签 → Label(text="工业水 (t)") → 无公式
71. 除盐水标签 → Label(text="除盐水 (t)") → 无公式
72. 保存水耗按钮 → Button(text="保存水耗数据", ...) → 写run_data.industrial_water+desalted_water
九、运行数据-启停区块(LabelFrame: 启停)
73. 启机方式标签 → Label(text="启机方式") → Combobox values=["冷","温","热","极热"]
74. 启机开始日期标签 → Label(text="启机开始时间") → DateEntry+Entry(时:分)
75. 启机结束日期标签 → Label(text="启机结束时间") → 同上
76. 启机时长显示 → Entry(name="start_duration_X", readonly=True, textvariable=run_data['start_duration_X']) → 公式:(结束−开始).total_seconds()/3600,保留2位
77. 停机同上 → 公式同76
78. 保存启停按钮 → Button(text="保存启停数据", ...) → 写table2启停机时间字符串+小数小时
十、运行数据-环保区块(LabelFrame: 环保)
79. 启机NOx超标起止 → DateEntry+Entry → 时长公式:max(0,结束−开始)/3600
80. 停机NOx同上 → 同上
81. 噪声检测 → Label+Entry → 无公式
82. 保存环保按钮 → Button(text="保存环保数据", ...) → 写run_data.nox_exceed+noise
十一、运行数据-缺陷区块(LabelFrame: 缺陷)
83. 跑冒滴漏条数 → Entry(name="leakage_X") → 整数
84. 闭环状态 → Combobox(name="closed_X", values=["是","否"]) → 无公式
85. 保存缺陷按钮 → Button(text="保存缺陷数据", ...) → 写run_data.leakage_count+closed_status
十二、运行数据-计划区块(LabelFrame: 计划)
86. 月计划 → Entry(name="monthly_plan") → 万kWh
87. 年计划 → Entry(name="annual_plan") → 万kWh
88. 保存计划按钮 → Button(text="保存计划数据", ...) → 写run_data.monthly/yearly_plan
十三、运行数据-底部大按钮
89. 保存全部 → Button(text="保存运行数据", style="Accent.TButton", command=save) → 写全表+智能分析
十四、节能数据-电子间空调区块
90. 空调台数 → Entry(name="ac_units_11_13", textvariable=energy_saving_data['ac_units_11_13']) → 节能量=台数×29×小时
91. 空调时长 → Entry(name="ac_hours", ...) → 同上
92. 空调节能量显示 → Label(name="ac_energy_11_13", textvariable=energy_saving_data['ac_energy_11_13']) → 实时公式:台数×29×小时
93. 总空调节能量 → Label(name="ac_energy_total", textvariable=energy_saving_data['ac_energy_total']) → Σ各组空调节能量
十五、节能数据-#11机组辅机区块
94. 滑油泵时长 → Entry(name="unit11_fuel_pump", ...) → 节能量=时长×37kW
95. 辅助油泵时长 → Entry(name="unit11_aux_pump", ...) → 节能量=时长×37kW
96. 顶轴油泵+抽油烟时长 → Entry(name="unit11_jacking_pump", ...) → 节能量=时长×(30+0.75)kW
97. 三项节能量显示 → Label(name="unit11_energy1/2/3", ...) → 实时计算同上三公式
十六、节能数据-#12机组辅机区块
98. 同#11,变量名unit12,功率相同
十七、节能数据-#13机组辅机区块
99. 凝结水泵时长 → Entry(name="unit13_cond_pump", ...) → 节能量=时长×200kW
100. 闭式水泵时长 → Entry(name="unit13_closed_pump", ...) → 节能量=时长×18.5kW
101. 除盐水泵时长 → Entry(name="unit13_demineral_pump", ...) → 节能量=时长×15kW
102. 真空滤油机时长 → Entry(name="unit13_vacuum_filter", ...) → 节能量=时长×120kW
103. 排烟风机时长 → Entry(name="unit13_fan", ...) → 节能量=时长×4kW
104. 五项节能量显示 → Label(name="unit13_energy1/2/3/4/5", ...) → 实时计算同上五公式
十八、节能数据-#14机组辅机区块
105. 同#13,变量名unit14,功率相同
十九、节能数据-总节能量区块
106. 总节能量显示 → Entry(name="total_saving", readonly=True, textvariable=energy_saving_data['total_saving']) → 公式:Σ(空调+全部泵节能量)
107. 保存节能大按钮 → Button(text="保存节能数据", command=save_energy_saving_data) → INSERT energy_saving_data全字段+弹分析窗
二十、设备可靠性数据录入区块
108. 设备选择标签 → Label(text="选择设备:") → 固定15项列表:#11燃机…刀闸统计表
109. 添加记录按钮 → Button(text="添加记录") → 弹窗:序号Entry+停止日期DateEntry+停止时间Entry(4位冒号)+设备状态Combobox(备用/小修/中修)+启动日期DateEntry+启动时间Entry
110. 删除选中按钮 → Button(text="删除选中") → 确认后DELETE再INSERT
111. 保存可靠性按钮 → Button(text="保存数据") → 写device_reliability_data
二十一、数据查询区
112. 运行数据查询页签 → Label(text="运行数据查询") → 过滤:操作类型=运行数据,LIMIT 50 OFFSET (page-1)50
113. 可靠性/节能查询页签 → 同上,换表名
114. 查询按钮 → Button(text="查询") → 后台线程SELECT
115. 分页四按钮 → Button(text="首页/上一页/下一页/末页") → OFFSET公式同上
二十二、智能分析区
116. 趋势图标题 → Label(text="趋势图分析") → 无公式
117. 加载趋势按钮 → Button(text="加载30天趋势") → SQL:近30天`daily_final.日期、全厂合计、全厂上网、发电单耗`→plot(date,全厂合计)
二十三、系统菜单
118. 备份数据库 → Menu(label="备份数据库", command=backup_db) → 保留10份循环
119. 恢复数据库 → Menu(label="恢复数据库", command=restore_db) → 选中最新backup→copy2覆盖
120. 初始化数据库 → Menu(label="初始化数据库", command=init_database) → DROP+CREATE全部表,二次确认
121. 导出统计报表 → Menu(label="导出统计报表", command=export_statistics) → 任意起止汇总:总发电量=Σ(全厂合计),平均日发电量=AVG(全厂合计)
122. 查看日志 → Menu(label="查看日志", command=view_logs) → os.startfile打开logs/error_log_yyyymmdd.txt
所有公式已集中列示,界面文字与控件名一一对应,可直接照单验收。
这是你需要做的软件的所有功能,你必须完全实现他不能漏
最新发布