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.
1104 lines
42 KiB
1104 lines
42 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Data.OleDb;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using Stone.Common;
|
|
using Stone.Entity;
|
|
using Stone.WinModule.JISData;
|
|
using Stone.WinBiz.JISAdmin;
|
|
using Stone.WinBiz.JISData;
|
|
using Gm_WMS.DataAccess.DataService;
|
|
using Stone.WinBiz.Standard;
|
|
|
|
namespace Stone.WinModule.Standard
|
|
{
|
|
public partial class frmJISVDAASN : Stone.WinModule.BasicData.frmBaseMain
|
|
{
|
|
public string asn_file = Application.StartupPath + "\\Report\\ASN.grf";
|
|
public frmJISVDAASN()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.tlbSelect.Visible = false;
|
|
this.tlbAdd.Visible = false;
|
|
this.tlbAddCopy.Visible = false;
|
|
this.tlbEdit.Visible = false;
|
|
//this.tlbDelete.Visible = false;
|
|
this.tlbInput.Visible = false;
|
|
this.tlbFilter.Visible = false;
|
|
this.tlbExit.Visible = false;
|
|
|
|
base.dgrdView.MultiSelect = true;
|
|
|
|
this.toolStrip1.Padding = new Padding(0, 0, 460, 0);
|
|
}
|
|
|
|
public override void init()
|
|
{
|
|
Search("");
|
|
base.init();
|
|
|
|
}
|
|
|
|
public override void Search(string code)
|
|
{
|
|
|
|
string d1 = MyDateTime.Format(this.dateTimePicker1.Value, MyDateTimeType.Date) + " 00:00:00";
|
|
string d2 = MyDateTime.Format(this.dateTimePicker2.Value, MyDateTimeType.Date) + " 23:59:59";
|
|
|
|
|
|
if (code == "")
|
|
{
|
|
strWhere = "1=1";
|
|
}
|
|
else
|
|
{
|
|
strWhere = " [partNumber] like '%" + code + "%' or ";
|
|
strWhere += " [AsnNumber] like '%" + code + "%' or ";
|
|
strWhere += " [PackageNo] like '%" + code + "%'";
|
|
}
|
|
|
|
if (this.chkUpload.Checked)
|
|
{
|
|
strWhere += " and [IsUpload]=0";
|
|
}
|
|
else
|
|
{
|
|
strWhere = "[LabelDate]>='" + d1 + "' and [LabelDate]<='" + d2 + "'";
|
|
}
|
|
|
|
strWhere += " and (" + strWhere + ")";
|
|
}
|
|
|
|
private void frmJISLog_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
ToolStripButton btnCancel = new ToolStripButton("撤销ASN");
|
|
btnCancel.Image = this.imageList1.Images[2];
|
|
btnCancel.TextImageRelation = TextImageRelation.ImageAboveText;
|
|
btnCancel.Click += BtnCancel_Click;
|
|
this.toolStrip1.Items.Insert(4, btnCancel);
|
|
|
|
ToolStripButton btnUploadRe = new ToolStripButton("补传ASN");
|
|
btnUploadRe.Image = this.imageList1.Images[4];
|
|
btnUploadRe.TextImageRelation = TextImageRelation.ImageAboveText;
|
|
btnUploadRe.Click += BtnUploadRe_Click;
|
|
this.toolStrip1.Items.Insert(0, btnUploadRe);
|
|
|
|
ToolStripButton btnUpload = new ToolStripButton("上传ASN");
|
|
btnUpload.Image = this.imageList1.Images[3];
|
|
btnUpload.TextImageRelation = TextImageRelation.ImageAboveText;
|
|
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("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);
|
|
|
|
|
|
}
|
|
|
|
private void BtnUploadRe_Click(object sender, EventArgs e)
|
|
{
|
|
string LogID = "0";
|
|
try
|
|
{
|
|
if (this.dgrdView.SelectedRows.Count == 0) throw new Exception("请选择要补传的ASN");
|
|
|
|
string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString();
|
|
|
|
if (!ShowQuestionPop($"是否要补传 {AsnNumber} ?"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
LogID = F_JIS_Log.WriteLogsStart($"补传ASN {AsnNumber}");
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA();
|
|
Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA();
|
|
|
|
DataSet dsData = v_JIS_VDA.GetData($"[AsnNumber]='{AsnNumber}'");
|
|
if (dsData.Tables[0].Rows.Count == 0)
|
|
throw new Exception($"{AsnNumber} 不存在");
|
|
|
|
if (dsData.Tables[0].Select("[IsUpload]<>True").Length > 0)
|
|
throw new Exception(AsnNumber + " 未上传,不能补传");
|
|
|
|
string filename = F_JIS5000_Print.WriteASN_VDA(new LocalDBService(), dsData, AsnNumber);
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, true, filename);
|
|
|
|
MyMessageBox.ShowInfoMessage($"{AsnNumber} 补传成功");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, ex.Message);
|
|
|
|
}
|
|
finally
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
private void BtnUpload_Click(object sender, EventArgs e)
|
|
{
|
|
Gm_WMS.DataAccess.DataService.LocalDBService db = null;
|
|
string LogID = "0";
|
|
try
|
|
{
|
|
if (this.dgrdView.SelectedRows.Count == 0) throw new Exception("请选择要上传的ASN");
|
|
|
|
string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString();
|
|
|
|
if (!MyMessageBox.ShowQuestion($"是否要上传 {AsnNumber} ?")) return;
|
|
|
|
if (!CheckASN(AsnNumber)) return;
|
|
|
|
LogID = F_JIS_Log.WriteLogsStart($"上传ASN {AsnNumber}");
|
|
|
|
db = new Gm_WMS.DataAccess.DataService.LocalDBService();
|
|
db.BeginTrans();
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA(db);
|
|
Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA(db);
|
|
|
|
DataSet dsData = v_JIS_VDA.GetData($"[AsnNumber]='{AsnNumber}'");
|
|
if (dsData.Tables[0].Rows.Count == 0)
|
|
throw new Exception($"{AsnNumber} 不存在");
|
|
|
|
if (dsData.Tables[0].Select("[IsUpload]=True").Length > 0)
|
|
throw new Exception(AsnNumber + " 已经上传");
|
|
|
|
if (dsData.Tables[0].Select("[IsPrintASN]=False").Length > 0)
|
|
throw new Exception(AsnNumber + " 未打印");
|
|
|
|
if (dsData.Tables[0].Select("[IsPackingVerification]=False").Length > 0)
|
|
throw new Exception(AsnNumber + " 未完成装箱校验");
|
|
|
|
if (dsData.Tables[0].Select("[IsShipingVerification]=False").Length > 0)
|
|
throw new Exception(AsnNumber + " 未完成装车校验");
|
|
|
|
|
|
DateTime UploadTime = t_JIS_VDA.GetDateTime();
|
|
for (int i = 0; i < dsData.Tables[0].Rows.Count; i++)
|
|
{
|
|
dsData.Tables[0].Rows[i]["UploadTime"] = UploadTime;
|
|
}
|
|
|
|
t_JIS_VDA.Edit(
|
|
$"[UploadTime]='{UploadTime.ToString("yyyy-MM-dd HH:mm:ss")}', [IsUpload]=1",
|
|
$"[AsnNumber]='{AsnNumber}'");
|
|
|
|
|
|
string filename = F_JIS5000_Print.WriteASN_VDA(db, dsData, AsnNumber);
|
|
|
|
#region 计算累计发货数量
|
|
var strsql = "";
|
|
var dtPartOutQty = new DataTable();
|
|
strsql = "select * from t_PartOutQty";
|
|
dtPartOutQty = db.Exec_DataSet(strsql).Tables[0];
|
|
foreach (DataRow drData in dsData.Tables[0].Rows)
|
|
{
|
|
var code = drData["PartNumber"].ToString();
|
|
var outQty = decimal.Parse(drData["Qty"].ToString());
|
|
var asnNum = drData["AsnNumber"].ToString();
|
|
strsql = CreatePartOutSql(db,code, outQty, dtPartOutQty, asnNum,out dtPartOutQty);
|
|
if (!string.IsNullOrEmpty(strsql))
|
|
{
|
|
db.Exec_NonQuery(strsql);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
db.Commit();
|
|
try
|
|
{
|
|
UpdateGridView();
|
|
}
|
|
catch { }
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, true, filename);
|
|
|
|
MyMessageBox.ShowInfoMessage($"{AsnNumber} 上传成功");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, ex.Message);
|
|
|
|
if (db != null) db.Rollback();
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (db != null) db.EndTrans();
|
|
|
|
}
|
|
}
|
|
|
|
private bool CheckASN(string AsnNumber)
|
|
{
|
|
bool ret = true;
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA();
|
|
DataTable dtASN = t_JIS_VDA.GetData(
|
|
$"PartNumber, Date, Sum(Qty) as Qty",
|
|
$"AsnNumber='{AsnNumber}' group by PartNumber, Date",
|
|
$"PartNumber asc").Tables[0];
|
|
|
|
string msg = "";
|
|
|
|
Entity_t_JIS_Lab t_JIS_Lab = new Entity_t_JIS_Lab();
|
|
foreach (DataRow drASN in dtASN.Rows)
|
|
{
|
|
string PartNumber = drASN["PartNumber"].ToString();
|
|
string Date = Convert.ToDateTime(drASN["Date"]).ToString("yyyy-MM-dd");
|
|
int Qty = Convert.ToInt32(drASN["Qty"]);
|
|
|
|
DataTable dtLab = t_JIS_Lab.GetData(
|
|
$"[fileType]='{((F_JIS_VDA_ASN)m_Base).fileType}' " + "" +
|
|
$" and [PartNumber]='{PartNumber}' and [StartDate]='{Date}'").Tables[0];
|
|
|
|
if (dtLab.Rows.Count == 0)
|
|
{
|
|
msg += $"{PartNumber} {Date} 在LAB中不存在\r\n";
|
|
}
|
|
else if (Convert.ToInt32(dtLab.Rows[0]["quantity"]) != Qty)
|
|
{
|
|
msg += $"{PartNumber} {Date} 发货数量 {Qty} 和LAB需求数量 {dtLab.Rows[0]["quantity"]} 不一样\r\n";
|
|
}
|
|
|
|
}
|
|
|
|
string LogID = F_JIS_Log.WriteLogsStart($"检查ASN {AsnNumber}");
|
|
if (msg != "")
|
|
{
|
|
string show_str = "检测ASN发货数据时发现以下问题,是否要继续上传ASN?\r\n" + msg;
|
|
|
|
if (!ShowQuestionPop(show_str))
|
|
{
|
|
ret = false;
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, "您选择了取消上传【" + msg + "】");
|
|
}
|
|
else
|
|
{
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, "您选择了继续上传【" + msg + "】");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
F_JIS_Log.WriteLogsEnd(LogID, true, "");
|
|
|
|
}
|
|
|
|
return ret;
|
|
|
|
|
|
}
|
|
|
|
public bool ShowQuestionPop(string MessageInfo)
|
|
{
|
|
bool result = false;
|
|
|
|
frmMessageQuestion frm = new frmMessageQuestion();
|
|
if (frm.ShowQuestion(MessageInfo) == DialogResult.OK)
|
|
{
|
|
result = true;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
private void BtnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
string LogID = "0";
|
|
try
|
|
{
|
|
if (this.dgrdView.SelectedRows.Count == 0)
|
|
throw new Exception("请选择一行记录");
|
|
|
|
string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString();
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA();
|
|
DataTable dtData = t_JIS_VDA.GetData($"[AsnNumber]='{AsnNumber}'").Tables[0];
|
|
if (dtData.Rows.Count == 0)
|
|
throw new Exception($"{AsnNumber} 在系统中不存在");
|
|
|
|
|
|
if (!Convert.ToBoolean(dtData.Rows[0]["IsUpload"]))
|
|
throw new Exception($"{AsnNumber} 未上传不能撤销");
|
|
|
|
string location = dtData.Rows[0]["location"].ToString();
|
|
string fileType = dtData.Rows[0]["fileType"].ToString();
|
|
|
|
DataTable dtLast = t_JIS_VDA.GetData(
|
|
$"top 1 *",
|
|
$"[fileType]='{fileType}' and [location]='{location}'",
|
|
$"[AsnNumber] desc").Tables[0];
|
|
|
|
if (dtLast.Rows.Count > 0)
|
|
{
|
|
if (dtLast.Rows[0]["AsnNumber"].ToString() != AsnNumber)
|
|
throw new Exception($"只能撤销最后一个ASN {dtLast.Rows[0]["AsnNumber"]}");
|
|
}
|
|
|
|
if (MyMessageBox.ShowQuestion($"是否要撤销 {AsnNumber} ?"))
|
|
{
|
|
LogID = F_JIS_Log.WriteLogsStart($"撤销ASN {AsnNumber}");
|
|
|
|
CancelASN(AsnNumber);
|
|
|
|
//计算累计发货数量
|
|
var strSql = "UPDATE t_PartOutQty " +
|
|
" set PartOutQty -= LastOutQty," +
|
|
" LastOutQty = 0," +
|
|
" LastOutTime = null," +
|
|
" AsnNum = ''" +
|
|
" where AsnNum = '" + AsnNumber + "'";
|
|
var db = new LocalDBService();
|
|
db.Exec_NonQuery(strSql);
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, true, "");
|
|
|
|
MyMessageBox.ShowInfoMessage($"{AsnNumber} 撤销成功");
|
|
}
|
|
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, ex.Message);
|
|
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
}
|
|
|
|
private void CancelASN(string AsnNumber)
|
|
{
|
|
LocalDBService db = null;
|
|
try
|
|
{
|
|
db = new LocalDBService();
|
|
db.BeginTrans();
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA(db);
|
|
|
|
t_JIS_VDA.Edit($"[IsUpload]=0, [UploadTime]=null,[PrintASNTime] = null,IsShipingVerification = 0,IsPrintASN = 0", $"[AsnNumber]='{AsnNumber}'");
|
|
|
|
db.Commit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (db != null) db.Rollback();
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
if (db != null) db.EndTrans();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void btnPREDN_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
var frmAsnScan = new frmASNScan();
|
|
frmAsnScan.ShowDialog();
|
|
frmAsnScan.Dispose();
|
|
if(frmAsnScan.DialogResult != DialogResult.OK) return;
|
|
Search("");
|
|
btnSerach_Click(sender,null);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
}
|
|
|
|
private void btnPrintLabel_Click(object sender, EventArgs e)
|
|
{
|
|
Gm_WMS.DataAccess.DataService.LocalDBService db = null;
|
|
string LogID = "0";
|
|
try
|
|
{
|
|
if (this.dgrdView.SelectedRows.Count == 0) throw new Exception("请选择要打印标签的ASN");
|
|
|
|
string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString();
|
|
|
|
if (!MyMessageBox.ShowQuestion($"是否要打印【{AsnNumber}】的所有未打印的标签?")) return;
|
|
|
|
|
|
|
|
db = new Gm_WMS.DataAccess.DataService.LocalDBService();
|
|
db.BeginTrans();
|
|
|
|
Entity_v_JIS_VDA t_JIS_VDA = new Entity_v_JIS_VDA(db);
|
|
Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA(db);
|
|
DataTable dtData = v_JIS_VDA.GetData(
|
|
"",
|
|
$"[AsnNumber]='{AsnNumber}' and [IsPrintLabel]=0",
|
|
"[PackageNo] asc").Tables[0];
|
|
|
|
if (dtData.Rows.Count == 0) throw new Exception("没有可打印的数据,如果需要请使用补打功能!");
|
|
|
|
LogID = F_JIS_Log.WriteLogsStart($"打印 {dtData.Rows.Count} 个VDA标签 {AsnNumber} ");
|
|
|
|
int ret = PrintLabel(dtData, new List<string> { "01", "02" });
|
|
|
|
t_JIS_VDA.Edit($"[IsPrintLabel]=1", $"[AsnNumber]='{AsnNumber}'");
|
|
|
|
db.Commit();
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, true, "");
|
|
|
|
MyMessageBox.ShowInfoMessage($"{ret}个VDA标签打印完成!");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (db != null) db.Rollback();
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, ex.Message);
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
private void btnPrint_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
Gm_WMS.DataAccess.DataService.LocalDBService db = null;
|
|
try
|
|
{
|
|
if (this.dgrdView.SelectedRows.Count == 0) throw new Exception("请选择要打印的记录");
|
|
|
|
string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString();
|
|
|
|
if (!MyMessageBox.ShowQuestion($"是否要打印 {AsnNumber} ?")) return;
|
|
|
|
db = new Gm_WMS.DataAccess.DataService.LocalDBService();
|
|
db.BeginTrans();
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA(db);
|
|
Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA(db);
|
|
|
|
DataSet dsData = v_JIS_VDA.GetData($"[AsnNumber]='{AsnNumber}'");
|
|
if (dsData.Tables[0].Rows.Count == 0)
|
|
throw new Exception($"{AsnNumber} 不存在");
|
|
|
|
if (dsData.Tables[0].Select("[IsPackingVerification]=False").Length > 0)
|
|
throw new Exception(AsnNumber + " 所属VDA未完成装箱校验");
|
|
|
|
if (dsData.Tables[0].Select("[IsPrintASN]=True").Length == dsData.Tables[0].Rows.Count)
|
|
throw new Exception(AsnNumber + " 已经打印过了");
|
|
|
|
// if (dsData.Tables[0].Select("[IsShipingVerification]=False").Length > 0)
|
|
// {
|
|
// throw new Exception(AsnNumber + " 有数据做发货校验");
|
|
// }
|
|
|
|
DateTime PrintASNTime = t_JIS_VDA.GetDateTime();
|
|
for (int i = 0; i < dsData.Tables[0].Rows.Count; i++)
|
|
{
|
|
dsData.Tables[0].Rows[i]["PrintASNTime"] = PrintASNTime;
|
|
}
|
|
|
|
t_JIS_VDA.Edit(
|
|
$"[PrintASNTime]='{PrintASNTime.ToString("yyyy-MM-dd HH:mm:ss")}', [IsPrintASN]=1",
|
|
$"[AsnNumber]='{AsnNumber}'");
|
|
|
|
|
|
//F_JIS5000_Print.WriteASN_VDA(db, dsData, AsnNumber);
|
|
|
|
PrintASN(dsData);
|
|
|
|
db.Commit();
|
|
try
|
|
{
|
|
UpdateGridView();
|
|
}
|
|
catch { }
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (db != null) db.Rollback();
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (db != null) db.EndTrans();
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private void PrintASN(DataSet dsData)
|
|
{
|
|
Entity_t_Location t_Location = new Entity_t_Location();
|
|
|
|
DataTable dtHead = new DataTable();
|
|
dtHead.Columns.Add("ASNNo");
|
|
dtHead.Columns.Add("ASNNo_New");
|
|
dtHead.Columns.Add("DNNumber");
|
|
dtHead.Columns.Add("Date");
|
|
dtHead.Columns.Add("Time");
|
|
dtHead.Columns.Add("DispatchDate");
|
|
dtHead.Columns.Add("DispatchTime");
|
|
dtHead.Columns.Add("PlantCode");
|
|
dtHead.Columns.Add("Address1");
|
|
dtHead.Columns.Add("Address2");
|
|
dtHead.Columns.Add("Address3");
|
|
dtHead.Columns.Add("SwetDate");
|
|
dtHead.Columns.Add("SwetTime");
|
|
|
|
DataRow drHead = dtHead.NewRow();
|
|
drHead["ASNNo"] = dsData.Tables[0].Rows[0]["AsnNumber"].ToString();
|
|
drHead["ASNNo_New"] = dsData.Tables[0].Rows[0]["AsnNumber"].ToString().Replace("ADT", "");
|
|
drHead["DNNumber"] = dsData.Tables[0].Rows[0]["AsnNumber"].ToString().Replace("ADT", "");
|
|
drHead["Date"] = Convert.ToDateTime(dsData.Tables[0].Rows[0]["LabelDate"]).ToString("dd.MM.yyyy");
|
|
drHead["Time"] = Convert.ToDateTime(dsData.Tables[0].Rows[0]["LabelDate"]).ToString("HH:mm:ss");
|
|
drHead["DispatchDate"] = Convert.ToDateTime(dsData.Tables[0].Rows[0]["PrintASNTime"]).ToString("dd.MM.yyyy");
|
|
drHead["DispatchTime"] = Convert.ToDateTime(dsData.Tables[0].Rows[0]["PrintASNTime"]).ToString("HH:mm:ss");
|
|
drHead["PlantCode"] = dsData.Tables[0].Rows[0]["fileType"].ToString();
|
|
|
|
DataTable dtLocation = t_Location.GetData("[Code]='" + dsData.Tables[0].Rows[0]["Location"].ToString() + "'").Tables[0];
|
|
if (dtLocation.Rows.Count > 0)
|
|
{
|
|
drHead["Address1"] = dtLocation.Rows[0]["Address1"].ToString();
|
|
drHead["Address2"] = dtLocation.Rows[0]["Address2"].ToString();
|
|
drHead["Address3"] = dtLocation.Rows[0]["Address3"].ToString();
|
|
}
|
|
drHead["SwetDate"] = Convert.ToDateTime(dsData.Tables[0].Rows[0]["Date"]).ToString("dd.MM.yyyy");
|
|
|
|
dtHead.Rows.Add(drHead);
|
|
|
|
MyReport6 report = new MyReport6(asn_file, dtHead, dsData.Tables[0]);
|
|
report.Report.Printer.PrinterName = MyAppconfig.ReadValue("默认打印机");
|
|
report.Report.Print(false);
|
|
}
|
|
|
|
private void btnPrintRe_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
try
|
|
{
|
|
if (this.dgrdView.SelectedRows.Count == 0) throw new Exception("请选择要补打的记录");
|
|
|
|
string ID = this.dgrdView.SelectedRows[0].Cells["ID"].Value.ToString();
|
|
|
|
Entity_t_JIS_VDA t_JIS_VDA = new Entity_t_JIS_VDA();
|
|
Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA();
|
|
|
|
DataSet dsData = v_JIS_VDA.GetData("[ID]=" + ID);
|
|
if (dsData.Tables[0].Rows.Count == 0) throw new Exception("补打的ASN不存在");
|
|
if (!Convert.ToBoolean(dsData.Tables[0].Rows[0]["IsPrintASN"]))
|
|
throw new Exception("选择的记录未打印,不能补打");
|
|
|
|
string AsnNumber = dsData.Tables[0].Rows[0]["AsnNumber"].ToString();
|
|
|
|
if (!MyMessageBox.ShowQuestion("是否要补打 " + AsnNumber + " ?")) return;
|
|
|
|
dsData = v_JIS_VDA.GetData("[AsnNumber]='" + AsnNumber + "'");
|
|
|
|
|
|
PrintASN(dsData);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
|
|
|
|
}
|
|
}
|
|
|
|
private void btnPrintVDA_Click(object sender, EventArgs e)
|
|
{
|
|
PrintReLabel("01");
|
|
}
|
|
|
|
private void btnPrintVDARight_Click(object sender, EventArgs e)
|
|
{
|
|
PrintReLabel("02");
|
|
}
|
|
|
|
//补打VDA标签
|
|
private void PrintReLabel(string num)
|
|
{
|
|
string LogID = "0";
|
|
try
|
|
{
|
|
int n = this.dgrdView.SelectedRows.Count;
|
|
if (n == 0) throw new Exception("请选择要补打VDA标签的记录(可多选)");
|
|
if (!MyMessageBox.ShowQuestion($"是否要补打选择的【{n}】个VDA {num} 标签?")) return;
|
|
|
|
string AsnNumber = this.dgrdView.SelectedRows[0].Cells["AsnNumber"].Value.ToString();
|
|
|
|
string ids = "";
|
|
for (int i = 0; i < this.dgrdView.SelectedRows.Count; i++)
|
|
{
|
|
ids += this.dgrdView.SelectedRows[i].Cells["ID"].Value.ToString() + ",";
|
|
}
|
|
if (ids.Length > 0) ids = ids.Substring(0, ids.Length - 1);
|
|
|
|
LogID = F_JIS_Log.WriteLogsStart($"补打{n}个VDA {num} 标签 {AsnNumber}");
|
|
Entity_v_JIS_VDA v_JIS_VDA = new Entity_v_JIS_VDA();
|
|
DataTable dtData = v_JIS_VDA.GetData($"[ID] in ({ids})").Tables[0];
|
|
if (dtData.Rows.Count == 0) throw new Exception("补打的记录不存在");
|
|
|
|
PrintLabel(dtData, new List<string> { num });
|
|
|
|
F_JIS_Log.WriteLogsEnd(LogID, true, "");
|
|
|
|
MyMessageBox.ShowInfoMessage("补打完成");
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
F_JIS_Log.WriteLogsEnd(LogID, false, ex.Message);
|
|
MyMessageBox.ShowErrorMessage(ex.Message);
|
|
}
|
|
}
|
|
|
|
//打印VDA标签的(打印)函数
|
|
private int PrintLabel(DataTable dtData, List<string> lst_num)
|
|
{
|
|
Entity_t_Location t_Location = new Entity_t_Location();
|
|
|
|
DataTable dtPrint = dtData.Clone();
|
|
dtPrint.Columns.Add("Address1"); //左上角三行地址
|
|
dtPrint.Columns.Add("Address2");
|
|
dtPrint.Columns.Add("Address3");
|
|
dtPrint.Columns.Add("PackageNoNew"); //新的koli号,后面加“-01”或“-02”
|
|
dtPrint.Columns.Add("PackageNoNum"); //显示01或02
|
|
dtPrint.Columns.Add("AI"); //零件AI号,零件号的最后两位
|
|
|
|
int ret = 0;
|
|
foreach (DataRow drData in dtData.Rows)
|
|
{
|
|
foreach (string num in lst_num)
|
|
{
|
|
DataRow drNew = dtPrint.NewRow();
|
|
foreach (DataColumn dc in dtData.Columns)
|
|
{
|
|
drNew[dc.ColumnName] = drData[dc.ColumnName];
|
|
}
|
|
drNew["PackageNoNew"] = drData["PackageNo"].ToString() + "-" + num;
|
|
drNew["PackageNoNum"] = num;
|
|
drNew["AI"] = drData["PartNumber"].ToString().Substring(drData["PartNumber"].ToString().Length - 2, 2);
|
|
DataTable dtLocation = t_Location.GetData("[Code]='" + drData["Location"].ToString() + "'").Tables[0];
|
|
if (dtLocation.Rows.Count > 0)
|
|
{
|
|
drNew["Address1"] = dtLocation.Rows[0]["Address1"].ToString();
|
|
drNew["Address2"] = dtLocation.Rows[0]["Address2"].ToString();
|
|
drNew["Address3"] = dtLocation.Rows[0]["Address3"].ToString();
|
|
}
|
|
dtPrint.Rows.Add(drNew);
|
|
|
|
|
|
}
|
|
|
|
ret++;
|
|
}
|
|
|
|
|
|
string PrinterName = MyAppconfig.ReadValue("默认条码打印机");
|
|
string labelfile = Application.StartupPath + "\\Report\\VDA.grf";
|
|
|
|
MyReport6 report = new MyReport6(labelfile, new DataTable(), dtPrint);
|
|
report.Report.Printer.PrinterName = PrinterName;
|
|
report.Report.Print(false);
|
|
|
|
|
|
return ret;
|
|
|
|
|
|
}
|
|
|
|
private void chkUpload_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (chkUpload.Checked)
|
|
{
|
|
this.dateTimePicker1.Enabled = false;
|
|
this.dateTimePicker2.Enabled = false;
|
|
}
|
|
else
|
|
{
|
|
this.dateTimePicker1.Enabled = true;
|
|
this.dateTimePicker2.Enabled = true;
|
|
}
|
|
}
|
|
|
|
private static string CreatePartOutSql(LocalDBService db,string PartCode, decimal outQty, DataTable dt, string asnNum,out DataTable dtPartOutQty)
|
|
{
|
|
dtPartOutQty = dt;
|
|
string strsql = "";
|
|
if (dtPartOutQty.Select(" Code = '" + PartCode + "'").Length > 0)
|
|
{
|
|
//继续校验该ASN是否维护累计发货数量信息
|
|
if (dtPartOutQty.Select(" Code = '" + PartCode + "' and AsnNum = '" + asnNum + "'").Length > 0)
|
|
{
|
|
strsql = "Update t_PartOutQty" +
|
|
" set PartOutQty += " + outQty + "," +
|
|
" LastOutQty += " + outQty +
|
|
" where Code = '" + PartCode + "'" +
|
|
" and AsnNum = '" + asnNum + "'";
|
|
}
|
|
else
|
|
{
|
|
strsql = "Update t_PartOutQty" +
|
|
" set PartOutQty += " + outQty + "," +
|
|
" LastOutQty = " + outQty + "," +
|
|
" LastOutTime = getdate()," +
|
|
" AsnNum = '" + asnNum + "'" +
|
|
" where Code = '" + PartCode + "'";
|
|
db.Exec_NonQuery(strsql);
|
|
//DT重新赋值
|
|
strsql = "select * from t_PartOutQty";
|
|
dtPartOutQty = db.Exec_DataSet(strsql).Tables[0];
|
|
strsql = "";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//该零件未维护累计发货数量信息
|
|
strsql = "Insert into t_PartOutQty(Code,PartOutQty,LastOutQty,LastOutTime,AsnNum) values ('" + PartCode + "'," + outQty + "," + outQty + ",getdate(),'"+ asnNum + "')";
|
|
db.Exec_NonQuery(strsql);
|
|
//DT重新赋值
|
|
strsql = "select * from t_PartOutQty";
|
|
dtPartOutQty = db.Exec_DataSet(strsql).Tables[0];
|
|
strsql = "";
|
|
}
|
|
|
|
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["fileType"] = "SY88";
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除历史导入的ASN单
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|