//修改标签名称 private void bt_dorevise_Click(object sender, EventArgs e) { //将勾选的标签名称替换掉 //——在计算配置表中进行替换 //——在标签id映射中进行替换 //遍历对象 try { for (int i = 0; i < this.lv_searchresults.Items.Count; i++) { if (this.lv_searchresults.Items[i].Checked) { uint fid = uint.Parse(this.lv_searchresults.Items[i].SubItems[0].Text); string fieldtype = this.lv_searchresults.Items[i].SubItems[2].Text; string[] tagids = this.lv_searchresults.Items[i].SubItems[4].Text.Split(';'); string aftertagname = this.lv_searchresults.Items[i].SubItems[5].Text; string[] tagnames = this.lv_searchresults.Items[i].SubItems[5].Text.Split(';'); //更新配置表 PSLCalcuConfigDAO.UpdateTagnameInfo(fid, fieldtype, aftertagname); //更新id映射表 PSLTagNameIdMapDAO.UpdateTagname(tagids, tagnames); WebTagNameIdMapDAO.UpdateTagname(tagids, tagnames); // this.lv_searchresults.Items[i].Checked = false; } } MessageBox.Show("更新完毕,请检查数据库‘计算配置表’、‘标签id映射表’、‘别名id映射表’。"); } catch (Exception ex) { MessageBox.Show("修改标签名错误,请检查!"); } }
//删除标签子程序 private bool deleteTags(uint[] tagids) { try { PSLTagNameIdMapDAO.DeleteTags(tagids); WebTagNameIdMapDAO.DeleteTags(tagids); MessageBox.Show("计算项对应的计算标签已经删除完毕..."); return(true); } catch { string messageinfo = String.Format("删除标签时发生错误!错误信息见log文件。为了保证数据一致性,请检查两个标签id映射表!"); MessageBox.Show(messageinfo); return(false); } }
//更新概化标签名称和id映射表中的中文描述 public static bool UpdateDesc(ConfigCSV configcsv, bool reassign) { string sqlStr = ""; try { DbHelper dbhelper = new DbHelper(); //1、将所有标签汇集到psltagname,将所有计算结果描述汇集到psltagdesc List <string> psltagnames = new List <string>(); Dictionary <string, string> psltagdesc = new Dictionary <string, string>(); //2、再向psltagnames添加配置的计算结果表标签。计算结果标签放在importdata[i][foutputpsltagprefIndex]中 int columnfoutputpsltagaliasIndex = configcsv.foutputpsltagaliasIndex; int columnfoutputpsltagdescIndex = configcsv.foutputpsltagdescIndex; for (int i = configcsv.firstDataRow; i < configcsv.importdata.Length; i++) { string[] psltagstemp = Regex.Split(configcsv.importdata[i][columnfoutputpsltagaliasIndex], ";|;"); //如果有;|;|,|,则表示多个标签 string[] psltagsdesctemp = Regex.Split(configcsv.importdata[i][columnfoutputpsltagdescIndex], ";|;"); //如果有;|;|,|,则表示多个标签 for (int j = 0; j < psltagstemp.Length; j++) { //描述如果数量与输入不一致,不影响程序运行,会得到空描述 psltagnames.Add(psltagstemp[j].Trim().ToUpper()); try { psltagdesc.Add(psltagstemp[j].Trim().ToUpper(), psltagsdesctemp[j].Trim()); } catch { psltagdesc.Add(psltagstemp[j].Trim().ToUpper(), ""); } } } //4、读取Map Dictionary <string, System.UInt32> tagMap = new Dictionary <string, System.UInt32>(); tagMap = WebTagNameIdMapDAO.ReadMap(); //3、更新desc int writecount = 0; string valuesStr = ""; string idStr = ""; foreach (string psltag in psltagnames) { writecount = writecount + 1; valuesStr = valuesStr + String.Format(" when {0} then '{1}'", tagMap[psltag], psltagdesc[psltag]); //组织字段的实际值字符串。 idStr = idStr + "," + tagMap[psltag].ToString(); if (writecount % 100 == 0 || psltag == psltagnames[psltagnames.Count - 1])//凑够100个标签,写入一次;或直到最后一个标签才写入一次。 { idStr = "(" + idStr.Substring(1, idStr.Length - 1) + ")"; //批量写入数据 sqlStr = String.Format("use psldb;update webtagnameidmap set psltagdesc = case psltagid {0} end where psltagid in {1}", valuesStr, idStr); dbhelper.ExecuteNonQuery(sqlStr); //刷新ui worker.ReportProgress(writecount * 100 / psltagnames.Count, String.Format("更新标签别名中文描述,共{0}条,已导入第{1}条!", psltagnames.Count, writecount)); //重置 valuesStr = ""; idStr = ""; } } return(true); } catch (Exception ex) { ErrorFlag = true; string messageStr; messageStr = String.Format("DAO层PSLTagNameIdMapDAO.generateMap()错误:抽取计算标签名称id映射表时出错---------->") + Environment.NewLine; //logHelper.Error(messageStr); messageStr += String.Format("sql语句:{0}", sqlStr) + Environment.NewLine; //logHelper.Error(messageStr); messageStr += String.Format("错误信息:{0}", ex.ToString()); logHelper.Error(messageStr); return(false); } }