using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Text; using System.Threading; using System.Windows.Forms; namespace LP; public class FormLook3CuoShiTuiJian : Form { private delegate void delegateFormTitle(Form form, string value); private delegate void delegateDataGridViewDataSource(DataGridView dataGridView, DataView value); private delegate void delegateFormHide(Form form); public FormDesktop desktop = null; private string mTitle = ""; private TaskData mLookTaskData = null; private TaskData mBLQ_3_TaskData = null; private XianLuData mLookXianLuData = null; private TaskGroup mLookTaskGroup = null; private DataSet mDS = null; private List mList_SBH = null; private string mFileName = ""; private int mIndex_detail_Look3 = -1; private bool mAfterInit = false; private bool mBusy = false; private bool mPermitButton_AnZhuangBLQ = false; private IContainer components = null; private Panel panel_Form; private Button buttonExport; private Button buttonCancel; private Panel panel_Result; private DataGridView dataGridView_Result; private TextBox textBox_ShowInform; private Button buttonBLQ_compute; public FormLook3CuoShiTuiJian() { InitializeComponent(); mTitle = "展示计算结果(措施推荐)"; if (mList_SBH == null) { mList_SBH = new List(); } } public void MySet_mIndex_detail_Look3(int _index) { mIndex_detail_Look3 = _index; } private void FormLook3CuoShiTuiJian_Load(object sender, EventArgs e) { mAfterInit = false; mPermitButton_AnZhuangBLQ = false; MyInput_Data(); MySet_Form_Title(this, ""); MyInit_DataSet(); if (mDS != null) { MySet_DataGridView_DataSource(dataGridView_Result, mDS.Tables[0].DefaultView); } buttonBLQ_compute.Visible = mPermitButton_AnZhuangBLQ; mAfterInit = true; } private void FormLook3CuoShiTuiJian_FormClosing(object sender, FormClosingEventArgs e) { MySet_DataGridView_DataSource(dataGridView_Result, null); } public void Destroy() { if (mList_SBH != null) { mList_SBH.Clear(); } mList_SBH = null; if (mDS != null) { if (mDS.Tables.Count > 0) { mDS.Tables[0].Rows.Clear(); mDS.Tables[0].Columns.Clear(); } mDS.Tables[0].Clear(); mDS.Clear(); mDS = null; } if (mBLQ_3_TaskData != null) { mBLQ_3_TaskData.Destroy(); } mBLQ_3_TaskData = null; } public void MyInput_Data() { TaskDetail taskDetail = null; if (mIndex_detail_Look3 >= 0) { taskDetail = desktop.mTask.mListDetails[mIndex_detail_Look3]; mLookTaskData = taskDetail.mTaskData; mLookTaskGroup = taskDetail.mTaskGroup; for (int i = 0; i < desktop.mXL.mListXianLuData.Count; i++) { if (taskDetail.mXianLuID_Detail == desktop.mXL.mListXianLuData[i].mID_XianLu) { mLookXianLuData = desktop.mXL.mListXianLuData[i]; break; } } } taskDetail = null; mTitle = "展示计算结果(措施推荐) - " + mLookTaskData.mName_Task + " | " + mLookXianLuData.mName_XianLu; if (mIndex_detail_Look3 < 0) { MyLog.AddLog($"FormLook3CuoShiTuiJian.cs MyInput_Data() mIndex_detail_Look3={mIndex_detail_Look3}"); } } private void MyInit_DataSet() { if (mList_SBH == null) { mList_SBH = new List(); } mList_SBH.Clear(); if (mDS == null) { mDS = new DataSet(); } if (mDS.Tables.Count == 0) { mDS.Tables.Add(new DataTable()); } mDS.Tables[0].Rows.Clear(); mDS.Tables[0].Columns.Clear(); List list = new List(); list.Clear(); string[] array = new string[20] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "反击耐雷水平kA", "反击跳闸率(次/100km.a)", "绕击耐雷水平kA", "绕击跳闸率(次/100km.a)", "雷击风险等级", "保护角", "普通计算结果", "绝缘子串长mm推荐值", "绝缘子串长mm原始值", "接地电阻Ω推荐值", "接地电阻Ω原始值", "安装避雷器" }; string[] array2 = new string[38] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "绕击跳闸率(次/100km.a)", "雷击风险等级", "A相绕击耐雷水平kA", "B相绕击耐雷水平kA", "C相绕击耐雷水平kA", "单相反击耐雷水平kA", "单相闪络相", "单相反击跳闸率(次/100km.a)", "双相反击耐雷水平kA", "双相闪络相", "双相反击跳闸率(次/100km.a)", "三相反击耐雷水平kA", "三相闪络相", "三相反击跳闸率(次/100km.a)", "四相反击耐雷水平kA", "四相闪络相", "四相反击跳闸率(次/100km.a)", "五相反击耐雷水平kA", "五相闪络相", "五相反击跳闸率(次/100km.a)", "六相反击耐雷水平kA", "六相闪络相", "六相反击跳闸率(次/100km.a)", "保护角", "普通计算结果", "绝缘子串长mm推荐值", "绝缘子串长mm原始值", "接地电阻Ω推荐值", "接地电阻Ω原始值", "安装避雷器" }; string[] array3 = new string[21] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "反击耐雷水平kA", "反击跳闸率(次/100km.a)", "绕击耐雷水平kA", "绕击跳闸率(次/100km.a)", "雷击风险等级", "普通计算结果", "保护角推荐值", "保护角原始值", "绝缘子串长mm推荐值", "绝缘子串长mm原始值", "接地电阻Ω推荐值", "接地电阻Ω原始值", "安装避雷器" }; string[] array4 = new string[39] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "绕击跳闸率(次/100km.a)", "雷击风险等级", "A相绕击耐雷水平kA", "B相绕击耐雷水平kA", "C相绕击耐雷水平kA", "单相反击耐雷水平kA", "单相闪络相", "单相反击跳闸率(次/100km.a)", "双相反击耐雷水平kA", "双相闪络相", "双相反击跳闸率(次/100km.a)", "三相反击耐雷水平kA", "三相闪络相", "三相反击跳闸率(次/100km.a)", "四相反击耐雷水平kA", "四相闪络相", "四相反击跳闸率(次/100km.a)", "五相反击耐雷水平kA", "五相闪络相", "五相反击跳闸率(次/100km.a)", "六相反击耐雷水平kA", "六相闪络相", "六相反击跳闸率(次/100km.a)", "普通计算结果", "保护角推荐值", "保护角原始值", "绝缘子串长mm推荐值", "绝缘子串长mm原始值", "接地电阻Ω推荐值", "接地电阻Ω原始值", "安装避雷器" }; string text = ""; TGanTas tGanTas = null; try { tGanTas = mLookTaskGroup.mListExTaskData[0].mTGanTas; } catch (Exception) { tGanTas = null; } if (tGanTas != null) { text = tGanTas.mListTGanTaData[0].mM1_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM2_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM3_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM4_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM5_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM6_Xiang_GanTa; text = text.ToUpper(); } bool flag = false; flag = text.IndexOf("A") >= 0 || text.IndexOf("B") >= 0 || text.IndexOf("C") >= 0; try { if (desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mTypeCode_Task == 3 || desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mTypeCode_Task == 6) { if (!flag) { for (int i = 0; i < array.Length; i++) { list.Add(array[i]); } } else if (flag) { for (int j = 0; j < array2.Length; j++) { list.Add(array2[j]); } } } else if (desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mTypeCode_Task == 302 || desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mTypeCode_Task == 602) { if (!flag) { for (int k = 0; k < array3.Length; k++) { list.Add(array3[k]); } } else if (flag) { for (int l = 0; l < array4.Length; l++) { list.Add(array4[l]); } } } for (int m = 0; m < list.Count; m++) { mDS.Tables[0].Columns.Add(list[m]); } DataRow dataRow = null; int num = -1; CanShuFenJi canShuFenJi = null; string text2 = ""; for (int n = 0; n < mLookTaskGroup.mListExTaskData.Count; n++) { if (mLookTaskGroup.mListExTaskData[n] == null || mLookTaskGroup.mListExTaskData[n].mTGanTas == null) { continue; } tGanTas = mLookTaskGroup.mListExTaskData[n].mTGanTas; for (int num2 = 0; num2 < tGanTas.mListTGanTaData.Count; num2++) { dataRow = mDS.Tables[0].NewRow(); num = desktop.mAll_CanShuFenJi.MyFind(tGanTas.mListTGanTaData[num2].m_ID_CanShuFenJi); canShuFenJi = ((num <= 0) ? null : desktop.mAll_CanShuFenJi.mList_CanShuFenJi_all[num]); if (num > 0) { text2 = (canShuFenJi.mBLQ_need ? "需要安装避雷器" : "不需要安装避雷器"); } else { text2 = ""; } if (num > 0 && canShuFenJi.mBLQ_need && (desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mTypeCode_Task == 3 || desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mTypeCode_Task == 302)) { mPermitButton_AnZhuangBLQ = true; } for (int num3 = 0; num3 < list.Count; num3++) { switch (list[num3]) { case "塔号": dataRow[num3] = tGanTas.mListTGanTaData[num2].mID_GanTa; break; case "杆塔模型": dataRow[num3] = tGanTas.mListTGanTaData[num2].mModel_GanTa; break; case "塔形": dataRow[num3] = tGanTas.mListTGanTaData[num2].mTaXing_GanTa; break; case "雷电流幅值a": dataRow[num3] = tGanTas.mListTGanTaData[num2].mCurrent_a_GanTa; break; case "地面倾角1": dataRow[num3] = tGanTas.mListTGanTaData[num2].mDMQJ1_GanTa; break; case "地闪密度": dataRow[num3] = tGanTas.mListTGanTaData[num2].mDSMD_GanTa; break; case "波头时间/μs": dataRow[num3] = tGanTas.mListTGanTaData[num2].mCurrentHeadTime_GanTa; break; case "波尾时间/μs": dataRow[num3] = tGanTas.mListTGanTaData[num2].mCurrentTailTime_GanTa; break; case "反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mFJ_NLSP_GanTa; break; case "反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mFJ_TZL_GanTa; break; case "绕击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mRJ_NLSP_GanTa; break; case "绕击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mRJ_TZL_GanTa; break; case "雷击风险等级": dataRow[num3] = tGanTas.mListTGanTaData[num2].mFXDJ_GanTa; break; case "A相绕击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mMA_RJ_NLSP_GanTa; break; case "B相绕击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mMB_RJ_NLSP_GanTa; break; case "C相绕击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mMC_RJ_NLSP_GanTa; break; case "单相反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM1_NLSP_GanTa; break; case "单相闪络相": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM1_Xiang_GanTa; break; case "单相反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM1_TZL_GanTa; break; case "双相反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM2_NLSP_GanTa; break; case "双相闪络相": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM2_Xiang_GanTa; break; case "双相反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM2_TZL_GanTa; break; case "三相反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM3_NLSP_GanTa; break; case "三相闪络相": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM3_Xiang_GanTa; break; case "三相反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM3_TZL_GanTa; break; case "四相反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM4_NLSP_GanTa; break; case "四相闪络相": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM4_Xiang_GanTa; break; case "四相反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM4_TZL_GanTa; break; case "五相反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM5_NLSP_GanTa; break; case "五相闪络相": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM5_Xiang_GanTa; break; case "五相反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM5_TZL_GanTa; break; case "六相反击耐雷水平kA": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM6_NLSP_GanTa; break; case "六相闪络相": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM6_Xiang_GanTa; break; case "六相反击跳闸率(次/100km.a)": dataRow[num3] = tGanTas.mListTGanTaData[num2].mM6_TZL_GanTa; break; case "保护角": dataRow[num3] = tGanTas.mListTGanTaData[num2].m_BaoHuJiao; break; case "普通计算结果": dataRow[num3] = tGanTas.mListTGanTaData[num2].m_Result_PuTongJiSuan_GanTa; break; case "绝缘子串长mm推荐值": dataRow[num3] = ((num > 0) ? $"{canShuFenJi.mNew_JYZCD}" : ""); break; case "绝缘子串长mm原始值": dataRow[num3] = ((num > 0) ? $"{canShuFenJi.mOld_JYZCD}" : ""); break; case "接地电阻Ω推荐值": dataRow[num3] = ((num > 0) ? $"{canShuFenJi.mNew_JDDZ}" : ""); break; case "接地电阻Ω原始值": dataRow[num3] = ((num > 0) ? $"{canShuFenJi.mOld_JDDZ}" : ""); break; case "保护角推荐值": dataRow[num3] = ((num > 0) ? $"{canShuFenJi.mNew_BaoHuJiao}" : ""); break; case "保护角原始值": dataRow[num3] = ((num > 0) ? $"{canShuFenJi.mOld_BaoHuJiao}" : ""); break; case "安装避雷器": dataRow[num3] = tGanTas.mListTGanTaData[num2].m_CuoShiTuiJian_GanTa ?? ""; break; } } mDS.Tables[0].Rows.Add(dataRow); mList_SBH.Add($"{tGanTas.mListTGanTaData[num2].mTaskIDstring}|{tGanTas.mListTGanTaData[num2].mIndex__GanTa}"); } } } catch (Exception ex2) { MyLog.AddLog("MyInit_DataSet() FormLook1 Exception=" + ex2.Message + "."); } } private void buttonCancel_Click(object sender, EventArgs e) { if (mAfterInit) { Thread thread = new Thread(MyCancel); thread.Start(); } } private void MyCancel() { MySet_Form_Title(this, "取消—"); MySet_Form_Title(this, "取消———"); base.DialogResult = DialogResult.Cancel; MyFormHide(this); } private void buttonExport_Click(object sender, EventArgs e) { if (mBusy) { return; } mBusy = true; try { if (mLookTaskGroup == null || mLookTaskGroup.mListExTaskData.Count == 0) { MyLog.AddLog($"buttonExport_Click() 参数分级数据无匹配:任务ID={mLookTaskGroup.mID_Task}"); MessageBox.Show("无杆塔数据可以导出!"); mBusy = false; return; } SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = Application.StartupPath; saveFileDialog.Filter = "所有文件*.*|*.*|Excel文件(*.csv)|*.csv|Txt文件(*.txt)|*.txt"; saveFileDialog.FilterIndex = 2; if (saveFileDialog.ShowDialog(this) == DialogResult.OK) { mFileName = saveFileDialog.FileName; Thread thread = new Thread(MySave_TGanTas); thread.Start(); } } catch (Exception ex) { MyLog.AddLog("FormLook3CuoShiTuiJian.cs buttonExport_Click() ex=" + ex.Message); } } private void MySave_TGanTas() { TGanTaData tGanTaData = null; int num = 0; string value = ""; string text = ""; CanShuFenJi canShuFenJi = null; int num2 = -1; try { using FileStream fileStream = new FileStream(mFileName, FileMode.Create, FileAccess.Write, FileShare.None); using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8)) { streamWriter.WriteLine(""); for (int i = 0; i < mLookTaskGroup.mListExTaskData.Count; i++) { if (mLookTaskGroup.mListExTaskData[i] == null || mLookTaskGroup.mListExTaskData[i].mTGanTas == null) { continue; } for (int j = 0; j < mLookTaskGroup.mListExTaskData[i].mTGanTas.mListTGanTaData.Count; j++) { tGanTaData = mLookTaskGroup.mListExTaskData[i].mTGanTas.mListTGanTaData[j]; if (tGanTaData != null) { if (num == 0) { streamWriter.Write(TGanTaData.MyHead_ToString()); value = ""; value += ",安装避雷器"; value += ",绝缘子串长mm推荐值"; value += ",绝缘子串长mm原始值"; value += ",绝缘子串长档级"; value += ",接地电阻Ω推荐值"; value += ",接地电阻Ω原始值"; value += ",接地电阻档级"; value += ",绝缘子串长标准值"; value += ",高度-标准值"; streamWriter.WriteLine(value); } streamWriter.Write(tGanTaData.MyToString()); num2 = desktop.mAll_CanShuFenJi.MyFind(tGanTaData.m_ID_CanShuFenJi); if (num2 <= 0) { value = ",,,,,,,,,"; } else if (num2 > 0) { canShuFenJi = desktop.mAll_CanShuFenJi.mList_CanShuFenJi_all[num2]; text = (canShuFenJi.mBLQ_need ? "需要安装避雷器" : "不需要安装避雷器"); value = ""; value = value + "," + tGanTaData.m_CuoShiTuiJian_GanTa; value += $",{canShuFenJi.mNew_JYZCD}"; value += $",{canShuFenJi.mOld_JYZCD}"; value += $",{canShuFenJi.mFenJi_JYZCD}"; value += $",{canShuFenJi.mNew_JDDZ}"; value += $",{canShuFenJi.mOld_JDDZ}"; value += $",{canShuFenJi.mFenJi_JDDZ}"; value += $",{canShuFenJi.mSTD_JYZ_mm}"; value += $",{canShuFenJi.mSTD_height_m}"; } streamWriter.WriteLine(value); num++; } } } streamWriter.WriteLine(""); streamWriter.Close(); } fileStream.Close(); } catch (Exception ex) { MyLog.AddLog("MySave_TGanTas() 异常=" + ex.Message); MessageBox.Show(ex.Message); } MessageBox.Show($"导出{num}条杆塔数据。文件名{mFileName}"); mBusy = false; } private void buttonBLQ_compute_Click(object sender, EventArgs e) { if (mAfterInit && !mBusy) { if (mBLQ_3_TaskData == null) { mBLQ_3_TaskData = new TaskData(); } if (mIndex_detail_Look3 >= 0 && mIndex_detail_Look3 < desktop.mTask.mListDetails.Count && desktop.mTask.mListDetails[mIndex_detail_Look3] != null && desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData != null) { mBusy = true; Thread thread = new Thread(MyThread_BLQ_computeTask); thread.Start(); } } } private void MyThread_BLQ_computeTask() { TaskData taskData = null; int index = -1; TaskData taskData2 = null; TaskData taskData3 = null; TaskData taskData4 = null; int num = 0; bool flag = false; try { taskData2 = desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData; for (int i = 0; i < desktop.mTask.mListDetails.Count; i++) { if (desktop.mTask.mListDetails[i].mTaskID_Detail == taskData2.mTaskID_QianQu_PuTongOrTongTiao_CuoShiTuiJian) { index = i; taskData = desktop.mTask.mListDetails[index].mTaskData; break; } } if (taskData == null) { taskData = desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData; } mBLQ_3_TaskData.copyFrom_TaskData(taskData); if (taskData2.mTypeCode_Task == 3) { mBLQ_3_TaskData.mTypeCode_Task = 6; } else if (taskData2.mTypeCode_Task == 302) { mBLQ_3_TaskData.mTypeCode_Task = 602; } else { mBLQ_3_TaskData.mTypeCode_Task = 6; } mBLQ_3_TaskData.mID_Task = TaskData.mNextID_static; mBLQ_3_TaskData.mID_string_Task = $"{mBLQ_3_TaskData.mID_Task}|{mBLQ_3_TaskData.mID_ExTask}"; mBLQ_3_TaskData.mName_Task = $"避雷器-{taskData.mName_Task}-{mBLQ_3_TaskData.mID_Task}"; mBLQ_3_TaskData.mTaskID_QianQu_PuTongOrTongTiao_CuoShiTuiJian = taskData.mID_Task; mBLQ_3_TaskData.mTaskID_QianQu_PuTongOrTongTiao_JiaZhuangBLQ = taskData.mID_Task; mBLQ_3_TaskData.Finished6_AnZhuangBLQ = 0; num = 0; flag = false; for (int j = 0; j < desktop.mTask.mListDetails.Count; j++) { if (mBLQ_3_TaskData.mID_Task == desktop.mTask.mListDetails[j].mTaskID_Detail) { desktop.mTask.mListDetails[j].mTaskData.copyFrom_TaskData(mBLQ_3_TaskData); num = j; flag = true; break; } } if (!flag) { TaskDetail taskDetail = new TaskDetail(); taskDetail.mTaskID_Detail = mBLQ_3_TaskData.mID_Task; taskDetail.mXianLuID_Detail = mBLQ_3_TaskData.mXianLuID_Task; taskDetail.mTaskData.copyFrom_TaskData(mBLQ_3_TaskData); num = desktop.mTask.mListDetails.Count; desktop.mTask.mListDetails.Add(taskDetail); desktop.mTask.mListDetails[num].mTaskGroup.mID_Task = mBLQ_3_TaskData.mID_Task; desktop.mTask.mListDetails[num].mTaskData.mID_Task = mBLQ_3_TaskData.mID_Task; } else if (flag) { MyLog.AddLog($"MyThread_BLQ_computeTask() Detail repeat(indexDetail={num}, mListDetails.Count={desktop.mTask.mListDetails.Count})."); mBusy = false; return; } XianLuData sourceXianLuData = null; for (int k = 0; k < desktop.mXL.mListXianLuData.Count; k++) { if (desktop.mXL.mListXianLuData[k].mID_XianLu == desktop.mTask.mListDetails[index].mXianLuID_Detail) { sourceXianLuData = desktop.mXL.mListXianLuData[k]; break; } } for (int l = 0; l < desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskGroup.mListExTaskData.Count; l++) { taskData4 = desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskGroup.mListExTaskData[l]; if (taskData4 != null) { taskData3 = new TaskData(); taskData3.copyFrom_TaskData(mBLQ_3_TaskData); taskData3.mCurveTimeHead = taskData4.mCurveTimeHead; taskData3.mCurveTimeTail = taskData4.mCurveTimeTail; taskData3.mTGanTas.SetXianLuData(taskData3.mID_string_Task, sourceXianLuData); taskData3.mTGanTas.mListTGanTaData.Clear(); desktop.mTask.Add1_ExTaskData(num, taskData3); } } TGanTas tGanTas = null; GanTaData ganTaData = null; GanTaData ganTaData2 = null; TGanTaData tGanTaData = null; TGanTaData tGanTaData2 = null; int num2 = -1; bool flag2 = false; bool flag3 = false; for (num2 = 0; num2 < desktop.mXL.mListXianLuData.Count; num2++) { if (desktop.mXL.mListXianLuData[num2].mID_XianLu == mBLQ_3_TaskData.mXianLuID_Task) { flag3 = true; break; } } MyLog.AddLog("创建安装避雷器任务"); for (int m = 0; m < desktop.mTask.mListDetails[num].mTaskGroup.mListExTaskData.Count; m++) { taskData3 = desktop.mTask.mListDetails[num].mTaskGroup.mListExTaskData[m]; taskData3.mTGanTas.mListTGanTaData.Clear(); for (int n = 0; n < desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskGroup.mListExTaskData.Count; n++) { if (n != m) { continue; } MyLog.AddLog($"{desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskData.mName_Task} mIndex_detail_Look3={mIndex_detail_Look3} k={n}"); taskData4 = desktop.mTask.mListDetails[mIndex_detail_Look3].mTaskGroup.mListExTaskData[n]; tGanTas = taskData4.mTGanTas; for (int num3 = 0; num3 < tGanTas.mListTGanTaData.Count; num3++) { if (tGanTas.mListTGanTaData[num3].mFXDJ_GanTa <= 2) { continue; } flag2 = false; tGanTaData = null; for (int num4 = 0; num4 < desktop.mTask.mListDetails[index].mTaskGroup.mListExTaskData[n].mTGanTas.mListTGanTaData.Count; num4++) { tGanTaData2 = desktop.mTask.mListDetails[index].mTaskGroup.mListExTaskData[n].mTGanTas.mListTGanTaData[num4]; if (tGanTaData2.mID_GanTa == tGanTas.mListTGanTaData[num3].mID_GanTa) { tGanTaData = tGanTaData2; flag2 = true; break; } } ganTaData = new GanTaData(); if (!flag2) { if (flag3 && num2 < desktop.mXL.mListGanTas.Count) { for (int num5 = 0; num5 < desktop.mXL.mListGanTas[num2].mListGanTaData.Count; num5++) { ganTaData2 = desktop.mXL.mListGanTas[num2].mListGanTaData[num5]; if (ganTaData2 != null && ganTaData2.mID_GanTa.Equals(tGanTas.mListTGanTaData[num3].mID_GanTa)) { ganTaData.CopyFrom_GanTaData(ganTaData2); break; } } } } else if (flag2) { ganTaData.CopyFrom_TGanTaData(tGanTaData); if (flag2 && flag3 && num2 < desktop.mXL.mListGanTas.Count) { for (int num6 = 0; num6 < desktop.mXL.mListGanTas[num2].mListGanTaData.Count; num6++) { ganTaData2 = desktop.mXL.mListGanTas[num2].mListGanTaData[num6]; if (ganTaData2 != null && ganTaData2.mID_GanTa.Equals(tGanTaData.mID_GanTa)) { ganTaData.mJYZCD_GanTa = ganTaData2.mJYZCD_GanTa; ganTaData.mJDDZ_GanTa = ganTaData2.mJDDZ_GanTa; ganTaData.mBLZJ_L_GanTa = ganTaData2.mBLZJ_L_GanTa; ganTaData.mBLZJ_R_GanTa = ganTaData2.mBLZJ_R_GanTa; break; } } } } ganTaData.mBLQ_A_GanTa = "是"; ganTaData.mBLQ_B_GanTa = "是"; ganTaData.mBLQ_C_GanTa = "是"; taskData3.mTGanTas.Add1TGanTaData(ganTaData, taskData4.mIndex_CurrentCurve, taskData4.mCurveTimeHead, taskData4.mCurveTimeTail); MyLog.AddLog($"mID_GanTa={ganTaData.mID_GanTa} mJYZCD_GanTa={ganTaData.mJYZCD_GanTa} mJDDZ_GanTa={ganTaData.mJDDZ_GanTa} mBLZJ_L_GanTa={ganTaData.mBLZJ_L_GanTa} mBLZJ_R_GanTa={ganTaData.mBLZJ_R_GanTa}"); TGanTaData.mNextID_static++; } } } for (int num7 = 0; num7 < 10; num7++) { if (desktop.mAddTaskData.mID_Task <= 0) { break; } Thread.Sleep(1000); } desktop.mAddTaskData.copyFrom_TaskData(mBLQ_3_TaskData); desktop.MySendForm_TaskData(desktop, desktop.mAddTaskData); MySet_Form_Title(this, "创建任务 " + mBLQ_3_TaskData.mName_Task); } catch (Exception ex) { MyLog.AddLog("FormLook3CuoShiTuiJian.cs MyThread_BLQ_computeTask() ex=" + ex.Message); } finally { mBusy = false; } } private void dataGridView_Result_CellClick(object sender, DataGridViewCellEventArgs e) { if (mBusy) { return; } mBusy = true; try { int rowIndex = e.RowIndex; if (rowIndex < 0) { mBusy = false; return; } MyRefresh_Right(rowIndex); } catch (Exception ex) { MessageBox.Show(ex.Message); } mBusy = false; } private void MyRefresh_Right(int _index) { try { string text = "1"; try { text = mList_SBH[_index].Trim(); } catch (Exception) { text = "-"; } string text2 = ""; TGanTaData tGanTaData = null; TGanTas tGanTas = null; CanShuFenJi canShuFenJi = null; string text3 = ""; for (int i = 0; i < mLookTaskGroup.mListExTaskData.Count; i++) { if (mLookTaskGroup.mListExTaskData[i] == null || mLookTaskGroup.mListExTaskData[i].mTGanTas == null) { continue; } tGanTas = mLookTaskGroup.mListExTaskData[i].mTGanTas; if (tGanTas == null || tGanTas.mListTGanTaData == null) { continue; } for (int j = 0; j < tGanTas.mListTGanTaData.Count; j++) { tGanTaData = tGanTas.mListTGanTaData[j]; if (!text.Equals($"{tGanTaData.mTaskIDstring}|{tGanTaData.mIndex__GanTa}")) { continue; } if (tGanTaData.m_ID_CanShuFenJi == 0) { text2 = "\r\n无分级数据"; textBox_ShowInform.Text = text2; break; } int num = -1; num = desktop.mAll_CanShuFenJi.MyFind(tGanTaData.m_ID_CanShuFenJi); if (num <= 0) { text2 = "\r\n无分级数据"; } else if (num > 0) { canShuFenJi = desktop.mAll_CanShuFenJi.mList_CanShuFenJi_all[num]; text3 = (canShuFenJi.mBLQ_need ? "需要安装避雷器" : "不需要安装避雷器"); text2 += $"绝缘子串长标准值:{canShuFenJi.mSTD_JYZ_mm}\r\n\r\n"; text2 += $"高度-标准值:{canShuFenJi.mSTD_height_m}\r\n\r\n"; } textBox_ShowInform.Text = text2; break; } } } catch (Exception ex2) { MyLog.AddLog("FormLook3CuoShiTuiJian.cs MyRefresh_Right() ex=" + ex2.Message); } } public void MySet_Form_Title(Form form, string value) { if (form.InvokeRequired) { delegateFormTitle method = MySet_Form_Title; form.Invoke(method, form, value); } else { form.Text = mTitle + " " + value; } } public void MySet_DataGridView_DataSource(DataGridView dataGridView, DataView value) { if (dataGridView.InvokeRequired) { delegateDataGridViewDataSource method = MySet_DataGridView_DataSource; dataGridView.Invoke(method, dataGridView, value); } else { dataGridView.DataSource = value; } } public void MyFormHide(Form form) { try { if (form.InvokeRequired) { delegateFormHide method = MyFormHide; form.Invoke(method, form); } else { form.Hide(); } } catch (Exception) { } } protected override void Dispose(bool disposing) { if (disposing && components != null) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.panel_Form = new System.Windows.Forms.Panel(); this.textBox_ShowInform = new System.Windows.Forms.TextBox(); this.buttonExport = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); this.panel_Result = new System.Windows.Forms.Panel(); this.dataGridView_Result = new System.Windows.Forms.DataGridView(); this.buttonBLQ_compute = new System.Windows.Forms.Button(); this.panel_Form.SuspendLayout(); this.panel_Result.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)this.dataGridView_Result).BeginInit(); base.SuspendLayout(); this.panel_Form.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.panel_Form.Controls.Add(this.textBox_ShowInform); this.panel_Form.Controls.Add(this.buttonBLQ_compute); this.panel_Form.Controls.Add(this.buttonExport); this.panel_Form.Controls.Add(this.buttonCancel); this.panel_Form.Controls.Add(this.panel_Result); this.panel_Form.Dock = System.Windows.Forms.DockStyle.Fill; this.panel_Form.Location = new System.Drawing.Point(0, 0); this.panel_Form.Name = "panel_Form"; this.panel_Form.Size = new System.Drawing.Size(1476, 607); this.panel_Form.TabIndex = 1; this.textBox_ShowInform.Enabled = false; this.textBox_ShowInform.Font = new System.Drawing.Font("宋体", 9f, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 134); this.textBox_ShowInform.Location = new System.Drawing.Point(1317, 131); this.textBox_ShowInform.Multiline = true; this.textBox_ShowInform.Name = "textBox_ShowInform"; this.textBox_ShowInform.Size = new System.Drawing.Size(152, 315); this.textBox_ShowInform.TabIndex = 4; this.buttonExport.Font = new System.Drawing.Font("宋体", 10.5f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 134); this.buttonExport.Location = new System.Drawing.Point(1373, 477); this.buttonExport.Name = "buttonExport"; this.buttonExport.Size = new System.Drawing.Size(50, 29); this.buttonExport.TabIndex = 3; this.buttonExport.Text = "导出"; this.buttonExport.UseVisualStyleBackColor = true; this.buttonExport.Click += new System.EventHandler(buttonExport_Click); this.buttonCancel.Font = new System.Drawing.Font("宋体", 10.5f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 134); this.buttonCancel.Location = new System.Drawing.Point(1373, 531); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(50, 29); this.buttonCancel.TabIndex = 3; this.buttonCancel.Text = "取消"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(buttonCancel_Click); this.panel_Result.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel_Result.Controls.Add(this.dataGridView_Result); this.panel_Result.Location = new System.Drawing.Point(10, 10); this.panel_Result.Name = "panel_Result"; this.panel_Result.Size = new System.Drawing.Size(1302, 583); this.panel_Result.TabIndex = 2; this.dataGridView_Result.AllowUserToAddRows = false; this.dataGridView_Result.AllowUserToDeleteRows = false; this.dataGridView_Result.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; this.dataGridView_Result.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView_Result.Dock = System.Windows.Forms.DockStyle.Fill; this.dataGridView_Result.Location = new System.Drawing.Point(0, 0); this.dataGridView_Result.Name = "dataGridView_Result"; this.dataGridView_Result.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders; this.dataGridView_Result.RowTemplate.Height = 23; this.dataGridView_Result.Size = new System.Drawing.Size(1300, 581); this.dataGridView_Result.TabIndex = 1; this.dataGridView_Result.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(dataGridView_Result_CellClick); this.buttonBLQ_compute.Font = new System.Drawing.Font("宋体", 10.5f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 134); this.buttonBLQ_compute.Location = new System.Drawing.Point(1330, 73); this.buttonBLQ_compute.Name = "buttonBLQ_compute"; this.buttonBLQ_compute.Size = new System.Drawing.Size(122, 29); this.buttonBLQ_compute.TabIndex = 3; this.buttonBLQ_compute.Text = "加装避雷器计算"; this.buttonBLQ_compute.UseVisualStyleBackColor = true; this.buttonBLQ_compute.Click += new System.EventHandler(buttonBLQ_compute_Click); base.AutoScaleDimensions = new System.Drawing.SizeF(6f, 12f); base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; base.ClientSize = new System.Drawing.Size(1476, 607); base.Controls.Add(this.panel_Form); base.Name = "FormLook3CuoShiTuiJian"; base.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "FormLook3CuoShiTuiJian"; base.FormClosing += new System.Windows.Forms.FormClosingEventHandler(FormLook3CuoShiTuiJian_FormClosing); base.Load += new System.EventHandler(FormLook3CuoShiTuiJian_Load); this.panel_Form.ResumeLayout(false); this.panel_Form.PerformLayout(); this.panel_Result.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)this.dataGridView_Result).EndInit(); base.ResumeLayout(false); } }