using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace BaseSet.公用资料.其他基础资料 { public partial class Gy_StdWorkTimesList : Form { private int HItemIDCol = 0; private int HNumberCol = 0; public DBUtility.frmBillQueryCondition_New frmCondition; public const string ViewName = "h_v_Gy_StdWorkTimesList"; public string ModName = "标准工时"; //权限 public const string ModRightName = "Gy_StdWorkTimesList"; public const string ModRightNameEdit = ModRightName + "_Edit"; public const string ModRightNameCheck = ModRightName + "_Check"; // public DBUtility.ClsPub.Enum_InputMode InputMode; //录入状态标志(0-非录入状态 1-增加 2-修改) public long HItemID;//项目ID public long HItemGroupID; SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); DAL.ClsGy_StdWorkTimes_Ctl oMatePrce = new DAL.ClsGy_StdWorkTimes_Ctl(); Pub_Class.ClsGridListSum oSumGrid = new Pub_Class.ClsGridListSum(); TreeNode CurNode = new TreeNode(); //拆分字符 char spChar = Convert.ToChar("~"); public Gy_StdWorkTimes oFrm; public Gy_StdWorkTimesList() { InitializeComponent(); } //以下代码基本不需要修改 #region 固定代码 //工时按钮 private void gs_Click(object sender, EventArgs e) { gs.Checked = true; wl.Checked = false; LoadTree(); Display(); } //物料按钮 private void wl_Click(object sender, EventArgs e) { gs.Checked = false; wl.Checked = true; LoadTree(); Display(); } //窗体加载 private void Gy_StdWorkTimesList_Load(object sender, EventArgs e) { lblCaption.Text = ModName; this.Text = ModName; frmCondition = new DBUtility.frmBillQueryCondition_New(); LoadTree(); oSumGrid.ogrdMain = grdMain; //初始化 new initGrid(); InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_View; } //退出模块 private void tc_Click(object sender, EventArgs e) { this.Close(); } //刷新 private void xs_Click(object sender, EventArgs e) { Display(); } //查询 private void cx_Click(object sender, EventArgs e) { frmCondition = new DBUtility.frmBillQueryCondition_New(); frmCondition.Tag = ""; frmCondition.ViewName = ViewName; frmCondition.ModName = this.Name; frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { Display(); } } //得到对应列 private Int32 Fun_GetCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdMain); } //树型 单击 private void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { CurNode = e.Node; if (CurNode != null) { if (CurNode.Nodes.Count == 0) { LoadAllNodes(CurNode); } frmCondition.SqlStr = ""; //找到选中结点 Display(); } } //删除 private void sc_Click(object sender, EventArgs e) { Delete(); } //删除项目 public void Delete() { Int64 lngBillKey = 0; if (grdMain.SelectedRows.Count == 0) { MessageBox.Show("请至少选择一行!", "提示"); return; } //删除权限 if (!DBUtility.ClsPub.Security_Log(ModRightNameEdit, 1, true, DBUtility.ClsPub.CurUserName)) { return; } if (AllowRow()) { if (MessageBox.Show("确定要删除当前项目?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { oCn.BeginTran(); for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { lngBillKey = DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("HItemID")].Value); if (lngBillKey == 0) return; DAL.ClsGy_StdWorkTimes_Ctl oItem = new DAL.ClsGy_StdWorkTimes_Ctl(); //审核 //查看是否已审核,关闭,作废 DataSet DsSub = oCn.RunProcReturn("Select * from Gy_StdWorkTimes Where HitemID=" + lngBillKey.ToString(), "Gy_StdWorkTimes"); if (!string.IsNullOrEmpty(DsSub.Tables[0].Rows[0]["HChecker"].ToString())) { oCn.RollBack(); MessageBox.Show("标准工时:"+ DsSub.Tables[0].Rows[0]["HStdWorkTimes"].ToString() + "的单据已审核,无法删除", "提示"); return; } else { oCn.RunProc(" delete Gy_StdWorkTimes where HItemID=" + lngBillKey.ToString()); } } oCn.Commit(); MessageBox.Show("删除成功,请刷新!", "提示"); return; } } } //新增按钮 private void xz_Click(object sender, EventArgs e) { oFrm = new Gy_StdWorkTimes(); oFrm.ShowDialog(); } //修改按钮 private void xg_Click(object sender, EventArgs e) { Sub_ShowBill(); } //修改 private void Sub_ShowBill() { Int64 lngBillKey = 0; if (grdMain.CurrentRow == null) return; lngBillKey = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[Fun_GetCol("HItemID")].Value); if (lngBillKey == 0) return; DAL.ClsGy_StdWorkTimes_Ctl oBillMain = new DAL.ClsGy_StdWorkTimes_Ctl(); Model.ClsGy_StdWorkTimes_Model oBill = new Model.ClsGy_StdWorkTimes_Model(); if (oBillMain.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo)) { oFrm = new Gy_StdWorkTimes(); oBill.HItemID = lngBillKey; oFrm.BillOld = oBill; oFrm.BillNew = oBillMain; oFrm.ShowDialog(); if (oFrm.BillChange) { if (MessageBox.Show("单据列表已经发生变化,是否刷新", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { timer1.Enabled = true; } } } else { MessageBox.Show("单据未找到", "提示"); } oBill = null; oBillMain = null; } //选中行是否正常 private bool AllowRow() { if (grdMain.CurrentRow == null) { return false; } if (grdMain.CurrentRow.Index >= 0 && grdMain.CurrentRow.Index <= grdMain.RowCount - 1) return true; else return false; } //保存列宽 private void bclk_Click(object sender, EventArgs e) { //保存列宽 DBUtility.Xt_BaseBillFun.SaveGrid(grdMain, this.Name); } // 默认列宽 private void mrlk_Click(object sender, EventArgs e) { DBUtility.Xt_BaseBillFun.DefaultGridView(grdMain, this.Name); } //时间控件 private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; Display(); } //初始化GRID private void initGrid() { DBUtility.Xt_BaseBillFun.initGridRpt(grdMain, this.Name); } #endregion //显示列表 private void Display() { SQLHelper.ClsCN SubCn = new SQLHelper.ClsCN(); DataSet DSet = new DataSet(); string sSql = ""; string sWhere = ""; string HParentID = ""; if (CurNode.Name.Trim().Length == 0) { HParentID = ""; } else { char c = Convert.ToChar(spChar); string[] sr; sr = CurNode.Text.Split(c); HParentID = sr[0].ToString(); } //过滤条件 if (HParentID == "" || HParentID == "物料资料" || HParentID == "工序资料") { sSql = "Select top 10000 * from " + ViewName + " order by HItemID Desc"; } else { if (wl.Checked == false) { sSql = "Select top 10000 * from " + ViewName + " where 工序代码 like '%" + HParentID.ToString() + "%' order by HItemID Desc"; } else { sSql = "Select top 10000 * from " + ViewName + " where 物料代码 like '%" + HParentID.ToString() + "%' order by HItemID Desc "; } } //执行SQL DSet = SubCn.RunProcReturn(sSql, ViewName); //生成首行标题 if (DSet == null) { MessageBox.Show("没有返回任何结果,请在过滤框中点击【恢复】按钮,尝试再次查询!" + DBUtility.ClsPub.sExeReturnInfo); return; } //释放冻结 DBUtility.Xt_BaseBillFun.CancelFrozenCol(grdMain); //绑定 grdMain.DataSource = DSet.Tables[0].DefaultView; //设置合计列 string sTotalCol = ""; sTotalCol = DBUtility.Gy_BaseFun.GetTotalCols(DSet); string[] sT; sT = sTotalCol.Split(Convert.ToChar(",")); oSumGrid.BuildTotalCols(sT); // //冻结 //int FrCol = DBUtility.ClsPub.isInt(frmCondition.txtFrozenCol.Text); //string s = frmCondition.cmbHComplete.Text; //DBUtility.Xt_BaseBillFun.DisplayGrid(grdMain, this.Name, s, FrCol); //画线 // //Total(); } //合计 new private void Total() { if (grdMain.Rows.Count > 0 && grdMain.ColumnCount > 0) { oSumGrid.SetGridsum(); oSumGrid.Total(); } } //加载子结点 private void LoadAllNodes(TreeNode sNode) { string sBill; if (wl.Checked == true) sBill = "h_v_Gy_Material"; else sBill = "h_v_Gy_Process"; if (sNode != null) { try { sNode.Nodes.Clear(); DataSet Ds = oCn.RunProcReturn("select hitemid,hnumber,hname from " + sBill + " where isnull(HStopflag,'')='' and HParentID=" + sNode.Name.Trim().Substring(1, sNode.Name.Trim().Length - 1) + " order by HNumber ", sBill); 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() + spChar + Ds.Tables[0].Rows[i]["HName"].ToString(), 0, 1); } sNode.Expand(); } catch (Exception e) { MessageBox.Show("加载子项目失败!" + e.Message, "提示"); } } } //加载树形 private void LoadTree() { string sItemName; if (wl.Checked == true) { sItemName = "物料资料"; } else { sItemName = "工序资料"; } try { tv.Nodes.Clear(); tv.ImageList = imageList1; TreeNode sNode = tv.Nodes.Add("T0", sItemName, 0, 1); LoadAllNodes(sNode); } catch (Exception e) { MessageBox.Show("加载树型失败!" + e.Message, "提示"); } } //审核 private void sh_Click(object sender, EventArgs e) { Int64 lngBillKey = 0; if (grdMain.SelectedRows.Count == 0) { MessageBox.Show("请至少选择一行!", "提示"); return; } for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { lngBillKey = DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("HItemID")].Value); if (lngBillKey == 0) return; DAL.ClsGy_StdWorkTimes_Ctl oItem = new DAL.ClsGy_StdWorkTimes_Ctl(); //审核 //查看是否已审核,关闭,作废 DataSet DsSub = oCn.RunProcReturn("Select * from Gy_StdWorkTimes Where HitemID=" + lngBillKey.ToString(), "Gy_StdWorkTimes"); if (!string.IsNullOrEmpty(DsSub.Tables[0].Rows[0]["HChecker"].ToString())) { MessageBox.Show("单据已审核,无需审核", "提示"); return; } else { //审核 if (oItem.CheckBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo) == true) { MessageBox.Show("审核成功!", "提示"); } else { MessageBox.Show("审核失败!", "提示"); return; } } } MessageBox.Show("审核成功,请刷新!", "提示"); return; } //反审核 private void fsh_Click(object sender, EventArgs e) { Int64 lngBillKey = 0; if (grdMain.SelectedRows.Count == 0) { MessageBox.Show("请至少选择一行!", "提示"); return; } for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { lngBillKey = DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("HItemID")].Value); if (lngBillKey == 0) return; DAL.ClsGy_StdWorkTimes_Ctl oItem = new DAL.ClsGy_StdWorkTimes_Ctl(); //审核 //查看是否已审核,关闭,作废 DataSet DsSub = oCn.RunProcReturn("Select * from Gy_StdWorkTimes Where HitemID=" + lngBillKey.ToString(), "Gy_StdWorkTimes"); if (string.IsNullOrEmpty(DsSub.Tables[0].Rows[0]["HChecker"].ToString())) { MessageBox.Show("单据未审核,无需反审核", "提示"); return; } else { //审核 if (oItem.AbandonCheck(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo) == true) { MessageBox.Show("反审核成功!", "提示"); } else { MessageBox.Show("反审核失败!", "提示"); return; } } } MessageBox.Show("审核成功,请刷新!", "提示"); return; } //考贝 private void yl_Click(object sender, EventArgs e) { DBUtility.Gy_BaseFun.DataToExcel(this.Text, grdMain); } private void jy_Click(object sender, EventArgs e) { Int64 lngBillKey = 0; if (grdMain.SelectedRows.Count == 0) { MessageBox.Show("请至少选择一行!", "提示"); return; } for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { lngBillKey = DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("HItemID")].Value); if (lngBillKey == 0) return; DAL.ClsGy_StdWorkTimes_Ctl oItem = new DAL.ClsGy_StdWorkTimes_Ctl(); //审核 //查看是否已审核,关闭,作废 DataSet DsSub = oCn.RunProcReturn("Select * from Gy_StdWorkTimes Where HitemID=" + lngBillKey.ToString(), "Gy_StdWorkTimes"); if (DsSub.Tables[0].Rows[0]["HStopflag"].ToString() == "1") { MessageBox.Show("单据已禁用,无需禁用" , "提示"); return; } else { oCn.RunProc(" Update Gy_StdWorkTimes set HStopflag=1 Where HItemID=" + lngBillKey.ToString()); } } MessageBox.Show("禁用成功,请刷新!", "提示"); return; } private void fjy_Click(object sender, EventArgs e) { Int64 lngBillKey = 0; if (grdMain.SelectedRows.Count == 0) { MessageBox.Show("请至少选择一行!", "提示"); return; } for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { lngBillKey = DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("HItemID")].Value); if (lngBillKey == 0) return; DAL.ClsGy_StdWorkTimes_Ctl oItem = new DAL.ClsGy_StdWorkTimes_Ctl(); //审核 //查看是否已审核,关闭,作废 DataSet DsSub = oCn.RunProcReturn("Select * from Gy_StdWorkTimes Where HitemID=" + lngBillKey.ToString(), "Gy_StdWorkTimes"); if (DsSub.Tables[0].Rows[0]["HStopflag"].ToString() == "0") { MessageBox.Show("单据暂未禁用,无需反禁用", "提示"); return; } else { oCn.RunProc(" Update Gy_StdWorkTimes set HStopflag=0 Where HItemID=" + lngBillKey.ToString()); } } MessageBox.Show("反禁用成功,请刷新!", "提示"); return; } } }