using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; using System.Data.SqlClient; using ICSSoft.Frame.Data.BLL; using ICSSoft.Frame.Data.Entity; using DevExpress.XtraScheduler.Native; using DevExpress.XtraScheduler; using DevExpress.XtraScheduler.Services; using DevExpress.XtraScheduler.Drawing; using DevExpress.XtraScheduler.Commands; using DevExpress.Utils.Menu; using DevExpress.Utils; using ICSSoft.Base.Config.AppConfig; using ICSSoft.Base.Config.DBHelper; using ICSSoft.Base.UserControl.FormControl; namespace ICSSoft.Frame.APP { public partial class FormPR : DevExpress.XtraEditors.XtraForm { private DataSet dataSource = null; //物料排产数据 private DataSet ds = null; //设备数据 private DataSet dataSave = null; //待保存数据 private string ERPDB = ""; private Dictionary eqpTime = new Dictionary(); private DateTime startTime; private string NowDate = ""; #region 构造函数 public FormPR() { InitializeComponent(); this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); this.WindowState = FormWindowState.Maximized; //AppConfig.BindCustomDrawRowIndicator(grvDetail); } #endregion #region 移动窗体 private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; //首先必须了解Windows的消息传递机制,当有鼠标活动消息时, //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION , //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。 //重写窗体,使窗体可以不通过自带标题栏实现移动 protected override void WndProc(ref Message m) { //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息, //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体, //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。 //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。 switch (m.Msg) { case WM_NCHITTEST: base.WndProc(ref m); if ((int)m.Result == HTCLIENT) m.Result = (IntPtr)HTCAPTION; return; } //拦截双击标题栏、移动窗体的系统消息 if (m.Msg != 0xA3) { base.WndProc(ref m); } } #endregion #region SystemOptition /// /// 操作权限 /// /// public DataTable RightOfExute() { DataTable rData = new DataTable(); rData.Columns.Add("BtnName"); rData.Columns.Add("ActionName"); //查看权限(必须有) DataRow seeRow = rData.NewRow(); seeRow["BtnName"] = "see"; seeRow["ActionName"] = "查看"; rData.Rows.Add(seeRow); foreach (Control ctr in panelControl3.Controls) { if ( ctr.Name == btnOutPut.Name || ctr.Name == lblTitle.Name || ctr.Name == btnClose.Name) continue; DataRow dr = rData.NewRow(); dr["BtnName"] = ctr.Name; dr["ActionName"] = ctr.Text; rData.Rows.Add(dr); } //List ControlList = new List(); //ControlList.Add(btnConfig); //ControlList.Add(btnAdd); //ControlList.Add(btnEdit); //ControlList.Add(btnDelLable); //foreach (Control ctr in ControlList) //{ // if (ctr.GetType() == typeof(SimpleButton)) // { // DataRow dr = rData.NewRow(); // dr["BtnName"] = ctr.Name; // dr["ActionName"] = ctr.Text; // rData.Rows.Add(dr); // } //} rData.AcceptChanges(); return rData; } /// /// 数据权限 /// /// public DataTable RightOfData() { DataTable rData = new DataTable(); rData.Columns.Add("BodyName"); rData.Columns.Add("ControlName"); rData.Columns.Add("ControlCaption"); rData.AcceptChanges(); return rData; } #endregion #region 退出 private void btnClose_Click(object sender, EventArgs e) { AppConfig.CloseFormShow(this.Text); this.Close(); } private void btnExit_Click(object sender, EventArgs e) { AppConfig.CloseFormShow(this.Text); this.Close(); } #endregion #region 加载 private void FormCalendar_Load(object sender, EventArgs e) { try { initData(); } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } } #endregion #region 修改 private void btnEdit_Click(object sender, EventArgs e) { //SimpleButton btntemp = (SimpleButton)sender; //if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false) //{ // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!"); // return; //} //if (dataSource == null || dataSource.Tables.Count != 2) //{ // ICSBaseSimpleCode.AppshowMessageBox("请搜索后再做此操作!!!"); // return; //} DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等..."); try { _wait.Show(); DataTable dtP = dataSource.Tables[0]; //DataView dv=dtP.DefaultView; //dv.RowFilter="isSelect='true'"; //var AutoIDs = dv.ToTable(true, "AutoID").AsEnumerable().Select(p => p.Field("AutoID")).OrderBy(name => name); //string AutoID = string.Join(",", AutoIDs); //if (string.IsNullOrWhiteSpace(AutoID)) //{ // ICSBaseSimpleCode.AppshowMessageBox("请选择数据!"); // return; //} DataRow[] drs = dtP.Select("isSelect='true'"); if (drs == null || drs.Length<=0) { _wait.Close(); ICSBaseSimpleCode.AppshowMessageBox("请选择数据!"); return; } ICSTasksBLL.AddPR(drs, AppConfig.AppConnectString); _wait.Close(); ICSBaseSimpleCode.AppshowMessageBox("操作成功!"); initData(); } catch (Exception ex) { _wait.Close(); //throw ex; ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } } #endregion #region 导出 private void btnOutPut_Click(object sender, EventArgs e) { //try //{ // FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail); // foe.ShowDialog(); //} //catch (Exception ex) //{ // MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); //} FormOutExcel foe = new FormOutExcel(); if (foe.ShowDialog() == DialogResult.OK) { try { string outtype = foe._OutType; string exceltype = foe._ExcelType; string filename = foe._FileName; string url = foe._Url; string sheetname = foe._SheetName; if (outtype.ToLower() == "excel") { DevExpress.XtraPrinting.XlsExportOptions op = new DevExpress.XtraPrinting.XlsExportOptions(); op.SheetName = sheetname; grdDetail.MainView.ExportToXls((url + "\\" + filename + (exceltype == "2003" ? ".xls" : ".xlsx")), op); } else { grdDetail.MainView.ExportToPdf(url + "\\" + filename + ".pdf"); } MessageBox.Show("导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } #endregion private void initData() { DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等..."); try { _wait.Show(); string sql = @"SELECT s.ID AS AutoID,CAST(s.ID AS VARCHAR(100)) AS iSOsID,s.ProjectCode,s.MOCode,s.CUSCODE AS cCusCode,s.CUSNAME AS cCusName,MoDept AS DepCode,'' AS DepName,s.MOPLANQTY AS iQuantity,s.MOPLANSTARTDATE AS dcreatesystime,s.MOPLANENDDATE AS dPreDate,'1' AS iRowNo,s.ITEMCODE AS cInvCode,i.ItemName AS InvName,i.ItemStd AS cInvStd,i.ItemCostUOMCode AS INVUOM,s.ORDERNO AS SOCode,s.ORDERSEQ AS SORow,CASE WHEN EATTRIBUTE2='02' THEN 0 ELSE 1 END AS Status INTO #TempSo FROM ICSMO s INNER JOIN Base_Inventory i ON s.ITEMCODE=i.ItemCode AND s.WorkPoint=i.WorkPointCode WHERE s.MOOP IN ('核准中','已核准') OR REMOCODE='1' SELECT CAST(0 AS BIT) AS isSelect,ISNULL(g.ID,NEWID()) AS ID,sd.ProjectCode,sd.MOCode,sd.cCusName,sd.DepName,CAST(sd.iQuantity AS DECIMAL(18,2)) AS iQuantity,sd.cInvCode,sd.InvName,sd.cInvStd,sd.INVUOM, sd.dcreatesystime,sd.dPreDate,g.StartTime,g.EndTime,DATEDIFF(DAY, sd.dcreatesystime, g.StartTime) AS DiffStart,DATEDIFF(DAY, sd.dPreDate, g.EndTime) AS DiffEnd ,CAST(ISNULL(g.Complete,'0') AS BIT) AS Complete,g.MUSER,g.MUSERName,g.MTIME,sd.SOCode,sd.SORow,sd.Status ,g.Week,g.cMemo,ISNULL(g.LotNO,0) AS LotNO,sd.iRowNo ,sd.AutoID,sd.iSOsID AS iSOsID,g.EATTRIBUTE1 ,a.ROUTECODE FROM #TempSo sd LEFT JOIN ICSMO2ROUTE a ON sd.MOCode=a.MOCODE LEFT JOIN ICSResources g ON sd.iSOsID=g.ParentId WHERE g.Complete='1' ORDER BY sd.Status,sd.dPreDate,sd.MOCode,sd.AutoID DROP TABLE #TempSo "; dataSource = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql); grdDetail.DataSource = dataSource.Tables[0]; grvDetail.BestFitColumns(); _wait.Close(); } catch (Exception ex) { _wait.Close(); ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } } private void btnFalsh_Click(object sender, EventArgs e) { initData(); } } }