using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Text;
|
using System.Windows.Forms;
|
using System.Runtime.InteropServices;
|
using gregn6Lib;
|
using SQLHelper;
|
|
namespace APSM
|
{
|
public partial class KF_LackMaterialAnalyse : Form //
|
{
|
public KF_LackMaterialAnalyse()
|
{
|
InitializeComponent();
|
}
|
public KF_LackMaterialAnalyseDetail oDetailDlg = new KF_LackMaterialAnalyseDetail();
|
public const Int16 FixCols = 7;
|
DAL.ClsSc_ICMOSortBill oMain=new DAL.ClsSc_ICMOSortBill();
|
public string ModName = "";
|
public string ModCaption = "车间缺料分析";
|
|
public const int HNumberCol = 0;
|
public const int HNameCol = 1;
|
public const int HModelCol = 2;
|
public const int HKCQtyCol = 3;
|
public const int HZTQtyCol = 4;
|
public const int HWFQtyCol = 5;
|
public const int HTotalCol = 6;
|
#region 固定代码
|
|
private void initGrid()
|
{
|
grdMain.Cols =7;
|
grdMain.Rows =2;
|
grdMain.FixedCols = 0;
|
grdMain.FixedRows = 2;
|
grdMain.ExplorerBar = VSFlex7.ExplorerBarSettings.flexExSort;
|
grdMain.AllowBigSelection = false;
|
grdMain.AllowSelection = false;
|
grdMain.SelectionMode = VSFlex7.SelModeSettings.flexSelectionByRow;
|
grdMain.ScrollTrack = true;
|
grdMain.WordWrap = true;
|
grdMain.set_ColWidth(-1, 1500);
|
grdMain.set_RowHeight(-1, 400);
|
grdMain.set_RowHeight(0, 500);
|
//隐藏列
|
grdMain.set_RowHidden(1, true);
|
grdMain.RowHeightMin = 250;
|
grdMain.Editable = VSFlex7.EditableSettings.flexEDNone;
|
grdMain.AllowUserResizing = VSFlex7.AllowUserResizeSettings.flexResizeBoth;
|
grdMain.AllowUserFreezing = VSFlex7.AllowUserFreezeSettings.flexFreezeBoth;
|
grdMain.set_FixedAlignment(-1, VSFlex7.AlignmentSettings.flexAlignCenterCenter);
|
grdMain.AutoSizeMode = VSFlex7.AutoSizeSettings.flexAutoSizeColWidth;
|
grdMain.set_TextMatrix(0, HNumberCol, "物料代码");
|
grdMain.set_TextMatrix(0, HNameCol, "物料名称");
|
grdMain.set_TextMatrix(0, HModelCol, "物料型号");
|
grdMain.set_TextMatrix(0, HKCQtyCol, "即时库存");
|
grdMain.set_TextMatrix(0, HZTQtyCol, "在途采购");
|
grdMain.set_TextMatrix(0, HWFQtyCol, "未发数");
|
grdMain.set_TextMatrix(0, HTotalCol, "合计");
|
grdMain.FrozenCols = 7;
|
//
|
LoadDateCol(28);
|
Sc_ICMOSortBillFun.GetGrid(grdMain, this.Name);
|
}
|
//得到对应列
|
private int Fun_GetCol(string sColName)
|
{
|
return Sc_ICMOSortBillFun.Fun_GetCol(sColName, grdMain);
|
}
|
|
private void tc_Click(object sender, EventArgs e)
|
{
|
this.Close();
|
}
|
|
KF_LackMaterialAnalyseDlg oDlg = new KF_LackMaterialAnalyseDlg();
|
private void cx_Click(object sender, EventArgs e)
|
{
|
oDlg.ShowDialog();
|
if (oDlg.IsOk == 1)
|
{
|
timer1.Enabled = true;
|
}
|
}
|
//设置报表名称
|
private void SetFormCaption()
|
{
|
this.Text = ModCaption;
|
lblCaption.Text = this.Text;
|
initGrid();//网格标题初始化
|
initHeadCaption();//表头初始化
|
}
|
|
|
private void Frm_EasyReport_Load(object sender, EventArgs e)
|
{
|
SetFormCaption();
|
}
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
{
|
timer1.Enabled = false;
|
if (Fun_AllowQuery())
|
{
|
System.Windows.Forms.Application.DoEvents();
|
Query();
|
System.Windows.Forms.Application.DoEvents();
|
}
|
}
|
|
private void Xs_SellOutPriceReport_KeyUp(object sender, KeyEventArgs e)
|
{
|
if (e.KeyValue == 13)
|
timer1.Enabled = true;
|
}
|
|
private void mrlk_Click(object sender, EventArgs e)
|
{
|
Sc_ICMOSortBillFun.DefaultGrid(grdMain, this.Name);
|
}
|
|
private void bclk_Click(object sender, EventArgs e)
|
{
|
//保存列宽
|
Sc_ICMOSortBillFun.SaveGrid(grdMain, this.Name);
|
}
|
|
//打印
|
private void dy_Click(object sender, EventArgs e)
|
{
|
//Sub_SetReport();
|
//Report.Print(true);
|
}
|
//预览
|
private void view_Click(object sender, EventArgs e)
|
{
|
//Sub_SetReport();
|
//Report.PrintPreview(true);
|
}
|
|
#endregion
|
|
#region 界面处理
|
//初始化表头显示
|
private void initHeadCaption()
|
{
|
|
}
|
|
private bool Fun_AllowQuery()//审核查询条件
|
{
|
//if (txtHBDeptID.Text.Trim().Length == 0)
|
//{
|
// MessageBox.Show(this, "请选择开始部门!", "提示");
|
// return false;
|
//}
|
return true;
|
}
|
|
private void Query()
|
{
|
string sSQL = "";
|
long lngCount =0;
|
int i =0;
|
int r =0;
|
int c =0;
|
Single cSumAmount=0;
|
Single ctmpAmount=0;
|
string sNewDate="";
|
int m =0;
|
grdMain.Redraw = VSFlex7.RedrawSettings.flexRDNone;
|
initGrid();
|
oDetailDlg.initGrid();
|
//
|
sNewDate = oMain.GetNewSetup(DBUtility.ClsPub.isLong(oDlg.txtHBDeptID.Tag)).ToShortDateString(); //得到最新排程
|
//加载投料记录
|
oMain.FillData(DBUtility.ClsPub.isLong(oDlg.txtHBDeptID.Tag));
|
//
|
System.Windows.Forms.Application.DoEvents();
|
sSQL = "exec h_p_Sc_GetICMOSortBillList "+DBUtility.ClsPub.isLong(oDlg.txtHBDeptID.Tag).ToString()+",'"+sNewDate+"'";
|
SQLHelper.ClsCN oCn=new ClsCN();
|
DataSet DS=oCn.RunProcReturn(sSQL,"gy_Material");
|
pb1.Maximum = DS.Tables[0].Rows.Count;
|
pb1.Visible = true;
|
for(i=0;i<DS.Tables[0].Rows.Count;i++)
|
{
|
InputTLD(DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[i]["HNumber"])
|
, DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[i]["HSourceName"])
|
, DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[i]["HICMOBillNo"])
|
, DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[i]["HSplitNo"])
|
, DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[i]["HDate"])
|
, DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[i]["HQty"]));
|
System.Windows.Forms.Application.DoEvents();
|
pb1.Value=i;
|
System.Windows.Forms.Application.DoEvents();
|
|
}
|
pb1.Visible = false;
|
//设置未发数
|
for( i=oDetailDlg.grdMain.FixedRows;i<oDetailDlg.grdMain.Rows;i++)
|
{
|
r = -1;
|
if( DBUtility.ClsPub.isSingle(oDetailDlg.grdMain.get_TextMatrix(i, 4)) -DBUtility.ClsPub.isSingle(oDetailDlg.grdMain.get_TextMatrix(i, 5)) != 0 )
|
{
|
r = FindRow(oDetailDlg.grdMain.get_TextMatrix(i, 0));
|
if( r != -1 )
|
{
|
//设置未发数
|
grdMain.set_TextMatrix(r,5,Convert.ToString(DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(r,5))
|
+DBUtility.ClsPub.isSingle(oDetailDlg.grdMain.get_TextMatrix(i,4))
|
-DBUtility.ClsPub.isSingle(oDetailDlg.grdMain.get_TextMatrix(i,5))));
|
}
|
}
|
}
|
//判断 未发数和 库存是否 够用
|
for(i=grdMain.FixedRows;i<grdMain.Rows;i++)
|
{
|
grdMain.set_Cell(VSFlex7.CellPropertySettings.flexcpBackColor, i, 3,i,3 ,DBUtility.ClsPub.Enum_Color.hx_Write);
|
grdMain.set_Cell(VSFlex7.CellPropertySettings.flexcpForeColor, i, 3,i,3, DBUtility.ClsPub.Enum_Color.hx_Black);
|
//
|
if (DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(i, 5)) -DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(i, 3)) > 0 )
|
{
|
//库存不足显示红色
|
grdMain.set_Cell(VSFlex7.CellPropertySettings.flexcpForeColor, i, 3, i , 3 ,DBUtility.ClsPub.Enum_Color.hx_Red);
|
}
|
}
|
//
|
for( i=grdMain.FixedRows;i<grdMain.Rows;i++)
|
{
|
ctmpAmount = 0;
|
cSumAmount =DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(i, 6))
|
- DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(i, 5))
|
+ DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(i, 3));
|
for( m=7;m<grdMain.Cols;m++)
|
{
|
ctmpAmount = ctmpAmount + DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(i, m));
|
if( ctmpAmount > cSumAmount)
|
{
|
grdMain.set_Cell(VSFlex7.CellPropertySettings.flexcpForeColor, i, m, i, m, DBUtility.ClsPub.Enum_Color.hx_Red);
|
}
|
}
|
//===================
|
}
|
grdMain.Redraw = VSFlex7.RedrawSettings.flexRDBuffered;
|
System.Windows.Forms.Application.DoEvents();
|
}
|
|
|
private void InputTLD(string sItemNumber ,string sJT ,string sSCRWDH ,string sPGDH ,string sDate ,string sQuantity )
|
{
|
int c;
|
int r;
|
int w;
|
Single bl=0;
|
long i;
|
long SUM ;
|
List<DAL.Cls_ICTLDetail> oColl;
|
if( sQuantity.Trim() != "" )
|
{
|
oColl=oMain.GetTLColl(sSCRWDH);
|
if(oColl==null || oColl.Count==0)
|
{
|
return ;
|
}
|
foreach(DAL.Cls_ICTLDetail oTLDetail in oColl)
|
{
|
r = FindRow( oTLDetail.WLDM );
|
if(r==-1)
|
{
|
grdMain.Rows=grdMain.Rows+1;
|
r = grdMain.Rows - 1;
|
}
|
grdMain.set_TextMatrix(r,0,oTLDetail.WLDM);
|
grdMain.set_TextMatrix(r, 1,oTLDetail.WLMC);
|
grdMain.set_TextMatrix(r, 2,oTLDetail.GGXH);
|
grdMain.set_TextMatrix(r, 3,oTLDetail.StockAmount.ToString()); // 'GetSumStockAmount(otldetail.wldm)
|
grdMain.set_TextMatrix(r, 4,oTLDetail.OrderAmount.ToString()); //'GetSumOrderAmount(otldetail.wldm)
|
grdMain.set_TextMatrix(r, 5,"");
|
c = FindCol(sDate);
|
if( c != -1 )
|
{
|
if( oTLDetail.FAuxQty != 0)
|
{
|
bl = oTLDetail.JHTLS / oTLDetail.FAuxQty;
|
}
|
if( DBUtility.ClsPub.isSingle(sQuantity) * bl != 0)
|
{
|
grdMain.set_TextMatrix(r, c,Convert.ToString( DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(r,c))+ DBUtility.ClsPub.isSingle(sQuantity)*bl));
|
grdMain.set_TextMatrix(r, 6,Convert.ToString( DBUtility.ClsPub.isSingle(grdMain.get_TextMatrix(r,6))+ DBUtility.ClsPub.isSingle(sQuantity)*bl));
|
}
|
}
|
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
r = FindDetailRow(oTLDetail.WLDM, oTLDetail.MainWLDM, sSCRWDH);
|
if( r == -1 )
|
{
|
oDetailDlg.grdMain.Rows = oDetailDlg.grdMain.Rows + 1;
|
r = oDetailDlg.grdMain.Rows - 1;
|
}
|
oDetailDlg.grdMain.set_TextMatrix(r, 0, oTLDetail.WLDM);
|
oDetailDlg.grdMain.set_TextMatrix(r, 1, oTLDetail.WLMC);
|
oDetailDlg.grdMain.set_TextMatrix(r, 2, oTLDetail.GGXH);
|
oDetailDlg.grdMain.set_TextMatrix(r, 3, sSCRWDH);
|
oDetailDlg.grdMain.set_TextMatrix(r, 4, oTLDetail.YFSL.ToString());
|
oDetailDlg.grdMain.set_TextMatrix(r, 5, oTLDetail.LLS.ToString());
|
oDetailDlg.grdMain.set_TextMatrix(r, 6, oTLDetail.BLS.ToString());
|
oDetailDlg.grdMain.set_TextMatrix(r, 7, sPGDH);
|
oDetailDlg.grdMain.set_TextMatrix(r, 8, oTLDetail.MainWLDM);
|
oDetailDlg.grdMain.set_TextMatrix(r, 9, oTLDetail.MainWLMC);
|
oDetailDlg.grdMain.set_TextMatrix(r, 10, sJT);
|
//
|
c = FindDetailCol(sDate);
|
if( c != -1 )
|
{
|
if( oTLDetail.FAuxQty != 0)
|
{
|
bl = oTLDetail.JHTLS / oTLDetail.FAuxQty;
|
}
|
if( DBUtility.ClsPub.isSingle(sQuantity) * bl != 0)
|
{
|
oDetailDlg.grdMain.set_TextMatrix(r, c ,Convert.ToString( DBUtility.ClsPub.isSingle(sQuantity) * bl));
|
oDetailDlg.grdMain.set_TextMatrix(r, 11,Convert.ToString( DBUtility.ClsPub.isSingle(oDetailDlg.grdMain.get_TextMatrix(r, 11)) + DBUtility.ClsPub.isSingle(sQuantity) * bl));
|
}
|
}
|
|
}
|
}
|
}
|
//
|
public int FindRow(string sItemCode)
|
{
|
// '通过物料编码查找数据所在的行
|
for(int r=grdMain.FixedRows;r<grdMain.Rows ;r++)
|
{
|
if(DBUtility.ClsPub.isStrNull(grdMain.get_TextMatrix(r, 0)).Trim() == sItemCode.Trim())
|
{
|
return r;
|
}
|
}
|
return -1;// '''未找到
|
}
|
//
|
public int FindCol(string sDate)
|
{
|
// '通过日期查找日期所归属的列
|
for(int c=7;c<grdMain.Cols;c++)
|
{
|
if (DBUtility.ClsPub.isStrNull(grdMain.get_TextMatrix(1, c)) == Convert.ToDateTime(sDate).ToString("yyyy-MM-dd"))
|
{
|
return c;
|
}
|
}
|
return -1;// '未找到
|
}
|
//
|
public int FindDetailRow(string sItemCode,string sMainItemCode ,string sRWDH)
|
{
|
//'通过日期查找日期所归属的列
|
// '通过物料编码查找数据所在的行
|
int r;
|
for(r=oDetailDlg.grdMain.FixedRows ;r<oDetailDlg.grdMain.Rows ;r++)
|
{
|
if (DBUtility.ClsPub.isStrNull(oDetailDlg.grdMain.get_TextMatrix(r, 0)).Trim() == sItemCode.Trim()
|
&& DBUtility.ClsPub.isStrNull(oDetailDlg.grdMain.get_TextMatrix(r, 8)).Trim() == sMainItemCode.Trim()
|
&& DBUtility.ClsPub.isStrNull(oDetailDlg.grdMain.get_TextMatrix(r, 3)).Trim() == sRWDH.Trim())
|
{
|
return r;
|
}
|
}
|
return -1;// '未找到
|
}
|
|
public int FindDetailCol(string sDate)
|
{
|
//'通过日期查找日期所归属的列
|
for(int c = 12;c< oDetailDlg.grdMain.Cols ;c++)
|
{
|
if (DBUtility.ClsPub.isStrNull(oDetailDlg.grdMain.get_TextMatrix(1, c)).Trim() == Convert.ToDateTime(sDate).ToString("yyyy-MM-dd"))
|
{
|
return c;
|
}
|
}
|
return -1;// '未找到
|
}
|
|
private void Display()
|
{
|
//
|
}
|
|
#endregion
|
|
#region 打印设置
|
|
//打印设置
|
GridppReport Report;
|
//设置打印模版路径
|
private void Sub_SetReport()
|
{
|
//Report = new GridppReport();
|
//Report.LoadFromFile(ClsPub.AppPath + @"\Report\应收款明细表.grf"); //here .
|
//Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
|
//Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
|
}
|
//填入单据表头信息
|
private void ReportBeforePostRecord()//your report?kao
|
{
|
//Report.FieldByName("HDateItemID").AsString = lblHDateItemID.Text;
|
//Report.FieldByName("CusNumber").AsString = lblHCusNumber.Text;
|
//Report.FieldByName("CusName").AsString = lblHCusName.Text;
|
//Report.FieldByName("BeginBalance").AsString = lblHBeginBalance.Text;
|
}
|
//填入单据明细信息
|
private void ReportFetchRecordByDataTable()
|
{
|
//Utility.FillRecordToReport(Report, grdMain, false);
|
}
|
#endregion
|
|
#region 数据导出
|
|
[DllImport("User32.dll", CharSet = CharSet.Auto)]
|
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
|
private void yc_Click(object sender, EventArgs e)
|
{
|
//string saveFileName = "";
|
//bool fileSaved = false;
|
//SaveFileDialog saveDialog = new SaveFileDialog();
|
//saveDialog.DefaultExt = "xls";
|
//saveDialog.Filter = "Excel文件|*.xls";
|
//saveDialog.FileName = this.Text;
|
//saveDialog.ShowDialog();
|
//saveFileName = saveDialog.FileName;
|
//if (saveFileName.IndexOf(":") < 0) return; //被点了取消
|
////
|
//Excel.Application xlApp = new Excel.Application();
|
|
//if (xlApp == null)
|
//{
|
// MessageBox.Show(this, "无法创建Excel对象,可能您的机子未安装Excel", "提示");
|
// return;
|
//}
|
//Excel.Workbooks workbooks = xlApp.Workbooks;
|
//Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
|
//Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
|
////写入 标题
|
//for (int i = 0; i < grdMain.Cols; i++)
|
//{
|
// worksheet.Cells[1, i + 1] = ClsPub.isStrNull(grdMain.get_TextMatrix(0, i));
|
//}
|
////写入内容
|
//for (int r = grdMain.FixedRows; r < grdMain.Rows; r++)
|
//{
|
// for (int i = grdMain.FixedCols; i < grdMain.Cols; i++)
|
// {
|
// worksheet.Cells[r + 1, i + 1] = ClsPub.isStrNull(grdMain.get_TextMatrix(r, i));
|
// }
|
// System.Windows.Forms.Application.DoEvents();
|
//}
|
//worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
|
|
//if (saveFileName != "")
|
//{
|
// try
|
// {
|
// workbook.Saved = true;
|
// workbook.SaveCopyAs(saveFileName);
|
// fileSaved = true;
|
// }
|
// catch (Exception ex)
|
// {
|
// fileSaved = false;
|
// MessageBox.Show(this, "导出文件时出错,文件可能正被打开!\n" + ex.Message, "提示");
|
// }
|
//}
|
//else
|
//{
|
// fileSaved = false;
|
//}
|
//xlApp.Quit();
|
|
//IntPtr t = new IntPtr(xlApp.Hwnd); //得到这个句柄,具体作用是得到这块内存入口
|
//int k = 0;
|
//GetWindowThreadProcessId(t, out k); //得到本进程唯一标志k
|
//System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用
|
//p.Kill(); //关闭进程k
|
//xlApp = null;
|
////GC.Collect();//强行销毁
|
//if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
|
|
}
|
#endregion
|
|
|
private void timer2_Tick(object sender, EventArgs e)
|
{
|
timer2.Enabled = false;
|
oDlg.ShowDialog();
|
if (oDlg.IsOk == 1)
|
{
|
timer1.Enabled = true;
|
}
|
}
|
//加载 当月日期
|
private void LoadDateCol(int iDates)
|
{
|
Sc_ICMOSortBillFun.LoadDateCol(grdMain, FixCols, iDates);
|
}
|
|
private void grdMain_DblClick(object sender, EventArgs e)
|
{
|
if( grdMain.Row >= grdMain.FixedRows && grdMain.Row < grdMain.Rows)
|
{
|
string sSQL;
|
oDetailDlg.sWLDM =DBUtility.ClsPub.isStrNull( grdMain.get_TextMatrix(grdMain.Row, HNumberCol));
|
oDetailDlg.LoadData();
|
oDetailDlg.ShowDialog();
|
}
|
}
|
}
|
}
|