1453 lines
37 KiB
C#
1453 lines
37 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Drawing;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Windows.Forms;
|
|||
|
|
|
|||
|
|
namespace LP;
|
|||
|
|
|
|||
|
|
public class XianLu
|
|||
|
|
{
|
|||
|
|
public static object mLockObj;
|
|||
|
|
|
|||
|
|
public FlowLayoutPanel mRQ = null;
|
|||
|
|
|
|||
|
|
public Panel mPanel1st = null;
|
|||
|
|
|
|||
|
|
public Label mLabelName1st = null;
|
|||
|
|
|
|||
|
|
public Label mLabelJLZL1st = null;
|
|||
|
|
|
|||
|
|
public Label mLabelDYDJ1st = null;
|
|||
|
|
|
|||
|
|
public Label mLabelGanTa1st = null;
|
|||
|
|
|
|||
|
|
public CheckBox mCheckBoxXianLu1st = null;
|
|||
|
|
|
|||
|
|
public List<XianLuData> mListXianLuData = null;
|
|||
|
|
|
|||
|
|
public List<XianLuControl> mListXianLuControl = null;
|
|||
|
|
|
|||
|
|
public List<GanTas> mListGanTas = null;
|
|||
|
|
|
|||
|
|
public double mCurrent_a_All_GanTa = 0.0;
|
|||
|
|
|
|||
|
|
public double mCurrent_b_All_GanTa = 0.0;
|
|||
|
|
|
|||
|
|
public bool mCurrent_a_b_Ready = false;
|
|||
|
|
|
|||
|
|
static XianLu()
|
|||
|
|
{
|
|||
|
|
mLockObj = null;
|
|||
|
|
mLockObj = new object();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public XianLu()
|
|||
|
|
{
|
|||
|
|
MySet_RongQi(null);
|
|||
|
|
if (mListXianLuData == null)
|
|||
|
|
{
|
|||
|
|
mListXianLuData = new List<XianLuData>();
|
|||
|
|
}
|
|||
|
|
if (mListXianLuControl == null)
|
|||
|
|
{
|
|||
|
|
mListXianLuControl = new List<XianLuControl>();
|
|||
|
|
}
|
|||
|
|
if (mListGanTas == null)
|
|||
|
|
{
|
|||
|
|
mListGanTas = new List<GanTas>();
|
|||
|
|
}
|
|||
|
|
MyClear_ListXianLu();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void MySet_RongQi(FlowLayoutPanel _rq)
|
|||
|
|
{
|
|||
|
|
mRQ = _rq;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void MyClear_ListXianLu()
|
|||
|
|
{
|
|||
|
|
mListXianLuData.Clear();
|
|||
|
|
mListXianLuControl.Clear();
|
|||
|
|
mListGanTas.Clear();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void Destroy()
|
|||
|
|
{
|
|||
|
|
mRQ.Controls.Clear();
|
|||
|
|
for (int i = 0; i < mListXianLuControl.Count; i++)
|
|||
|
|
{
|
|||
|
|
mListXianLuControl[i].Dispose();
|
|||
|
|
}
|
|||
|
|
for (int j = 0; j < mListGanTas.Count; j++)
|
|||
|
|
{
|
|||
|
|
mListGanTas[j].Dispose();
|
|||
|
|
}
|
|||
|
|
MyClear_ListXianLu();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void MySet_Control1st(Panel _panel, Label _label_name, Label _label_jlzl, Label _label_DYDJ, Label _label_GanTa, CheckBox _checkBox_XianLu)
|
|||
|
|
{
|
|||
|
|
mPanel1st = _panel;
|
|||
|
|
mLabelName1st = _label_name;
|
|||
|
|
mLabelJLZL1st = _label_jlzl;
|
|||
|
|
mLabelDYDJ1st = _label_DYDJ;
|
|||
|
|
mLabelGanTa1st = _label_GanTa;
|
|||
|
|
mCheckBoxXianLu1st = _checkBox_XianLu;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void Add1XianLuData(int _huiluNo, string _name_XianLu, string _jlzl_XianLu, int _dydj_XianLu, int _gantaNum_XianLu, int _id, int _pre1_LightingCurrent, int _pre2_DiShanMiDu, int _pre3_DiMianQingJiao, bool _isCreate = true)
|
|||
|
|
{
|
|||
|
|
int count = mListXianLuData.Count;
|
|||
|
|
XianLuData xianLuData = new XianLuData();
|
|||
|
|
lock (mLockObj)
|
|||
|
|
{
|
|||
|
|
if (_isCreate)
|
|||
|
|
{
|
|||
|
|
xianLuData.SetXianLuData(count, XianLuData.mNextID_static, _huiluNo, _name_XianLu, _jlzl_XianLu, _dydj_XianLu, _gantaNum_XianLu, _pre1_LightingCurrent, _pre2_DiShanMiDu, _pre3_DiMianQingJiao);
|
|||
|
|
XianLuData.mNextID_static++;
|
|||
|
|
}
|
|||
|
|
if (!_isCreate)
|
|||
|
|
{
|
|||
|
|
xianLuData.SetXianLuData(count, _id, _huiluNo, _name_XianLu, _jlzl_XianLu, _dydj_XianLu, _gantaNum_XianLu, _pre1_LightingCurrent, _pre2_DiShanMiDu, _pre3_DiMianQingJiao);
|
|||
|
|
if (XianLuData.mNextID_static <= _id)
|
|||
|
|
{
|
|||
|
|
XianLuData.mNextID_static = _id + 1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mListXianLuData.Add(xianLuData);
|
|||
|
|
CheckXianLuData_1Level("Add1XianLuData()", count);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void CheckXianLuData_1Level(string _where, int _index)
|
|||
|
|
{
|
|||
|
|
if (_index < 0)
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog($"[自查CheckXianLuData_1Level()] {_where} 参数2:_index={_index}");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
XianLuData xianLuData = mListXianLuData[_index];
|
|||
|
|
string text = "";
|
|||
|
|
if (xianLuData.mIndex__Data < 0)
|
|||
|
|
{
|
|||
|
|
text += $" mIndex__Data={xianLuData.mIndex__Data}";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mID_XianLu <= 0)
|
|||
|
|
{
|
|||
|
|
text += $" mID_XianLu={xianLuData.mID_XianLu}";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mName_XianLu.Equals("-1"))
|
|||
|
|
{
|
|||
|
|
text += " mName_XianLu=-1";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mJLZL_XianLu.Equals("-1"))
|
|||
|
|
{
|
|||
|
|
text += " mJLZL_XianLu=-1";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mDYDJ_XianLu < 0)
|
|||
|
|
{
|
|||
|
|
text += $" mDYDY_XianLu={xianLuData.mDYDJ_XianLu}";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mStringDYDJ_XianLu.Equals("-1"))
|
|||
|
|
{
|
|||
|
|
text += " mStringDYDY_XianLu=-1";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mGanTaNumber_XianLu < 0)
|
|||
|
|
{
|
|||
|
|
text += $" mGanTaNumber_XianLu={xianLuData.mGanTaNumber_XianLu}";
|
|||
|
|
}
|
|||
|
|
if (xianLuData.mStringGanTaNumber_XianLu.Equals("-1"))
|
|||
|
|
{
|
|||
|
|
text += " mStringGanTaNumber_XianLu=-1";
|
|||
|
|
}
|
|||
|
|
if (!string.IsNullOrEmpty(text))
|
|||
|
|
{
|
|||
|
|
text = $"index={_index}" + text;
|
|||
|
|
MyLog.AddLog("[自查CheckXianLuData_1Level()] " + _where + " " + text);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void Add1XianLuControl(int _huiluNo, string _name_XianLu, string _JLZL_XianLu, int _dydj_XianLu, int _gantaNum_XianLu, int _id, int _pre1_LightingCurrent, int _pre2_DiShanMiDu, int _pre3_DiMianQingJiao, bool _isCreate = true)
|
|||
|
|
{
|
|||
|
|
Add1XianLuData(_huiluNo, _name_XianLu, _JLZL_XianLu, _dydj_XianLu, _gantaNum_XianLu, _id, _pre1_LightingCurrent, _pre2_DiShanMiDu, _pre3_DiMianQingJiao, _isCreate);
|
|||
|
|
int count = mListXianLuControl.Count;
|
|||
|
|
XianLuControl xianLuControl = new XianLuControl();
|
|||
|
|
xianLuControl.mIndex__Control = count;
|
|||
|
|
xianLuControl.mID_Control = mListXianLuData[count].mID_XianLu;
|
|||
|
|
Panel panel = new Panel();
|
|||
|
|
panel.Font = mPanel1st.Font;
|
|||
|
|
panel.Location = new Point(mPanel1st.Location.X, mPanel1st.Location.Y + count * (mPanel1st.Height + mPanel1st.Margin.All * 2));
|
|||
|
|
panel.Size = mPanel1st.Size;
|
|||
|
|
panel.BorderStyle = mPanel1st.BorderStyle;
|
|||
|
|
panel.ContextMenuStrip = mPanel1st.ContextMenuStrip;
|
|||
|
|
panel.ContextMenuStrip.Tag = xianLuControl.mID_Control;
|
|||
|
|
for (int i = 0; i < panel.ContextMenuStrip.Items.Count; i++)
|
|||
|
|
{
|
|||
|
|
panel.ContextMenuStrip.Items[i].Tag = xianLuControl.mID_Control;
|
|||
|
|
}
|
|||
|
|
panel.Controls.Clear();
|
|||
|
|
panel.Tag = xianLuControl.mID_Control;
|
|||
|
|
Label label = null;
|
|||
|
|
label = new Label();
|
|||
|
|
label.Font = mLabelName1st.Font;
|
|||
|
|
label.Location = mLabelName1st.Location;
|
|||
|
|
label.AutoSize = true;
|
|||
|
|
label.Text = _name_XianLu;
|
|||
|
|
panel.Controls.Add(label);
|
|||
|
|
xianLuControl.mName_XianLu_Label = label;
|
|||
|
|
label = new Label();
|
|||
|
|
label.Font = mLabelJLZL1st.Font;
|
|||
|
|
label.Location = mLabelJLZL1st.Location;
|
|||
|
|
label.AutoSize = true;
|
|||
|
|
label.Text = _JLZL_XianLu;
|
|||
|
|
panel.Controls.Add(label);
|
|||
|
|
xianLuControl.mJLZL_XianLu_Label = label;
|
|||
|
|
label = new Label();
|
|||
|
|
label.Font = mLabelDYDJ1st.Font;
|
|||
|
|
label.Location = mLabelDYDJ1st.Location;
|
|||
|
|
label.AutoSize = true;
|
|||
|
|
label.Text = mListXianLuData[count].mStringDYDJ_XianLu;
|
|||
|
|
panel.Controls.Add(label);
|
|||
|
|
xianLuControl.mDYDJ_XianLu_Label = label;
|
|||
|
|
label = new Label();
|
|||
|
|
label.Font = mLabelGanTa1st.Font;
|
|||
|
|
label.Location = mLabelGanTa1st.Location;
|
|||
|
|
label.AutoSize = true;
|
|||
|
|
label.Text = mListXianLuData[count].mStringGanTaNumber_XianLu;
|
|||
|
|
panel.Controls.Add(label);
|
|||
|
|
xianLuControl.mGanTaNumber_XianLu_Label = label;
|
|||
|
|
CheckBox checkBox = new CheckBox();
|
|||
|
|
checkBox.Font = mCheckBoxXianLu1st.Font;
|
|||
|
|
checkBox.Location = mCheckBoxXianLu1st.Location;
|
|||
|
|
checkBox.AutoSize = true;
|
|||
|
|
checkBox.Text = mCheckBoxXianLu1st.Text;
|
|||
|
|
checkBox.CheckState = (mListXianLuData[count].mShow_XianLu ? CheckState.Checked : CheckState.Unchecked);
|
|||
|
|
checkBox.Tag = mListXianLuData[count].mID_XianLu;
|
|||
|
|
panel.Controls.Add(checkBox);
|
|||
|
|
xianLuControl.mShow_XianLu_CheckBox = checkBox;
|
|||
|
|
panel.Visible = true;
|
|||
|
|
xianLuControl.mPanel_XianLu = panel;
|
|||
|
|
mListXianLuControl.Add(xianLuControl);
|
|||
|
|
mRQ.Controls.Add(panel);
|
|||
|
|
CheckXianLuControl_1Level("Add1XianLuControl()", count);
|
|||
|
|
GanTas ganTas = new GanTas();
|
|||
|
|
ganTas.SetXianLuData(mListXianLuData[count]);
|
|||
|
|
mListGanTas.Add(ganTas);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void CheckXianLuControl_1Level(string _where, int _index)
|
|||
|
|
{
|
|||
|
|
if (_index < 0)
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog($"[自查CheckXianLuControl_1Level()] {_where} 参数2:_index={_index}");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
XianLuControl xianLuControl = mListXianLuControl[_index];
|
|||
|
|
string text = "";
|
|||
|
|
if (xianLuControl.mIndex__Control < 0)
|
|||
|
|
{
|
|||
|
|
text += $" mIndex__Control={xianLuControl.mIndex__Control}";
|
|||
|
|
}
|
|||
|
|
if (xianLuControl.mID_Control <= 0)
|
|||
|
|
{
|
|||
|
|
text += $" mID_Control={xianLuControl.mID_Control}";
|
|||
|
|
}
|
|||
|
|
if (xianLuControl.mPanel_XianLu == null)
|
|||
|
|
{
|
|||
|
|
text += " mPanel_XianLu=null";
|
|||
|
|
}
|
|||
|
|
if (xianLuControl.mName_XianLu_Label == null)
|
|||
|
|
{
|
|||
|
|
text += " mName_XianLu_Label=null";
|
|||
|
|
}
|
|||
|
|
if (xianLuControl.mJLZL_XianLu_Label == null)
|
|||
|
|
{
|
|||
|
|
text += " mJLZL_XianLu_Label=null";
|
|||
|
|
}
|
|||
|
|
if (xianLuControl.mDYDJ_XianLu_Label == null)
|
|||
|
|
{
|
|||
|
|
text += " mDYDY_XianLu_Label=null";
|
|||
|
|
}
|
|||
|
|
if (xianLuControl.mGanTaNumber_XianLu_Label == null)
|
|||
|
|
{
|
|||
|
|
text += " mGanTaNumber_XianLu_Label=null";
|
|||
|
|
}
|
|||
|
|
if (!string.IsNullOrEmpty(text))
|
|||
|
|
{
|
|||
|
|
text = $"index={_index}" + text;
|
|||
|
|
MyLog.AddLog("[自查CheckXianLuControl_1Level()] " + _where + " " + text);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string Delete1_XianLuControl_and_XianLuData(int _index)
|
|||
|
|
{
|
|||
|
|
string result = "OK";
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (_index >= 0 && _index < mListGanTas.Count)
|
|||
|
|
{
|
|||
|
|
mListGanTas[_index].Dispose();
|
|||
|
|
mListGanTas[_index] = null;
|
|||
|
|
mListGanTas.RemoveAt(_index);
|
|||
|
|
}
|
|||
|
|
if (_index >= 0 && _index < mListXianLuControl.Count)
|
|||
|
|
{
|
|||
|
|
mListXianLuControl[_index].Dispose();
|
|||
|
|
mListXianLuControl[_index] = null;
|
|||
|
|
mListXianLuControl.RemoveAt(_index);
|
|||
|
|
}
|
|||
|
|
if (_index >= 0 && _index < mListXianLuData.Count)
|
|||
|
|
{
|
|||
|
|
mListXianLuData[_index].Destroy();
|
|||
|
|
mListXianLuData[_index] = null;
|
|||
|
|
mListXianLuData.RemoveAt(_index);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
result = ex.Message;
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public Panel GetLastXianLuControl_Panel()
|
|||
|
|
{
|
|||
|
|
Panel result = null;
|
|||
|
|
if (mListXianLuControl.Count == 0)
|
|||
|
|
{
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
int num = -1;
|
|||
|
|
num = mListXianLuControl.Count - 1;
|
|||
|
|
return mListXianLuControl[num].mPanel_XianLu;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public XianLuData GetLastXianLuData()
|
|||
|
|
{
|
|||
|
|
XianLuData result = null;
|
|||
|
|
if (mListXianLuData.Count == 0)
|
|||
|
|
{
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
int num = -1;
|
|||
|
|
num = mListXianLuData.Count - 1;
|
|||
|
|
return mListXianLuData[num];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public Panel GetXianLuControl_Panel(int _index)
|
|||
|
|
{
|
|||
|
|
Panel result = null;
|
|||
|
|
if (_index < 0 || _index >= mListXianLuControl.Count)
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog($"GetXianLuControl_Panel(_index) 参数1无效:{_index}");
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
return mListXianLuControl[_index].mPanel_XianLu;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int MyLoadXianLu(string _filename)
|
|||
|
|
{
|
|||
|
|
int result = 0;
|
|||
|
|
if (string.IsNullOrEmpty(_filename))
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MyLoadXianLu(_fileName) 参数1为空:线路数据文件名。");
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
if (!File.Exists(_filename))
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MyLoadXianLu(_fileName) 文件未找到! 文件名=" + _filename);
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
bool flag = false;
|
|||
|
|
int i = -1;
|
|||
|
|
int num = 0;
|
|||
|
|
int num2 = 0;
|
|||
|
|
string[] array = new string[2] { "<XianLu>", "<Task>" };
|
|||
|
|
string[] array2 = new string[2] { "</XianLu>", "</Task>" };
|
|||
|
|
string text = "";
|
|||
|
|
string[] separator = new string[3] { "\r", "\n", "," };
|
|||
|
|
string[] array3 = null;
|
|||
|
|
int num3 = 0;
|
|||
|
|
int num4 = 0;
|
|||
|
|
string text2 = "";
|
|||
|
|
string text3 = "";
|
|||
|
|
int num5 = 0;
|
|||
|
|
int num6 = 0;
|
|||
|
|
int num7 = 0;
|
|||
|
|
int num8 = 0;
|
|||
|
|
int num9 = 0;
|
|||
|
|
int num10 = 0;
|
|||
|
|
double num11 = 0.0;
|
|||
|
|
Encoding[] array4 = new Encoding[6]
|
|||
|
|
{
|
|||
|
|
Encoding.UTF8,
|
|||
|
|
Encoding.Default,
|
|||
|
|
Encoding.ASCII,
|
|||
|
|
Encoding.Unicode,
|
|||
|
|
Encoding.UTF7,
|
|||
|
|
Encoding.UTF32
|
|||
|
|
};
|
|||
|
|
int num12 = 0;
|
|||
|
|
bool flag2 = false;
|
|||
|
|
for (int j = 0; j < array4.Length; j++)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using FileStream fileStream = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None);
|
|||
|
|
using (StreamReader streamReader = new StreamReader(fileStream, array4[j]))
|
|||
|
|
{
|
|||
|
|
text = streamReader.ReadToEnd().Trim();
|
|||
|
|
if (string.IsNullOrEmpty(text) || text.IndexOf("线路") >= 0 || text.IndexOf("杆塔") >= 0)
|
|||
|
|
{
|
|||
|
|
num12 = j;
|
|||
|
|
flag2 = true;
|
|||
|
|
}
|
|||
|
|
streamReader.Close();
|
|||
|
|
}
|
|||
|
|
fileStream.Close();
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
if (flag2)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
using (FileStream fileStream2 = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None))
|
|||
|
|
{
|
|||
|
|
using (StreamReader streamReader2 = new StreamReader(fileStream2, array4[num12]))
|
|||
|
|
{
|
|||
|
|
while (!streamReader2.EndOfStream)
|
|||
|
|
{
|
|||
|
|
text = streamReader2.ReadLine().Trim();
|
|||
|
|
if (string.IsNullOrEmpty(text))
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if (!flag)
|
|||
|
|
{
|
|||
|
|
for (i = 0; i < array.Length; i++)
|
|||
|
|
{
|
|||
|
|
if (text.IndexOf(array[i]) >= 0)
|
|||
|
|
{
|
|||
|
|
flag = true;
|
|||
|
|
num = 0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (!flag || array[i].IndexOf("<XianLu>") < 0)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
array3 = text.Split(separator, StringSplitOptions.RemoveEmptyEntries);
|
|||
|
|
if (array3.Length >= 3)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num11 = Convert.ToDouble(array3[1]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num11 = 31.0;
|
|||
|
|
}
|
|||
|
|
mCurrent_a_All_GanTa = num11;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num11 = Convert.ToDouble(array3[2]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num11 = 2.8;
|
|||
|
|
}
|
|||
|
|
mCurrent_b_All_GanTa = num11;
|
|||
|
|
mCurrent_a_b_Ready = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
mCurrent_a_b_Ready = false;
|
|||
|
|
}
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if (flag)
|
|||
|
|
{
|
|||
|
|
for (int k = 0; k < array2.Length; k++)
|
|||
|
|
{
|
|||
|
|
if (text.IndexOf(array2[k]) >= 0)
|
|||
|
|
{
|
|||
|
|
flag = false;
|
|||
|
|
i = -1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (!flag)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
string text4 = array[i];
|
|||
|
|
string text5 = text4;
|
|||
|
|
if (!(text5 == "<XianLu>"))
|
|||
|
|
{
|
|||
|
|
if (text5 == "<Task>")
|
|||
|
|
{
|
|||
|
|
num++;
|
|||
|
|
}
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
array3 = text.Split(separator, StringSplitOptions.RemoveEmptyEntries);
|
|||
|
|
if (num == 0)
|
|||
|
|
{
|
|||
|
|
num7 = 0;
|
|||
|
|
}
|
|||
|
|
if (array3.Length >= 9)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[0]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 1;
|
|||
|
|
}
|
|||
|
|
num4 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[1]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = XianLuData.mNextID_static;
|
|||
|
|
}
|
|||
|
|
num3 = num2;
|
|||
|
|
text2 = array3[2].Trim();
|
|||
|
|
text3 = array3[3].Trim();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[4]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = -1;
|
|||
|
|
}
|
|||
|
|
num5 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[5]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = -1;
|
|||
|
|
}
|
|||
|
|
num6 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[6]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 0;
|
|||
|
|
}
|
|||
|
|
num8 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[7]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 0;
|
|||
|
|
}
|
|||
|
|
num9 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[8]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 0;
|
|||
|
|
}
|
|||
|
|
num10 = num2;
|
|||
|
|
Add1XianLuControl(num4, text2, text3, num5, num6, num3, num8, num9, num10);
|
|||
|
|
num7++;
|
|||
|
|
}
|
|||
|
|
else if (array3.Length >= 6)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[0]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 1;
|
|||
|
|
}
|
|||
|
|
num4 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[1]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = XianLuData.mNextID_static;
|
|||
|
|
}
|
|||
|
|
num3 = num2;
|
|||
|
|
text2 = array3[2].Trim();
|
|||
|
|
text3 = array3[3].Trim();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[4]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = -1;
|
|||
|
|
}
|
|||
|
|
num5 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[5]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = -1;
|
|||
|
|
}
|
|||
|
|
num6 = num2;
|
|||
|
|
Add1XianLuControl(num4, text2, text3, num5, num6, num3, 0, 0, 0);
|
|||
|
|
num7++;
|
|||
|
|
}
|
|||
|
|
else if (array3.Length == 5)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[0]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 1;
|
|||
|
|
}
|
|||
|
|
num4 = num2;
|
|||
|
|
text2 = array3[1].Trim();
|
|||
|
|
text3 = array3[2].Trim();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[3]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = -1;
|
|||
|
|
}
|
|||
|
|
num5 = num2;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[4]);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = -1;
|
|||
|
|
}
|
|||
|
|
num6 = num2;
|
|||
|
|
Add1XianLuControl(num4, text2, text3, num5, num6, XianLuData.mNextID_static, 0, 0, 0);
|
|||
|
|
num7++;
|
|||
|
|
}
|
|||
|
|
num++;
|
|||
|
|
}
|
|||
|
|
streamReader2.Close();
|
|||
|
|
}
|
|||
|
|
fileStream2.Close();
|
|||
|
|
}
|
|||
|
|
return num7;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int MySaveXianLu(string _filename)
|
|||
|
|
{
|
|||
|
|
int result = 0;
|
|||
|
|
if (string.IsNullOrEmpty(_filename))
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MySaveXianLu(_fileName) 参数1为空:线路数据文件名。");
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
int num = 0;
|
|||
|
|
int num2 = -1;
|
|||
|
|
string[] array = new string[2] { "<XianLu>", "<Task>" };
|
|||
|
|
string[] array2 = new string[2] { "</XianLu>", "</Task>" };
|
|||
|
|
XianLuData xianLuData = null;
|
|||
|
|
using (FileStream fileStream = new FileStream(_filename, FileMode.Create, FileAccess.Write, FileShare.None))
|
|||
|
|
{
|
|||
|
|
using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8))
|
|||
|
|
{
|
|||
|
|
for (num2 = 0; num2 < array.Length; num2++)
|
|||
|
|
{
|
|||
|
|
string text = array[num2];
|
|||
|
|
string text2 = text;
|
|||
|
|
if (text2 == "<XianLu>")
|
|||
|
|
{
|
|||
|
|
num = 0;
|
|||
|
|
streamWriter.WriteLine(XianLuData.MyHead_ToString());
|
|||
|
|
streamWriter.WriteLine($"{array[num2]},{mCurrent_a_All_GanTa},{mCurrent_b_All_GanTa}");
|
|||
|
|
for (int i = 0; i < mListXianLuData.Count; i++)
|
|||
|
|
{
|
|||
|
|
xianLuData = mListXianLuData[i];
|
|||
|
|
streamWriter.WriteLine(xianLuData.MyToString());
|
|||
|
|
num++;
|
|||
|
|
}
|
|||
|
|
if (num2 < array2.Length)
|
|||
|
|
{
|
|||
|
|
streamWriter.WriteLine(array2[num2]);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
streamWriter.WriteLine(array[num2].Replace("<", "</"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
streamWriter.Close();
|
|||
|
|
}
|
|||
|
|
fileStream.Close();
|
|||
|
|
}
|
|||
|
|
return num;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public bool IsRepeatXianLuName(string _XianLuName)
|
|||
|
|
{
|
|||
|
|
bool result = false;
|
|||
|
|
for (int i = 0; i < mListXianLuData.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (mListXianLuData[i].mName_XianLu.Equals(_XianLuName))
|
|||
|
|
{
|
|||
|
|
result = true;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void Refresh_GanTaNumber_Label()
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < mListXianLuControl.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (mListXianLuData[i].mGanTaNumber_XianLu != mListGanTas[i].mListGanTaData.Count)
|
|||
|
|
{
|
|||
|
|
mListXianLuData[i].mGanTaNumber_XianLu = mListGanTas[i].mListGanTaData.Count;
|
|||
|
|
mListXianLuData[i].mStringGanTaNumber_XianLu = $"[{mListXianLuData[i].mGanTaNumber_XianLu}]个杆塔";
|
|||
|
|
FormDesktop.MySetLabelText(mListXianLuControl[i].mGanTaNumber_XianLu_Label, mListXianLuData[i].mStringGanTaNumber_XianLu);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void Refresh_Index_XianLu()
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < mListXianLuControl.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (mListXianLuControl[i].mIndex__Control != i)
|
|||
|
|
{
|
|||
|
|
mListXianLuControl[i].mIndex__Control = i;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for (int j = 0; j < mListXianLuData.Count; j++)
|
|||
|
|
{
|
|||
|
|
if (mListXianLuData[j].mIndex__Data != j)
|
|||
|
|
{
|
|||
|
|
mListXianLuData[j].mIndex__Data = j;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int MyLoadGanTa(string _filename)
|
|||
|
|
{
|
|||
|
|
int result = 0;
|
|||
|
|
if (string.IsNullOrEmpty(_filename))
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MyLoadGanTa() 参数1为空:杆塔数据文件名。");
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
if (!File.Exists(_filename))
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MyLoadGanTa() 文件未找到! 文件名=" + _filename);
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
bool flag = false;
|
|||
|
|
int i = -1;
|
|||
|
|
int num = 0;
|
|||
|
|
int num2 = 0;
|
|||
|
|
double num3 = 0.0;
|
|||
|
|
string[] array = new string[2] { "<GanTa>", "<XianLu>" };
|
|||
|
|
string[] array2 = new string[2] { "</GanTa>", "</XianLu>" };
|
|||
|
|
string text = "";
|
|||
|
|
string[] separator = new string[3] { "\r", "\n", "," };
|
|||
|
|
string[] array3 = null;
|
|||
|
|
GanTaData ganTaData = null;
|
|||
|
|
XianLuData xianLuData = null;
|
|||
|
|
int num4 = 0;
|
|||
|
|
int num5 = 0;
|
|||
|
|
string text2 = "";
|
|||
|
|
Dictionary<string, int> dictionary = new Dictionary<string, int>();
|
|||
|
|
dictionary.Clear();
|
|||
|
|
bool flag2 = false;
|
|||
|
|
int index = 0;
|
|||
|
|
bool flag3 = false;
|
|||
|
|
Encoding[] array4 = new Encoding[6]
|
|||
|
|
{
|
|||
|
|
Encoding.UTF8,
|
|||
|
|
Encoding.Default,
|
|||
|
|
Encoding.ASCII,
|
|||
|
|
Encoding.Unicode,
|
|||
|
|
Encoding.UTF7,
|
|||
|
|
Encoding.UTF32
|
|||
|
|
};
|
|||
|
|
int num6 = 0;
|
|||
|
|
bool flag4 = false;
|
|||
|
|
for (int j = 0; j < array4.Length; j++)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using FileStream fileStream = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None);
|
|||
|
|
using (StreamReader streamReader = new StreamReader(fileStream, array4[j]))
|
|||
|
|
{
|
|||
|
|
text = streamReader.ReadToEnd().Trim();
|
|||
|
|
if (string.IsNullOrEmpty(text) || text.IndexOf("线路") >= 0 || text.IndexOf("杆塔") >= 0)
|
|||
|
|
{
|
|||
|
|
num6 = j;
|
|||
|
|
flag4 = true;
|
|||
|
|
}
|
|||
|
|
streamReader.Close();
|
|||
|
|
}
|
|||
|
|
fileStream.Close();
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
if (flag4)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using FileStream fileStream2 = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None);
|
|||
|
|
using (StreamReader streamReader2 = new StreamReader(fileStream2, array4[num6]))
|
|||
|
|
{
|
|||
|
|
while (!streamReader2.EndOfStream)
|
|||
|
|
{
|
|||
|
|
text = streamReader2.ReadLine().Trim();
|
|||
|
|
if (string.IsNullOrEmpty(text))
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if (!flag)
|
|||
|
|
{
|
|||
|
|
for (i = 0; i < array.Length; i++)
|
|||
|
|
{
|
|||
|
|
if (text.IndexOf(array[i]) >= 0)
|
|||
|
|
{
|
|||
|
|
flag = true;
|
|||
|
|
num = 0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if (flag)
|
|||
|
|
{
|
|||
|
|
for (int k = 0; k < array2.Length; k++)
|
|||
|
|
{
|
|||
|
|
if (text.IndexOf(array2[k]) >= 0)
|
|||
|
|
{
|
|||
|
|
flag = false;
|
|||
|
|
i = -1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (!flag)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
string text3 = array[i];
|
|||
|
|
string text4 = text3;
|
|||
|
|
if (!(text4 == "<GanTa>"))
|
|||
|
|
{
|
|||
|
|
if (text4 == "<XianLu>")
|
|||
|
|
{
|
|||
|
|
num++;
|
|||
|
|
}
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
array3 = text.Split(separator, StringSplitOptions.None);
|
|||
|
|
if (num == 0)
|
|||
|
|
{
|
|||
|
|
num4 = 0;
|
|||
|
|
}
|
|||
|
|
if (num == 0 && text.IndexOf("塔号") >= 0)
|
|||
|
|
{
|
|||
|
|
for (int l = 0; l < array3.Length; l++)
|
|||
|
|
{
|
|||
|
|
dictionary.Add(array3[l], l);
|
|||
|
|
}
|
|||
|
|
num++;
|
|||
|
|
num4 = 0;
|
|||
|
|
flag2 = true;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if (array3.Length >= 65)
|
|||
|
|
{
|
|||
|
|
ganTaData = new GanTaData();
|
|||
|
|
if (flag2)
|
|||
|
|
{
|
|||
|
|
for (int m = 0; m < array3.Length; m++)
|
|||
|
|
{
|
|||
|
|
text2 = dictionary.ElementAt(m).Key;
|
|||
|
|
num5 = dictionary.ElementAt(m).Value;
|
|||
|
|
if (array3[num5] == null)
|
|||
|
|
{
|
|||
|
|
num2 = 0;
|
|||
|
|
num3 = 0.0;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[num5].Trim());
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 1;
|
|||
|
|
}
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num3 = Convert.ToDouble(array3[num5].Trim());
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num3 = 1.0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
switch (text2)
|
|||
|
|
{
|
|||
|
|
case "线路编号":
|
|||
|
|
ganTaData.mXianLuID = num2;
|
|||
|
|
break;
|
|||
|
|
case "序号":
|
|||
|
|
ganTaData.mIndex__GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case "线路名称":
|
|||
|
|
ganTaData.mXianLuName = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "电压等级":
|
|||
|
|
ganTaData.mDYDJ_GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case "塔号":
|
|||
|
|
ganTaData.mID_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "杆塔模型":
|
|||
|
|
ganTaData.mModel_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "塔形":
|
|||
|
|
ganTaData.mTaXing_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "经度":
|
|||
|
|
ganTaData.mJingDu_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "纬度":
|
|||
|
|
ganTaData.mWeiDu_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回相序":
|
|||
|
|
ganTaData.mXiangXu1_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "II回相序":
|
|||
|
|
ganTaData.mXiangXu2_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "III回相序":
|
|||
|
|
ganTaData.mXiangXu3_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "IV回相序":
|
|||
|
|
ganTaData.mXiangXu4_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "A相是否安装避雷器":
|
|||
|
|
ganTaData.mBLQ_A_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "B相是否安装避雷器":
|
|||
|
|
ganTaData.mBLQ_B_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "C相是否安装避雷器":
|
|||
|
|
ganTaData.mBLQ_C_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "接地电阻":
|
|||
|
|
ganTaData.mJDDZ_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "左避雷中距m":
|
|||
|
|
ganTaData.mBLZJ_L_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "右避雷中距m":
|
|||
|
|
ganTaData.mBLZJ_R_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "避雷线高度m":
|
|||
|
|
ganTaData.mBLXGD_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "绝缘子串长度mm":
|
|||
|
|
ganTaData.mJYZCD_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "杆塔呼高m":
|
|||
|
|
ganTaData.mHuGao_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回上相中距m":
|
|||
|
|
ganTaData.m1ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回中相中距m":
|
|||
|
|
ganTaData.m1ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回下相中距m":
|
|||
|
|
ganTaData.m1ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回上相高度m":
|
|||
|
|
ganTaData.m1GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回中相高度m":
|
|||
|
|
ganTaData.m1GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "I回下相高度m":
|
|||
|
|
ganTaData.m1GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "II回上相中距m":
|
|||
|
|
ganTaData.m2ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "II回中相中距m":
|
|||
|
|
ganTaData.m2ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "II回下相中距m":
|
|||
|
|
ganTaData.m2ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "II回上相高度m":
|
|||
|
|
ganTaData.m2GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "II回中相高度m":
|
|||
|
|
ganTaData.m2GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "II回下相高度m":
|
|||
|
|
ganTaData.m2GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "III回上相中距m":
|
|||
|
|
ganTaData.m3ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "III回中相中距m":
|
|||
|
|
ganTaData.m3ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "III回下相中距m":
|
|||
|
|
ganTaData.m3ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "III回上相高度m":
|
|||
|
|
ganTaData.m3GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "III回中相高度m":
|
|||
|
|
ganTaData.m3GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "III回下相高度m":
|
|||
|
|
ganTaData.m3GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "IV回上相中距m":
|
|||
|
|
ganTaData.m4ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "IV回中相中距m":
|
|||
|
|
ganTaData.m4ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "IV回下相中距m":
|
|||
|
|
ganTaData.m4ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "IV回上相高度m":
|
|||
|
|
ganTaData.m4GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "IV回中相高度m":
|
|||
|
|
ganTaData.m4GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "IV回下相高度m":
|
|||
|
|
ganTaData.m4GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "小号侧档距":
|
|||
|
|
ganTaData.mXiaoHao_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "大号侧档距":
|
|||
|
|
ganTaData.mDaHao_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "电角度":
|
|||
|
|
ganTaData.mAngle_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "雷电流幅值a":
|
|||
|
|
ganTaData.mCurrent_a_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "雷电流幅值b":
|
|||
|
|
ganTaData.mCurrent_b_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "地面倾角1":
|
|||
|
|
ganTaData.mDMQJ1_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "地面倾角2":
|
|||
|
|
ganTaData.mDMQJ2_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "海拔m":
|
|||
|
|
ganTaData.mHaiBa_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "地形":
|
|||
|
|
ganTaData.mDiXing_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "地闪密度":
|
|||
|
|
ganTaData.mDSMD_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "直线或耐张杆塔":
|
|||
|
|
ganTaData.mZXNZ_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case "绕击反击":
|
|||
|
|
ganTaData.mRaoJiFanJi_GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case "反击耐雷水平kA":
|
|||
|
|
ganTaData.mFJ_NLSP_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "反击跳闸率(次/100km.a)":
|
|||
|
|
ganTaData.mFJ_TZL_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "绕击耐雷水平kA":
|
|||
|
|
ganTaData.mRJ_NLSP_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "绕击跳闸率(次/100km.a)":
|
|||
|
|
ganTaData.mRJ_TZL_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case "雷击风险等级":
|
|||
|
|
ganTaData.mFXDJ_GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case "原因分析":
|
|||
|
|
ganTaData.m_YuanYinFenXi_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n");
|
|||
|
|
break;
|
|||
|
|
case "措施推荐":
|
|||
|
|
ganTaData.m_CuoShiTuiJian_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n");
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (!flag2)
|
|||
|
|
{
|
|||
|
|
for (num5 = 0; num5 < array3.Length; num5++)
|
|||
|
|
{
|
|||
|
|
if (array3[num5] == null)
|
|||
|
|
{
|
|||
|
|
num2 = 0;
|
|||
|
|
num3 = 0.0;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num2 = Convert.ToInt32(array3[num5].Trim());
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num2 = 1;
|
|||
|
|
}
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
num3 = Convert.ToDouble(array3[num5].Trim());
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
num3 = 1.0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
switch (num5)
|
|||
|
|
{
|
|||
|
|
case 0:
|
|||
|
|
ganTaData.mXianLuID = num2;
|
|||
|
|
break;
|
|||
|
|
case 1:
|
|||
|
|
ganTaData.mIndex__GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
ganTaData.mXianLuName = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 3:
|
|||
|
|
ganTaData.mDYDJ_GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case 4:
|
|||
|
|
ganTaData.mID_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 5:
|
|||
|
|
ganTaData.mModel_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 6:
|
|||
|
|
ganTaData.mTaXing_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 7:
|
|||
|
|
ganTaData.mJingDu_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 8:
|
|||
|
|
ganTaData.mWeiDu_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 9:
|
|||
|
|
ganTaData.mXiangXu1_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 10:
|
|||
|
|
ganTaData.mXiangXu2_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 11:
|
|||
|
|
ganTaData.mXiangXu3_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 12:
|
|||
|
|
ganTaData.mXiangXu4_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 13:
|
|||
|
|
ganTaData.mBLQ_A_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 14:
|
|||
|
|
ganTaData.mBLQ_B_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 15:
|
|||
|
|
ganTaData.mBLQ_C_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 16:
|
|||
|
|
ganTaData.mJDDZ_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 17:
|
|||
|
|
ganTaData.mBLZJ_L_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 18:
|
|||
|
|
ganTaData.mBLZJ_R_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 19:
|
|||
|
|
ganTaData.mBLXGD_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 20:
|
|||
|
|
ganTaData.mJYZCD_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 21:
|
|||
|
|
ganTaData.mHuGao_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 22:
|
|||
|
|
ganTaData.m1ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 23:
|
|||
|
|
ganTaData.m1ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 24:
|
|||
|
|
ganTaData.m1ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 25:
|
|||
|
|
ganTaData.m1GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 26:
|
|||
|
|
ganTaData.m1GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 27:
|
|||
|
|
ganTaData.m1GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 28:
|
|||
|
|
ganTaData.m2ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 29:
|
|||
|
|
ganTaData.m2ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 30:
|
|||
|
|
ganTaData.m2ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 31:
|
|||
|
|
ganTaData.m2GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 32:
|
|||
|
|
ganTaData.m2GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 33:
|
|||
|
|
ganTaData.m2GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 34:
|
|||
|
|
ganTaData.m3ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 35:
|
|||
|
|
ganTaData.m3ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 36:
|
|||
|
|
ganTaData.m3ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 37:
|
|||
|
|
ganTaData.m3GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 38:
|
|||
|
|
ganTaData.m3GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 39:
|
|||
|
|
ganTaData.m3GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 40:
|
|||
|
|
ganTaData.m4ZJ_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 41:
|
|||
|
|
ganTaData.m4ZJ_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 42:
|
|||
|
|
ganTaData.m4ZJ_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 43:
|
|||
|
|
ganTaData.m4GD_Shang_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 44:
|
|||
|
|
ganTaData.m4GD_Zhong_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 45:
|
|||
|
|
ganTaData.m4GD_Xia_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 46:
|
|||
|
|
ganTaData.mXiaoHao_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 47:
|
|||
|
|
ganTaData.mDaHao_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 48:
|
|||
|
|
ganTaData.mAngle_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 49:
|
|||
|
|
ganTaData.mCurrent_a_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 50:
|
|||
|
|
ganTaData.mCurrent_b_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 51:
|
|||
|
|
ganTaData.mDMQJ1_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 52:
|
|||
|
|
ganTaData.mDMQJ2_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 53:
|
|||
|
|
ganTaData.mHaiBa_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 54:
|
|||
|
|
ganTaData.mDiXing_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 55:
|
|||
|
|
ganTaData.mDSMD_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 56:
|
|||
|
|
ganTaData.mZXNZ_GanTa = array3[num5].Trim();
|
|||
|
|
break;
|
|||
|
|
case 57:
|
|||
|
|
ganTaData.mRaoJiFanJi_GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case 58:
|
|||
|
|
ganTaData.mFJ_NLSP_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 59:
|
|||
|
|
ganTaData.mFJ_TZL_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 60:
|
|||
|
|
ganTaData.mRJ_NLSP_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 61:
|
|||
|
|
ganTaData.mRJ_TZL_GanTa = num3;
|
|||
|
|
break;
|
|||
|
|
case 62:
|
|||
|
|
ganTaData.mFXDJ_GanTa = num2;
|
|||
|
|
break;
|
|||
|
|
case 63:
|
|||
|
|
ganTaData.m_CuoShiTuiJian_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n");
|
|||
|
|
break;
|
|||
|
|
case 64:
|
|||
|
|
ganTaData.m_YuanYinFenXi_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n");
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
flag3 = false;
|
|||
|
|
for (int n = 0; n < mListXianLuData.Count; n++)
|
|||
|
|
{
|
|||
|
|
if (ganTaData.mXianLuName.Equals(mListXianLuData[n].mName_XianLu))
|
|||
|
|
{
|
|||
|
|
flag3 = true;
|
|||
|
|
index = n;
|
|||
|
|
xianLuData = mListXianLuData[n];
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (!flag3)
|
|||
|
|
{
|
|||
|
|
num++;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
ganTaData.mXianLuID = xianLuData.mID_XianLu;
|
|||
|
|
ganTaData.mXianLuName = xianLuData.mName_XianLu;
|
|||
|
|
mListGanTas[index].Add1GanTaData(ganTaData);
|
|||
|
|
num4++;
|
|||
|
|
}
|
|||
|
|
num++;
|
|||
|
|
}
|
|||
|
|
streamReader2.Close();
|
|||
|
|
}
|
|||
|
|
fileStream2.Close();
|
|||
|
|
}
|
|||
|
|
catch (Exception ex6)
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MyLoadGanTa() 载入杆塔文件发生异常。文件:" + _filename + "。异常:" + ex6.Message + "。");
|
|||
|
|
MessageBox.Show(ex6.Message);
|
|||
|
|
}
|
|||
|
|
return num4;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int MySaveGanTa(string _filename)
|
|||
|
|
{
|
|||
|
|
int result = 0;
|
|||
|
|
if (string.IsNullOrEmpty(_filename))
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MySaveGanTa(_fileName) 参数1为空:杆塔数据文件名。");
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
int num = 0;
|
|||
|
|
int num2 = -1;
|
|||
|
|
string[] array = new string[2] { "<GanTa>", "<XianLu>" };
|
|||
|
|
string[] array2 = new string[2] { "</GanTa>", "</XianLu>" };
|
|||
|
|
GanTaData ganTaData = null;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using FileStream fileStream = new FileStream(_filename, FileMode.Create, FileAccess.Write, FileShare.None);
|
|||
|
|
using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8))
|
|||
|
|
{
|
|||
|
|
for (num2 = 0; num2 < array.Length; num2++)
|
|||
|
|
{
|
|||
|
|
string text = array[num2];
|
|||
|
|
string text2 = text;
|
|||
|
|
if (!(text2 == "<GanTa>"))
|
|||
|
|
{
|
|||
|
|
if (text2 == "<XianLu>")
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
num = 0;
|
|||
|
|
streamWriter.WriteLine(array[num2]);
|
|||
|
|
streamWriter.WriteLine(GanTaData.MyHead_ToString());
|
|||
|
|
for (int i = 0; i < mListGanTas.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (mListGanTas[i] != null && mListGanTas[i].mListGanTaData != null && mListGanTas[i].mListGanTaData.Count != 0)
|
|||
|
|
{
|
|||
|
|
for (int j = 0; j < mListGanTas[i].mListGanTaData.Count; j++)
|
|||
|
|
{
|
|||
|
|
ganTaData = mListGanTas[i].mListGanTaData[j];
|
|||
|
|
streamWriter.WriteLine(ganTaData.MyToString());
|
|||
|
|
num++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (num2 < array2.Length)
|
|||
|
|
{
|
|||
|
|
streamWriter.WriteLine(array2[num2]);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
streamWriter.WriteLine(array[num2].Replace("<", "</"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
streamWriter.Close();
|
|||
|
|
}
|
|||
|
|
fileStream.Close();
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
MyLog.AddLog("MySaveGanTa() 异常:" + ex.Message);
|
|||
|
|
MessageBox.Show("异常:" + ex.Message);
|
|||
|
|
}
|
|||
|
|
return num;
|
|||
|
|
}
|
|||
|
|
}
|