using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using gregn6Lib; using SQLHelper; using DBUtility; using System.IO; using System.Reflection; namespace WorkM { public partial class MES_StationOutBillList_LastProc : Form { public MES_StationOutBillList_LastProc() { InitializeComponent(); } public DBUtility.frmBillQueryCondition_New frmCondition; public string ViewName = "h_v_MES_StationOutBillList_LastProc"; public string ModCaption = "末道工序出站汇报单列表"; public const string ModName = "3791"; public const string ModRightName = "MES_StationOutBill"; public const string ModRightNameEdit = ModRightName + "_Edit"; public const string ModRightNameCheck = ModRightName + "_Check"; public const string ModRightNameClose = ModRightName + "_Close"; public const string ModRightNameDelete = ModRightName + "_Delete"; DAL.ClsSc_StationOutBill oBill = new DAL.ClsSc_StationOutBill(); public MES_StationOutBill oFrm; Pub_Class.ClsGridListSum oSumGrid = new Pub_Class.ClsGridListSum(); public string sDlgWhere = ""; //外窗体递入 #region 固定代码 private void MES_StationOutBillList_LastProc_Load(object sender, EventArgs e) { frmCondition = new frmBillQueryCondition_New(); this.Text = ModCaption; lblCaption.Text = ModCaption; oSumGrid.ogrdMain = grdMain; //初始化 new oSumGrid.oGridsum = grdSum; initGrid(); } private void initGrid() { DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name); } private void timer1_Tick(object sender, EventArgs e) { cmbHStatus.Text = "全部"; timer1.Enabled = false; initGrid(); Display(); } private void timer2_Tick(object sender, EventArgs e) { timer2.Enabled = false; frmCondition = new frmBillQueryCondition_New(); SetCondition(frmCondition, ViewName, this.Name); frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { timer1.Enabled = true; } } public void SetCondition(frmBillQueryCondition_New frmCondition, string ViewName, string Name) { frmCondition.Tag = ""; frmCondition.ViewName = ViewName; frmCondition.ModName = Name; } //释放鼠标按钮发生 private void grdMain_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) { //Total(); } //合计 new private void grdMain_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) { Total(); } //双击列表选中行 private void grdMain_DblClick(object sender, EventArgs e) { Sub_ShowBill(); } private void grdMain_Paint(object sender, PaintEventArgs e) { GraphicsGrid(); } private void GraphicsGrid() { DBUtility.Xt_BaseBillFun.GraphicsGrid(grdMain); } private void grdMain_Scroll(object sender, ScrollEventArgs e) { if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll) { Total(); } } //得到对应列 private Int32 Fun_GetCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdMain); } //保存列宽 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); } #endregion #region 查询功能 private void cx_Click(object sender, EventArgs e) { frmCondition = new frmBillQueryCondition_New(); SetCondition(frmCondition, ViewName, this.Name); frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { Display(); } } private void Display() { ClsCN SubCn = new ClsCN(); DataSet DSet; string sSql = ""; string sWhere = ""; bzd.Enabled = true; if (frmCondition.SqlStr.Trim().Length == 0) { sSql = "Select top 5000 * from " + ViewName + " Where 1=1 " + sWhere + sDlgWhere + " order by hmainid desc "; } else { sSql = frmCondition.SqlStr + sWhere + sDlgWhere + " order by hmainid desc "; } // DSet = SubCn.RunProcReturn(sSql, ViewName, ref DBUtility.ClsPub.sExeReturnInfo); //生成首行标题 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); //画线 GraphLine(); Total(); } private void GraphLine() { int MainIDCol = Fun_GetCol("hmainid"); int SubIDCol = Fun_GetCol("hsubid"); string s = frmCondition.cmbHComplete.Text; long n = 0; DBUtility.Xt_BaseBillFun.GraphLine(grdMain, MainIDCol, SubIDCol, s, ref n); //显示 lbldj.Text = "查询出 " + n.ToString() + " 张单据"; lbljl.Text = "共有 " + grdMain.RowCount.ToString() + " 条记录"; } //合计 new private void Total() { if (grdMain.Rows.Count > 0 && grdMain.ColumnCount > 0) { oSumGrid.SetGridsum(); //oSumGrid.Total(); oSumGrid.TotalAll(); } } #endregion #region 快速查询功能 private void cmbHStatus_SelectedIndexChanged(object sender, EventArgs e) { Sub_FastQuery(); } private void txtHBillNo_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { Sub_FastQuery(); } } //快速过滤 private void Sub_FastQuery() { string sFastSQL = ""; if (txtHBillNo.Text.Trim() != "") { sFastSQL = sFastSQL + " and 工序流转卡号 like '%" + txtHBillNo.Text + "%'"; } //同步状态 if (cmbHStatus.Text.Trim() == "未同步") { sFastSQL = sFastSQL + " and (同步状态='" + cmbHStatus.Text.Trim() + "' ) "; } if (cmbHStatus.Text.Trim() == "已同步") { sFastSQL = sFastSQL + " and (同步状态='" + cmbHStatus.Text.Trim() + "' ) "; } sDlgWhere = sFastSQL; Display(); } #endregion #region 刷新功能 private void sx_Click(object sender, EventArgs e) { timer1.Enabled = true; } #endregion #region 入库功能 private void bzd_Click(object sender, EventArgs e) { //点击后入库按钮变灰 bzd.Enabled = false; //根据选中的数据生成包装单 int MainIDCol = Fun_GetCol("hmainid"); int SubIDCol = Fun_GetCol("hsubid"); int BillNoCol = Fun_GetCol("单据号"); int HUserK3Col = Fun_GetCol("K3用户"); int HKeepCol = Fun_GetCol("K3保管"); int HSecManagerCol = Fun_GetCol("K3验收"); int HDeptCol = Fun_GetCol("K3部门"); DAL.ClsKf_ProductInBill oClsKf_ProductInBill; SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); if (oSystemParameter.ShowBill(ref DBUtility.ClsPub.sExeReturnInfo) == false) { MessageBox.Show("获取系统参数失败! " + DBUtility.ClsPub.sExeReturnInfo); bzd.Enabled = true; return; } //判断会计期是否合理 string s = ""; int sYear = 0; int sPeriod = 0; if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(DateTime.Today, ref sYear, ref sPeriod, ref s) == false) { MessageBox.Show("会计期间有错误! " + DBUtility.ClsPub.sExeReturnInfo); bzd.Enabled = true; return; } string sHInterID = ""; for (int i = 0; i < grdMain.SelectedRows.Count; i++) { sHInterID = sHInterID + "," + DBUtility.ClsPub.isStrNull(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[MainIDCol].Value); } if (sHInterID == "") { MessageBox.Show("没有选中的单据明细行,请先选择要入库的单据!", "提示"); bzd.Enabled = true; return; } else { DataSet DS = oCn.RunProcReturn("exec h_p_MES_StationOutBillList_LastProc_PreProductIn '" + sHInterID + "'", "h_p_MES_StationOutBillList_LastProc_PreProductIn", ref DBUtility.ClsPub.sExeReturnInfo); if (DS == null || DS.Tables[0].Rows.Count == 0) { MessageBox.Show("入库前判断失败!", "提示"); bzd.Enabled = true; return; } else { if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0][0]) == "1") { MessageBox.Show(DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HRemark"])); bzd.Enabled = true; return; } } } Int64 n = 0; //循环 选中行 for (int i = 0; i < grdMain.SelectedRows.Count; i++) { oClsKf_ProductInBill = new DAL.ClsKf_ProductInBill(); oClsKf_ProductInBill.omodel.HYear = sYear; oClsKf_ProductInBill.omodel.HPeriod = sPeriod; oClsKf_ProductInBill.omodel.HInterID = ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[MainIDCol].Value); oClsKf_ProductInBill.omodel.HDate = DateTime.Today; oClsKf_ProductInBill.omodel.HBillNo = ClsPub.isStrNull(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[BillNoCol].Value); oClsKf_ProductInBill.omodel.HDeptID = ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[HDeptCol].Value); oClsKf_ProductInBill.omodel.HEmpID = ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[HKeepCol].Value); oClsKf_ProductInBill.omodel.HSecManagerID = ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[HSecManagerCol].Value); oClsKf_ProductInBill.omodel.HKeeperID = ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[HKeepCol].Value); oClsKf_ProductInBill.omodel.HBillerID = ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[HUserK3Col].Value); oClsKf_ProductInBill.omodel.HRemark = "末道工序良品同步"; oClsKf_ProductInBill.omodel.HMaker = DBUtility.ClsPub.CurUserName; oClsKf_ProductInBill.omodel.HWHID = 0; oClsKf_ProductInBill.omodel.HSupID = 0; oClsKf_ProductInBill.omodel.HExplanation = ""; if (oClsKf_ProductInBill.omodel.HBillerID == 0 || oClsKf_ProductInBill.omodel.HKeeperID == 0 || oClsKf_ProductInBill.omodel.HEmpID == 0 || oClsKf_ProductInBill.omodel.HDeptID == 0 || oClsKf_ProductInBill.omodel.HSecManagerID == 0) { MessageBox.Show("没有设置金蝶用户、部门、保管、验收员! " + DBUtility.ClsPub.sExeReturnInfo); continue; } if (oClsKf_ProductInBill.AddBill_StationOut_LastProc("3710", oSystemParameter.omodel, ref DBUtility.ClsPub.sExeReturnInfo)) { n++; } else { MessageBox.Show("同步单据失败!" + DBUtility.ClsPub.sExeReturnInfo); } //休眠5秒 System.Threading.Thread.Sleep(2000); // } bzd.Enabled = true; // if (n > 0) { MessageBox.Show("同步单据完毕!一共有" + n.ToString() + "张入库单!"); initGrid(); Display(); } } #endregion #region 新增功能 private void xz_Click(object sender, EventArgs e) { MES_StationOutBill oMES_StationOutBill = new MES_StationOutBill(); oMES_StationOutBill.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew; oMES_StationOutBill.ModCaption = "工序出站汇报单"; oMES_StationOutBill.ShowDialog(); } #endregion #region 单据功能 private void dj_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("hmainid")].Value); if (lngBillKey == 0) return; DAL.ClsSc_StationOutBill oBill = new DAL.ClsSc_StationOutBill(); if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo)) { oFrm = new MES_StationOutBill(); oFrm.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View; oFrm.BillOld = oBill; oFrm.ShowDialog(); if (oFrm.BillChange) { if (MessageBox.Show("单据列表已经发生变化,是否刷新", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { timer1.Enabled = true; } } } else { MessageBox.Show("单据未找到", "提示"); } oBill = null; } #endregion #region 删除功能 private void sc_Click(object sender, EventArgs e) { Sub_DeleteBill(); } //删除 private void Sub_DeleteBill() { //编辑权限 if (!DBUtility.ClsPub.Security_Log(ModRightNameDelete, 1, true, DBUtility.ClsPub.CurUserName)) { return; } // Int64 lngBillKey = 0; if (grdMain.CurrentRow == null) return; lngBillKey = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[Fun_GetCol("hmainid")].Value); if (lngBillKey == 0) return; DAL.ClsSc_StationOutBill oBill = new DAL.ClsSc_StationOutBill(); if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo)) { if (MessageBox.Show("确定要删除当前单据?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { if (oBill.omodel.HMaker != ClsPub.CurUserName && (ClsPub.CurUserName != "admin" && ClsPub.CurUserName != "Admin")) { MessageBox.Show("只能删除本人的单据!", "提示"); return; } string c = ""; SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); DataSet ds; //判断生产订单是否已结案,要求计划手工反结案 判断是否存在 相同单据号 的入库单 , 下道工序是否进站 ds = oCn.RunProcReturn("exec h_p_MES_StationOutBill_DelCtrl '" + oBill.omodel.HBillNo + "'", "h_p_MES_StationOutBill_DelCtrl"); if (ds == null) { MessageBox.Show("判断关联失败!"); return; } if (ds.Tables[0].Rows.Count > 0 && Pub_Class.ClsPub.isInt(ds.Tables[0].Rows[0][0]) == 2) { MessageBox.Show(Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0][1])); return; } //if (oBill.DeleteCheck(oBill.omodel.HInterID,"出站单", ref c) == false) //{ // MessageBox.Show(c, "提示"); // return; //} //if (oBill.omodel.HChecker != "") //{ // MessageBox.Show("单据已经审核,不能删除!", "提示"); // return; //} //if (!oBill.DeleteBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo)) //写入删除日志 string WorkList = "删除出站单:" + oBill.omodel.HBillNo; //BLL.ClsPub_BLL.System_Log_DropAdd(WorkList); if (!oBill.DeleteBill(oBill.omodel.HInterID, oBill.omodel.HProcExchInterID, oBill.omodel.HProcExchEntryID, ref DBUtility.ClsPub.sExeReturnInfo)) { MessageBox.Show(DBUtility.ClsPub.sExeReturnInfo, "提示"); return; } else { Display(); } } } else { MessageBox.Show("单据未找到", "提示"); } } #endregion #region 审核功能 private void sh_Click(object sender, EventArgs e) { this.Sub_CheckBill(); } //审核单据 private void Sub_CheckBill() { //审核权限 if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, true, DBUtility.ClsPub.CurUserName)) { return; } // Int64 lngBillKey = 0; if (grdMain.CurrentRow == null) return; lngBillKey = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[Fun_GetCol("hmainid")].Value); if (lngBillKey == 0) return; DAL.ClsSc_StationOutBill oBill = new DAL.ClsSc_StationOutBill(); //查看是否已审核,关闭,作废 if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo)) { if (oBill.omodel.HChecker.Trim() != "") { MessageBox.Show("单据已审核!不能再次审核", "提示"); return; } } else { MessageBox.Show("单据不存在!原因:" + DBUtility.ClsPub.sExeReturnInfo, "提示"); return; } //审核 if (oBill.CheckBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo) == true) { MessageBox.Show("审核成功!", "提示"); return; } else { MessageBox.Show("审核失败!原因:" + DBUtility.ClsPub.sExeReturnInfo, "提示"); return; } } #endregion #region 反审核功能 private void qsh_Click(object sender, EventArgs e) { Sub_AbandonCheck(); } //反审单据 private void Sub_AbandonCheck() { //审核权限 if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, true, DBUtility.ClsPub.CurUserName)) { return; } // Int64 lngBillKey = 0; if (grdMain.CurrentRow == null) return; lngBillKey = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[Fun_GetCol("hmainid")].Value); if (lngBillKey == 0) return; DAL.ClsSc_StationOutBill oBill = new DAL.ClsSc_StationOutBill(); //查看是否已审核,关闭,作废 if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo)) { if (oBill.omodel.HChecker.Trim() == "") { MessageBox.Show("单据未审核!不需要反审核!", "提示"); return; } } else { MessageBox.Show("单据不存在!原因:" + DBUtility.ClsPub.sExeReturnInfo, "提示"); return; } //反审核 if (oBill.AbandonCheck(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo) == true) { MessageBox.Show("反审核成功!", "提示"); return; } else { MessageBox.Show("反审核失败!原因:" + DBUtility.ClsPub.sExeReturnInfo, "提示"); return; } } #endregion #region 退出功能 private void tc_Click(object sender, EventArgs e) { this.Close(); } #endregion #region 打印功能 GridppReport Report; //预览 private void yl_Click(object sender, EventArgs e) { //选择打印模板 BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp(); oFrm.sBillName = ModName; oFrm.sBillModel = ModCaption; oFrm.ShowDialog(); if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK) { Sub_SetReport(oFrm.sOpenTmp); Report.PrintPreview(true); } } private void Sub_SetReport(string sOpenTmp) { //判断行数 for (int i = 0; i < grdMain.Rows.Count; i++) { grdMain.Rows[i].Cells[0].Value = ""; } for (int i = 0; i < grdMain.SelectedRows.Count; i++) { grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[0].Value = "*"; } Report = new GridppReport(); Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf"); //here . Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable); } private void ReportFetchRecordByDataTable() { DataTable dt = new DataTable(); BLL.Utility.FillRecordToReport_Sel(Report, grdMain, dt, Fun_GetCol("选择")); } #endregion #region 引出功能 //引出EXCEL private void dc_Click(object sender, EventArgs e) { //DBUtility.Gy_BaseFun.DataToExcel(this.Text, grdMain); DataGridViewToExcel2(); } private void DataGridViewToExcel2() { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl文件(*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true; saveFileDialog.Title = "数据视图导出EXCEL文件"; saveFileDialog.ShowDialog(); if (saveFileDialog.FileName == "") { return; } Stream myStream; myStream = saveFileDialog.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312")); string str = ""; DateTime start = DateTime.Now; try { //写标题 for (int i = 0; i < grdMain.ColumnCount; i++) { if (i > 0) { str += "\t"; } str += grdMain.Columns[i].HeaderText; } sw.WriteLine(str); //写内容 for (int j = 0; j < grdMain.Rows.Count; j++) { string tempStr = ""; for (int k = 0; k < grdMain.Columns.Count; k++) { if (k > 0) { tempStr += "\t"; } if (grdMain.Rows[j].Cells[k].Value == null) { tempStr += string.Empty; } else { tempStr += grdMain.Rows[j].Cells[k].Value.ToString(); } } sw.WriteLine(tempStr); } sw.Close(); myStream.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { sw.Close(); myStream.Close(); } MessageBox.Show("将此工作表导出为excel共耗时:" + DateTime.Now.Subtract(start).TotalMilliseconds.ToString() + "毫秒"); } //EXCEL引出 private void eXCELToolStripMenuItem_Click(object sender, EventArgs e) { DBUtility.Gy_BaseFun.DataToExcel(this.Text, grdMain); } //CSV引出 private void cSVToolStripMenuItem_Click(object sender, EventArgs e) { DBUtility.Gy_BaseFun.DataGridViewToExcel2(grdMain, this.Text, this.Text); } #endregion } }