版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EMSVI.5.0能源管理系统
软件源代码
文件编号生效日期受控编号
保密级别一级版本号VI.00修改次数
总页数85正文81附录无
编制项目组各成员审核批准
南京天溯自动化控制系统有限公司
(版权所有,翻版必究)
评审记录
对《EMSVL5.0能源管理系统软件源代码VI.m的评审意见
上述问题修改验证后,由验证后,本文件即可发布。
评审人员签字:
问题修改验证结果:
验证人签字:时间:年月一日
变更日志
编号版本修改内容修改人修改日期
项目组2017-10-3
1VI.00初稿
各成员0
目录
1.EMS1.5.0代码审核报告5
1.1集成管理工具5
1.2变压器负载率报告63
1.3滑动能耗分析68
1.4碳排放73
1.5App接口81
1.EMS1.5.0代码审核报告
i.i集成管理工具
usingFramework.Common;
usingFramework.Configuration;
usingFramework.Data:
usingFramework.DataConfiguration;
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing:
usingSystem.10;
usingSystem.Linq;
usingSystem.ServiceProcess:
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
usingSystem.Xml;
usingSystem.ServiceModel;
usingS/stcin.Configuration;
usinglOMSRegister:
namespaceIntegrateManageTool
(
publicpartialclassForml:Form
(
IntegrateManageTool.BLL.CommonBllbll=newBLL.CommonBll();
boolisFirstlnit=false;
pub!icForml()
(
InitializeComponent();
〃防止线程间访问出错,临时加此属性。终极解决办法是委托或使用Background1沁rker控件屈云明20170719
DataGridView.CheekFor111egaICrossThreadCaIls=false;
)
///<summary>
III主画面加载
///9/summary〉
///<paramname="sender"X/param>
III<paramname=*e*X/parani>
privatevoidForml_Load(objectsender,EventArgsc)
{
Common.Wrilel.og.CrealeLog("开始启动集成管理工具”);
try
(
this.btnRefreshAll.Image=Image.FromFile(System.Windows.Forms.Application.Startuppath+
z,\\Resources\\refresh.png");
this.btnAdd.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
“\\Resources\\add.png");
this.btnStart.Image=Image.FromFile(Syst&m,Windows.Forms.Application.StartupPath+
^WResourcesWstart.png");
this.btnRestart.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
^WRcsourccsWrcslart.png"):
this.btnDelete.Image=Image.FromFile(System.Windows.Forms..Application.StartupPath+
^WResourcesWdelete.png");
this.btnClose.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
^WResourcesWc1ose.png*);
this.btnApply.Image=Image.FromEile(System.Windows.Forms.Application.StartupPath+
^WResourcesWsave.png");
this.btnQuit.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
z,\\Resources\\power.png");
this.btnWcfOpcn.Image=Image.FromFi1c(System.Windows.Forms.Application.StartupPath+
*\\Resources\\startservice.png");
this.btnWcrClose.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
w\\Resources\\stopservice.png*);
this,btnlnstall.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
^WResourcesWinstal1.png");
this.btnModeSwitch.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
^WRpsourccsWsotting.png"):
this.btnReadMe.Image=Image.FromFile(System.Windows.Forms.Application.StartupPath+
^WResourcesWhe1p.png*);
〃先加载Program.config里面的程序。若在数据库中没有就先保存入数据库。后面一律以数据库保存的为准
LoadXmlProgramToDatabascO;
〃调用刷新按钮事件初始化数据
this.btnRefreshAll_Click(null,null);
System.Threading.Thread.Sleep(1000):
〃先把集成管理工具的数据库批量适用到所有工具
this.ModifyDataSrcO;
System.Threading.Thread.Sleep(1000);
〃调用刷新按钮事件初始化数据
this.btnRefreshAl]_C1ick(nul1,null);
〃定期检查进程或服务是否正常
ScheduleWork();
〃高级功能根据配置显示
if
(System.Configuration.ConfigurationManager.AppSe11ings[*IsShow.AdvancedFunction*].ToLower().Equals("false"))
(
this.groupBox3.Visible=false;
this.btnModcSwitch.Visible=false;
this,btnlnstail.Visible=false;
this,label1.Location=newPoint(this,label1.Location.X,480);
this.Iabel2.Location=newPoint(this.Iabel2.Location.X,500);
this.btnReadMe.location=newPoint(this.btnReadMe.Location.X,480):
this.btnQuit.Location=newPoint(this.btnQuit.Location.X,480);
)
)
catch(Exceptionex)
{
Common.WriteLog.CreateLog("启动异常:”+ex.Message);
MessageBox.Show("启动异常:“+ex.Message,"出错啦",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
Common.WriteLog.CreateLog("启动成功”);
〃开始服务
this.Start();
)
III<summary>
///先把集成管理工具的数据库批量适用到所有工具
///〈/summary〉
privatevoidModifyDataSrc()
(
if(isFirstlnit)
(
〃当存在数据时,认为不是初始化,批量修改数据的操作
return;
}
〃初始化把数据库全部修改•遍
〃修改数据库连接
〃先判断数据库配置文件是否存在
stringconnectstringTmp=string.Empty;
if(System.10.File.Exists(Application.StartupPath+'\\"+
G1oba1ConfigurationSource.GlobaLAppSettings[wDatabaseListFile*!))
(
〃加载数据源
DatabaseListdatabasel.isi=XmlHelper.XmlDeserializeFromFile<DaiabaseLisl>(Application.StartupPaih+
+GlobalConfigurationSource.GlobalAppSettings[/,DatabaseListFileA],Encoding.UTE8);
if(!string.IsNu11OrEmpty(databascList.MDatabascinslances[0].ConncctionString))
(
conneclstringTmp=dalabaseList.MDatabaseInstances[0].ConnecIionString:
)
)
else
(
〃文件不存在的情况下记录日志后继续执行
MessageBox.Show(*不存在数据库文件!请检杳。"+Application.StartupPath+*\\*+
GlobalConfigurationSource.GlobalAppSettingsf^Databasel.istFilew]);
}
for(inti=0;i<this.dgvExcList.Rows.Count;i++)
(
〃必须有数据源才需要修改屈云明20170720
if(dgvExeList.Rowsti].Cells[”是否有数据源Value.Equals(1))
(
〃必须名称有值的数据才有意义
if(dgvExeList.Rows[i].Cells[”名称”].Value!=null)
{
XmlDocumentxml2=newXmlDocument();
xml2.Load(this.dgvExeList.Rows[i].Ccllst*路径Value.ToStringO+
*configs\\Database.config*);
XmlNodexnTmp=xml2.DocumentElement;
foreach(XmlNodenodeinxnTmp.ChiIdNodes)
(
if(node.Name=="database")
(
foreach(XmlNodenod<?2innode.ChiIdNodes)
(
node2.TnnerTexl=connectstringTrip;
}
)
}
xml2.Save(this.dgvExeList.Rows[i].Cells[*路径Value.ToSiringO+
"configsWDatabasc.config");
}
}
)
//%%%%%%%%%%%%%%%%%%%%%%%»%
)
///<summary>
///把Program,config里面配置的程序加载入数据库
III〈/summary)
privatevoidLoadXmlProgramToDatabase()
{
isFirstlnit=bll.IsHaveDatalnDBO;
if(isFirstlnit)
〃当存在数据时,认为不是初始化,跳过读取Program,config的逻辑
return;
)
//鲍的领的鲍觎的©鲍©豳鲍的鲍@
//tobecontinued把xml序列化为二进制对象,使用时再从二进制对象反序列化为xml。目的是防止用户来修改
〃夏工的意思是初始化文件装机时肯定存在,且永远只用一次。不考虑其他异常情况
if(!System.10.File.Exists(System.Windows.Forms.Application.StartupPath+w\\configs\\Program.config*))
(
McssageBox.Show("执行路径根目录下找不到Program,config文件,请仔细检查\r\n路径:“
Application.StartupPath+"\\configs”,”文件未找到“,MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
)
List<Model.ManageConfig>IstMc=newList<Model.ManageConfig>();
XmlDocumentdoc=newXmlDocument();
doc.Load(System.Windows.Forms.Application.StartupPath+A\\configs\\Program.config");
XmlNodexn=doc.SclectSingleNodeC^configuration*);
Dircctorylnfoinfo=newDircctoryInfo(Application.StartupPath);
stringparentPath=info.Parent.FullName;
foreach(XmlNodexnlinxn)
(
if(xnl.OuterXml.Contains(*!—*))
I
continuo;
}
iI'(xnl.Name.Equals(*add*))
(
Model.ManageConfigme=newModel.ManageConfig();
me.Cnamc=xnl.SelectSingleNode(*@namc/,).InnerText;
me.ExePath=parentPath+xnl.SelectSingleNode(*@relativePath^).InnerText:
me.WorkTypc=int.Parse(xnl.SclcctSinglcNodcC^varkTypc^).InnerText);
me.ServiceName=xnl.SelectSingleNode(^OserviceName*).InnerText;
〃存在某些程序不需要数据库配置屈云明20170720
me.IsUaveDataSrc=int.Parse(xnl.SelectSingleNockf^SisllaveDataSrc*).InnerText);
me.Comments="根据Program,config自动添加的”;
IstMc.Add(me):
}
}
〃保存入数据库
stringerrlnfo=string.Eiipty;
〃返回0表示插入失败
if(this,bl1.BatchTnsertTntoIntegraleManageConrigdstMc,referrlnfo)==0)
{
Common.WriteLog.CreateLog("把Program,config的插入数据库失败。”+errlnfo);
MessageBox.Show("把Program,config的插入数据库失败。"+errlnfo,"出错了",MessageBoxButtons.OK,
MessageBoxIcon.Error):
}
〃鲍鲍觎的鲍觎鲍@鲍@鳏蹈奥勉顿
)
privatevoidScheduleWork()
{
try
(
〃设定固定时间检查进程是否存在,并记录口志
vartimer=newSystemTimers.Timer
(
Interval=int.Parse(System.Configuration.ConfigurationManager.AppSettings[wche3kFrenquency*])*
1000,
Enabled=true,
AutoRcsct=true
);
timer.Elapsed+=(sender,e)=>
(
boolisIIaveUninstalIService=false;
boolisHaveStoppcdData=false;
if(this,bt-witch.Text.Equals(“手动模式中“))
(
Common.WriteLog.CreateLog("当前在"+this.btnModeSwitch.Text+”,跳过定期检行并启动已停止的
程序功能”);
return;
}
elseif(this.btnModeSwitch.Text.Equals("自动模式中”))
{
Common.WriteLog.CreateLog("当前在"+this.btnModeSwitch.Text+”,即将检查并启动已停止的程序
)
else
{
Common.WriteLog.CreateLog("当前既不是手动模式,也不是自动模式。这是非常严重的问题,请联系程序
开发人员!”);
return:
)
〃先刷新grid的状态
for(inti=0;i<this.dgvExeList.RowCount;i+9
if(this.dgvExeList.Rows[i].Cells]”类型
*].Value.ToStringO.Equals(Model.EnumWorkType.WorkType.应用程序.ToStringO))
〃状态实时获取
boolblnTaskMgr=Common.Function.isExistlnTaskMgr(this.dgvExeList.Rows[i].Cells[”名称
*].Value.ToString().Trim());
stringsStatus=string.Empty;
if(blnTaskMgr)
(
sStatus="Running”;
this.dgvExeList.Rows[i].DefaultCelIStyle.BackColor=Color.White:
}
else
(
sStatus="Stopped”;
this.dgvExel.ist.Rows[i].DefaultCelISlyle.BackColor=Color.Red;
Common.NriteLog.CreateLog("自动侦测到应用程序"+this.dgvExeList.Rows[i].Cells[”名称
"].Value.ToStringO+”进程已经不存在F任务管理器中”);
}
this.dgvExeList.Rows[i].Cells[”状态”].Value=sStatus://状态实时获取
elseif(this.dgvExeList.Rows[i].Cells[*类型
*].Value.ToStringO.Equals(Model.EnumWorkType.WorkType.服务程序.ToStringO))
t
〃当服务程序的服务名称没有时,提示
if(string.IsNullOrEmpty(this.dgvExeList.Rows[i].Cellst*服务名称
/x].Value.ToStringO.TrimO))
Common.WriteLog.GreateLog(*加载"+this.dgvExeList.Rows[i].CelIs[*服务名称
*].Value.ToStringO.TrimO+”时出错,服务名称为空。请检查”);
)
else
(
stringsStatus=string.Empty;
if(Common.Function.IsExistsScrvicc(this.dgvExeList.Rows[i].Cells服务名称
/z].Value.ToStringO.TrimO))
(
sStatus=Common.Function.GetServiceState(this.dgvExeList.Rows[i].Cells[”服务名称
*].Value.ToStringO.TrimO).ToStringO;
)
else
(
sStatus="未安装";
Conmon.WriteLog.CrealcLog("自动侦测到服务程序"+this.dgvExeList.Rows[i].Cclls[/,
服务名称"].Value.ToStringO+"没有安装");
)
this.dgvExeList.Rows[i].Cells[”状态Value=sStatus;〃状态实时获取
if(!sStatus.Equals(*Running*))
(
Common.WrileLog.CreaieLog("自动侦测到服务程序"+this.dgvExeList.Rows[i].Cells[*
服务名称”].Value.ToStringO+"的状态为"+sStatus);
)
}
)
else
(
Common.WriteLog.CreateLog("程序”+this.dgvExeList.Rows[i].Ce]Is[”名称”].Value.ToSiringO
+“类型不是应用程序也不是服务程序!“);
this.dgvExeList.Rows[i].DefaultCellStyle.BackColor=Color.Red:
continue;
)
)
//##㈱用#########耶########
〃先判断有无未安装的服务
for(inti=0;i<this.dgvExeList.RowCount;i+-1)
{
if(this.dgvExeList.Rows[i].Cells[*类型
Value.ToStringO.Equals(Model.EnumWorkTypc.WorkTypc.服务程序.ToStringO))
(
if(this.dgvExel.ist.Rows[i].Cells[”状态Value.ToStringO.Equals("未安装"))
(
DataGridViewCheckBoxCel1checkCel1=
(DataGridViewCheckBoxCel1)dgvExeList.Rows[i].CelIs[”选择”]:
checkCell.Value=true:
isHavellninstallSorvico=true:
)
)
)
〃存在未安装的服务
if(isHaveUninstallService)
{
this.btnInstall_Click(null,null);
)
else
(
〃若无未安装的服务,则检查有无stopped的程序
for(inti=0;i<this.dgvExeList.RowCount;i++)
(
if(this.dgvExeList.Rows[i].Cellsr状态二.Value.ToStringO.Equals("Stopped"))
(
DataGridViewCheckBoxCel1checkCell=
(DaiaGridViewCheckBoxCel1)dgvExel.ist.Rows[i].Cel1s[”选择”];
checkCell.Value=true;
isHaveStoppedData=true:
)
〃存在则把停止的程序启动
if(islIaveStoppedData)
(
timer.StopO;
this.btnStart_Click(null,null):
timer.Start():
}
}
);
}
catch(Exceptionex)
(
Common.WriteLog.CreateLog("ScheduleWork方法出现异常:“+ex.Message);
)
)
III<summary>
///全部刷新按钮按下后,从数据库和配置文件中重载所有参数
III</summary)
///<paramname="sender"X/param>
///<paramname="e"></param>
privatevoidbtnRefreshAl1_C1ick(objectsender,EventArgse)
(
〃先不用绑定数据源,直接赋值灵活点
//this.dgvExeList.DataSource=bll.GetAllExeO;
〃实现要清空表格,不然刷新时返回0条数据不会重绘表格
this.dgvExel.ist.Rows.ClearO;
List<Model.ManageConfig>list=bl1.GetAllExeO;
〃grid好像不能把列数变为0
this.dgvExcList.RowCounl=(list.Count=0)?1:list.Count;
iniindex=0;
foreach(Model.ManageConfigmeinlist)
(
try
(
DataGridViewCheckBoxCellcb=newDataGridViewCheckBoxCell(false);
cb.Value=false;
this.dgvExeList.Rows[index].CelIs["选择”]=cb;
this.dgvExeList.Rows[index].Cells[”名称Value=me.Cname;
this.dgvExeList.Rcws[index].Cells[“类型”].Value=(me.WorkType==1)?Model.EnumWorkType.WorkType.
应用程序:Model.EnumWorkType.WorkType.服务程序;
this.dgvExeList.Rows[index].Cells[”路径”].Value=me.ExcPath:
this.dgvExeList.Rows[index].Cells[”备注”].Value=me.Comments;
this.dgvExeList.Rows[index].CelIs[”主键”].Value=me.ObjectId;
this.dgvExeList.Rcws[index].Cells[”服务名称"].Value=me.ServiceName:
this.dgvExeList.Rows[index].Cells[”是否有数据源.Value=me.IsliaveDataSrc;
〃朝翱胖布期的力踹加*
〃必须存在数据源的情况下才需要读取配置文件屈云院20170720
if(this.dgvExeList.Rows[index].Cells[”是否有数据源Value.Equals(l))
(
〃先判断数据库配置文件是否存在
if(System.10.File.Exists(me.ExePath+
GlobalConfigurationSourcc.GlobalAppScttingst^DalabascListFilc"]))
(
〃加载数据源
DatabaseListdatabaseList=XmlHelper.XralDeserializeEroml'ile<DatabaseList>(mc.ExePath+
+GlobalConfigurationSource.GlobalAppSettingsfDalabaseListFile*],Encoding.UTF8);
if(!string.IsNullOrEmpty(databaseList.MDatabaseInstances[O].Connectionstring))
(
this.dgvExeList.Rows[index].Cells[*数据源*].Value=
databaseList.MDatabaseInstances[0].ConnectionString:
)
)
else
(
〃文件不存在的情况下记录H志后继续执行
Common.WriteLog.CreateLog(*不存在文件!清检查。"+me.ExePath+*\\*+
GlobalConfigurationSourco.Globa1AppSottings[^DatabasoListFilo^]):
this.dgvExeList.Rows1index].DefaultCellStyle.BackColor=Color.Red:
)
)
〃翱*加料**曲*即北埔#
〃鲍艇鲍@鲍@鲍@鲍勃西鲍@鲍
if(this.dgvExeList.Rows[index].Cclls[*类型
*].Value.ToStringO.Equals(Model.EnumWorkType.WorkType.应用程序.ToStringO))
(
〃状态实时获取
boolblnTaskMgr=Common.Function.isExistInTaskMgr(mc.Cname.TrimO);
stringsStatus=string.Empty:
if(blnTaskMgr)
(
sStatus="Running”;
this.dgvExeList.Rows[index].DcfaultCclIStyle.BackColor=Color.White;
)
else
sStatus="Stopped”;
this.dgvExeList.Rows[index].DefaultedISlylc.BackColor=Color.Red;
)
ihis.dgvExeLisl.Rows[index].Cel1$[”状态”].Value=sSlalus;〃状态实时获取
)
elseif(this.dgvExeList.Rows[index].Cells[*类型
z,].Value.ToStringO.Equals(Model.EnumWorkType.WorkType.服务程序.ToStringO))
{
〃当服务程序的服务名称没有时,提示
if(string.IsNullOrEmpty(me.ServiceName))
(
Common.WriteLog.CreateLog("加载"+me.Cname+”时出错,服务名称为空。请检查”);
)
else
(
siringsStatus=string.Empty;
if(Common.Function.IsExistsService(mc.ServiceName.TrimO))
(
sStatus=Common.Function.GetServiceState(mc.ServiceName.TrimO).ToStringO:
if(sStatus.Equals("Running"))
(
this.dgvExeList.Rows[index].DefaultCellStyle.BackColor=Color.Vhite:
}
else
(
this.dgvExeList.Rows[index].DefaultCellStyle.BackColor=Color.Red;
)
)
else
(
sStatus="未安装";
this.dgvExel.ist.Rows[index],DefaultCelIStyle.BackColor=Color.Red;
}
this.dgvExeList.Rows[index].Cells[”状态”:.Value=sStatus;〃状态实时获取
}
)
else
{
Common.WritcLog.CreateLog("程序”<this.dgvExeList.Rows[index].Ce】Is[”名称”].Value.ToStringO
+”类型不是应用程序也不是服务程序!”);
this.dgvExeList.Rows[index].DefaultCelIStyle.BackColor=Color.Red;
continue:
)
〃©鲍@鲍@鲍@鲍@鲍照艇鲍©鲍
indcx++:
}
catch(Exceptionex)
Common.WriteLog.CreateLog("加载"+me.Cname+”时出错,请检查"+ex.Message);
continue;
)
III<summary>
///弹出新增画面
III〈/summary)
///<paramname="sender"></param〉
///<paramname="e"X/param>
privatevoidbtnAdd_Click(objectsender,EventArgse)
(
frmAddOrModifyfrm=newfrmAddOrModify0;
frm.Strindicator="Add";
if(frm.ShowDialogO.Equals(DialogResult.OK))
(
〃刷新
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物标志物在药物临床试验中的精准医疗策略
- 生物化学虚拟实验与人工智能辅助分析
- 生物制品稳定性试验实时监测系统设计
- 生物制剂失应答的炎症性肠病诊疗流程优化
- 网络教育平台教师职位的职责与面试题详解参考
- 生活方式干预对糖尿病认知功能的影响
- 瓣膜病合并房颤患者多模态疼痛管理的MDT方案
- 环甲膜切开术虚拟仿真教学实践
- 采购管理岗位面试问题及答案参考
- 深度解析(2026)《GBT 19225-2003煤中铜、钴、镍、锌的测定方法》
- 石材行业合同范本
- 中医药转化研究中的专利布局策略
- COPD巨噬细胞精准调控策略
- 网店代发合作合同范本
- 心源性休克的液体复苏挑战与个体化方案
- 九师联盟2026届高三上学期12月联考英语(第4次质量检测)(含答案)
- 2025年医院法律法规培训考核试题及答案
- (2025年)人民法院聘用书记员考试试题(含答案)
- 销售香薰技巧培训课件
- 计调年终总结汇报
- 郑州铁路职业技术学院单招职业测试题
评论
0/150
提交评论