예제 #1
0
        //修改标签名称
        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("修改标签名错误,请检查!");
            }
        }
예제 #2
0
 //删除标签子程序
 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);
     }
 }
예제 #3
0
        //更新概化标签名称和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);
            }
        }