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 DBUtility; using System.Threading; using System.IO; namespace SCM { public partial class Sc_ICMOBillQuery : Form { public Sc_ICMOBillQuery() { InitializeComponent(); } public frmBillQueryCondition_Base frmCondition; public string ViewName = "h_v_IF_ICMOBillQuery"; public string ViewNameSub = "h_v_IF_ICMOBillQuerySub"; public string ModCaption = "生产订单查询"; public const string ModName = "3710"; public const string ModRightName = "Sc_ICMOBill"; public const string ModRightNameDelete = ModRightName + "_Drop"; public string sDlgWhere = ""; //外窗体递入 public int selectRow = 0; Pub_Class.ClsGridListSum oSumGrid = new Pub_Class.ClsGridListSum(); SCM.WMSWeb.WebService1 oWeb = new SCM.WMSWeb.WebService1(); // private void initGrid() { ClsPub1.initGridList(grdMain, this.Name); ClsPub1.initGridList(grdSub, this.Name); grdMain.ReadOnly = false; } // private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; initGrid(); Display(); } // private Int32 Fun_GetCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdMain); } // private void Sc_ICMOBillQuery_Load(object sender, EventArgs e) { //设置动态URL oWeb.Url = SCM.ClsPub1.WEBSURL; // frmCondition = new frmBillQueryCondition_Base(); this.Text = ModCaption; oSumGrid.ogrdMain = grdMain; //初始化 new oSumGrid.oGridsum = grdSum; lblCaption.Text = ModCaption; initGrid(); } private void timer2_Tick(object sender, EventArgs e) { timer2.Enabled = false; frmCondition = new frmBillQueryCondition_Base(); SetCondition(frmCondition, ViewName, this.Name); frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { timer1.Enabled = true; } //timer2.Enabled = false; //if (sDlgWhere == "") //{ // //frmCondition = new frmBillQueryCondition_Base(); // //SetCondition(frmCondition, ViewName, this.Name); // //frmCondition.ShowDialog(); // //if (frmCondition.Tag.ToString() == "OK") // //{ // // timer1.Enabled = true; // //} // //Sub_FastQuery(); //} //else //{ // timer1.Enabled = true; //} } 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 GraphicsGrid() { DBUtility.Xt_BaseBillFun.GraphicsGrid(grdMain); } // private void grdMain_Paint(object sender, PaintEventArgs e) { GraphicsGrid(); } //合计 new private void grdMain_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) { Total(); } //合计 new private void grdMain_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) { Int64 lngBillKey = 0; if (grdMain.CurrentRow == null) { return; } else { lngBillKey = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[Fun_GetCol("hmainid")].Value); } DisplayEntry(lngBillKey); Total(); } private void grdMain_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { int sHQtyCol = Fun_GetCol("数量"); int i = grdMain.CurrentCell.ColumnIndex; if (i != sHQtyCol) { e.Cancel = true; } } //刷新 private void sx_Click(object sender, EventArgs e) { timer1.Enabled = true; } //退出 private void tc_Click(object sender, EventArgs e) { this.Close(); } #region //删除 //删除 private void sc_Click(object sender, EventArgs e) { Sub_DeleteBill(); } //删除 private void Sub_DeleteBill() { //WEBS if (!oWeb.getSecurity_Log(ModRightNameDelete, DBUtility.ClsPub.CurUserName, ref DBUtility.ClsPub.sExeReturnInfo)) { MessageBox.Show("您没有删除权限!"); return; } try { if (AllowRow()) { if (MessageBox.Show("确定要删除当前项目?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { //得到HInterID long sHInterID; sHInterID = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentCell.RowIndex].Cells[Fun_GetCol("hmainid")].Value); oWeb.getRunProc("Delete from Sc_ICMOBillMain where HInterID=" + sHInterID, ref DBUtility.ClsPub.sExeReturnInfo); oWeb.getRunProc("Delete from Sc_ICMOBillSub where HInterID=" + sHInterID, ref DBUtility.ClsPub.sExeReturnInfo); oWeb.getRunProc("insert into System_log values(GETDATE(),'" + DBUtility.ClsPub.CurUserName + "','" + DBUtility.ClsPub.CurUserName + "','删除单据:" + DBUtility.ClsPub.isStrNull(grdMain.Rows[grdMain.CurrentCell.RowIndex].Cells[Fun_GetCol("单据号")].Value) + "' ,'生产订单列表','','删除')", ref DBUtility.ClsPub.sExeReturnInfo); } } MessageBox.Show("单据号:"+DBUtility.ClsPub.isStrNull(grdMain.Rows[grdMain.CurrentCell.RowIndex].Cells[Fun_GetCol("单据号")].Value)+" 删除成功!", "提示"); Display(); } catch (Exception e) { throw (e); } } //选中行是否正常 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; } } #endregion #region //查询功能 //查询 private void cx_Click(object sender, EventArgs e) { frmCondition = new frmBillQueryCondition_Base(); SetCondition(frmCondition, ViewName, this.Name); frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { Display(); } } public void SetCondition(frmBillQueryCondition_Base frmCondition, string ViewName, string Name) { frmCondition.Tag = ""; frmCondition.ViewName = ViewName; frmCondition.ModName = Name; } private void Display() { DataSet DSet; string sSql = ""; string sWhere = ""; //过滤条件 if (frmCondition.SqlStr.Trim().Length == 0) { sSql = "Select * from " + ViewName + " Where 1=1 " + sWhere + sDlgWhere + " order by 生产资源代码,单据号 desc,hsubid "; } else { sSql = frmCondition.SqlStr + sWhere + sDlgWhere + " order by 生产资源代码,单据号 desc,hsubid "; } // DSet = oWeb.getDataSetBySQL(sSql, ViewName, ref DBUtility.ClsPub.sExeReturnInfo); //生成首行标题 if (DSet == null) { MessageBox.Show("没有返回任何结果,请在过滤框中点击【恢复】按钮,尝试再次查询!" + DBUtility.ClsPub.sExeReturnInfo); return; } // 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; ClsPub1.DisplayGrid(grdMain, this.Name, s, FrCol); //画线 GraphLine(); DisplayEntry(0); //Total(); } //显示明细 private void DisplayEntry(Int64 HMainID) { DataSet DSet; string sSql = ""; string sWhere = ""; //特殊条件(日期限制,部门限制) sSql = "Select * from " + ViewNameSub + " Where HMainID=" + HMainID.ToString() + " "; // DSet = oWeb.getDataSetBySQL(sSql, ViewNameSub, ref DBUtility.ClsPub.sExeReturnInfo); //生成首行标题 if (DSet == null) { MessageBox.Show("没有返回任何结果,尝试再次查询!" + DBUtility.ClsPub.sExeReturnInfo); return; } //释放冻结 DBUtility.Xt_BaseBillFun.CancelFrozenCol(grdSub); //绑定 grdSub.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 = 1; string s = "是"; ClsPub1.DisplayGrid(grdSub, this.Name + "grdSub", 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(); } } #endregion #region //引出功能 private void yc_Click(object sender, EventArgs e) { DataGridViewToExcel2(grdMain, this.Text, this.Text); } /// /// 网格 导出EXCEL 网格,文件名,标题名 /// public static void DataGridViewToExcel2(DataGridView grdMain, string sText, string sBTText) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl文件(*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true; saveFileDialog.Title = "数据视图导出EXCEL文件"; saveFileDialog.FileName = sText; //saveFileDialog.ShowDialog(); if (saveFileDialog.ShowDialog() == DialogResult.OK) { Stream myStream; myStream = saveFileDialog.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312")); string str = ""; DateTime start = DateTime.Now; try { if (sBTText != "") { sw.WriteLine(sBTText); } //写标题 bool sFirstCol = true; for (int i = 0; i < grdMain.ColumnCount; i++) { if (i > 0 && grdMain.Columns[i].HeaderText.Substring(0, 1) != "h" && grdMain.Columns[i].HeaderText.Substring(0, 1) != "H" && sFirstCol != true) { str += "\t"; } if (grdMain.Columns[i].HeaderText.Substring(0, 1) != "h" && grdMain.Columns[i].HeaderText.Substring(0, 1) != "H") { sFirstCol = false; str += grdMain.Columns[i].HeaderText; } } str = str.Replace("\n", ""); sw.WriteLine(str); //写内容 for (int j = 0; j < grdMain.Rows.Count; j++) { string tempStr = ""; sFirstCol = true; for (int k = 0; k < grdMain.Columns.Count; k++) { if (k > 0 && grdMain.Columns[k].HeaderText.Substring(0, 1) != "h" && grdMain.Columns[k].HeaderText.Substring(0, 1) != "H" && sFirstCol != true) { tempStr += "\t"; } if (grdMain.Columns[k].HeaderText.Substring(0, 1) != "h" && grdMain.Columns[k].HeaderText.Substring(0, 1) != "H") { sFirstCol = false; if (grdMain.Rows[j].Cells[k].Value == null) { tempStr += string.Empty; } else { tempStr += grdMain.Rows[j].Cells[k].Value.ToString(); } } } tempStr = tempStr.Replace("\n", ""); 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() + "毫秒"); } } #endregion //快速查询 private void btnOK_Click(object sender, EventArgs e) { Sub_FastQuery(); } //快速过滤 private void Sub_FastQuery() { string sFastSQL = ""; //单据号 if (txtHBillNo.Text.Trim() != "") { sFastSQL = sFastSQL + " and 单据号 like '%" + txtHBillNo.Text.Trim() + "%'"; } if (sFastSQL.Trim() == "") { MessageBox.Show("没有输入条件!"); return; } sDlgWhere = sFastSQL; Display(); sDlgWhere = ""; } //重新同步 private void btnTB_Click(object sender, EventArgs e) { DataSet DS = oWeb.getDataSetBySQL("exec h_p_WMS_ERPSourceBillToLocal '" + txtHBillNo2.Text.Trim() + "','" + ModName + "'", "h_p_WMS_ERPSourceBillToLocal", ref DBUtility.ClsPub.sExeReturnInfo); if (DS == null) { MessageBox.Show("同步单据失败!"); } else { if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBack"]) == "2") { MessageBox.Show(DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBackRemark"])); } else { MessageBox.Show("同步单据成功!"); Display(); } } } GridppReport Report; private void yl_Click(object sender, EventArgs e) { //选择打印模板 SCM.Gy_OpenTmp oFrm = new SCM.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(false); Thread.Sleep(1000); } } private void Sub_SetReport(string sOpenTmp) { //判断行数 // Report = new GridppReport(); Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf"); //here . Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord); Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable); } //赋值表头 private void ReportBeforePostRecord()// { try { Report.FieldByName("单据号").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("单据号")].Value); //Report.FieldByName("流转卡数量").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("流转卡数量")].Value); //Report.FieldByName("产品代码").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("产品代码")].Value); //Report.FieldByName("产品名称").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("产品名称")].Value); //Report.FieldByName("产品规格").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("规格型号")].Value); //Report.FieldByName("计划开工日期").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("计划开工日期")].Value); //Report.FieldByName("计划完工日期").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("计划完工日期")].Value); Report.FieldByName("生产车间").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("生产车间")].Value); Report.FieldByName("日期").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("日期")].Value); Report.FieldByName("制单人").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("制单人")].Value); Report.FieldByName("审核人").AsString = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[selectRow].Cells[Fun_GetCol("审核人")].Value); } catch (Exception e) { MessageBox.Show("打印失败,[单据号],[生产车间],[日期],[制单人],[审核人]." + e.Message); } } //赋值表体 private void ReportFetchRecordByDataTable() { DataTable oDt = new DataTable(); BLL.Utility.FillRecordToReport(Report, grdSub, oDt, 0); } private void dy_Click(object sender, EventArgs e) { //选择打印模板 SCM.Gy_OpenTmp oFrm = new SCM.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.Print(true); Thread.Sleep(1000); } } } }