123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Linq;
- using System.Windows.Forms;
- using DevExpress.XtraEditors;
- using ProjectBase.Data.Logs;
- using SIMDP.Model;
- using ProjectBase.Data.BaseDAL;
- using SIMDP.BLL;
- using DevExpress.XtraNavBar;
- using DevExpress.XtraGrid.Views.Grid;
- namespace SIMDP.View
- {
- public partial class FormDataTraceability : DevExpress.XtraEditors.XtraForm
- {
- private DataTable table = null; // 数据规则解析表
- private string condition = ""; // 查询条件
- private string selectRuleName = ""; // 选中的规则名称
- private string batchid = null;
- public FormDataTraceability()
- {
- InitializeComponent();
- }
- private void FormDataManage_Load(object sender, EventArgs e)
- {
- //初始化分页表格控件
- table = new DataTable();
- InitNavBarControl();
- // this.panelControl1.Visible = false;
- InitData();
- // this.splitContainerControl1.SplitterPosition = 0;
- }
- /// <summary>
- /// 初始化导航栏
- /// </summary>
- private void InitNavBarControl()
- {
- List<MoRule> ruleList = new List<MoRule>();
- ruleList = BLLFactory<BlRule>.Instance.GetAll();
- if (ruleList == null || ruleList.Count < 1)
- {
- MessageBox.Show("请先添加数据规则!");
- }
- foreach (MoRule mo in ruleList)
- {
- NavBarItem item = new NavBarItem();
- item.Visible = true;
- item.SmallImage = Image.FromFile(Application.StartupPath + "/Images/101.png");
- item.Name = mo.RuleId.ToString();
- item.Caption = mo.RuleName;
- item.LinkClicked += Item_Click;
- this.navBarControl.Items.AddRange(new DevExpress.XtraNavBar.NavBarItem[] { item });
- this.nbDataHistory.ItemLinks.AddRange(new DevExpress.XtraNavBar.NavBarItemLink[] { new DevExpress.XtraNavBar.NavBarItemLink(item) });
- }
- if (this.nbDataHistory.ItemLinks.Count > 0)
- {
- this.navBarControl.SelectedLink = this.nbDataHistory.ItemLinks[0];
- }
- }
- /// <summary>
- /// 初始化右侧控件
- /// </summary>
- private void InitData()
- {
- MoRule mo = new MoRule();
- mo = BLLFactory<BlRule>.Instance.FindByID(this.navBarControl.SelectedLink.ItemName);
- table.Clear();
- table = BLLFactory<BlRule>.Instance.AnalyzeRuleValue(mo);
- InitPanel();
- selectRuleName = this.navBarControl.SelectedLink.ItemName;
- condition = string.Format(" rule_id = '{0}'", selectRuleName);
- string startTime = string.Format("{0} {1}", this.dateEditStart.Text, this.timeEditStart.Text);
- string endTime = string.Format("{0} {1}", this.dateEditEnd.Text, this.timeEditEnd.Text);
- condition += string.Format(" and rule_time >= '{0}' and rule_time <= '{1}'", startTime, endTime);
- if (!string.IsNullOrEmpty(txt_batchid.Text))
- {
- condition += string.Format(" and batchid like '%{0}%'", txt_batchid.Text);
- }
- BindData(table, condition);
- }
- /// <summary>
- /// 导航栏子项目的点击事件
- /// </summary>
- private void Item_Click(object sender, NavBarLinkEventArgs e)
- {
- MoRule mo = new MoRule();
- mo = BLLFactory<BlRule>.Instance.FindByID(e.Link.ItemName);
- table.Clear();
- table = BLLFactory<BlRule>.Instance.AnalyzeRuleValue(mo);
- InitPanel();
- selectRuleName = e.Link.ItemName;
- condition = string.Format(" rule_id = '{0}'", selectRuleName);
- string startTime = string.Format("{0} {1}", this.dateEditStart.Text, this.timeEditStart.Text);
- string endTime = string.Format("{0} {1}", this.dateEditEnd.Text, this.timeEditEnd.Text);
- condition += string.Format(" and rule_time >= '{0}' and rule_time <= '{1}'", startTime, endTime);
- if (!string.IsNullOrEmpty(txt_batchid.Text))
- {
- condition += string.Format(" and batchid like '%{0}%'", txt_batchid.Text);
- }
- BindData(table, condition);
- }
- /// <summary>
- /// 初始化panel
- /// </summary>
- private void InitPanel()
- {
- // this.panelControl1.Visible = true;
- this.dateEditStart.EditValue = DateTime.Today;
- this.dateEditEnd.EditValue = DateTime.Today;
- this.timeEditStart.EditValue = DateTime.Parse("00:00:00");
- this.timeEditEnd.EditValue = DateTime.Parse("23:59:59");
- }
- /// <summary>
- /// 按条件查询内容
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void SbtnSelect_Click(object sender, EventArgs e)
- {
- condition = string.Format(" rule_id = '{0}'", selectRuleName);
- string startTime = string.Format("{0} {1}", dateEditStart.Text, timeEditStart.Text);
- string endTime = string.Format("{0} {1}", dateEditEnd.Text, timeEditEnd.Text);
- condition += string.Format(" and rule_time >= '{0}' and rule_time <= '{1}'", startTime, endTime);
- if (!string.IsNullOrEmpty(txt_batchid.Text))//支持 VIN码模糊查询
- {
- condition += string.Format(" and batchid like '%{0}%'", txt_batchid.Text);
- }
- BindData(table, condition);
- }
- /// <summary>
- /// 页面切换
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void winGridViewPager1_OnPageChanged(object sender, EventArgs e)
- {
- BindData(table, condition);
- }
- /// <summary>
- /// 绑定产品数据
- /// </summary>
- /// <param name="table">需要查询的某一规则列表</param>
- /// <param name="condition">输入的查询语句</param>
- private void BindData(DataTable table, string condition)
- {
- try
- {
- this.gridView1.Columns.Clear();
- List<MoProductData> productList = new List<MoProductData>();
- productList = BLLFactory<BlProductData>.Instance.Find(condition);
- DataTable dtProduct = new DataTable();
- int columns = 0;
- dtProduct.Columns.Add("更新时间", typeof(DateTime));
- foreach (DataRow item in table.Rows)
- {
- dtProduct.Columns.Add(item.Field<string>("Name"), typeof(string));
- }
- for (int i = 0; i < productList.Count; i++)
- {
- string time = productList[i].RuleTime.ToString("yyyy-MM-dd HH:mm:ss");
- batchid = productList[i].Batchid;
- string[] values = productList[i].DataValue.Split(',');
- if (table.Rows.Count != values.Count())
- {
- continue;
- }
- List<string> tempList = new List<string>();
- tempList = values.ToList();
- // tempList.Insert(0, batchid);
- tempList.Insert(0, time);
- dtProduct.Rows.Add(tempList.ToArray());
- }
- //按时间降序排列
- dtProduct.DefaultView.Sort = "更新时间 DESC";
- dtProduct = dtProduct.DefaultView.ToTable();
- this.gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.gridControl1.DataSource = dtProduct;
- //设置每列内容居中显示
- for (int i = 1; i < this.gridView1.Columns.Count; i++)
- {
- this.gridView1.Columns[i].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- //this.gridView1.Columns[i].MinWidth = 30;
- //// this.gridView1.Columns[i].BestFit();
- }
- //设置时间列显示格式
- this.gridView1.Columns[0].DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
- // this.gridView1.Columns[0].DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
- this.gridView1.Columns[0].MinWidth = 127;
- this.gridView1.Columns[3].MinWidth = 132;
- foreach (DataRow item in table.Rows)
- {
- this.gridView1.Columns[columns].BestFit();
- if (item.Field<string>("Query").Equals("是"))
- {
- gridView1.Columns[columns].OptionsFilter.AllowAutoFilter = true;
- gridView1.Columns[columns].OptionsFilter.AllowFilter = true;
- gridView1.Columns[columns].OptionsFilter.ImmediateUpdateAutoFilter = true;
- }
- else
- {
- gridView1.Columns[columns].OptionsFilter.AllowAutoFilter = false;
- gridView1.Columns[columns].OptionsFilter.AllowFilter = false;
- gridView1.Columns[columns].OptionsFilter.ImmediateUpdateAutoFilter = false;
- }
- columns++;
- }
- //屏蔽无用显示
- gridView1.Columns[4].Visible = false;
- gridView1.Columns[5].Visible = false;
- gridView1.Columns[18].Visible = false;
- this.gridControl1.RefreshDataSource();
- }
- catch (Exception ex)
- {
- DevExpress.XtraEditors.XtraMessageBox.Show("绑定产品数据出现错误。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- LogHelper.log.Error(string.Format("查询数据库product_data出现错误:{0}", ex));
- }
- }
- /// <summary>
- /// 过滤界面数据
- /// </summary>
- /// <param name="table"></param>
- /// <param name="values"></param>
- /// <param name="result"></param>
- /// <returns></returns>
- private bool FilterData(DataTable table, string[] values, out string[] result)
- {
- result = null;
- foreach (DataRow item in table.Rows)
- {
- if (item.Field<string>("Name").Equals("日期"))
- {
- int pos = Convert.ToInt32(item.Field<string>("OrderNum"));
- DateTime dateValue = Convert.ToDateTime(values[pos]);
- DateTime dateStart = Convert.ToDateTime(this.dateEditStart.EditValue.ToString());
- DateTime dateEnd = Convert.ToDateTime(this.dateEditEnd.EditValue.ToString());
- if (!((0 >= dateValue.CompareTo(dateStart)) && (0 <= dateValue.CompareTo(dateEnd))))
- {
- return false;
- }
- }
- if (item.Field<string>("Name").Equals("时间"))
- {
- int pos = item.Field<int>("OrderNum");
- DateTime timeValue = Convert.ToDateTime(values[pos]);
- DateTime timeStart = Convert.ToDateTime(this.timeEditStart.EditValue.ToString());
- DateTime timeEnd = Convert.ToDateTime(this.timeEditEnd.EditValue.ToString());
- if (!((0 >= timeValue.CompareTo(timeStart)) && (0 < timeValue.CompareTo(timeEnd))))
- {
- return false;
- }
- }
- }
- result = values;
- return true;
- }
- private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
- {
- if (e.Info.IsRowIndicator && e.RowHandle > -1)
- {
- e.Info.DisplayText = (e.RowHandle + 1).ToString();
- }
- }
- private void btn_ExportData_Click(object sender, EventArgs e)
- {
- string dir = System.Environment.CurrentDirectory;
- SaveFileDialog dialog = new SaveFileDialog();
- dialog.Filter = "Excel(*.xls)|*.xls|All File(*.*)|*.*";
- dialog.Title = "保存Excel";
- dialog.FileName = "";
- dialog.RestoreDirectory = true;
- if (!string.IsNullOrEmpty(dir))
- {
- dialog.InitialDirectory = dir;
- }
- if (dialog.ShowDialog() == DialogResult.OK)
- {
- try
- {
- DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions();
- this.gridControl1.ExportToXls(dialog.FileName);
- DevExpress.XtraEditors.XtraMessageBox.Show("保存Excel文件成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- catch (Exception ex)
- {
- DevExpress.XtraEditors.XtraMessageBox.Show("保存Excel文件失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- LogHelper.log.Error(string.Format("保存Excel文件失败,错误为{0}", ex.ToString()));
- }
- }
- }
- /// <summary>
- /// 修改操作
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void repositoryItemLinkEdit_Click(object sender, EventArgs e)
- {
- DataRow selectRow = this.gridView1.GetFocusedDataRow();
- FormEditDataManage form = new FormEditDataManage();
- form.row = selectRow;
- form.dtRule = table;
- form.ruleId = selectRuleName;
- form.ShowDialog();
- BindData(table, condition);
- }
- private void dateEdit_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyValue == 13)
- {
- SbtnSelect_Click(sender, e);
- }
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- if (!this.IsActive) return;
- if (!cbx_AutoFresh.Checked) return;
- SbtnSelect_Click(sender, e);
- }
- private void gridView_PLC_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
- {
- if (e.Column.FieldName == "车型")
- {
- e.DisplayText = SmProject.ModelDisplayFieldText(e.Value.ToString().Trim());
- }
- if (e.Column.FieldName == "颜色")
- {
- e.DisplayText = SmProject.ColorDisplayFieldText(e.Value.ToString().Trim());
- }
- }
- private void gridView1_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Right)
- {
- DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo gridHitInfo = new DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo();
- Point point = new Point(e.X, e.Y);
- gridHitInfo = (sender as GridView).CalcHitInfo(point);
- if (gridHitInfo.Column == null) return;
- //--获取单元格内容
- string copiedData = (sender as GridView).GetRowCellDisplayText(gridHitInfo.RowHandle, gridHitInfo.Column);
- if (string.IsNullOrEmpty(copiedData)) return;
- //--复制到剪贴板
- Clipboard.Clear();
- Clipboard.SetData(DataFormats.Text, copiedData);
- }
- }
- private void txt_batchid_EditValueChanged(object sender, EventArgs e)
- {
- if (txt_batchid.Text == "")
- SbtnSelect_Click(sender, e);
- }
- private void gridView1_RowStyle(object sender, RowStyleEventArgs e)
- {
- GridView view = sender as GridView;
- if (e.RowHandle >= 0)
- {
- DataRow postIs = view.GetDataRow(e.RowHandle);
- foreach (object ob in postIs.ItemArray)
- {
- if (string.Equals(ob.ToString(), "NG"))
- {
- e.Appearance.BackColor = Color.Tomato;
- //e.Appearance.BackColor2 = Color.SeaShell;
- }
- }
- }
- }
- }
- }
|