using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Stone.Common; using Stone.Entity; using Stone.WinBiz.JISAdmin; using System.IO; using System.Threading; namespace Stone.WinModule.AssembleAdmin { public partial class frmEdiPrintAssembleScan : Stone.WinModule.frmBase { string PackageGroupName = ""; int PackageQty = 0; public frmEdiPrintAssembleScan() { InitializeComponent(); } private void frmEdiPrintAssembleScan_Load(object sender, EventArgs e) { try { PackageGroupName = MyAppconfig.ReadValue("JIS扫描打印类型"); PackageQty = Convert.ToInt32(MyAppconfig.ReadValue("JIS扫描打印装箱数")); this.lblPackageGroupName.Text = PackageGroupName + " (" + PackageQty + ")"; GetOrderScan(null); ReOrderUpdateGrid(); timer2.Enabled = true; } catch (Exception ex) { MyMessageBox.ShowMessagePop(ex.Message); } } private void txtBillNo_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { Gm_WMS.DataAccess.DataService.LocalDBService db = null; try { db = new Gm_WMS.DataAccess.DataService.LocalDBService(); db.BeginTrans(); string OrderNumber = this.txtBillNo.Text.Trim().ToUpper(); if (OrderNumber == "") throw new Exception("请扫描订单号"); OrderNumber = OrderNumber + "1"; Entity_t_JIS_Seq5000 t_JIS_Seq5000 = new Entity_t_JIS_Seq5000(db); if (!chkNow.Checked) { DataSet dsNow = t_JIS_Seq5000.GetData("top 1 *", "[OrderNumber]='" + OrderNumber + "' and [PackageGroupName]='" + PackageGroupName + "' ", "[ID] desc"); if (dsNow.Tables[0].Rows.Count == 0) throw new Exception(OrderNumber + " 不存在"); if (Convert.ToBoolean(dsNow.Tables[0].Rows[0]["IsTransport"]) == true) throw new Exception(OrderNumber + " 已经扫描过了"); if (Convert.ToBoolean(dsNow.Tables[0].Rows[0]["IsPrintAssemble"]) == false) throw new Exception(OrderNumber + " 未打印,不能扫描"); DataSet dsNext = t_JIS_Seq5000.GetData("top 1 *", "[IsPrintAssemble]=0 and [PackageGroupName]='" + PackageGroupName + "'", "[SwetTime] asc, [CallOffNumber] asc"); if (dsNext.Tables[0].Rows.Count == 0) throw new Exception("当前无可用打印数据"); t_JIS_Seq5000.Edit("[IsTransport]=1", "[ID]=" + dsNow.Tables[0].Rows[0]["ID"].ToString()); t_JIS_Seq5000.Edit("[IsPrintAssemble]=1", "[ID]=" + dsNext.Tables[0].Rows[0]["ID"].ToString()); AddPrintAssemble(dsNow.Tables[0].Rows[0]["OrderNumber"].ToString(), db); ShowInfo(dsNext, t_JIS_Seq5000); dsNext.Tables[0].TableName = "BillHead"; F_JIS5000_Print.PrintAssembly(dsNext); F_JIS5000_Print.PrintAssemblyLabel(dsNext); string filename = WriteMES(dsNow, false); FtpMES(filename); } else { if (GetOrderScan(t_JIS_Seq5000) != "") throw new Exception("系统中还有未扫描订单,请先扫描"); DataSet dsNow = t_JIS_Seq5000.GetData("top 1 *", "[OrderNumber]='" + OrderNumber + "' and [PackageGroupName]='" + PackageGroupName + "' ", "[ID] desc"); if (dsNow.Tables[0].Rows.Count == 0) throw new Exception(OrderNumber + " 不存在"); if (Convert.ToBoolean(dsNow.Tables[0].Rows[0]["IsPrintAssemble"]) == true) throw new Exception(OrderNumber + " 已经打印过了"); t_JIS_Seq5000.Edit("[IsPrintAssemble]=1", "[ID]=" + dsNow.Tables[0].Rows[0]["ID"].ToString()); ShowInfo(dsNow, t_JIS_Seq5000); dsNow.Tables[0].TableName = "BillHead"; F_JIS5000_Print.PrintAssembly(dsNow); F_JIS5000_Print.PrintAssemblyLabel(dsNow); } db.Commit(); } catch (Exception ex) { if (db != null) db.Rollback(); MyMessageBox.ShowMessagePop(ex.Message); } finally { this.txtBillNo.Focus(); this.txtBillNo.SelectAll(); if (db != null) db.EndTrans(); } } } private void chkNow_CheckedChanged(object sender, EventArgs e) { if (this.chkNow.Checked) { this.groupBox1.Text = this.chkNow.Text; } else { this.groupBox1.Text = "扫描上一个订单"; } } private void ShowInfo(DataSet dsData, Entity_t_JIS_Seq5000 t_JIS_Seq5000) { this.lblOrderNumber.Text = "订单号:" + dsData.Tables[0].Rows[0]["OrderNumber"].ToString(); this.lblVariant.Text = "车 型:" + dsData.Tables[0].Rows[0]["Variant"].ToString(); this.lblPartColor.Text = "颜 色:" + dsData.Tables[0].Rows[0]["PartColor"].ToString(); GetOrderScan(t_JIS_Seq5000); } private string GetOrderScan(Entity_t_JIS_Seq5000 t_JIS_Seq5000) { if (t_JIS_Seq5000 == null) t_JIS_Seq5000 = new Entity_t_JIS_Seq5000(); string ret = ""; DataSet dsData = t_JIS_Seq5000.GetData("top 1 *", "IsPrintAssemble=1 and IsTransport=0 and [PackageGroupName]='" + PackageGroupName + "'", "[ID] desc"); if (dsData.Tables[0].Rows.Count > 0) { ret = dsData.Tables[0].Rows[0]["OrderNumber"].ToString(); } this.lblOrderNumberScan.Text = "未扫描订单:" + ret; return ret; } private void AddPrintAssemble(string OrderNumber, Gm_WMS.DataAccess.DataService.LocalDBService db) { Entity_t_JIS_PrintAssemble t_JIS_PrintAssemble = new Entity_t_JIS_PrintAssemble(db); DataRow drNew = null; drNew = t_JIS_PrintAssemble.Table.NewRow(); drNew["OrderNumber"] = OrderNumber; drNew["PackageGroupName"] = PackageGroupName; drNew["SuperMarket"] = "SMA"; t_JIS_PrintAssemble.Add(drNew); drNew = t_JIS_PrintAssemble.Table.NewRow(); drNew["OrderNumber"] = OrderNumber; drNew["PackageGroupName"] = PackageGroupName; drNew["SuperMarket"] = "SMB"; t_JIS_PrintAssemble.Add(drNew); } #region ftp_mes private static string WriteMES(DataSet dsData, bool isReOrder) { string ID = dsData.Tables[0].Rows[0]["ID"].ToString(); string OrderNumber = dsData.Tables[0].Rows[0]["OrderNumber"].ToString(); DateTime SwetTime = Convert.ToDateTime(dsData.Tables[0].Rows[0]["SwetTime"]); string CheckSequence = dsData.Tables[0].Rows[0]["CheckSequence"].ToString(); EntityBase v_JIS_Tod = new Entity_v_JIS_Tod(); if (isReOrder) v_JIS_Tod = new Entity_v_JIS_Tod_ReOrder(); DataSet dsTod = v_JIS_Tod.GetData("[SeqID]=" + dsData.Tables[0].Rows[0]["ID"].ToString()); StreamWriter sw = null; string filename = ""; try { filename = MyIO.GetAppPath() + "\\MES_BAK\\"; if (!Directory.Exists(filename)) { Directory.CreateDirectory(filename); } filename += ID + ".csv"; OrderNumber = OrderNumber.Substring(0, OrderNumber.Length - 1); sw = new StreamWriter(filename, false, Encoding.Default); foreach (DataRow drData in dsTod.Tables[0].Rows) { string partNumber = drData["partNumber"].ToString().Trim(); string line = ID + ","; line += OrderNumber + ","; line += MyDateTime.Format(SwetTime, MyDateTimeType.Date) + ","; line += MyDateTime.Format(SwetTime, MyDateTimeType.Time3) + ","; line += "\"" + drData["PartsFamily"].ToString() + "\","; line += "\"" + drData["SupplyGroup"].ToString() + "\","; line += drData["Variant1"].ToString() + ","; line += partNumber + ","; line += drData["description"].ToString() + ","; line += drData["ColorName"].ToString() + "(" + drData["ColorCode"].ToString() + ")" + ","; line += drData["quantity"].ToString() + ","; line += CheckSequence + ","; line += (partNumber.Length > 2 ? partNumber.Substring(partNumber.Length - 2, 2) : "") + ","; line += "AAB" + ","; line += drData["Variant"].ToString(); sw.WriteLine(line); } } catch (Exception ex) { MyLogger.Write(ex.Message); } finally { if (sw != null) sw.Close(); } return ID + ".csv"; } private static void FtpMES(string filename) { Thread thread = new Thread(FtpMES); thread.Start((object)filename); } private static void FtpMES(object filename) { try { string MES_AutoSend = MyAppconfig.ReadValue("MES_AutoSend").Trim(); string MES_Path = MyAppconfig.ReadValue("MES_Path").Trim(); if (MES_AutoSend == "是") { string path = MyIO.GetAppPath() + "\\MES_BAK"; File.Copy(path + "\\" + filename.ToString(), MES_Path + "\\" + filename.ToString()); } } catch (Exception ex) { MyLogger.Write(ex.Message); } } #endregion #region 处理ReOrder订单 private void timer2_Tick(object sender, EventArgs e) { try { ReOrderUpdateGrid(); } catch (Exception ex) { MyMessageBox.ShowMessagePop(ex.Message); } } private void ReOrderUpdateGrid() { Entity_t_JIS_Seq5000_ReOrder t_JIS_Seq5000_ReOrder = new Entity_t_JIS_Seq5000_ReOrder(); DataSet dsReOrder = t_JIS_Seq5000_ReOrder.GetData("ID, OrderNumber, partNumber, PartName, SwetTime", "IsPrintAssemble=0 and PackageGroupName='" + PackageGroupName + "'", "[SwetTime] asc"); this.dgReOrder.DataSource = dsReOrder.Tables[0]; this.dgReOrder.Columns["ID"].Visible = false; this.dgReOrder.Columns["OrderNumber"].HeaderText = "订单号"; this.dgReOrder.Columns["partNumber"].HeaderText = "零件号"; this.dgReOrder.Columns["PartName"].HeaderText = "描述"; this.dgReOrder.Columns["PartName"].Width = 260; this.dgReOrder.Columns["SwetTime"].HeaderText = "时间"; this.dgReOrder.Columns["SwetTime"].Width = 180; } private void btnReOrder_Click(object sender, EventArgs e) { Gm_WMS.DataAccess.DataService.LocalDBService db = null; try { if (this.dgReOrder.SelectedRows.Count == 0) throw new Exception("请选择一条ReOrder订单"); string OrderNumber = this.dgReOrder.SelectedRows[0].Cells["OrderNumber"].Value.ToString(); db = new Gm_WMS.DataAccess.DataService.LocalDBService(); db.BeginTrans(); Entity_t_JIS_Seq5000_ReOrder t_JIS_Seq5000_ReOrder = new Entity_t_JIS_Seq5000_ReOrder(db); DataSet dsNow = t_JIS_Seq5000_ReOrder.GetData("top 1 *", "[OrderNumber]='" + OrderNumber + "' and [PackageGroupName]='" + PackageGroupName + "' ", "[ID] desc"); if (dsNow.Tables[0].Rows.Count == 0) throw new Exception(OrderNumber + " 不存在"); if (Convert.ToBoolean(dsNow.Tables[0].Rows[0]["IsPrintAssemble"]) == true) throw new Exception(OrderNumber + " 已经打印了"); t_JIS_Seq5000_ReOrder.Edit("[IsPrintAssemble]=1,[IsTransport]=1", "[ID]=" + dsNow.Tables[0].Rows[0]["ID"].ToString()); AddPrintAssemble(dsNow.Tables[0].Rows[0]["OrderNumber"].ToString(), db); dsNow.Tables[0].TableName = "BillHead"; F_JIS5000_Print_ReOrder.PrintAssembly(dsNow); F_JIS5000_Print_ReOrder.PrintAssemblyLabel(dsNow); string filename = WriteMES(dsNow, true); FtpMES(filename); db.Commit(); ReOrderUpdateGrid(); } catch (Exception ex) { if (db != null) db.Rollback(); MyMessageBox.ShowMessagePop(ex.Message); } finally { if (db != null) db.EndTrans(); } } #endregion } }