| using System; | 
| using System.ComponentModel; | 
| using System.Data; | 
| using System.Drawing; | 
| using System.Text; | 
| using System.Windows.Forms; | 
| using System.Collections; | 
| using DBUtility; | 
|   | 
| namespace APSM | 
| { | 
|     public partial class Gy_WorkTimes : Form | 
|     { | 
|         private DateTime BDate; | 
|         private DateTime EDate; | 
|         private DateTime XQDate; | 
|         public DBUtility.frm_B_BillQueryCondition_New frmCondition; | 
|         public const string ViewName = "h_v_Gy_WorkTimesList"; | 
|         //public string CheckProcName = "h_p_Gy_WorkTimes"; //20141020 | 
|         public string ModName = "工厂日历"; | 
|         public const string BillName = "Gy_WorkTimes"; | 
|         public const string ModRightNameEdit = BillName + "_Edit"; | 
|         public const string ModRightNameDelete = BillName + "_Delete"; | 
|         public DBUtility.ClsPub.Enum_InputMode InputMode;  //录入状态标志(0-非录入状态 1-增加 2-修改) | 
|         public long HItemID;//项目ID  | 
|         public long HSourceID;//资源ID  | 
|         DAL.ClsGy_PlanShifts_Ctl oPs = new DAL.ClsGy_PlanShifts_Ctl(); | 
|         DAL.ClsGy_PlanShifts_View oPsHlp = new DAL.ClsGy_PlanShifts_View(); | 
|         DAL.ClsGy_Source_Ctl oSou = new DAL.ClsGy_Source_Ctl(); | 
|         DAL.ClsGy_Source_View oSouHlp = new DAL.ClsGy_Source_View(); | 
|         TreeNode CurNode = new TreeNode(); | 
|   | 
|         public Gy_WorkTimes() | 
|         { | 
|             InitializeComponent(); | 
|         } | 
|         #region 固定代码 | 
|         //保存GRID列宽 | 
|   | 
|         //窗体加载 | 
|         private void Gy_WorkTimes_Load(object sender, EventArgs e) | 
|         { | 
|             cmbYear.Items.Clear(); | 
|             cmbYear.Items.Add(DateTime.Today.Year - 3); | 
|             cmbYear.Items.Add(DateTime.Today.Year - 2); | 
|             cmbYear.Items.Add(DateTime.Today.Year - 1); | 
|             cmbYear.Items.Add(DateTime.Today.Year); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 1); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 2); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 3); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 4); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 5); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 6); | 
|             cmbYear.Items.Add(DateTime.Today.Year + 7); | 
|             cmbYear.SelectedIndex = 3; | 
|             frmCondition = new DBUtility.frm_B_BillQueryCondition_New(); | 
|             LoadTree(); | 
|             initGrid(); | 
|             RefreshTool(); | 
|         } | 
|         //加载子结点 | 
|         private void LoadAllNodes(TreeNode sNode) | 
|         { | 
|             SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); | 
|   | 
|   | 
|             if (sNode != null) | 
|             { | 
|                 try | 
|                 { | 
|                     long sName = Convert.ToInt64(sNode.Name.Substring(1, sNode.Name.Length - 1)); | 
|                     sNode.Nodes.Clear(); | 
|                     string sSQL = ""; | 
|                     if (HSourceID == 0) | 
|                     { | 
|                         sSQL = "select hitemid,hnumber,hname from Gy_Source where HParentID='" + sName + "'  order by Hnumber"; | 
|                     } | 
|                     else | 
|                     { | 
|                         sSQL = "select hitemid,hnumber,hname from Gy_Source where HItemID=" + HSourceID + "   order by Hnumber"; | 
|                     } | 
|                     DataSet Ds = oCn.RunProcReturn(sSQL, "Gy_Source", ref ClsPub.sExeReturnInfo); | 
|                     for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) | 
|                     { | 
|                         TreeNode oNode = sNode.Nodes.Add("T" + Ds.Tables[0].Rows[i]["HItemID"].ToString(), Ds.Tables[0].Rows[i]["HNumber"].ToString() + "-" + Ds.Tables[0].Rows[i]["HName"].ToString(), 0, 1); | 
|                     } | 
|                     sNode.Expand(); | 
|                 } | 
|                 catch (Exception e) | 
|                 { | 
|                     MessageBox.Show("加载子项目失败!" + e.Message, "提示"); | 
|                 } | 
|             } | 
|         } | 
|         //加载树形 | 
|         private void LoadTree() | 
|         { | 
|             try | 
|             { | 
|                 tv.Nodes.Clear(); | 
|                 tv.ImageList = imageList1; | 
|                 TreeNode sNode = tv.Nodes.Add("T0", "生产资源", 0, 1); | 
|                 LoadAllNodes(sNode); | 
|             } | 
|             catch (Exception e) | 
|             { | 
|                 MessageBox.Show("加载树型失败!" + e.Message, "提示"); | 
|             } | 
|         } | 
|         //树型 单击 | 
|         private void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) | 
|         { | 
|             CurNode = e.Node; | 
|             if (CurNode != null) | 
|             { | 
|                 if (CurNode.Nodes.Count == 0 && HSourceID == 0) | 
|                     LoadAllNodes(CurNode); | 
|                 Display(); | 
|             } | 
|         } | 
|         //初始化GRID | 
|         private void initGrid() | 
|         { | 
|            //Gy_ICMOSortBillFun.initGridVS_Times(grd, ref BDate, ref EDate, this.Name, ref XQDate, cmbYear); | 
|         } | 
|         //显示列表 | 
|         private void Display() | 
|         { | 
|             DateTime Date; | 
|             ////禁用 红色显示  20141020 | 
|             //Sub_ShowStopFlag(); | 
|             //得到工作中心默认上班时间 | 
|             long sID = Convert.ToInt64(CurNode.Name.Substring(1, CurNode.Name.Length - 1)); | 
|             Single sWorkTimes = 8; | 
|             //sWorkTimes = oSouHlp.GetInfoByName(sName); //根据资源得到工作中心的工时 | 
|             // | 
|             // | 
|             for (int r = 0; r <= 22; r = r + 2) | 
|             { | 
|                 BDate = DBUtility.ClsPub.isDate(cmbYear.Text.ToString() + "-" + Convert.ToString(r / 2 + 1) + "-01"); | 
|                 EDate = BDate.AddMonths(1); | 
|                 EDate = EDate.AddDays(-1); | 
|   | 
|                 TimeSpan t = EDate - BDate;//获取2个时间的相隔天数 | 
|                 // | 
|                 for (int c = 1; c <= DBUtility.ClsPub.isInt(t.Days + 1); c++) | 
|                 { | 
|                     if (DBUtility.ClsPub.isStrNull(CurNode.Name) != null && DBUtility.ClsPub.isStrNull(CurNode.Text) != "") | 
|                     { | 
|                         Date = DBUtility.ClsPub.isDate(cmbYear.Text.ToString() + "-" + Convert.ToString(r / 2 + 1) + "-" + grd.Rows[r].Cells[c].Value.ToString()); | 
|                         if (oPsHlp.GetInfoByDate_Line(sID, Date.ToShortDateString())) | 
|                         { | 
|                             grd.Rows[r + 1].Cells[c].Value = DBUtility.ClsPub.isDoule(oPsHlp.omodel.HOverTimes, 0); | 
|                         } | 
|                         else | 
|                         { | 
|                             if (Date.DayOfWeek == DayOfWeek.Sunday) | 
|                             { | 
|                                 grd.Rows[r + 1].Cells[c].Value = "0"; | 
|                             } | 
|                             else | 
|                             { | 
|                                 if (oSouHlp.GetInfoByID(sID)) | 
|                                 { | 
|                                     //grd.set_TextMatrix(r + 1, c, DBUtility.ClsPub.isDoule(oPsHlp.omodel.HOverTimes, 1)); | 
|                                     grd.Rows[r + 1].Cells[c].Value = DBUtility.ClsPub.isDoule(oSouHlp.omodel.HWorkTimes, 0); | 
|                                 } | 
|                                 else | 
|                                 { | 
|                                     //grd.set_TextMatrix(r + 1, c, sWorkTimes.ToString()); | 
|                                     grd.Rows[r + 1].Cells[c].Value = sWorkTimes.ToString(); | 
|                                 } | 
|                             } | 
|                         } | 
|   | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         //退出模块 | 
|         private void tc_Click(object sender, EventArgs e) | 
|         { | 
|             this.Close(); | 
|         } | 
|         //刷新 | 
|         private void xs_Click(object sender, EventArgs e) | 
|         { | 
|             Display(); | 
|         } | 
|         //刷新TOOLBAR | 
|         private void RefreshTool() | 
|         { | 
|   | 
|                 if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_View) | 
|                 { | 
|                     stTab.SelectedIndex = 0; | 
|                     stTab.TabPages.Remove(this.tabPage1); | 
|                     stTab.TabPages.Add(this.tabPage1); | 
|                     grd.Enabled = true; | 
|                     tc.Enabled = true; | 
|                     //tz.Enabled = true; | 
|                     xs.Enabled = true; | 
|                 } | 
|                 else | 
|                 { | 
|                     stTab.SelectedIndex = 1; | 
|                     stTab.TabPages.Remove(this.tabPage1); | 
|                     stTab.TabPages[0].Hide(); | 
|                     grd.Enabled = false; | 
|                     //tc.Enabled = true; | 
|                     //tz.Enabled = false; | 
|                     xs.Enabled = false; | 
|                 } | 
|         } | 
|         //取消按钮 | 
|         private void cmdCancel_Click(object sender, EventArgs e) | 
|         { | 
|             InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_View; | 
|             RefreshTool(); | 
|         } | 
|         //得到对应列 | 
|         private Int32 Fun_GetCol(string sCol,DataGridView grd) | 
|         { | 
|             return 1; | 
|             //return Gy_ICMOSortBillFun.Fun_GetCol_VS(sCol, grd); | 
|         } | 
|         //private void bclk_Click(object sender, EventArgs e) | 
|         //{ | 
|         //    //保存列宽 | 
|         //        Gy_ICMOSortBillFun.SaveGrid(grd, this.Name, DBUtility.ClsPub.AppPath); | 
|         //} | 
|   | 
|         private void mrlk_Click(object sender, EventArgs e) | 
|         { | 
|             //for (int i = 1; i <= 12; i++) | 
|             //{ | 
|             //    grdMain(i).AutoSize(0, grdMain(i).Cols - 1, false, 1); | 
|   | 
|   | 
|             //    //参数解释  开始列 ,结束列,是否以最大列宽为准,最小列宽 | 
|             //    Gy_ICMOSortBillFun.SaveGrid(grdMain(i), this.Name, DBUtility.ClsPub.AppPath); | 
|             //} | 
|         } | 
|         ////选中行是否正常 | 
|         //private bool AllowRow() | 
|         //{ | 
|   | 
|         //    if (grdMain.Row >= grdMain.FixedRows && grdMain.Row <= grdMain.Rows - 1) | 
|         //        return true; | 
|         //    else | 
|         //        return false; | 
|         //} | 
|   | 
|   | 
|         //时间控件 | 
|         private void timer1_Tick(object sender, EventArgs e) | 
|         { | 
|             timer1.Enabled = false; | 
|             LoadTree(); | 
|             initGrid(); | 
|         } | 
|   | 
|         #endregion | 
|   | 
|   | 
|         #region 类的读写 | 
|         //读取类 到 控件 | 
|         private void ShowData(long sItemID) | 
|         { | 
|             // | 
|         } | 
|   | 
|         //写入类 从控件 | 
|         private bool WriteClass(double sWorktimes, Int64 sSourceID, DateTime sDate) | 
|         { | 
|             oPs.oModel.HOverTimes = sWorktimes; | 
|             oPs.oModel.HRemark = ""; | 
|             oPs.oModel.HShiftsID = 0; | 
|             oPs.oModel.HSourceID = sSourceID; | 
|             oPs.oModel.HDate = sDate; | 
|             return true; | 
|         } | 
|         #endregion | 
|   | 
|   | 
|         #region 界面控件处理 | 
|   | 
|         #endregion | 
|   | 
|         ////检测按钮  20141020 | 
|         //private void jc_Click(object sender, EventArgs e) | 
|         //{ | 
|         //    BLL.ClsPub_BLL.Sub_CheckUseStatus(grdMain, HItemIDCol, CheckProcName); | 
|         //    Display(); | 
|         //} | 
|   | 
|   | 
|         ////禁用项目 红色字体 20141020 | 
|         //public void Sub_ShowStopFlag() | 
|         //{ | 
|         //    BLL.ClsPub_BLL.Sub_ShowStopFlag(grdMain, Fun_GetCol("禁用标记")); | 
|         //} | 
|         private void cmbYear_TextChanged(object sender, EventArgs e) | 
|         { | 
|             initGrid(); | 
|         } | 
|   | 
|         private void cmbYear_SelectedIndexChanged(object sender, EventArgs e) | 
|         { | 
|             initGrid(); | 
|         } | 
|         //查询 | 
|         private void cx_Click(object sender, EventArgs e) | 
|         { | 
|             frmCondition = new DBUtility.frm_B_BillQueryCondition_New(); | 
|             DBUtility.Gy_BaseFun.SetCondition(frmCondition, ViewName, this.Name); | 
|             frmCondition.ShowDialog(); | 
|             if (frmCondition.Tag.ToString() == "OK") | 
|             { | 
|                 Display(); | 
|             } | 
|         }  | 
|         //修改(批量修改) | 
|         private void xg_Click(object sender, EventArgs e) | 
|         { | 
|             Gy_WorkTimesDlg oDlg = new Gy_WorkTimesDlg(); | 
|             oDlg.ShowDialog(); | 
|             //Display(); | 
|         } | 
|   | 
|         //CellBeginEdit事件:在触发该事件时单元格还没有获得焦点,我们可以通过设置事件参数e来决定是否执行对单元格的编辑,如下 | 
|         private void grd_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) | 
|         { | 
|         //    //执行编辑,这个一般不用写 | 
|   | 
|         //    e.Cancel = true; | 
|   | 
|         //    //不执行编辑,这个一般是通过条件判断是否执行编辑,如果条件不成立,即不允许对单元格进行编辑 | 
|   | 
|         //    e.Cancel = false; | 
|         } | 
|   | 
|         //CellParsing事件:在该事件中我们可以对输入的文本进行格式化,如将输入的英文字母全部改成大写等等,如下 | 
|         private void grd_CellParsing(object sender, DataGridViewCellParsingEventArgs e) | 
|         { | 
|             /* | 
|   | 
|               * 这里必须是通过e.Value来获得重新输入的值 | 
|   | 
|                * 如果是通过this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()这种方法获得 | 
|   | 
|                * 那么获得值将是原来的值,并不是用户刚刚输入的值 | 
|   | 
|                * 这个也正可以对用户输入的数据进行验证,如果不符合则将原来的值再赋给该单元格,不进行修改 | 
|   | 
|                * 切记!!!!! | 
|   | 
|                * 在这里必须将e.ParsingApplied属性设置为true,否则刚刚用户输入的值不会更新 | 
|   | 
|                * 还是会将原来的值赋给该单元格 | 
|   | 
|                * */ | 
|   | 
|             e.Value = e.Value.ToString().ToUpper(); | 
|   | 
|             e.ParsingApplied = true; | 
|   | 
|             //MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());    | 
|         } | 
|         private void grd_CellEndEdit(object sender, DataGridViewCellEventArgs e) | 
|         { | 
|             DateTime Date = DBUtility.ClsPub.isDate(cmbYear.Text.ToString() + "-" + DBUtility.ClsPub.isInt(e.RowIndex / 2 + 1).ToString() + "-" + grd.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString()); | 
|             if (DBUtility.ClsPub.isStrNull(CurNode.Name) != null && DBUtility.ClsPub.isStrNull(CurNode.Text) != "") | 
|             { | 
|                 Int64 sName = Convert.ToInt64(CurNode.Name.Substring(1, CurNode.Name.Length - 1)); | 
|                 double sWorktimes = DBUtility.ClsPub.isDoule(grd.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); | 
|                 // | 
|                 WriteClass(sWorktimes, sName, Date); | 
|                 oPs.AddNew(); | 
|                 Display(); | 
|             } | 
|         } | 
|   | 
|   | 
|   | 
|         //private void grdMain_BeforeEdit(object sender, AxVSFlex7._IVSFlexGridEvents_BeforeEditEvent e) | 
|         //{ | 
|         //    if (DBUtility.ClsPub.GridToColor(grdMain.get_Cell(VSFlex7.CellPropertySettings.flexcpBackColor, grdMain.Row, grdMain.Col, grdMain.Row, grdMain.Col)) == DBUtility.ClsPub.Enum_Color.hx_Write) | 
|         //    { | 
|         //        // | 
|         //    } | 
|         //    else | 
|         //    { | 
|         //        e.cancel = true; | 
|         //    } | 
|         //} | 
|   | 
|         //private void tz_Click(object sender, EventArgs e) | 
|         //{ | 
|         //    Gy_WorkTimesDlg oDlg = new Gy_WorkTimesDlg(); | 
|         //    oDlg.ShowDialog(); | 
|         //    Display(); | 
|         //} | 
|   | 
|         //private void grdMain_AfterEdit(object sender, AxVSFlex7._IVSFlexGridEvents_AfterEditEvent e) | 
|         //{ | 
|   | 
|         //    DateTime Date = DBUtility.ClsPub.isDate(cmbYear.Text.ToString() + "-" + DBUtility.ClsPub.isInt(grdMain.Row / 2 + 1).ToString() + "-" + grdMain.get_TextMatrix(grdMain.Row - 1, grdMain.Col).ToString()); | 
|         //    if (DBUtility.ClsPub.isStrNull(CurNode.Name) != null && DBUtility.ClsPub.isStrNull(CurNode.Text) != "") | 
|         //    { | 
|         //        Int64 sName = Convert.ToInt64(CurNode.Name.Substring(1, CurNode.Name.Length - 1)); | 
|         //        double sWorktimes = DBUtility.ClsPub.isDoule(grdMain.get_TextMatrix(grdMain.Row, grdMain.Col)); | 
|         //        // | 
|         //        WriteClass(sWorktimes, sName, Date); | 
|         //        oPs.AddNew(); | 
|         //        Display(); | 
|         //    } | 
|         //} | 
|   | 
|         //private void cmdHSource_Click(object sender, EventArgs e) | 
|         //{ | 
|         //    DAL.ClsGy_Source_View oSource = new DAL.ClsGy_Source_View(); | 
|         //    oSource.WherePart = txtHSource.Text.Trim(); | 
|         //    if (oSource.RefreshView()) | 
|         //    { | 
|         //        txtHSource.Text = oSource.oModel.HName; | 
|         //        txtHSource.Tag = oSource.oModel.HItemID; | 
|         //        HSourceID = oSource.oModel.HItemID; | 
|         //    } | 
|         //    else | 
|         //    { | 
|         //        txtHSource.Text = ""; | 
|         //        txtHSource.Tag = "0"; | 
|         //        HSourceID = 0; | 
|         //    } | 
|         //    LoadTree(); | 
|         //} | 
|   | 
|         //private void ww_Click(object sender, EventArgs e) | 
|         //{ | 
|         //    Gy_WorkTimesWWDlg oDlg = new Gy_WorkTimesWWDlg(); | 
|         //    oDlg.HSourceID = DBUtility.ClsPub.isLong(txtHSource.Tag); | 
|         //    oDlg.ShowDialog(); | 
|         //    Display(); | 
|         //} | 
|   | 
|     } | 
| } |