FormDataManage.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using ProjectBase.Data.Logs;
  12. using SIMDP.Model;
  13. using ProjectBase.Data.BaseDAL;
  14. using SIMDP.BLL;
  15. using DevExpress.XtraNavBar;
  16. namespace SIMDP
  17. {
  18. public partial class FormDataManage : DevExpress.XtraEditors.XtraForm
  19. {
  20. private List<TextEdit> txtList = new List<TextEdit>(); //用于存储动态生成的textEdit控件
  21. private DataTable table = null; // 数据规则解析表
  22. private string condition = ""; // 查询条件
  23. private string selectRuleName = ""; // 选中的规则名称
  24. private string batchid = null;
  25. public FormDataManage()
  26. {
  27. InitializeComponent();
  28. }
  29. /// <summary>
  30. /// 初始化导航栏
  31. /// </summary>
  32. private void InitNavBarControl()
  33. {
  34. List<MoRule> ruleList = new List<MoRule>();
  35. ruleList = BLLFactory<BlRule>.Instance.GetAll();
  36. if (ruleList == null || ruleList.Count < 1)
  37. {
  38. MessageBox.Show("请先添加数据规则!");
  39. }
  40. foreach (MoRule mo in ruleList)
  41. {
  42. NavBarItem item = new NavBarItem();
  43. item.Visible = true;
  44. item.SmallImage = Image.FromFile(Application.StartupPath + "/Images/101.png");
  45. item.Name = mo.RuleId.ToString();
  46. item.Caption = mo.RuleName;
  47. item.LinkClicked += Item_Click;
  48. this.navBarControl.Items.AddRange(new DevExpress.XtraNavBar.NavBarItem[] { item });
  49. this.nbDataHistory.ItemLinks.AddRange(new DevExpress.XtraNavBar.NavBarItemLink[] { new DevExpress.XtraNavBar.NavBarItemLink(item) });
  50. }
  51. if (this.nbDataHistory.ItemLinks.Count > 0)
  52. {
  53. this.navBarControl.SelectedLink = this.nbDataHistory.ItemLinks[0];
  54. }
  55. }
  56. /// <summary>
  57. /// 初始化右侧控件
  58. /// </summary>
  59. private void InitData()
  60. {
  61. MoRule mo = new MoRule();
  62. mo = BLLFactory<BlRule>.Instance.FindByID(this.navBarControl.SelectedLink.ItemName);
  63. table.Clear();
  64. table = BLLFactory<BlRule>.Instance.AnalyzeRuleValue(mo);
  65. InitPanel();
  66. selectRuleName = this.navBarControl.SelectedLink.ItemName;
  67. condition = string.Format(" rule_id = '{0}'", selectRuleName);
  68. string startTime = string.Format("{0} {1}", this.dateEditStart.Text, this.timeEditStart.Text);
  69. string endTime = string.Format("{0} {1}", this.dateEditEnd.Text, this.timeEditEnd.Text);
  70. condition += string.Format(" and rule_time >= '{0}' and rule_time <= '{1}'", startTime, endTime);
  71. if (!string.IsNullOrEmpty(txt_batchid.Text))
  72. {
  73. condition += string.Format(" and batchid like '%{0}%'", txt_batchid.Text);
  74. }
  75. BindData(table, condition);
  76. }
  77. /// <summary>
  78. /// 导航栏子项目的点击事件
  79. /// </summary>
  80. private void Item_Click(object sender, NavBarLinkEventArgs e)
  81. {
  82. MoRule mo = new MoRule();
  83. mo = BLLFactory<BlRule>.Instance.FindByID(e.Link.ItemName);
  84. table.Clear();
  85. table = BLLFactory<BlRule>.Instance.AnalyzeRuleValue(mo);
  86. InitPanel();
  87. selectRuleName = e.Link.ItemName;
  88. condition = string.Format(" rule_id = '{0}'", selectRuleName);
  89. string startTime = string.Format("{0} {1}", this.dateEditStart.Text, this.timeEditStart.Text);
  90. string endTime = string.Format("{0} {1}", this.dateEditEnd.Text, this.timeEditEnd.Text);
  91. condition += string.Format(" and rule_time >= '{0}' and rule_time <= '{1}'", startTime, endTime);
  92. if (!string.IsNullOrEmpty(txt_batchid.Text))
  93. {
  94. condition += string.Format(" and batchid like '%{0}%'", txt_batchid.Text);
  95. }
  96. BindData(table, condition);
  97. }
  98. /// <summary>
  99. /// 初始化panel
  100. /// </summary>
  101. private void InitPanel()
  102. {
  103. this.panelControl1.Visible = true;
  104. this.dateEditStart.EditValue = DateTime.Today;
  105. this.dateEditEnd.EditValue = DateTime.Today;
  106. this.timeEditStart.EditValue = DateTime.Parse("00:00:00");
  107. this.timeEditEnd.EditValue = DateTime.Parse("23:59:59");
  108. }
  109. /// <summary>
  110. /// 按条件查询内容
  111. /// </summary>
  112. /// <param name="sender"></param>
  113. /// <param name="e"></param>
  114. private void SbtnSelect_Click(object sender, EventArgs e)
  115. {
  116. condition = string.Format(" rule_id = '{0}'", selectRuleName);
  117. string startTime = string.Format("{0} {1}", this.dateEditStart.Text, this.timeEditStart.Text);
  118. string endTime = string.Format("{0} {1}", this.dateEditEnd.Text, this.timeEditEnd.Text);
  119. condition += string.Format(" and rule_time >= '{0}' and rule_time <= '{1}'", startTime, endTime);
  120. if (!string.IsNullOrEmpty(txt_batchid.Text))
  121. {
  122. condition += string.Format(" and batchid like '%{0}%'", txt_batchid.Text);
  123. }
  124. BindData(table, condition);
  125. }
  126. /// <summary>
  127. /// 页面切换
  128. /// </summary>
  129. /// <param name="sender"></param>
  130. /// <param name="e"></param>
  131. private void winGridViewPager1_OnPageChanged(object sender, EventArgs e)
  132. {
  133. BindData(table, condition);
  134. }
  135. /// <summary>
  136. /// 绑定产品数据
  137. /// </summary>
  138. /// <param name="table">需要查询的某一规则列表</param>
  139. /// <param name="condition">输入的查询语句</param>
  140. private void BindData(DataTable table, string condition)
  141. {
  142. try
  143. {
  144. this.gridView1.Columns.Clear();
  145. List<MoProductData> productList = new List<MoProductData>();
  146. productList = BLLFactory<BlProductData>.Instance.Find(condition);
  147. DataTable dtProduct = new DataTable();
  148. int columns = 0;
  149. dtProduct.Columns.Add("ID", typeof(string));
  150. dtProduct.Columns.Add("产生时间", typeof(DateTime));
  151. dtProduct.Columns.Add("产品条码", typeof(string));
  152. foreach (DataRow item in table.Rows)
  153. {
  154. dtProduct.Columns.Add(item.Field<string>("Name"), typeof(string));
  155. }
  156. for (int i = 0; i < productList.Count; i++)
  157. {
  158. string id = productList[i].DataId.ToString();
  159. string time = productList[i].RuleTime.ToString("yyyy-MM-dd HH:mm:ss");
  160. batchid = productList[i].Batchid;
  161. string[] values = productList[i].DataValue.Split(',');
  162. if (table.Rows.Count != values.Count())
  163. {
  164. continue;
  165. }
  166. List<string> tempList = new List<string>();
  167. tempList = values.ToList();
  168. tempList.Insert(0, batchid);
  169. tempList.Insert(0, time);
  170. tempList.Insert(0, id);
  171. dtProduct.Rows.Add(tempList.ToArray());
  172. }
  173. //按时间降序排列
  174. dtProduct.DefaultView.Sort = "产生时间 DESC";
  175. dtProduct = dtProduct.DefaultView.ToTable();
  176. this.gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
  177. this.gridControl1.DataSource = dtProduct;
  178. //添加一列修改项
  179. DevExpress.XtraGrid.Columns.GridColumn gridColumn11 = new DevExpress.XtraGrid.Columns.GridColumn();
  180. gridColumn11.AppearanceCell.Options.UseTextOptions = true;
  181. gridColumn11.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
  182. gridColumn11.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
  183. gridColumn11.Caption = "修改操作";
  184. gridColumn11.Name = "gridColumn11";
  185. gridColumn11.Visible = true;
  186. gridColumn11.VisibleIndex = dtProduct.Columns.Count;
  187. DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit repositoryItemLinkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
  188. repositoryItemLinkEdit.AutoHeight = false;
  189. repositoryItemLinkEdit.Name = "repositoryItemHyperLinkAlter_Click";
  190. repositoryItemLinkEdit.NullText = "修改";
  191. repositoryItemLinkEdit.Click += new System.EventHandler(repositoryItemLinkEdit_Click);
  192. gridColumn11.ColumnEdit = repositoryItemLinkEdit;
  193. this.gridView1.Columns.Add(gridColumn11);
  194. for (int i = 0; i < this.gridView1.Columns.Count; i++) //设置每列内容居中显示
  195. {
  196. this.gridView1.Columns[i].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
  197. //设置时间列显示格式
  198. this.gridView1.Columns[1].DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
  199. this.gridView1.Columns[1].DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
  200. }
  201. //设置除修改列,其他列不可编辑
  202. for (int i = 0; i < this.gridView1.Columns.Count - 1; i++)
  203. {
  204. this.gridView1.Columns[i].OptionsColumn.AllowEdit = false;
  205. this.gridView1.Columns[i].OptionsColumn.ReadOnly = true;
  206. }
  207. foreach (DataRow item in table.Rows)
  208. {
  209. if (item.Field<string>("Query").Equals("是"))
  210. {
  211. gridView1.Columns[columns].OptionsFilter.AllowAutoFilter = true;
  212. gridView1.Columns[columns].OptionsFilter.AllowFilter = true;
  213. gridView1.Columns[columns].OptionsFilter.ImmediateUpdateAutoFilter = true;
  214. }
  215. else
  216. {
  217. gridView1.Columns[columns].OptionsFilter.AllowAutoFilter = false;
  218. gridView1.Columns[columns].OptionsFilter.AllowFilter = false;
  219. gridView1.Columns[columns].OptionsFilter.ImmediateUpdateAutoFilter = false;
  220. }
  221. columns++;
  222. }
  223. this.gridControl1.RefreshDataSource();
  224. }
  225. catch (Exception ex)
  226. {
  227. DevExpress.XtraEditors.XtraMessageBox.Show("绑定产品数据出现错误。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  228. LogHelper.log.Error(string.Format("查询数据库product_data出现错误:{0}", ex));
  229. }
  230. }
  231. /// <summary>
  232. /// 过滤界面数据
  233. /// </summary>
  234. /// <param name="table"></param>
  235. /// <param name="values"></param>
  236. /// <param name="result"></param>
  237. /// <returns></returns>
  238. private bool FilterData(DataTable table, string[] values, out string[] result)
  239. {
  240. result = null;
  241. foreach (DataRow item in table.Rows)
  242. {
  243. if (item.Field<string>("Name").Equals("日期"))
  244. {
  245. int pos = Convert.ToInt32(item.Field<string>("OrderNum"));
  246. DateTime dateValue = Convert.ToDateTime(values[pos]);
  247. DateTime dateStart = Convert.ToDateTime(this.dateEditStart.EditValue.ToString());
  248. DateTime dateEnd = Convert.ToDateTime(this.dateEditEnd.EditValue.ToString());
  249. if (!((0 >= dateValue.CompareTo(dateStart)) && (0 <= dateValue.CompareTo(dateEnd))))
  250. {
  251. return false;
  252. }
  253. }
  254. if (item.Field<string>("Name").Equals("时间"))
  255. {
  256. int pos = item.Field<int>("OrderNum");
  257. DateTime timeValue = Convert.ToDateTime(values[pos]);
  258. DateTime timeStart = Convert.ToDateTime(this.timeEditStart.EditValue.ToString());
  259. DateTime timeEnd = Convert.ToDateTime(this.timeEditEnd.EditValue.ToString());
  260. if (!((0 >= timeValue.CompareTo(timeStart)) && (0 < timeValue.CompareTo(timeEnd))))
  261. {
  262. return false;
  263. }
  264. }
  265. }
  266. result = values;
  267. return true;
  268. }
  269. private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  270. {
  271. if (e.Info.IsRowIndicator && e.RowHandle > -1)
  272. {
  273. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  274. }
  275. }
  276. private void btn_ExportData_Click(object sender, EventArgs e)
  277. {
  278. string dir = System.Environment.CurrentDirectory;
  279. SaveFileDialog dialog = new SaveFileDialog();
  280. dialog.Filter = "Excel(*.xls)|*.xls|All File(*.*)|*.*";
  281. dialog.Title = "保存Excel";
  282. dialog.FileName = "";
  283. dialog.RestoreDirectory = true;
  284. if (!string.IsNullOrEmpty(dir))
  285. {
  286. dialog.InitialDirectory = dir;
  287. }
  288. if (dialog.ShowDialog() == DialogResult.OK)
  289. {
  290. try
  291. {
  292. DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions();
  293. this.gridControl1.ExportToXls(dialog.FileName);
  294. DevExpress.XtraEditors.XtraMessageBox.Show("保存Excel文件成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  295. }
  296. catch (Exception ex)
  297. {
  298. DevExpress.XtraEditors.XtraMessageBox.Show("保存Excel文件失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  299. LogHelper.log.Error(string.Format("保存Excel文件失败,错误为{0}", ex.ToString()));
  300. }
  301. }
  302. }
  303. private void FormDataManage_Load(object sender, EventArgs e)
  304. {
  305. //初始化分页表格控件
  306. table = new DataTable();
  307. InitNavBarControl();
  308. this.panelControl1.Visible = false;
  309. InitData();
  310. this.splitContainerControl1.SplitterPosition = 1;
  311. }
  312. /// <summary>
  313. /// 修改操作
  314. /// </summary>
  315. /// <param name="sender"></param>
  316. /// <param name="e"></param>
  317. private void repositoryItemLinkEdit_Click(object sender, EventArgs e)
  318. {
  319. DataRow selectRow = this.gridView1.GetFocusedDataRow();
  320. FormEditDataManage form = new FormEditDataManage();
  321. form.row = selectRow;
  322. form.dtRule = table;
  323. form.ruleId = selectRuleName;
  324. form.ShowDialog();
  325. BindData(table, condition);
  326. }
  327. }
  328. }