/// <summary> /// 点击规则列表的内容时触发的事件,编辑和删除两项 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgv_wenjianmingrules_CellContentClick(object sender, DataGridViewCellEventArgs e) { string ruleName = dgv_wenjianmingrules.Rows[e.RowIndex].Cells["jieximingcheng"].Value.ToString(); //点击编辑按钮时 if (dgv_wenjianmingrules.Columns[e.ColumnIndex].Name == "bianjianniu" && e.RowIndex >= 0) { //获得规则的信息ruleinfo RuleInfo myri = new RuleInfo(ruleName, "文件名标准化"); myri.GetRuleInfo(); //把ruleinfo传给wjmruleform窗体,立刻加载信息 WjmRuleForm myform = new WjmRuleForm(myri); if (myform.ShowDialog() == DialogResult.OK) { //UpdateWenjianmingRules(); } } //点击删除按钮时 if (dgv_wenjianmingrules.Columns[e.ColumnIndex].Name == "shanchuanniu" && e.RowIndex >= 0) { DialogResult mydr = MessageBox.Show($"是否删除规则 {ruleName} ?", "消息提醒", MessageBoxButtons.YesNoCancel); if (mydr == DialogResult.Yes) { string str_sql = $"delete from 数据解析库.规则信息表 where 规则名称='{ruleName}' and 删除=0"; MySqlHelper.ExecuteNonQuery(SystemInfo._strConn, str_sql); //更新下拉列表 ////删除列表成功提示 //刷新格则列表显示 UpdateRules("文件名标准化", string.Empty, dgv_wenjianmingrules); SelectRules(cbb_formatName1.Text, dgv_wenjianmingrules); MessageBox.Show($"规则 {ruleName} 已删除成功!"); } } }
/// <summary> /// 点击查重清晰模块下的规则列表时触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgv_chachong_CellContentClick(object sender, DataGridViewCellEventArgs e) { string ruleName = dgv_chachong.Rows[e.RowIndex].Cells[1].Value.ToString(); //点击编辑按钮时 if (e.ColumnIndex == 4 && e.RowIndex >= 0) { //获得规则的信息ruleinfo RuleInfo myri = new RuleInfo(ruleName, "查重清洗"); myri.GetRuleInfo(); //把ruleinfo传给wjmruleform窗体,立刻加载信息 CcqxRuleForm myForm = new CcqxRuleForm(myri); if (myForm.ShowDialog() == DialogResult.OK) { MessageBox.Show($"规则 {myForm._ruleInfo.ruleName} 保存成功!"); } } //点击删除按钮时 if (e.ColumnIndex == 5 && e.RowIndex >= 0) { DialogResult mydr = MessageBox.Show($"是否删除规则 {ruleName} ?", "消息提醒", MessageBoxButtons.YesNoCancel); if (mydr == DialogResult.Yes) { string str_sql = $"delete from 数据解析库.规则信息表 where 规则名称='{ruleName}' and 删除=0"; MySqlHelper.ExecuteNonQuery(SystemInfo._strConn, str_sql); //更新下拉列表 ////删除列表成功提示 //刷新格则列表显示 UpdateRules("查重清洗", string.Empty, dgv_chachong); SelectRules(cbb_format3.Text, dgv_chachong); MessageBox.Show($"规则 {ruleName} 已成功删除!"); } } }
// GET api/<controller> public Hashtable Get() { Hashtable res = new Hashtable(); List <Hashtable> ls = new List <Hashtable>(); RuleInfo ai = new RuleInfo(); foreach (rule i in ai.GetRuleInfo(0, 20)) // admin = 1 { Hashtable ht = new Hashtable(); ht.Add("id", i.id_rule); ht.Add("name", i.context); ls.Add(ht); } res.Add("code", 20000); res.Add("data", ls); return(res); }
/// <summary> /// 点击开始按钮时触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lbl_kaishi_Click(object sender, EventArgs e) { //修改程序状态为执行,刷新状态信息 lbl_zhuangtai.Text = "正在进行数据解析……"; lbl_kaishi.Enabled = false; lbl_kaishi.BackColor = Color.Gray; statue = 1; //获得文件夹下所有的文件名 for (int i = folderIndex; i < dgv_task.Rows.Count; i++) { folderIndex = i;//时刻记录当前程序执行到的文件夹位置 string folder = dgv_task.Rows[i].Cells[1].Value.ToString(); string[] files = Directory.GetFiles(folder); for (int k = fileIndex; k < files.Length; k++) { //计算百分率 double _processRate = 100 * Convert.ToDouble(k + 1) / Convert.ToDouble(files.Length); dgv_task.Rows[i].Cells[3].Value = $"{_processRate.ToString("00.00")}%"; Application.DoEvents(); //如果用户终止了或者暂停了程序,就跳出循环 if (statue == 0 || statue == 2) { return; } fileIndex = k;//时刻记录当前程序执行到的文件位置 string file = files[k]; #region 1、文件名格式标准化 /*1、开始文件名格式标准化*/ string path = Path.GetDirectoryName(file); string fileOriginal = Path.GetFileNameWithoutExtension(file); string extension = Path.GetExtension(file); string filename = string.Empty;//用于存放改后的文件名 //判断“文件名标准化”格式,如果不是“无”,则进行文件名格式标准化 if (!SystemInfo._userInfo._wjmbzh.Equals("无")) { //拆分出路径和文件名 ///拆分后的文件名集合,对list进行处理,如果是\d星,那么要和前一项合并 List <string> list = Regex.Split(fileOriginal, @"\.").ToList(); for (int j = 0; j < list.Count; j++) { if (Regex.IsMatch(list[j], @"\d星")) { list[j] = $"{list[j - 1] }.{list[j]}"; list.RemoveAt(j - 1); break; } } //获得文件名标准格式下的所有rule名称 FormatInfo fi = new FormatInfo(SystemInfo._userInfo._wjmbzh); fi.GetFormatInfo(); List <string> rules = Regex.Split(fi._formatSet, @"\|").ToList(); //对每一个rule循环,获得设置root foreach (string rule in rules) { RuleInfo myri = new RuleInfo(rule, "文件名标准化"); myri.GetRuleInfo(); WjmRuleRoot myroot = ((WjmRuleRoot)myri._root); //判断位置,得到操作目标,对每种可能的目标进行判断操作 if (myroot.position[0].Equals("整个文件名")) { //对操作目标进行操作 if (!myroot.delete.Trim().Equals(string.Empty)) { filename = Regex.Replace(fileOriginal, myroot.delete.Trim(), ""); } else if (!myroot.replace0.Trim().Equals(string.Empty)) { filename = Regex.Replace(fileOriginal, myroot.replace0.Trim(), myroot.replace); } } else if (myroot.position[0].Equals("文件名前")) { //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { filename = $"{myroot.newText}{fileOriginal}"; } } else if (myroot.position[0].Equals("文件名后")) { //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { filename = $"{fileOriginal}{myroot.newText}"; } } else if (Regex.IsMatch(myroot.position[0], @"文件名第\d项前")) { //获得数字,然后获得目标文本 int index = Convert.ToInt32(Regex.Match(myroot.position[0], @"\d").Value); string target = list[index - 1]; //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { target = $"{myroot.newText.Trim()}{target}"; } list[index - 1] = target; filename = string.Join(".", list); } else if (Regex.IsMatch(myroot.position[0], @"文件名第\d项后")) { //获得数字,然后获得目标文本 int index = Convert.ToInt32(Regex.Match(myroot.position[0], @"\d").Value); string target = list[index - 1]; //新增内容 if (!myroot.newText.Trim().Equals(string.Empty)) { target = $"{target}{myroot.newText.Trim()}"; } list[index - 1] = target; filename = string.Join(".", list); } //给文件改名 File.Move($"{file}", $"{path}\\{filename}{extension}"); } } else//如果不进行文件名标准化,那么新得文件名和原先一样 { filename = fileOriginal; } string currentFilename = $"{path}\\{filename}{extension}"; #endregion #region 2、文档格式标准化 //判断“文档格式标准化”格式,如果用户不是选择了“无”,则执行文件格式标准化 if (!SystemInfo._userInfo._wjbzh.Equals("无")) { //获得标准化规则 FormatInfo _format = new FormatInfo(SystemInfo._userInfo._wjbzh); _format.GetFormatInfo(); string _rule = Regex.Split(_format._formatSet, @"\|")[0]; RuleInfo _ruleInfo = new RuleInfo(_rule, "格式标准化"); _ruleInfo.GetRuleInfo(); BzhRuleRoot _root = _ruleInfo._root as BzhRuleRoot; //调整文档格式,包括大标题,副标题,正文,一级标题,二级标题,三级标题,页边距, MyMethod.UpdateFormat2(currentFilename, _root); //文本标注,暂时 放一放 } #endregion #region 3、查重清洗 //判断用户选择的查重清洗格式,如果不等于,则进行查重清洗 if (!SystemInfo._userInfo._ccqx.Equals("无")) { } #endregion #region 4、基础解析 //判断用户选择的基础解析格式,如果不等于无,则进行基础解析 JJDocument _jjDoc = new JJDocument(currentFilename); if (!SystemInfo._userInfo._jcjx.Equals("无")) { var listbase = _jjDoc.GetBaseAnalysis(); _jjDoc.SaveList2Excel(listbase); } #endregion #region 5、内容解析 //判断用户选择的内容解析格式,如果不等于无,则进行内容解析 if (!SystemInfo._userInfo._nrjx.Equals("无")) { var listneirong = _jjDoc.GetNeirongAnalysis(); _jjDoc.SaveList2Excel(listneirong); } #endregion #region 6、大数据版 //判断用户选择的大数据版,如果不等于无,则进行大数据版 if (!SystemInfo._userInfo._dsjb.Equals("无")) { } #endregion } } //执行完成提示,完成并将系统状态还原为0 statue = 0; lbl_kaishi.Enabled = true; lbl_kaishi.ForeColor = Color.White; lbl_kaishi.BackColor = Color.MediumSeaGreen; lbl_zhuangtai.Text = "已就绪,请点击\"开始\"执行解析"; MessageBox.Show("本次数据处理已完成!"); }