diff --git a/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.Designer.cs b/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.Designer.cs index cc7082d..f3b19c2 100644 --- a/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.Designer.cs +++ b/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.Designer.cs @@ -77,7 +77,7 @@ this.label3.Location = new System.Drawing.Point(3, 32); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(100, 20); - this.label3.Text = "装箱单号:"; + this.label3.Text = "托盘号:"; // // btnSubmit // @@ -104,6 +104,7 @@ this.btnDelete.Size = new System.Drawing.Size(72, 33); this.btnDelete.TabIndex = 14; this.btnDelete.Text = "删除记录"; + this.btnDelete.Visible = false; this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); // // lblState diff --git a/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.cs b/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.cs index 6d575c5..d4322c6 100644 --- a/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.cs +++ b/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.cs @@ -6,6 +6,7 @@ using System.Drawing; using System.Text; using System.Windows.Forms; using PDAForm.Comm; +using PDAForm.PDABiz; using PDAForm.SelectComm; namespace PDAForm.Bill.AsnBill @@ -13,6 +14,7 @@ namespace PDAForm.Bill.AsnBill public partial class frmAsnBill : Form { public F_AsnBill m_base = null; + private DataTable dtShipingVerificationHis,dtNowScan; public frmAsnBill() { InitializeComponent(); @@ -39,9 +41,15 @@ namespace PDAForm.Bill.AsnBill m_base = new F_AsnBill(); m_base.BillNo = this.txtBillNo.Text.Trim(); m_base.BillNew(this.dgShow); - + DataRow[] drs = m_base.dsBill.Tables[0].Select("[AsnNumber]='" + m_base.BillNo + "'"); + if (drs.Length == 0) + { + throw new Exception("ASN号 " + m_base.BillNo + " 在系统中不存在"); + } + //获取已校验的信息,系统支持多次校验 + dtShipingVerificationHis = m_base.GetShipingVerification(); + dtNowScan = dtShipingVerificationHis.Clone(); Total(); - this.txtBillNo.Enabled = true; } @@ -62,32 +70,57 @@ namespace PDAForm.Bill.AsnBill { if (e.KeyCode == Keys.Enter) { - if (m_base == null) throw new Exception("请选扫ASN编号!"); + if (m_base == null) throw new Exception("请先扫ASN编号!"); string BarCode = this.txtBarCode.Text.Trim(); if (BarCode.Length < 0) { - MyMessageBox.ShowErrorMessage("装箱单号不能为空!"); + MyMessageBox.ShowErrorMessage("托盘号不能为空!"); this.txtBarCode.Focus(); this.txtBarCode.SelectAll(); return; } - - DataRow[] drs = m_base.dsBill.Tables[0].Select("[PackageNo]='" + BarCode + "'"); - if (drs.Length == 0) + //托盘格式样例 5B602C2-04&00000044&02 零件号+分隔符+8位箱流水号+两位的数量 + var barList = BarCode.Split('&'); + var partCode = barList[0]; + var boxID = barList[1]; + var strQty = barList[2]; + + //之前提交的数据中是否采集过改托盘号 + DataRow[] drs = dtShipingVerificationHis.Select("[PackageNo]='" + BarCode + "'"); + if (drs.Length >0) { - throw new Exception("装箱单号 " + BarCode + " 在系统中不存在"); + throw new Exception("托盘号 " + BarCode + " 已扫描"); } - - if (Convert.ToInt32(drs[0]["IsCheck"]) == 1) + //本次扫描的数据中是否重复扫描该托盘号 + drs = dtNowScan.Select("[PackageNo]='" + BarCode + "'"); + if (drs.Length > 0) { - throw new Exception("装箱单号 " + BarCode + " 重复扫描"); + throw new Exception("托盘号 " + BarCode + " 已扫描"); } - - drs[0]["IsCheck"] = 1; - - Total(); - + //校验数量是否超出,校验零件号是否有效 + var rowAsn = m_base.dsBill.Tables[0].Select("[AsnNumber]='" + m_base.BillNo + "' and PartNumber = '" + partCode + "'"); + if (rowAsn.Length != 1) + { + throw new Exception("托盘号 " + BarCode + " 不在扫描的ASN " + m_base.BillNo + " 中!"); + } + else + { + var planQty = int.Parse(rowAsn[0]["Qty"].ToString()); + var checkQty = int.Parse(rowAsn[0]["CheckQty"].ToString()); + if (planQty < (checkQty + int.Parse(strQty))) + { + throw new Exception("托盘数量 " + strQty + " 超出待校验数量 " + (planQty-checkQty)); + } + } + rowAsn[0]["CheckQty"] = int.Parse(strQty) + int.Parse(rowAsn[0]["CheckQty"].ToString()); + //填加校验明细 + var scanInfo = dtNowScan.NewRow(); + scanInfo["AsnNumber"] = m_base.BillNo; + scanInfo["PackageNo"] = boxID; + scanInfo["UserName"] = UserInfo.UserName; + dtNowScan.Rows.Add(scanInfo); + Total(); this.txtBarCode.Focus(); this.txtBarCode.SelectAll(); } @@ -110,13 +143,7 @@ namespace PDAForm.Bill.AsnBill if (m_base == null) throw new Exception("没有需要提示的数据!"); if (MyMessageBox.ShowQuestion("是否要提交数据?")) { - if (m_base.dsBill.Tables[0].Select("[IsCheck]=0").Length > 0) - { - throw new Exception("有未扫描记录!"); - } - - - m_base.BillSubmit(); + m_base.BillSubmit(dtNowScan); m_base = null; Total(); @@ -180,18 +207,10 @@ namespace PDAForm.Bill.AsnBill else { int a1 = m_base.dsBill.Tables[0].Rows.Count; - int a2 = m_base.dsBill.Tables[0].Select("[IsCheck]=1").Length; + int a2 = m_base.dsBill.Tables[0].Select("Qty = CheckQty").Length; this.lblState.Text = a2 + "/" + a1; } - } - - - - - - - } } \ No newline at end of file diff --git a/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.resx b/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.resx index ea4f9aa..a721046 100644 --- a/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.resx +++ b/PDAForm/PDAForm/Bill/AsnBill/frmAsnBill.resx @@ -1,6 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + WEBPAD - - False - - text/microsoft-resx2.0System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + False + + \ No newline at end of file diff --git a/PDAForm/PDAForm/Bill/VDA/frmVDA.cs b/PDAForm/PDAForm/Bill/VDA/frmVDA.cs index 61feecb..50bb1bd 100644 --- a/PDAForm/PDAForm/Bill/VDA/frmVDA.cs +++ b/PDAForm/PDAForm/Bill/VDA/frmVDA.cs @@ -205,10 +205,6 @@ namespace PDAForm.Bill.VDA #endregion - } - - - } } \ No newline at end of file diff --git a/Stone.WinForm/Stone.Common.Dlls/Stone.Entity.dll b/Stone.WinForm/Stone.Common.Dlls/Stone.Entity.dll index 8be8a34..2ad2389 100644 Binary files a/Stone.WinForm/Stone.Common.Dlls/Stone.Entity.dll and b/Stone.WinForm/Stone.Common.Dlls/Stone.Entity.dll differ diff --git a/Stone.WinForm/Stone.DataService/Stone.DataService.Biz/Bill/F_BillAsn.cs b/Stone.WinForm/Stone.DataService/Stone.DataService.Biz/Bill/F_BillAsn.cs index 45433dd..b05131c 100644 --- a/Stone.WinForm/Stone.DataService/Stone.DataService.Biz/Bill/F_BillAsn.cs +++ b/Stone.WinForm/Stone.DataService/Stone.DataService.Biz/Bill/F_BillAsn.cs @@ -111,5 +111,31 @@ namespace Stone.DataService.Biz.Bill } + public DataSet GetVefiHis(Command cmd) + { + string AsnNumber = cmd.Pars[0]; + string UserName = cmd.Pars[1]; + + Entity_t_ShipingVerification t_ShipingVerification = new Entity_t_ShipingVerification(); + + DataSet dsData = t_ShipingVerification.GetData( + $"AsnNumber,PackageNo", + $"[AsnNumber]='{AsnNumber}'", + $"[PackageNo] desc"); + return dsData; + } + public DataSet GetASN(Command cmd) + { + string AsnNumber = cmd.Pars[0]; + string UserName = cmd.Pars[1]; + + Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA(); + + DataSet dsData = t_JIS_VDA.GetData( + $"PartNumber,Qty,CheckQty", + $"[AsnNumber]='{AsnNumber}'", + $"[PackageNo] desc"); + return dsData; + } } } diff --git a/Stone.WinForm/Stone.Entity/Stone.Entity.csproj b/Stone.WinForm/Stone.Entity/Stone.Entity.csproj index 47bb976..95b9b4e 100644 --- a/Stone.WinForm/Stone.Entity/Stone.Entity.csproj +++ b/Stone.WinForm/Stone.Entity/Stone.Entity.csproj @@ -64,6 +64,7 @@ + diff --git a/Stone.WinForm/Stone.WinBiz/JISAdmin/F_EDI_JIS5000Sequence.cs b/Stone.WinForm/Stone.WinBiz/JISAdmin/F_EDI_JIS5000Sequence.cs index bcaeb10..243a799 100644 --- a/Stone.WinForm/Stone.WinBiz/JISAdmin/F_EDI_JIS5000Sequence.cs +++ b/Stone.WinForm/Stone.WinBiz/JISAdmin/F_EDI_JIS5000Sequence.cs @@ -653,6 +653,9 @@ namespace Stone.WinBiz.JISAdmin var alertMsg5 = ""; //零件ReleaseID 不连续 var alertMsg6 = ""; + //零件号是否与PO绑定 + var alertMsg7 = ""; + status = "1"; //获取零件对应的版本号 add by jinh 20220419 @@ -672,6 +675,7 @@ namespace Stone.WinBiz.JISAdmin { // partRelese.PartCode = sp_line[1].Split(':')[0]; partRelese.PartCode = sp_line[3].Split(':')[0]; + partCode = sp_line[3].Split(':')[0]; } //LAB调整 RFF+AAN:1747' ADI+00001509+220308 // if (sp_line[0] == "ADI") @@ -695,6 +699,17 @@ namespace Stone.WinBiz.JISAdmin lstPartRelease.Add(partRelese); partRelese = new PartRelease(); } + + if (sp_line[0] == "RFF" && sp_line[1].Substring(0, 2) == "ON") + { + orderNumber = sp_line[1].Split(':')[1]; + //校验PO是否维护 + if (string.IsNullOrEmpty(orderNumber)) + { + strPartRelease += "零件号 " + partCode + " 未绑定PO!"; + alertMsg7 += "零件号 " + partCode + " 未绑定PO!" + Environment.NewLine; + } + } } //如果版本不连续,抛出异常,解析失败 考虑抛出在数据库中设置 if (alertMsg6.Trim() != "") @@ -712,6 +727,22 @@ namespace Stone.WinBiz.JISAdmin } } + //如果零件号未绑定PO,抛出异常,解析失败 考虑抛出在数据库中设置 + if (alertMsg7.Trim() != "") + { + //通过前台配置ReleaseID不联系是否继续接续 + var strsql = "select top 1 * from t_ErrTypeLevel where Code = '09' order by id desc"; + var dsErrLevel = db.Exec_DataSet(strsql); + if (dsErrLevel.Tables[0].Rows.Count > 0) + { + var errLevel = dsErrLevel.Tables[0].Rows[0]["ErrLevel"].ToString(); + if (errLevel == "0") + { + throw new Exception(strPartRelease); + } + } + } + foreach (string line_text in sp_text) { if (line_text.Trim() == "") continue; @@ -798,7 +829,6 @@ namespace Stone.WinBiz.JISAdmin if (sp_line[0] == "RFF" && sp_line[1].Substring(0,2) == "ON") { orderNumber = sp_line[1].Split(':')[1]; - //校验零件号是否失效 var strsql = ""; strsql = "select top 1 * from t_Product where Code = '" + partNumber + "' order by id desc"; diff --git a/Stone.WinForm/Stone.WinBiz/Stone.WinBiz.csproj b/Stone.WinForm/Stone.WinBiz/Stone.WinBiz.csproj index a9bb781..7158040 100644 --- a/Stone.WinForm/Stone.WinBiz/Stone.WinBiz.csproj +++ b/Stone.WinForm/Stone.WinBiz/Stone.WinBiz.csproj @@ -83,6 +83,7 @@ + diff --git a/Stone.WinForm/Stone.WinForm/frmMain.cs b/Stone.WinForm/Stone.WinForm/frmMain.cs index e817804..e30725e 100644 --- a/Stone.WinForm/Stone.WinForm/frmMain.cs +++ b/Stone.WinForm/Stone.WinForm/frmMain.cs @@ -182,7 +182,14 @@ namespace Stone.WinForm ShowWindow(frm); } + if (e.Node.Text == "零件订单管理") + { + Stone.WinModule.BasicData.frmPartPO frm = new WinModule.BasicData.frmPartPO(); + frm.m_Base = new WinBiz.BasicData.F_PartPO(); + frm.init(); + ShowWindow(frm); + } #endregion diff --git a/Stone.WinForm/Stone.WinModule/BasicData/F_Factory.cs b/Stone.WinForm/Stone.WinModule/BasicData/F_Factory.cs index 0f11856..9ac536e 100644 --- a/Stone.WinForm/Stone.WinModule/BasicData/F_Factory.cs +++ b/Stone.WinForm/Stone.WinModule/BasicData/F_Factory.cs @@ -103,7 +103,12 @@ namespace Stone.WinModule.BasicData return frm; } - + if (f_base.type == "PartPO") + { + frmPartPODetail frm = new frmPartPODetail(); + frm.m_Base = f_base; + return frm; + } return null; } } diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.Designer.cs b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.Designer.cs index 828d3ee..0ed1a6b 100644 --- a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.Designer.cs +++ b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.Designer.cs @@ -34,6 +34,7 @@ this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); this.chkUpload = new System.Windows.Forms.CheckBox(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.SuspendLayout(); // // btnSerach @@ -86,6 +87,11 @@ this.imageList1.Images.SetKeyName(3, "(25,41).png"); this.imageList1.Images.SetKeyName(4, "redo.png"); // + // openFileDialog1 + // + this.openFileDialog1.Filter = "Excel2007文件(*.xlsx)|*.xlsx|Excel2003文件(*.xls)|*.xls"; + this.openFileDialog1.Title = "选择要导入的文件"; + // // frmJISVDAASN // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -112,5 +118,6 @@ private System.Windows.Forms.DateTimePicker dateTimePicker1; private System.Windows.Forms.CheckBox chkUpload; private System.Windows.Forms.ImageList imageList1; + private System.Windows.Forms.OpenFileDialog openFileDialog1; } } diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs index c37c2fb..d1ddd26 100644 --- a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs +++ b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; +using System.Data.OleDb; using System.Drawing; using System.Text; using System.Windows.Forms; @@ -94,42 +95,48 @@ namespace Stone.WinModule.Standard btnUpload.Click += BtnUpload_Click; this.toolStrip1.Items.Insert(0, btnUpload); - ToolStripButton btnPrintRe = new ToolStripButton("补打ASN"); - btnPrintRe.Image = this.imageList1.Images[0]; - btnPrintRe.TextImageRelation = TextImageRelation.ImageAboveText; - btnPrintRe.Click += new EventHandler(btnPrintRe_Click); - this.toolStrip1.Items.Insert(0, btnPrintRe); - - ToolStripButton btnPrint = new ToolStripButton("打印ASN"); - btnPrint.Image = this.imageList1.Images[0]; - btnPrint.TextImageRelation = TextImageRelation.ImageAboveText; - btnPrint.Click += new EventHandler(btnPrint_Click); - this.toolStrip1.Items.Insert(0, btnPrint); - - ToolStripButton btnPrintVDARight = new ToolStripButton("补打02标签"); - btnPrintVDARight.Image = this.imageList1.Images[0]; - btnPrintVDARight.TextImageRelation = TextImageRelation.ImageAboveText; - btnPrintVDARight.Click += new EventHandler(btnPrintVDARight_Click); - this.toolStrip1.Items.Insert(0, btnPrintVDARight); - - ToolStripButton btnPrintVDA = new ToolStripButton("补打01标签"); - btnPrintVDA.Image = this.imageList1.Images[0]; - btnPrintVDA.TextImageRelation = TextImageRelation.ImageAboveText; - btnPrintVDA.Click += new EventHandler(btnPrintVDA_Click); - this.toolStrip1.Items.Insert(0, btnPrintVDA); - - ToolStripButton btnPrintLabel = new ToolStripButton("打印VDA标签"); - btnPrintLabel.Image = this.imageList1.Images[0]; - btnPrintLabel.TextImageRelation = TextImageRelation.ImageAboveText; - btnPrintLabel.Click += btnPrintLabel_Click; - this.toolStrip1.Items.Insert(0, btnPrintLabel); - - ToolStripButton btnPREDN = new ToolStripButton("PRE-DN生成"); + // ToolStripButton btnPrintRe = new ToolStripButton("补打ASN"); + // btnPrintRe.Image = this.imageList1.Images[0]; + // btnPrintRe.TextImageRelation = TextImageRelation.ImageAboveText; + // btnPrintRe.Click += new EventHandler(btnPrintRe_Click); + // this.toolStrip1.Items.Insert(0, btnPrintRe); + // + // ToolStripButton btnPrint = new ToolStripButton("打印ASN"); + // btnPrint.Image = this.imageList1.Images[0]; + // btnPrint.TextImageRelation = TextImageRelation.ImageAboveText; + // btnPrint.Click += new EventHandler(btnPrint_Click); + // this.toolStrip1.Items.Insert(0, btnPrint); + + // ToolStripButton btnPrintVDARight = new ToolStripButton("补打02标签"); + // btnPrintVDARight.Image = this.imageList1.Images[0]; + // btnPrintVDARight.TextImageRelation = TextImageRelation.ImageAboveText; + // btnPrintVDARight.Click += new EventHandler(btnPrintVDARight_Click); + // this.toolStrip1.Items.Insert(0, btnPrintVDARight); + // + // ToolStripButton btnPrintVDA = new ToolStripButton("补打01标签"); + // btnPrintVDA.Image = this.imageList1.Images[0]; + // btnPrintVDA.TextImageRelation = TextImageRelation.ImageAboveText; + // btnPrintVDA.Click += new EventHandler(btnPrintVDA_Click); + // this.toolStrip1.Items.Insert(0, btnPrintVDA); + + // ToolStripButton btnPrintLabel = new ToolStripButton("打印VDA标签"); + // btnPrintLabel.Image = this.imageList1.Images[0]; + // btnPrintLabel.TextImageRelation = TextImageRelation.ImageAboveText; + // btnPrintLabel.Click += btnPrintLabel_Click; + // this.toolStrip1.Items.Insert(0, btnPrintLabel); + + ToolStripButton btnPREDN = new ToolStripButton("ASN发运"); btnPREDN.Image = this.imageList1.Images[1]; btnPREDN.TextImageRelation = TextImageRelation.ImageAboveText; btnPREDN.Click += btnPREDN_Click; this.toolStrip1.Items.Insert(0, btnPREDN); + ToolStripButton btnImportDP = new ToolStripButton("拉动导入"); + btnImportDP.Image = this.imageList1.Images[1]; + btnImportDP.TextImageRelation = TextImageRelation.ImageAboveText; + btnImportDP.Click += btnImportDP_Click; + this.toolStrip1.Items.Insert(0, btnImportDP); + } @@ -444,37 +451,11 @@ namespace Stone.WinModule.Standard { try { - if (this.dgrdView.SelectedRows.Count == 0) - throw new Exception("请选择要生成的ASN"); - - string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString(); - - if (!CheckASN(AsnNumber)) return; - - Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA(); - DataTable dtData = v_JIS_VDA.GetData("", $"[AsnNumber]='{AsnNumber}'", "[PackageNo] asc").Tables[0]; - if (dtData.Rows.Count == 0) throw new Exception("打印的数据不存在"); - - if (dtData.Rows[0]["IsPrintASN"].ToString() == "1") - throw new Exception($"{AsnNumber}已经完成,不能生成PREDN"); - - var frmPickUpDate = new frmPickUpDate(); - frmPickUpDate.dtSwetDate = Convert.ToDateTime(dtData.Rows[0]["Date"]).Date; - frmPickUpDate.ShowDialog(); - frmPickUpDate.Dispose(); - if(frmPickUpDate.DialogResult != DialogResult.OK) return; - frmPREDN frm = new frmPREDN(); - frm.dtPickUpTime = frmPickUpDate.dtPickUp; - frm.dtData = dtData; - frm.ShowDialog(); - frm.Dispose(); - //更新需求日期 todo - var db = new Gm_WMS.DataAccess.DataService.LocalDBService(); - db.BeginTrans(); - Entity_v_JIS_VDA t_JIS_VDA = new Entity_v_JIS_VDA(db); - t_JIS_VDA.Edit($"[Date]='" + frmPickUpDate.dtPickUp + "'", $"[AsnNumber]='{AsnNumber}'"); - db.Commit(); - Search(AsnNumber); + var frmAsnScan = new frmASNScan(); + frmAsnScan.ShowDialog(); + frmAsnScan.Dispose(); + if(frmAsnScan.DialogResult != DialogResult.OK) return; + Search(""); btnSerach_Click(sender,null); } catch (Exception ex) @@ -845,5 +826,278 @@ namespace Stone.WinModule.Standard return strsql; } + + private void btnImportDP_Click(object sender, EventArgs e) + { + try + { + if (this.openFileDialog1.ShowDialog() == DialogResult.OK) + { + Input(this.openFileDialog1.FileName); + UpdateGridView(); + + MyMessageBox.ShowInfoMessage("数据导入成功!"); + } + } + catch (Exception ex) + { + MyMessageBox.ShowInfoMessage(ex.Message); + } + } + + private void Input(string filename) + { + DataSet dsInput = null; + MyExcelDatabase.OpenDatabase(filename, true); + var sheetName = GetSheetName(filename); + dsInput = MyOleDbDatabase.ExecuteDataSet("select * from ["+sheetName+"]"); + MyOleDbDatabase.CloseDatabase(); + + LocalDBService db = null; + try + { + db = new LocalDBService(); + db.BeginTrans(); + InputData(dsInput, db); + db.Commit(); + } + catch (Exception ex) + { + if (db != null) db.Rollback(); + throw new Exception("导入数据失败!\r\n" + "原因为:\r\n" + ex.Message); + } + finally + { + if (db != null) db.EndTrans(); + } + + + Stone.WinBiz.BasicData.F_Log.WriteLog("导入Excel[" + filename + "]"); + } + + private string GetSheetName(string filename) + { + string HDR = "HDR=YES;"; ; + + var m_oleconn = new OleDbConnection(); + if (filename.ToLower().Substring(filename.Length - 3) == "xls") //excel 2003格式 + { + m_oleconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;" + HDR + "'"); + } + else //excel 2007 格式 + { + m_oleconn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + ";Extended Properties='Excel 12.0 Xml;" + HDR + "'"); + } + m_oleconn.Open(); + + var m_olecmd = m_oleconn.CreateCommand(); + + DataTable dtSheetName = m_oleconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); + string[] strTableNames = new string[dtSheetName.Rows.Count]; + for (int k = 0; k < dtSheetName.Rows.Count; k++) + { + strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString(); + } + // 选择第一个sheet进行操作 + string sheetName = strTableNames[0]; + return sheetName; + } + + public void InputData(DataSet dsData, LocalDBService db) + { + Entity_t_JIS_VDA t_Input = new Entity_t_JIS_VDA(db); + DataRow drInput = null; + //第四行开始读日期,第五行是到货时间,第六行车型不要,第七行读零件和数量 + int readRow = 4; + //导入的列数 + var coloumnCount = dsData.Tables[0].Columns.Count; + //零件号所在的行 从0开始 + var partRowIndex = 7; + //零件号所在的列数 从0 开始 + var partIndex = 2; + //校验零件号是否有订单信息 + var strCheckPO = CheckPartPO(dsData.Tables[0], partRowIndex, partIndex); + if (strCheckPO != "OK") + { + throw new Exception("导入数据失败!\r\n" + "原因为:\r\n" + strCheckPO); + } + + //删掉以导入的ASN todo ASN模板未确认 + // DelDPASNHis(dsData.Tables[0]); + + for (int i = 0; i < dsData.Tables[0].Rows.Count; i++) + { + if (i == readRow-1) + { + var drDate = dsData.Tables[0].Rows[i]; + for (int n = 0; n < coloumnCount; n++) + { + //第六列开始是时间 + if (n >= 5) + { + var date = drDate[n].ToString(); + if (string.IsNullOrEmpty(date)) + { + continue; + } + date = GetDateTimeStyle4(date, MyDateTimeType.Date); + //校验是否是日期,如果是日期,循环读入天的需求 + if (DateTime.TryParse(date, out DateTime dt)) + { + var DPTime = dsData.Tables[0].Rows[i + 1][n].ToString(); + //得到了发货日期 和 发货时间 + //开始循坏要货明细 + for (int nPart = i + 4; nPart < dsData.Tables[0].Rows.Count-1; nPart++) + { + //如果有数量 则填加 + var dr = dsData.Tables[0].Rows[nPart]; + var qty = dr[n].ToString(); + if (int.TryParse(qty, out int planQty)) + { + if (planQty > 0) + { + drInput = t_Input.Table.NewRow(); + drInput["LabelDate"] = dt.ToString("yyyy-MM-dd") + " " + DPTime + ":00"; + drInput["Date"] = dt; + //todo AsnNumber 当前模板没有ASN号 + drInput["AsnNumber"] = ""; + drInput["PartNumber"] = dr[partIndex]; + drInput["Qty"] = planQty; + //todo 从基础数据表获取PO + drInput["orderNumber"] = ""; + //todo 增加表结构 + drInput["CheckQty"] = 0; + //是否完成装箱校验 + drInput["IsPackingVerification"] = 0; + //是否发运 + drInput["IsShipingVerification"] = 0; + //是否生成ASN + drInput["IsPrintASN"] = 0; + //是否上传ASN + drInput["IsUpload"] = 0; + t_Input.Add(drInput); + } + } + } + } + } + } + } + } + } + + public static string GetDateTimeStyle4(string sDateTime, MyDateTimeType dType) + { + if (sDateTime.Length != 8) throw new Exception("[" + sDateTime + "]日期时间格式错误!"); + + string Result = ""; + string year = sDateTime.Substring(0, 4); + string month = sDateTime.Substring(4, 2); + string day = sDateTime.Substring(6, 2); + + string h = "0"; + string m = "0"; + string s = "0"; + string mi = "0"; + + if (month.Length == 1) month = "0" + month; + if (day.Length == 1) day = "0" + day; + if (h.Length == 1) h = "0" + h; + if (m.Length == 1) m = "0" + m; + if (s.Length == 1) s = "0" + s; + if (mi.Length == 1) mi = "00" + mi; + if (mi.Length == 2) mi = "0" + mi; + + if (dType == MyDateTimeType.DateTime) + { + Result = year + "-" + month + "-" + day + " " + h + ":" + m + ":" + s; + } + + if (dType == MyDateTimeType.Date) + { + Result = year + "-" + month + "-" + day; + } + + if (dType == MyDateTimeType.Time) + { + Result = h + ":" + m + ":" + s; + } + + if (dType == MyDateTimeType.Batch) + { + Result = year.Substring(2, 2) + month + day; + } + + if (dType == MyDateTimeType.BillNo) + { + Result = year + month + day + h + m + s + mi; + } + + return Result; + } + + private string CheckPartPO(DataTable dtImport,int startRowIndex,int columnIndex) + { + string strRtn = ""; + Entity_t_PartPO partPO = new Entity_t_PartPO(); + DataTable dtData = partPO.GetData($"1 = 1").Tables[0]; + if (dtData.Rows.Count == 0) + { + return "系统中没有定义零件号对应的订单信息!"; + } + for (int i = startRowIndex; i < dtImport.Rows.Count-1; i++) + { + var partCode = dtImport.Rows[i][columnIndex].ToString(); + var row = dtData.Select("Code = '" + partCode + "'"); + if (row.Length != 1) + { + strRtn += "零件号["+partCode + "]没有对应有效的订单号"+ Environment.NewLine; + } + else + { + if(string.IsNullOrEmpty(row[0]["PONumber"].ToString())) + { + strRtn += "零件号[" + partCode + "]没有对应有效的订单号" + Environment.NewLine; + } + } + } + + if (string.IsNullOrEmpty(strRtn)) + { + strRtn = "OK"; + } + if (dtData.Rows.Count == 0) throw new Exception("补打的记录不存在"); + return strRtn; + } + + /// + /// 删除历史导入的ASN单 + /// + private void DelDPASNHis(DataTable dtImport) + { + LocalDBService db = new LocalDBService(); + var sql = ""; + var AsnNums = ""; + //ASN 行位置 + //todo asn模板未确定 + var asnRowIndex = 6; + var asnRow = dtImport.Rows[asnRowIndex]; + //ASN 列开始位置 + var asnColumnStartIndex = 5; + for (int i = asnColumnStartIndex; i < dtImport.Columns.Count; i++) + { + if (!string.IsNullOrEmpty(asnRow[i].ToString())) + { + AsnNums += "'" + asnRow[i].ToString() + "',"; + } + } + + if (AsnNums.Length > 0) + { + AsnNums = AsnNums.Substring(0, AsnNums.Length - 1); + sql = $"delete from t_JIS_VDA where AsnNumber in (" + AsnNums + ")"; + db.Exec_NonQuery(sql); + } + } } } diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.resx b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.resx index 0b1eba6..907f124 100644 --- a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.resx +++ b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM - CwAAAk1TRnQBSQFMAgEBBQEAAVgBAAFYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CwAAAk1TRnQBSQFMAgEBBQEAAWABAAFgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -177,4 +177,7 @@ AfgBAwHwAQEB/gEHBP8B/AEDBP8L + + 342, 17 + \ No newline at end of file diff --git a/Stone.WinForm/Stone.WinModule/Stone.WinModule.csproj b/Stone.WinForm/Stone.WinModule/Stone.WinModule.csproj index 09c9c6e..20c44b8 100644 --- a/Stone.WinForm/Stone.WinModule/Stone.WinModule.csproj +++ b/Stone.WinForm/Stone.WinModule/Stone.WinModule.csproj @@ -166,6 +166,18 @@ frmErrLog.cs + + Form + + + frmPartPODetail.cs + + + Form + + + frmPartPO.cs + Form @@ -395,6 +407,12 @@ frmMessageQuestion.cs + + Form + + + frmASNScan.cs + Form @@ -682,6 +700,9 @@ frmErrLog.cs + + frmPartPODetail.cs + frmPartOutQtyDetail.cs @@ -783,6 +804,9 @@ frmMessageQuestion.cs + + frmASNScan.cs + frmPickUpDate.cs