Beispiel #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("修改标签名错误,请检查!");
            }
        }
Beispiel #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);
     }
 }
Beispiel #3
0
        //搜索含有原标签名的计算项
        private void bt_search_Click(object sender, EventArgs e)
        {
            int i, j;

            //清空lv
            this.lv_searchresults.Items.Clear();

            if (currentTagname == "")
            {
                MessageBox.Show("请输原标签名称");
                return;
            }
            if (afterTagname == "")
            {
                MessageBox.Show("请输入修改后的标签名称");
                return;
            }
            List <PSLCalcuItem> pslcalcuitems = PSLCalcuConfigDAO.ReadConfigContainTagname(currentTagname);

            if (pslcalcuitems == null || pslcalcuitems.Count == 0)
            {
                MessageBox.Show("没有找到要替换的标签名称");
                return;
            }

            //将要替换的标签名称显示出来
            tagname2idMap = PSLTagNameIdMapDAO.ReadMap();

            string[] tagnames;
            uint[]   tagids;
            int      tagcount;

            for (i = 0; i < pslcalcuitems.Count; i++)
            {
                PSLCalcuItem pslcalcuitem = pslcalcuitems[i];
                string       tagnamesStr  = "";
                tagcount = 0;
                //判断处理源标签名称
                tagnamesStr = pslcalcuitem.sourcetagname;
                if (tagnamesStr.Contains(currentTagname))
                {
                    //计数器
                    tagcount++;
                    //标签id号
                    tagnames = tagnamesStr.Split(';');
                    tagids   = new uint[tagnames.Length];
                    for (j = 0; j < tagnames.Length; j++)
                    {
                        tagids[j] = tagname2idMap[tagnames[j]];
                    }
                    //添加lv
                    ListViewItem lvitem = this.lv_searchresults.Items.Add((pslcalcuitem.fid).ToString(), (pslcalcuitem.fid).ToString(), -1); //第一列,添加计算项序号
                    lvitem.Checked = cb_SelectAll.Checked;
                    lvitem.SubItems.Add(tagcount.ToString());                                                                                //第2列,是该计算项中含有currentTagname的项的序号
                    lvitem.SubItems.Add("源标签");                                                                                              //第3列,是含有currentTagname的字段类型
                    lvitem.SubItems.Add(tagnamesStr);                                                                                        //第4列,是该计算项中含有currentTagname的字段内容
                    lvitem.SubItems.Add(String.Join(";", tagids));                                                                           //第5列,是该计算项中含有currentTagname的字段内容对应的id号
                    lvitem.SubItems.Add(tagnamesStr.Replace(currentTagname, afterTagname));                                                  //第6列,是替换后的内容
                }
                //判断处理条件标签名称
                tagnamesStr = pslcalcuitem.fcondpslnames;
                if (tagnamesStr.Contains(currentTagname))
                {
                    //计数器
                    tagcount++;
                    //标签id号
                    tagnames = tagnamesStr.Split(';');
                    tagids   = new uint[tagnames.Length];
                    for (j = 0; j < tagnames.Length; j++)
                    {
                        tagids[j] = tagname2idMap[tagnames[j]];
                    }
                    //添加lv
                    ListViewItem lvitem = this.lv_searchresults.Items.Add((pslcalcuitem.fid).ToString(), (pslcalcuitem.fid).ToString(), -1); //第一列,添加计算项序号
                    lvitem.Checked = cb_SelectAll.Checked;
                    lvitem.SubItems.Add(tagcount.ToString());                                                                                //第2列,是该计算项中含有currentTagname的项的序号
                    lvitem.SubItems.Add("条件标签");                                                                                             //第3列,是含有currentTagname的字段类型
                    lvitem.SubItems.Add(tagnamesStr);                                                                                        //第4列,是该计算项中含有currentTagname的字段内容
                    lvitem.SubItems.Add(String.Join(";", tagids));                                                                           //第5列,是该计算项中含有currentTagname的字段内容对应的id号
                    lvitem.SubItems.Add(tagnamesStr.Replace(currentTagname, afterTagname));                                                  //第6列,是替换后的内容
                }
                //判断处理结果标签名称
                tagnamesStr = pslcalcuitem.foutputpsltagnames;
                if (tagnamesStr.Contains(currentTagname))
                {
                    //计数器
                    tagcount++;
                    //标签id号
                    tagnames = tagnamesStr.Split(';');
                    tagids   = new uint[tagnames.Length];
                    for (j = 0; j < tagnames.Length; j++)
                    {
                        tagids[j] = tagname2idMap[tagnames[j]];
                    }
                    //添加lv
                    ListViewItem lvitem = this.lv_searchresults.Items.Add((pslcalcuitem.fid).ToString(), (pslcalcuitem.fid).ToString(), -1); //第一列,添加计算项序号
                    lvitem.Checked = cb_SelectAll.Checked;
                    lvitem.SubItems.Add(tagcount.ToString());                                                                                //第2列,是该计算项中含有currentTagname的项的序号
                    lvitem.SubItems.Add("结果标签");                                                                                             //第3列,是含有currentTagname的字段类型
                    lvitem.SubItems.Add(tagnamesStr);                                                                                        //第4列,是该计算项中含有currentTagname的字段内容
                    lvitem.SubItems.Add(String.Join(";", tagids));                                                                           //第5列,是该计算项中含有currentTagname的字段内容对应的id号
                    lvitem.SubItems.Add(tagnamesStr.Replace(currentTagname, afterTagname));                                                  //第6列,是替换后的内容
                }
            }
            int temp = 10;
        }
Beispiel #4
0
        //更新概化标签名称和id映射表中的中文描述
        public static bool UpdateDesc(ConfigCSV configcsv, bool reassign)
        {
            ErrorFlag = false;
            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 columnfoutputpsltagprefIndex = configcsv.foutputpsltagprefIndex;
                int columnfoutputpsltagdescIndex = configcsv.foutputpsltagdescIndex;
                for (int i = configcsv.firstDataRow; i < configcsv.importdata.Length; i++)
                {
                    string[] psltagstemp     = Regex.Split(configcsv.importdata[i][columnfoutputpsltagprefIndex], ";|;");   //如果有;|;|,|,则表示多个标签
                    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 = PSLTagNameIdMapDAO.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 psltagnameidmap 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);
            }
        }