华恒Mes鼎捷代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1127 lines
54 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Linq;
using System.Linq;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.BandedGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid;
using System.IO;
using System.Threading;
using ICSSoft.Base.Language.Tool;
using ICSSoft.Base.Config.AppConfig;
using ICSSoft.Base.UserControl.MessageControl;
using ICSSoft.Base.Config.DBHelper;
using ICSSoft.Base.Report.Filter;
using ICSSoft.Base.UserControl.FormControl;
using ICSSoft.Base.Report.GridReport;
using ICSSoft.Base.ReferForm.AppReferForm;
using ICSSoft.Frame.Data.BLL;
using DevExpress.XtraPrinting;
using System.Data.SqlClient;
using ICSSoft.Frame.Data.Entity;
namespace ICSSoft.Frame.APP
{
public partial class FormICSPACKINGINPUT : DevExpress.XtraEditors.XtraForm
{
FramDataContext context = new FramDataContext(AppConfig.AppConnectString);
List<string> MOCode = new List<string>();
List<string> MOBITEMCODE = new List<string>();
List<string> TransNO = new List<string>();
List<string> MOBITE_MCODE = new List<string>();
public string TransferNO = "";
private string sqltxt = "";
private string sqlconn = "";
String guid = AppConfig.GetGuid();
private DataTable dataSource = null;
#region 构造函数
public FormICSPACKINGINPUT()
{
InitializeComponent();
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
this.WindowState = FormWindowState.Maximized;
}
#endregion
#region 操作权限
public DataTable RightOfExute()
{
DataTable rData = new DataTable();
rData.Columns.Add("BtnName");
rData.Columns.Add("ActionName");
//查看权限(必须有)
DataRow seeRow = rData.NewRow();
seeRow["BtnName"] = "see";
seeRow["ActionName"] = "查看";
rData.Rows.Add(seeRow);
List<Control> ControlList = new List<Control>();
ControlList.Add(btnModify);
ControlList.Add(btnOutPut);
ControlList.Add(btnShow);
ControlList.Add(btnSave);
ControlList.Add(btnDel);
foreach (Control ctr in ControlList)
{
if (ctr.GetType() == typeof(SimpleButton))
{
DataRow dr = rData.NewRow();
dr["BtnName"] = ctr.Name;
dr["ActionName"] = ctr.Text;
rData.Rows.Add(dr);
}
}
rData.AcceptChanges();
return rData;
}
public DataTable RightOfData()// 数据权限
{
DataTable rData = new DataTable();
rData.Columns.Add("BodyName");
rData.Columns.Add("ControlName");
rData.Columns.Add("ControlCaption");
rData.AcceptChanges();
return rData;
}
#endregion
#region 退出
private void btnClose_Click(object sender, EventArgs e)
{
AppConfig.CloseFormShow(this.Text);
this.Close();
}
private void btnExit_Click(object sender, EventArgs e)
{
AppConfig.CloseFormShow(this.Text);
this.Close();
}
#endregion
#region 移动窗体
private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;
//首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
//系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
//假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
//同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
//重写窗体,使窗体可以不通过自带标题栏实现移动
protected override void WndProc(ref Message m)
{
//当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
//当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
//这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
//注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
if ((int)m.Result == HTCLIENT)
m.Result = (IntPtr)HTCAPTION;
return;
}
//拦截双击标题栏、移动窗体的系统消息
if (m.Msg != 0xA3)
{
base.WndProc(ref m);
}
}
#endregion
#region 列表
private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
#endregion
#region 过滤
private string tempTableName = "";
private void btnFilter_Click(object sender, EventArgs e)
{
FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
filter.OldTempTableName = tempTableName;
if (filter.ShowDialog() == DialogResult.OK)
{
DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
try
{
_wait.Show();
tempTableName = filter.NewTempTableName;
sqltxt = filter.SqlText;
sqlconn = filter.FilterConnectString;
dataSource = filter.FilterData.Tables[0];
grdDetail.DataSource = dataSource;
grvDetail.BestFitColumns();
_wait.Close();
}
catch (Exception ex)
{
MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
_wait.Close();
}
}
}
#endregion
#region 绑定数据源
private void btnConfig_Click(object sender, EventArgs e)
{
if (AppConfig.UserCode.ToLower() != "demo")
{
ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!");
return;
}
FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name);
fdata.ShowDialog();
}
#endregion
#region 过滤方法
private void FormContainerManager_FormClosing(object sender, FormClosingEventArgs e)
{
AppConfig.DropTemTable(tempTableName);
}
#endregion
#region 全选
private void btnSelectAll_Click(object sender, EventArgs e)
{
grvDetail.PostEditor();
this.Validate();
for (int i = 0; i < grvDetail.RowCount; i++)
{
grvDetail.SetRowCellValue(i, colisSelect, "Y");
}
}
#endregion
#region 全消
private void btnCancelAll_Click(object sender, EventArgs e)
{
grvDetail.PostEditor();
this.Validate();
for (int i = 0; i < grvDetail.RowCount; i++)
{
grvDetail.SetRowCellValue(i, colisSelect, "");
}
}
#endregion
#region 双击
private void grvDetail_DoubleClick(object sender, EventArgs e)
{
if (grvDetail.FocusedRowHandle < 0)
{
return;
}
if (grvDetail.FocusedColumn == colisSelect)
{
if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
{
grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
}
else
{
grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
}
}
}
#endregion
#region 导出
private void btnOutPut_Click(object sender, EventArgs e)
{
try
{
FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
foe.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//FormOutExcel foe = new FormOutExcel();
//if (foe.ShowDialog() == DialogResult.OK)
//{
// try
// {
// string outtype = foe._OutType;
// string exceltype = foe._ExcelType;
// string filename = foe._FileName;
// string url = foe._Url;
// string sheetname = foe._SheetName;
// if (outtype.ToLower() == "excel")
// {
// DevExpress.XtraPrinting.XlsExportOptions op = new DevExpress.XtraPrinting.XlsExportOptions();
// op.SheetName = sheetname;
// grdDetail.MainView.ExportToXls((url + "\\" + filename + (exceltype == "2003" ? ".xls" : ".xlsx")), op);
// gridViewGroup.MainView.ExportToXls((url + "\\" + filename + (exceltype == "2003" ? ".xls" : ".xlsx")), op);
// }
// else
// {
// grdDetail.MainView.ExportToPdf(url + "\\" + filename + ".pdf");
// gridViewGroup.MainView.ExportToPdf(url + "\\" + filename + ".pdf");
// }
// MessageBox.Show("导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
// }
// catch (Exception ex)
// {
// MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
// }
//}
}
#endregion
#region 刷新
private void btnRefresh_Click(object sender, EventArgs e)
{
if (sqlconn == null || sqlconn == "")
{
return;
}
gridViewGroup.DataSource = null;
DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
try
{
_wait.Show();
FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name), false);
filter.OldTempTableName = tempTableName;
dataSource = DBHelper.ExecuteDataset(sqlconn, CommandType.Text, sqltxt).Tables[0];
grdDetail.DataSource = dataSource;
grvDetail.BestFitColumns();
_wait.Close();
}
catch (Exception ex)
{
MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
_wait.Close();
}
}
#endregion
#region 修改
private void btnModify_Click(object sender, EventArgs e)
{
SimpleButton btntemp = (SimpleButton)sender;
if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
{
ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
return;
}
DataTable dt = null;
if (grvViewGroup.DataSource.GetType().Name == "DataView")
{
dt = ((DataView)grvViewGroup.DataSource).ToTable();
}
else if (grvViewGroup.DataSource.GetType().Name == "DataTable")
{
dt = ((DataTable)grvViewGroup.DataSource);
}
if (dt == null || dt.Rows.Count == 0)
{
return;
}
#region 修改逻辑
//MOBITEMCODE.Clear();
//for (int i = 0; i < dt.Rows.Count;i++ )
//{
// MOBITEMCODE.Add(dt.Rows[i]["MOBITEMCODE"].ToString());
//}
//FormICSPACKINGINPUTADD add = new FormICSPACKINGINPUTADD(MOBITEMCODE);
#endregion
#region 现逻辑
TransNO.Clear();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (!TransNO.Contains(dt.Rows[i]["TransferNO"].ToString()))
{
TransNO.Add(dt.Rows[i]["TransferNO"].ToString());
}
}
FormICSPACKINGINPUTADD add = new FormICSPACKINGINPUTADD(TransNO);
#endregion
add.ShowDialog();
this.show();
}
#endregion
#region 打印
private void btnPrint_Click(object sender, EventArgs e)
{
try
{
this.grvDetail.OptionsView.RowAutoHeight = true;
PrintingSystem print = new DevExpress.XtraPrinting.PrintingSystem();
PrintableComponentLink link = new PrintableComponentLink(print);
DevExpress.XtraPrintingLinks.CompositeLink compositeLink = new DevExpress.XtraPrintingLinks.CompositeLink();
print.Links.Add(link);
link.Component = grdDetail;//这里可以是可打印的部件
link.Margins.Top = 50;
link.Margins.Bottom = 0;
link.Margins.Left = 0;
link.Margins.Right = 0;
string _PrintHeader = lblTitle.Text;
PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;
phf.Header.Content.Clear();
phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" });
phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold);
phf.Header.LineAlignment = BrickAlignment.Center;
link.CreateDocument(); //建立文档
print.PreviewFormEx.Show();//进行预览
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
try
{
this.grvViewGroup.OptionsView.RowAutoHeight = true;
PrintingSystem print = new DevExpress.XtraPrinting.PrintingSystem();
PrintableComponentLink link = new PrintableComponentLink(print);
DevExpress.XtraPrintingLinks.CompositeLink compositeLink = new DevExpress.XtraPrintingLinks.CompositeLink();
print.Links.Add(link);
link.Component = gridViewGroup;//这里可以是可打印的部件
link.Margins.Top = 50;
link.Margins.Bottom = 0;
link.Margins.Left = 0;
link.Margins.Right = 0;
string _PrintHeader = lblTitle.Text;
PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;
phf.Header.Content.Clear();
phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" });
phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold);
phf.Header.LineAlignment = BrickAlignment.Center;
link.CreateDocument(); //建立文档
print.PreviewFormEx.Show();//进行预览
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
#endregion
private void show()
{
string sql = @"SELECT * FROM ICSPACKINGINPUT where TransferNO='" + TransferNO + "' order by TransferLineNo ";
sql = string.Format(sql, TransferNO);
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
gridViewGroup.DataSource = dt;
}
private void ICSItemLot_FormClosing(object sender, FormClosingEventArgs e)
{
AppConfig.DropTemTable(tempTableName);
}
private void FormICSPACKINGINPUT_Load(object sender, EventArgs e)
{
btnFilter_Click(sender, e);
}
private void grvDetail_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
if (e.RowHandle >= 0 && e.Column.FieldName == "DCTCODE")
{
e.CellValue = "cccc";
}
}
public void SearchX(string DocNo)
{
try
{
context = new FramDataContext(AppConfig.AppConnectString);
List<ICSMO> mos = new List<ICSMO>();
List<ICSPACKINGINPUT> puts = new List<ICSPACKINGINPUT>();
List<ICSPACKINGINPUTLog> logs = new List<ICSPACKINGINPUTLog>();
Dictionary<string, string> dit = new Dictionary<string, string>();//键值对,工单单号+行号
for (int i = 0; i < grvDetail.RowCount; i++)
{
if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
{
dit.Add(grvDetail.GetRowCellValue(i, colMOCODE).ToString(), grvDetail.GetRowCellValue(i, colMOSEQ).ToString());
}
}
//不判断重复
//获取MO详细信息
foreach (string key in dit.Keys)
{
var hasMo = context.ICSMO.SingleOrDefault(a => a.MOCODE == key && a.MOSEQ == dit[key].ToString());
if (hasMo == null)
throw new Exception("单号:" + key + " 行号:" + dit[key].ToString() + " 不存在!");
ICSMO mo = new ICSMO();
mo.MOCODE = key;
mo.MOSEQ = dit[key].ToString();
mo.MOPLANQTY = hasMo.MOPLANQTY;
mo.ITEMCODE = hasMo.ITEMCODE;
mos.Add(mo);
}
//汇总子件信息
int sign = 0;
foreach (ICSMO mo in mos)
{
var boms =
from a in context.ICSMOBOM where a.ITEMCODE == mo.ITEMCODE && a.MOCODE == mo.MOCODE select a;
// context.ICSMOBOM.Where(a=>a.ITEMCODE==mo.ITEMCODE&&a.MOCODE==mo.MOCODE);
foreach (ICSMOBOM bom in boms)
{
bool b = false;
foreach (ICSPACKINGINPUT iput in puts)
{
if (bom.MOBITEMCODE == iput.MOBITEMCODE)
{
iput.MOBITEMQTY += bom.MOBITEMQTY;
b = true;
}
}
if (b) continue;
sign++;
var inv = context.ICSINVENTORY.SingleOrDefault(a => a.INVCODE == bom.MOBITEMCODE);
if (inv == null) throw new Exception("料号:" + bom.MOBITEMCODE + " 在ICSINVENTORY表中不存在");
ICSPACKINGINPUT put = new ICSPACKINGINPUT();
put.ID = AppConfig.GetGuid();
put.TransferNO = DocNo;
put.TransferLineNo = sign.ToString();
put.MOBITEMCODE = bom.MOBITEMCODE;
put.MOBITEMQTY = bom.MOBITEMQTY;
put.CINVNAME = inv.INVNAME;
put.CINVTYPE = inv.INVTYPE;
put.INVUOM = inv.INVUOM;
put.Status = "开立";
put.MUSER = AppConfig.UserCode;
put.MUSERName = AppConfig.UserName;
put.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
puts.Add(put);
ICSPACKINGINPUTLog log = new ICSPACKINGINPUTLog();
log.ID = AppConfig.GetGuid();
log.TransferNO = DocNo;
log.MOCODE = mo.MOCODE;
log.MOBITEMCODE = bom.MOBITEMCODE;
log.CINVNAME = inv.INVNAME;
log.CINVTYPE = inv.INVTYPE;
log.INVUOM = inv.INVUOM;
log.MUSER = AppConfig.UserCode;
log.MUSERName = AppConfig.UserName;
log.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
log.MOBITEMQTY = put.MOBITEMQTY;
logs.Add(log);
}
}
//插入数据
context.Connection.Open();
context.Transaction = context.Connection.BeginTransaction();
foreach (ICSPACKINGINPUT put in puts)
{
context.ICSPACKINGINPUT.InsertOnSubmit(put);
context.SubmitChanges();
}
foreach (ICSPACKINGINPUTLog log in logs)
{
context.ICSPACKINGINPUTLog.InsertOnSubmit(log);
context.SubmitChanges();
}
context.Transaction.Commit();
string sql = @"SELECT * FROM ICSPACKINGINPUT where TransferNO='" + DocNo + "' order by TransferLineNo ";
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
gridViewGroup.DataSource = dt;
grvViewGroup.BestFitColumns();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public void Search()
{
DataTable dt = new DataTable();
DataTable ds = new DataTable();
dt.Clear();
ds.Clear();
MOCode.Clear();
MOBITEMCODE.Clear();
for (int i = 0; i < grvDetail.RowCount; i++)
{
if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
{
MOCode.Add(grvDetail.GetRowCellValue(i, colMOCODE).ToString());
}
}
if (MOCode.Count <= 1)
{
try
{
string sql = @"SELECT c.MOCODE,
c.MOBITEMCODE,
c.CINVNAME,
c.CINVTYPE,
c.INVUOM,
CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
ISNULL(d.QTYXBC, 0) AS QTYXBC
FROM
(SELECT
a.MOCODE,
a.MOBITEMCODE,
b.INVNAME AS CINVNAME,
b.INVSTD AS CINVTYPE,
b.INVUOM,
b.INVMACHINETYPE,
SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
FROM ICSMOBOM a
LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
WHERE a.MOCODE = '{0}' AND a.WorkPoint = '{1}'
GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE) c
LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) d ON c.MOBITEMCODE=d.INVCode AND c.INVMACHINETYPE=d.WHCode
ORDER BY c.MOBITEMCODE";
sql = string.Format(sql, grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colMOCODE).ToString(), AppConfig.WorkPointCode);
dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
foreach (DataRow dr in dt.Rows)
{
MOBITEMCODE.Add(dr["MOBITEMCODE"].ToString());
}
if (!this.Insert(grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colMOCODE).ToString()))
{
foreach (DataRow dr in dt.Rows)
{
SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
SqlCommand com = conn.CreateCommand();
SqlTransaction tran;
conn.Open();
tran = conn.BeginTransaction();
com.Transaction = tran;
try
{
string sqlText = @"insert into ICSPACKINGINPUT (TransferNO, MOBITEMCODE, CINVNAME, CINVTYPE, INVUOM, MUSER, MUSERName, MTIME, MOBITEMQTY, Status)
values (@TransferNO, @MOBITEMCODE, @CINVNAME, @CINVTYPE, @MUSER, @MUSER, @MUSERName, @MTIME, @MOBITEMQTY, '开立')";
com.CommandText = sqlText;
com.Parameters.Clear();
com.Parameters.AddWithValue("@TransferNO", TransferNO);
com.Parameters.AddWithValue("@MOBITEMCODE", dr["MOBITEMCODE"].ToString());
com.Parameters.AddWithValue("@CINVNAME", dr["CINVNAME"].ToString());
com.Parameters.AddWithValue("@CINVTYPE", dr["CINVTYPE"].ToString());
com.Parameters.AddWithValue("@INVUOM", dr["INVUOM"].ToString());
com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
com.Parameters.AddWithValue("@MUSERName", AppConfig.UserName);
com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
com.Parameters.AddWithValue("@MOBITEMQTY", dr["MOBITEMQTY"].ToString());
com.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
}
foreach (DataRow dr in dt.Rows)
{
SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
SqlCommand com = conn.CreateCommand();
SqlTransaction tran;
conn.Open();
tran = conn.BeginTransaction();
com.Transaction = tran;
try
{
string sqlText = @"insert into ICSPACKINGINPUTLog (TransferNO, MOCODE, MOBITEMCODE, CINVNAME, CINVTYPE, INVUOM, MUSER, MUSERName, MTIME, MOBITEMQTY)
values (@TransferNO, @MOCODE, @MOBITEMCODE, @CINVNAME, @CINVTYPE, @MUSER, @MUSER, @MUSERName, @MTIME, @MOBITEMQTY)";
com.CommandText = sqlText;
com.Parameters.Clear();
com.Parameters.AddWithValue("@TransferNO", TransferNO);
com.Parameters.AddWithValue("@MOCODE", dr["MOCODE"].ToString());
com.Parameters.AddWithValue("@MOBITEMCODE", dr["MOBITEMCODE"].ToString());
com.Parameters.AddWithValue("@CINVNAME", dr["CINVNAME"].ToString());
com.Parameters.AddWithValue("@CINVTYPE", dr["CINVTYPE"].ToString());
com.Parameters.AddWithValue("@INVUOM", dr["INVUOM"].ToString());
com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
com.Parameters.AddWithValue("@MUSERName", AppConfig.UserName);
com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
com.Parameters.AddWithValue("@MOBITEMQTY", dr["MOBITEMQTY"].ToString());
com.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
}
gridViewGroup.DataSource = this.InsertX(grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colMOCODE).ToString());
}
else
{
gridViewGroup.DataSource = this.InsertX(grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colMOCODE).ToString());
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
else
{
string where = "";
for (int i = 0; i < MOCode.Count; i++)
{
if (i == 0)
{
where = MOCode[0];
}
else
{
where += "' or a.MOCODE ='" + MOCode[i] + " ";
}
}
try
{
for (int i = 0; i < MOCode.Count; i++)
{
if (!this.Insert(MOCode[i]))
{
if (i == 0)
{
try
{
string sqltxt = @"SELECT X.MOBITEMCODE, X.CINVNAME, X.CINVTYPE, X.INVUOM, SUM(X.MOBITEMQTY) AS MOBITEMQTY FROM
(SELECT c.MOCODE,
c.MOBITEMCODE,
c.CINVNAME,
c.CINVTYPE,
c.INVUOM,
CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
ISNULL(d.QTYXBC, 0) AS QTYXBC
FROM
(SELECT
a.MOCODE,
a.MOBITEMCODE,
b.INVNAME AS CINVNAME,
b.INVSTD AS CINVTYPE,
b.INVUOM,
b.INVMACHINETYPE,
SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
FROM ICSMOBOM a
LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
WHERE (a.MOCODE = '{0}') AND a.WorkPoint = '{1}'
GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE) c
LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) d ON c.MOBITEMCODE=d.INVCode AND c.INVMACHINETYPE=d.WHCode) X
GROUP BY X.MOBITEMCODE, X.CINVNAME, X.CINVTYPE, X.INVUOM";
sqltxt = string.Format(sqltxt, MOCode[i], AppConfig.WorkPointCode);
dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltxt).Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
foreach (DataRow dr in dt.Rows)
{
MOBITEMCODE.Add(dr["MOBITEMCODE"].ToString());
}
foreach (DataRow dr in dt.Rows)
{
SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
SqlCommand com = conn.CreateCommand();
SqlTransaction tran;
conn.Open();
tran = conn.BeginTransaction();
com.Transaction = tran;
try
{
string sqlText = @"insert into ICSPACKINGINPUT (TransferNO, MOBITEMCODE, CINVNAME, CINVTYPE, INVUOM, MUSER, MUSERName, MTIME, MOBITEMQTY, Status)
values (@TransferNO, @MOBITEMCODE, @CINVNAME, @CINVTYPE, @MUSER, @MUSER, @MUSERName, @MTIME, @MOBITEMQTY, '开立')";
com.CommandText = sqlText;
com.Parameters.Clear();
com.Parameters.AddWithValue("@TransferNO", TransferNO);
com.Parameters.AddWithValue("@MOBITEMCODE", dr["MOBITEMCODE"].ToString());
com.Parameters.AddWithValue("@CINVNAME", dr["CINVNAME"].ToString());
com.Parameters.AddWithValue("@CINVTYPE", dr["CINVTYPE"].ToString());
com.Parameters.AddWithValue("@INVUOM", dr["INVUOM"].ToString());
com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
com.Parameters.AddWithValue("@MUSERName", AppConfig.UserName);
com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
com.Parameters.AddWithValue("@MOBITEMQTY", dr["MOBITEMQTY"].ToString());
com.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
}
}
else if (MOCode[i - 1] != MOCode[i])
{
try
{
string sqltxt = @"SELECT X.MOBITEMCODE, X.CINVNAME, X.CINVTYPE, X.INVUOM, SUM(X.MOBITEMQTY) AS MOBITEMQTY FROM
(SELECT c.MOCODE,
c.MOBITEMCODE,
c.CINVNAME,
c.CINVTYPE,
c.INVUOM,
CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
ISNULL(d.QTYXBC, 0) AS QTYXBC
FROM
(SELECT
a.MOCODE,
a.MOBITEMCODE,
b.INVNAME AS CINVNAME,
b.INVSTD AS CINVTYPE,
b.INVUOM,
b.INVMACHINETYPE,
SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
FROM ICSMOBOM a
LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
WHERE (a.MOCODE = '{0}') AND a.WorkPoint = '{1}'
GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE) c
LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) d ON c.MOBITEMCODE=d.INVCode AND c.INVMACHINETYPE=d.WHCode) X
GROUP BY X.MOBITEMCODE, X.CINVNAME, X.CINVTYPE, X.INVUOM";
sqltxt = string.Format(sqltxt, MOCode[i], AppConfig.WorkPointCode);
dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltxt).Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
foreach (DataRow dr in dt.Rows)
{
MOBITEMCODE.Add(dr["MOBITEMCODE"].ToString());
}
foreach (DataRow dr in dt.Rows)
{
SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
SqlCommand com = conn.CreateCommand();
SqlTransaction tran;
conn.Open();
tran = conn.BeginTransaction();
com.Transaction = tran;
try
{
string sqlText = @"insert into ICSPACKINGINPUT (TransferNO, MOBITEMCODE, CINVNAME, CINVTYPE, INVUOM, MUSER, MUSERName, MTIME, MOBITEMQTY, Status)
values (@TransferNO, @MOBITEMCODE, @CINVNAME, @CINVTYPE, @MUSER, @MUSER, @MUSERName, @MTIME, @MOBITEMQTY, '开立')";
com.CommandText = sqlText;
com.Parameters.Clear();
com.Parameters.AddWithValue("@TransferNO", TransferNO);
com.Parameters.AddWithValue("@MOBITEMCODE", dr["MOBITEMCODE"].ToString());
com.Parameters.AddWithValue("@CINVNAME", dr["CINVNAME"].ToString());
com.Parameters.AddWithValue("@CINVTYPE", dr["CINVTYPE"].ToString());
com.Parameters.AddWithValue("@INVUOM", dr["INVUOM"].ToString());
com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
com.Parameters.AddWithValue("@MUSERName", AppConfig.UserName);
com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
com.Parameters.AddWithValue("@MOBITEMQTY", dr["MOBITEMQTY"].ToString());
com.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
}
}
}
else
{
try
{
string sqltxt = @"SELECT X.MOBITEMCODE, X.CINVNAME, X.CINVTYPE, X.INVUOM, SUM(X.MOBITEMQTY) AS MOBITEMQTY FROM
(SELECT c.MOCODE,
c.MOBITEMCODE,
c.CINVNAME,
c.CINVTYPE,
c.INVUOM,
CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
ISNULL(d.QTYXBC, 0) AS QTYXBC
FROM
(SELECT
a.MOCODE,
a.MOBITEMCODE,
b.INVNAME AS CINVNAME,
b.INVSTD AS CINVTYPE,
b.INVUOM,
b.INVMACHINETYPE,
SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
FROM ICSMOBOM a
LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
WHERE (a.MOCODE = '{0}') AND a.WorkPoint = '{1}'
GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE) c
LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) d ON c.MOBITEMCODE=d.INVCode AND c.INVMACHINETYPE=d.WHCode) X
GROUP BY X.MOBITEMCODE, X.CINVNAME, X.CINVTYPE, X.INVUOM";
sqltxt = string.Format(sqltxt, MOCode[i], AppConfig.WorkPointCode);
dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltxt).Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
foreach (DataRow dr in dt.Rows)
{
MOBITEMCODE.Add(dr["MOBITEMCODE"].ToString());
}
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
try
{
for (int i = 0; i < MOCode.Count; i++)
{
if (!this.Insert(MOCode[i]))
{
try
{
string sqltxt = @"SELECT c.MOCODE,
c.MOBITEMCODE,
c.CINVNAME,
c.CINVTYPE,
c.INVUOM,
CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
ISNULL(d.QTYXBC, 0) AS QTYXBC
FROM
(SELECT
a.MOCODE,
a.MOBITEMCODE,
b.INVNAME AS CINVNAME,
b.INVSTD AS CINVTYPE,
b.INVUOM,
b.INVMACHINETYPE,
SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
FROM ICSMOBOM a
LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
WHERE (a.MOCODE = '{0}') AND a.WorkPoint = '{1}'
GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE) c
LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) d ON c.MOBITEMCODE=d.INVCode AND c.INVMACHINETYPE=d.WHCode
ORDER BY c.MOBITEMCODE";
sqltxt = string.Format(sqltxt, MOCode[i], AppConfig.WorkPointCode);
dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltxt).Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
foreach (DataRow dr in dt.Rows)
{
MOBITEMCODE.Add(dr["MOBITEMCODE"].ToString());
}
foreach (DataRow dr in dt.Rows)
{
SqlConnection conn = new SqlConnection(AppConfig.AppConnectString);
SqlCommand com = conn.CreateCommand();
SqlTransaction tran;
conn.Open();
tran = conn.BeginTransaction();
com.Transaction = tran;
try
{
string sqlText = @"insert into ICSPACKINGINPUTLog (TransferNO, MOCODE, MOBITEMCODE, CINVNAME, CINVTYPE, INVUOM, MUSER, MUSERName, MTIME, MOBITEMQTY)
values (@TransferNO, @MOCODE, @MOBITEMCODE, @CINVNAME, @CINVTYPE, @MUSER, @MUSER, @MUSERName, @MTIME, @MOBITEMQTY)";
com.CommandText = sqlText;
com.Parameters.Clear();
com.Parameters.AddWithValue("@TransferNO", TransferNO);
com.Parameters.AddWithValue("@MOCODE", dr["MOCODE"].ToString());
com.Parameters.AddWithValue("@MOBITEMCODE", dr["MOBITEMCODE"].ToString());
com.Parameters.AddWithValue("@CINVNAME", dr["CINVNAME"].ToString());
com.Parameters.AddWithValue("@CINVTYPE", dr["CINVTYPE"].ToString());
com.Parameters.AddWithValue("@INVUOM", dr["INVUOM"].ToString());
com.Parameters.AddWithValue("@Muser", AppConfig.UserName);
com.Parameters.AddWithValue("@MUSERName", AppConfig.UserName);
com.Parameters.AddWithValue("@Mtime", DateTime.Now.ToString());
com.Parameters.AddWithValue("@MOBITEMQTY", dr["MOBITEMQTY"].ToString());
com.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
}
}
dt = this.InsertX(MOCode[i]);
ds.Merge(dt);
}
DataView dv = new DataView(ds);
string[] strComuns = { "TransferNO", "MOBITEMCODE", "CINVNAME", "CINVTYPE", "INVUOM", "MOBITEMQTY", "Status" };
ds = dv.ToTable(true, strComuns);
gridViewGroup.DataSource = ds;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
private void btnShow_Click(object sender, EventArgs e)
{
TransferNO = this.GetTransferNO();
this.SearchX(TransferNO);
}
private string GetTransferNO()
{
string time=DateTime.Now.ToString("yyMMdd");;
context = new FramDataContext(AppConfig.AppConnectString);
var no = context.ICSPACKINGINPUT.Where(a => a.TransferNO.StartsWith("T2" + time)).Max(c=>c.TransferNO);
if (no == null)
return TransferNO = "T2" + time + "001";
else
return TransferNO = "T" + (Decimal.Parse(no.Substring(1, no.Length - 1)) + 1).ToString();
#region
//string sql = @"SELECT A.TransferNO FROM ICSPACKINGINPUT A";
//sql = string.Format(sql);
//DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
//if (dt != null && dt.Rows.Count > 0)
//{
// sql = @"SELECT MAX(A.TransferNO) AS TransferNO FROM ICSPACKINGINPUT A";
// sql = string.Format(sql);
// dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
// if (dt != null && dt.Rows.Count > 0)
// {
// TransferNO = dt.Rows[0]["TransferNO"].ToString();
// }
// if (TransferNO.Length == 10)
// {
// return TransferNO = TransferNO.Substring(0, 8) + (Decimal.Parse(TransferNO.Substring(8, 2)) + 1).ToString();
// }
// else
// {
// return TransferNO = "T" + (Decimal.Parse(TransferNO.Substring(1, TransferNO.Length - 1)) + 1).ToString();
// }
//}
//else
//{
// return TransferNO = "T2" + DateTime.Now.ToString("yyyyMMddHHmmss").Substring(2, 6) + "01";
//}
#endregion
}
private void btnTrans_Click(object sender, EventArgs e)
{
if (grvViewGroup.DataSource == null)
{
ICSBaseSimpleCode.AppshowMessageBox("生成的调拨单物料信息不能为空");
return;
}
DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在生成调拨单请稍等...");
try
{
for (int i = 0; i < grvViewGroup.RowCount; i++)
{
string sql = @"update ICSPACKINGINPUT set TransferNO = '{0}' where 1=1 and MOBITEMCODE='" + grvViewGroup.GetRowCellValue(i, colMOBITEMCODE1).ToString() + "'";
sql = string.Format(sql, TransferNO);
DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
}
for (int i = 0; i < grvViewGroup.RowCount; i++)
{
string sql = @"update ICSPACKINGINPUTLog set TransferNO = '{0}' where 1=1 and MOBITEMCODE='" + grvViewGroup.GetRowCellValue(i, colMOBITEMCODE1).ToString() + "'";
sql = string.Format(sql, TransferNO);
DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
}
_wait.Close();
}
catch (Exception ex)
{
_wait.Close();
ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
}
}
private bool Insert(string MOCODE)
{
bool insert = false;
string sql = @"SELECT C.TransferNO, C.MOBITEMCODE, C.CINVNAME, C.CINVTYPE, C.INVUOM, C.MOBITEMQTY
FROM ICSPACKINGINPUTLog C WHERE C.MOCODE = '{0}'";
sql = string.Format(sql, MOCODE);
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
if (dt.Rows.Count > 0)
{
insert = true;
}
return insert;
}
private DataTable InsertX(string MOCODE)
{
string sql = @"SELECT A.TransferNO, A.MOBITEMCODE, A.CINVNAME, A.CINVTYPE, A.INVUOM, A.MOBITEMQTY, A.Status
FROM ICSPACKINGINPUT A WHERE A.TransferNO IN (SELECT B.TransferNO FROM ICSPACKINGINPUTLog B WHERE B.MOCODE = '{0}')";
sql = string.Format(sql, MOCODE);
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
return dt;
}
private void btnSave_Click(object sender, EventArgs e)
{
SimpleButton btntemp = (SimpleButton)sender;
if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
{
ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
return;
}
#region 另一逻辑
//List<string> Trans = new List<string>();
//for (int i = 0; i < grvViewGroup.RowCount; i++)
//{
// if (i == 0)
// {
// Trans.Add(grvViewGroup.GetRowCellValue(i, colTransferNO).ToString());
// }
// else
// {
// if (grvViewGroup.GetRowCellValue(i - 1, colTransferNO).ToString() != grvViewGroup.GetRowCellValue(i, colTransferNO).ToString())
// {
// Trans.Add(grvViewGroup.GetRowCellValue(i, colTransferNO).ToString());
// }
// }
//}
//FormICSPACKINGINPUTIN add = new FormICSPACKINGINPUTIN(Trans);
#endregion
FormICSPACKINGINPUTIN add = new FormICSPACKINGINPUTIN();
add.ShowDialog();
}
private void btnDel_Click(object sender, EventArgs e)
{
SimpleButton btntemp = (SimpleButton)sender;
if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
{
ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
return;
}
FormICSPACKINGINPUTOUT add = new FormICSPACKINGINPUTOUT();
add.ShowDialog();
}
}
}