/// <summary> /// 根据预警规则实体信息更新数据库中预警规则信息 /// </summary> /// <param name="ent"></param> /// <returns></returns> public static bool updateWarningRulesInfo(PreWarningRules ent) { string sql = "UPDATE " + PreWarningRulesDbConstNames.TABLE_NAME + " SET " + PreWarningRulesDbConstNames.RULE_CODE + "='" + ent.RuleCode + "'," + PreWarningRulesDbConstNames.RULE_TYPE + "='" + ent.RuleType + "'," + PreWarningRulesDbConstNames.WARNING_TYPE + "='" + ent.WarningType + "'," + PreWarningRulesDbConstNames.WARNING_LEVEL + "='" + ent.WarningLevel + "'," + PreWarningRulesDbConstNames.SUITABLE_LOCATION + "='" + ent.SuitableLocation + "'," + PreWarningRulesDbConstNames.RULE_DESCRIPTION + "='" + ent.RuleDescription + "'," + PreWarningRulesDbConstNames.INDICATOR_TYPE + "='" + ent.IndicatorType + "'," + PreWarningRulesDbConstNames.OPERATOR + "='" + ent.Operator + "'," + PreWarningRulesDbConstNames.MODIFY_DATE + "='" + ent.ModifyDate.ToString() + "', " +//MARK FIELD PreWarningRulesDbConstNames.REMARKS + "='" + ent.Remarks + "' " + " WHERE " + PreWarningRulesDbConstNames.RULE_ID + "=" + ent.RuleId.ToString(); ManageDataBase db = new ManageDataBase(DATABASE_TYPE.WarningManagementDB); bool ret = db.OperateDB(sql); //未添加更新巷道信息表的代码,参数中需要将参数名同时保存 //MARK YANGER return(ret); }
public void SetFarpointRowValues(int rowIdx, PreWarningRules ent) { //规则编码 fpRules.Sheets[0].Cells[rowIdx, 1].Text = ent.RuleCode; //规则类别 fpRules.Sheets[0].Cells[rowIdx, 2].Text = ent.RuleType; //预警类型 fpRules.Sheets[0].Cells[rowIdx, 3].Text = ent.WarningType; //预警级别 fpRules.Sheets[0].Cells[rowIdx, 4].Text = ent.WarningLevel; //适用位置 fpRules.Sheets[0].Cells[rowIdx, 5].Text = ent.SuitableLocation; //规则描述 fpRules.Sheets[0].Cells[rowIdx, 6].Text = ent.RuleDescription; //指标类型 fpRules.Sheets[0].Cells[rowIdx, 7].Text = ent.IndicatorType; //比较符 fpRules.Sheets[0].Cells[rowIdx, 8].Text = ent.Operator; //修改日期 fpRules.Sheets[0].Cells[rowIdx, 9].Text = ent.ModifyDate.ToString(); //备注 fpRules.Sheets[0].Cells[rowIdx, 10].Text = ent.Remarks; //规则ID(内部识别,隐藏列) fpRules.Sheets[0].Cells[rowIdx, 11].Text = ent.RuleId.ToString(); //绑定的单一规则编码 fpRules.Sheets[0].Cells[rowIdx, 12].Text = ent.StrBindingSingleRuleName; }
/// <summary> /// 获取属性窗口值 /// </summary> /// <returns></returns> public PreWarningRules GetEntFromProperyGrid() { var ret = new PreWarningRules(Convert.ToInt32(_ruleCodeId.Value)); ret.ModifyDate = Convert.ToDateTime(_dateProp.Value.ToString()); ret.RuleCode = _ruleCodeProp.Value.ToString(); ret.RuleType = _ruleType.Value.ToString(); ret.SuitableLocation = _suitableLocation.Value.ToString(); ret.WarningLevel = _warningLevel.Value.ToString(); ret.WarningType = _warningType.Value.ToString(); ret.IndicatorType = _indicatorType.Value.ToString(); ret.Operator = _operator.Value.ToString(); ret.Remarks = _remarks.Value.ToString(); ret.StrBindingSingleRuleName = _multiRulesBindingSingleRule.Value != null ? _multiRulesBindingSingleRule.Value.ToString() : ""; //MARK FIELD var htNewParams = new Hashtable(); var n = _paramProp.Count; for (var i = 0; i < n; i++) { htNewParams.Add(_paramProp[i].Name, _paramProp[i].Value.ToString()); } //根据参数值更新规则描述 ret.RuleDescription = _srcEnt.RuleDescription; if (!ret.UpdateRuleDescriptionByParams(htNewParams)) { Alert.alert("更新预警规则参数失败!"); } return(ret); }
/// <summary> /// 设置属性窗口值 /// </summary> /// <param name="ent"></param> public void SetPropertyGridEnt(PreWarningRules ent) { if (ent == null) { return; } _srcEnt = ent.DeepClone(); _ruleCodeId.Value = ent.RuleId; _ruleCodeProp.Value = ent.RuleCode; _ruleType.Value = ent.RuleType; _warningType.Value = ent.WarningType; _warningLevel.Value = ent.WarningLevel; _suitableLocation.Value = ent.SuitableLocation; _indicatorType.Value = ent.IndicatorType; _operator.Value = ent.Operator; _dateProp.Value = ent.ModifyDate.ToString(); _remarks.Value = ent.Remarks; //MARK FIELD _multiRulesBindingSingleRule.Value = ent.StrBindingSingleRuleName == null ? "" : ent.StrBindingSingleRuleName; _IsMultiRules.Value = ent.IsMultiRules ? "是" : "否"; var htParams = ent.GetWarningParamsAndValues(); var nParams = 0; if (htParams != null) { nParams = htParams.Count; } _paramCnt.Value = nParams.ToString(); //移除先前的参数 var preCnt = _paramProp.Count; for (var i = 0; i < preCnt; i++) { _props.Remove(_paramProp[i]); } _paramProp.Clear(); //规则参数 if (htParams != null) { foreach (string tmpKey in htParams.Keys) { var prop = new XProp(); prop.Category = CATEGORY_RULE_PARAMS_TITLE; prop.Name = tmpKey; prop.Description = "规则参数" + tmpKey; prop.ReadOnly = false; prop.ProType = typeof(string); prop.Visible = true; prop.Converter = null; prop.Value = htParams[tmpKey].ToString(); _props.Add(prop); _paramProp.Add(prop); } } propertyGridRules.SelectedObject = _props; }
public static bool ImportExcelRules2Db(string excelPath) { string[] sheetNames = PreWarningExcelBLL.GetExcelSheetNames(excelPath); if (sheetNames != null) { PreWarningRulesBLL.ClearPreWarningDB(); int n = sheetNames.Length; for (int i = 0; i < n; i++) { DataSet dsSheet = LibExcelHelper.importExcelSheetToDataSet(excelPath, sheetNames[i]); if (dsSheet == null) { return(false); } for (int j = 0; j < dsSheet.Tables[0].Rows.Count; j++) { string errorMsg = ""; PreWarningRules ent = PreWarningExcelBLL.ConvertExcelDataRow2PreWarningEntity(dsSheet.Tables[0].Rows[j], out errorMsg); if (errorMsg != "") { if (DialogResult.Yes == MessageBox.Show("导入Excel预警规则失败:" + errorMsg + "\r\n是否继续?", "Sheet:" + sheetNames[i] + " 行:" + (j + 1).ToString(), MessageBoxButtons.YesNo)) { continue; } else { return(false); } } if (!PreWarningRulesBLL.InsertPreWarningRulesInfo(ent)) { if (DialogResult.Yes == MessageBox.Show("写入Excel预警规则至数据库失败!\r\n是否继续?", "Sheet:" + sheetNames[i] + " 行:" + (j + 1).ToString(), MessageBoxButtons.YesNo)) { continue; } else { return(false); } } } } } return(true); }
/// <summary> /// 获取各类别预警原因 /// 目前需要将该数组中的顺序与枚举中的顺序完全一致,否则结果将不正确!! /// </summary> /// <param name="ents"></param> /// <returns></returns> private ReasonAndRule[] PreWarningAnalysisResultEntForItems(List <PreWarningAnalysisResult> ents) { //定义返回值数组 var returnEnts = new ReasonAndRule[5]; //定义五个数组,分别对应瓦斯、煤层、地质、通风、管理 var gas = new ReasonAndRule(new List <PreWarningAnalysisResult>()); var coal = new ReasonAndRule(new List <PreWarningAnalysisResult>()); var geology = new ReasonAndRule(new List <PreWarningAnalysisResult>()); var venlation = new ReasonAndRule(new List <PreWarningAnalysisResult>()); var management = new ReasonAndRule(new List <PreWarningAnalysisResult>()); foreach (var ent in ents) { var ruleEnt = new PreWarningRules(); if (ent.IsSingleRule()) { var singleRule = ent.GetSingleRulesResultEnt(); ruleEnt = PreWarningResultDetailsQueryBLL.GetPreWarningRulesEntityByRuleId(singleRule.SingleRuleCodeID); } else { ruleEnt = PreWarningResultDetailsQueryBLL.GetPreWarningRulesEntityByRuleId(ent.MultiRuleCodeID); } if (ruleEnt.RuleType == WarningReasonItems.瓦斯.ToString()) { gas.Reason.Add(ent); } if (ruleEnt.RuleType == WarningReasonItems.煤层赋存.ToString()) { coal.Reason.Add(ent); } if (ruleEnt.RuleType == WarningReasonItems.地质构造.ToString()) { geology.Reason.Add(ent); } if (ruleEnt.RuleType == WarningReasonItems.通风.ToString()) { venlation.Reason.Add(ent); } if (ruleEnt.RuleType == WarningReasonItems.管理因素.ToString()) { management.Reason.Add(ent); } } //返回数组赋值,与枚举对应 returnEnts[(int)WarningReasonItems.瓦斯] = gas; returnEnts[(int)WarningReasonItems.煤层赋存] = coal; returnEnts[(int)WarningReasonItems.地质构造] = geology; returnEnts[(int)WarningReasonItems.通风] = venlation; returnEnts[(int)WarningReasonItems.管理因素] = management; return(returnEnts); }
public static bool InsertPreWarningRulesInfo(PreWarningRules ent) { //MARK FIELD string sql = "INSERT INTO " + PreWarningRulesDbConstNames.TABLE_NAME + "(" + PreWarningRulesDbConstNames.RULE_CODE + ", " + PreWarningRulesDbConstNames.RULE_TYPE + ", " + PreWarningRulesDbConstNames.WARNING_TYPE + ", " + PreWarningRulesDbConstNames.WARNING_LEVEL + ", " + PreWarningRulesDbConstNames.SUITABLE_LOCATION + ", " + PreWarningRulesDbConstNames.RULE_DESCRIPTION + ", " + PreWarningRulesDbConstNames.INDICATOR_TYPE + ", " + PreWarningRulesDbConstNames.OPERATOR + ", " + PreWarningRulesDbConstNames.MODIFY_DATE + ", " + PreWarningRulesDbConstNames.REMARKS + ", " + PreWarningRulesDbConstNames.BINDING_TABLE_NAME + ", " + PreWarningRulesDbConstNames.BINDING_COLUMN_NAME + ", " + PreWarningRulesDbConstNames.USE_TYPE + ", " + PreWarningRulesDbConstNames.BINDING_SINGLERULES + ")" + " VALUES('" + ent.RuleCode + "','" + ent.RuleType + "','" + ent.WarningType + "','" + ent.WarningLevel + "','" + ent.SuitableLocation + "','" + ent.RuleDescription + "','" + ent.IndicatorType + "','" +//MARK FIELD ent.Operator + "','" + ent.ModifyDate + "','" + ent.Remarks + "','" + ent.BindingTableName + "','" + ent.BindingColumnName + "','" + ent.UseType + "','" + ent.StrBindingSingleRuleName + "')"; ManageDataBase db = new ManageDataBase(DATABASE_TYPE.WarningManagementDB); return(db.OperateDB(sql)); }
/// </summary> /// 解析数据库中存储的规则编码和预警参数(所有规则编码) /// <param name="ruleCodes">规则编码字符串</param> /// <param name="preWarningParams">预警参数字符串</param> /// <returns>规则编码与参数单元,无规则编码和参数则返回null;注意有规则编码但无参数的情况!(此时返回值当中规则编码含有值,但预警参数为null)</returns> private static RuleInfo[] ParseRuleIdsAndParams(string ruleIds, string preWarningParams) { //规则编码为空 if (ruleIds == "" && preWarningParams == "") { return(null); } try { char[] seperator = Const_WM.GetPreWarningRuleIdAndParamsSeperatorArr(); string[] rules = ruleIds.Split(seperator); string[] warningParams = preWarningParams.Split(seperator); RuleInfo[] ret = new RuleInfo[rules.Length - 1]; for (int i = 0; i < rules.Length - 1; i++) { //ret[i] = new RuleIdAndParamInfo(ret[i].RuleId); ret[i] = new RuleInfo(int.Parse(rules[i])); if (warningParams[i] != "")//该规则编码含有参数 { ret[i].PreWarningParams = PreWarningRules.ParseRuleDescriptionOfOneRuleId(warningParams[i]); } else//该规则编码无对应参数 { ret[i].PreWarningParams = null; } } return(ret); } catch (Exception ex) { Alert.alert(ex.Message); } return(null); }
/// <summary> /// 从Farpoint获取预警规则参数 /// </summary> /// <param name="rowIdx">farpoint所选行,注:此处未考虑rowIdx越界与无值的情况!</param> /// <returns></returns> public PreWarningRules GetEntityFromFarpointRow(int rowIdx) { var ret = new PreWarningRules(); try { ret.RuleCode = fpRules.Sheets[0].Cells[rowIdx, 1].Value.ToString(); ret.RuleType = fpRules.Sheets[0].Cells[rowIdx, 2].Value.ToString(); ret.WarningType = fpRules.Sheets[0].Cells[rowIdx, 3].Value.ToString(); ret.WarningLevel = fpRules.Sheets[0].Cells[rowIdx, 4].Value.ToString(); ret.SuitableLocation = fpRules.Sheets[0].Cells[rowIdx, 5].Value.ToString(); ret.RuleDescription = fpRules.Sheets[0].Cells[rowIdx, 6].Value.ToString(); ret.IndicatorType = fpRules.Sheets[0].Cells[rowIdx, 7].Value.ToString(); ret.Operator = fpRules.Sheets[0].Cells[rowIdx, 8].Value.ToString(); //MARK FIELD ret.ModifyDate = Convert.ToDateTime(fpRules.Sheets[0].Cells[rowIdx, 9].Value); if (fpRules.Sheets[0].Cells[rowIdx, 10].Value != null) { ret.Remarks = fpRules.Sheets[0].Cells[rowIdx, 10].Value.ToString(); } else { ret.Remarks = ""; } ret.RuleId = int.Parse(fpRules.Sheets[0].Cells[rowIdx, 11].Value.ToString()); if (fpRules.Sheets[0].Cells[rowIdx, 12].Value != null) { ret.IsMultiRules = true; ret.StrBindingSingleRuleName = fpRules.Sheets[0].Cells[rowIdx, 12].Value.ToString(); } } catch (Exception ex) { Alert.alert(ex.Message + "in function:" + "GetEntityFromFarpointRow"); } return(ret); }
GetPreWarningRulesEntityByRuleId(string ruleId) { try { string sql = "SELECT " + PreWarningRulesDbConstNames.RULE_CODE + "," + PreWarningRulesDbConstNames.RULE_TYPE + "," + PreWarningRulesDbConstNames.WARNING_TYPE + "," + PreWarningRulesDbConstNames.WARNING_LEVEL + "," + PreWarningRulesDbConstNames.SUITABLE_LOCATION + "," + PreWarningRulesDbConstNames.RULE_DESCRIPTION + "," + PreWarningRulesDbConstNames.INDICATOR_TYPE + "," + PreWarningRulesDbConstNames.OPERATOR + "," + PreWarningRulesDbConstNames.MODIFY_DATE + "," + PreWarningRulesDbConstNames.REMARKS + " FROM " + PreWarningRulesDbConstNames.TABLE_NAME + " WHERE " + PreWarningRulesDbConstNames.RULE_ID + "=" + ruleId.ToString(); DataSet ds = _database.ReturnDSNotOpenAndClose(sql); int n = ds.Tables[0].Rows.Count; if (n != 1) { Alert.alert("规则编码不唯一!"); return(null); } else if (n < 1) { Alert.alert("规则编码不存在!"); return(null); } int iRuleID = -1; int.TryParse(ruleId, out iRuleID); PreWarningRules ret = new PreWarningRules(iRuleID); ret.RuleCode = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.RULE_CODE].ToString(); ret.RuleType = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.RULE_TYPE].ToString(); ret.WarningType = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.WARNING_TYPE].ToString(); ret.WarningLevel = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.WARNING_LEVEL].ToString(); ret.SuitableLocation = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.SUITABLE_LOCATION].ToString(); ret.RuleDescription = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.RULE_DESCRIPTION].ToString(); ret.IndicatorType = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.INDICATOR_TYPE].ToString(); ret.Operator = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.OPERATOR].ToString(); ret.ModifyDate = Convert.ToDateTime(ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.MODIFY_DATE].ToString()); ret.Remarks = ds.Tables[0].Rows[0][PreWarningRulesDbConstNames.REMARKS].ToString(); return(ret); } catch (Exception ex) { Alert.alert(ex.Message + " 函数名:GetPreWarningRulesEntityByRuleCode"); return(null); } }
/// <summary> /// !!!!!!!!!!!!!!!!!!! /// 注意:该函数存在问题!未进行完善 /// 写入excel数据 /// </summary> /// <param name="ent">预警规则实体</param> /// <param name="selectedRowID">选择行编号</param> /// <returns>是否插入成功?true:false</returns> public static bool updateInfoToExcelSheet(PreWarningRules ent, int selectedRowID, string sheetName) { bool ret = false; Excel.Application objExcelApp = null; Excel.Workbooks objExcelWorkBooks = null; Excel.Workbook objExcelWorkBook = null; Excel.Worksheet objExcelWorkSheet = null; try { objExcelApp = new Excel.ApplicationClass(); objExcelWorkBooks = objExcelApp.Workbooks; objExcelWorkBook = objExcelWorkBooks.Open(_excelFilePath, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); objExcelWorkSheet = (Worksheet)objExcelWorkBook.Worksheets[sheetName]; objExcelWorkSheet.Select(Type.Missing); Worksheet objExcelWorkSheetTemp = (Worksheet)objExcelApp.ActiveSheet; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 1] = ent.RuleCode; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 2] = ent.RuleType; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 3] = ent.WarningType; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 4] = ent.WarningLevel; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 5] = ent.SuitableLocation; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 6] = ent.RuleDescription; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 7] = ent.IndicatorType; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 8] = ent.Operator; objExcelWorkSheetTemp.Cells[selectedRowID + 1, 9] = ent.ModifyDate.ToString(); objExcelWorkSheetTemp.Cells[selectedRowID + 1, 10] = ent.Remarks;//MARK FIELD //objExcelApp.Visible = true; objExcelApp.DisplayAlerts = false; objExcelApp.SaveWorkspace(); ret = true; } catch (Exception ex) { Alert.alert(ex.Message); ret = false; } finally { if (objExcelApp != null) { objExcelApp.Quit(); GC.Collect();//不加该行代码Excel不会退出! } } return(ret); }
ConvertExcelDataRow2PreWarningEntity(DataRow dr, out string errorMsg) { PreWarningRules ret = new PreWarningRules(); errorMsg = ""; //MARK FIELD注意:由于数据是从Excel中读取出来的,因此不能使用列名,只能使用索引! try { if (dr[0].ToString().Trim() == "") { errorMsg = "预警规则Excel表中规则编码为空,请检查并删除Excel表中的空行等无效数据!";//删除方法:光标移至数据的最后一行,然后按Ctrl+Shift+End选择空行数据,右键鼠标-删除 return(null); } //规则编码 ret.RuleCode = dr[0].ToString(); //规则类别 ret.RuleType = dr[1].ToString(); //预警类型 ret.WarningType = dr[2].ToString(); //预警级别 ret.WarningLevel = dr[3].ToString(); //适用位置 ret.SuitableLocation = dr[4].ToString(); //规则描述 ret.RuleDescription = dr[5].ToString(); //指标类型 ret.IndicatorType = dr[6].ToString(); //比较符 ret.Operator = dr[7].ToString(); //修改日期 try { ret.ModifyDate = Convert.ToDateTime(dr[8]); } catch { errorMsg = "预警规则Excel表中指定的修改日期格式不正确,将使用当前日期!【规则编码:" + dr[0].ToString() + "】"; ret.ModifyDate = DateTime.Now; } //备注 ret.Remarks = dr[9].ToString(); //绑定数据库表名称 ret.BindingTableName = dr[10].ToString(); //绑定数据库表字段名称 ret.BindingColumnName = dr[11].ToString(); //字段使用方式 ret.UseType = dr[12].ToString(); //组合规则绑定的单一规则,瑞该规则为单一规则,则该项为空 ret.StrBindingSingleRuleName = dr[14].ToString(); } catch (Exception ex) { errorMsg = ex.Message; return(null); } return(ret); }