using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data;
using Stone.Common;
using Stone.Entity;
using Gm_WMS.DataAccess.DataService;
using grproLib;
using Stone.WinBiz.Standard;
namespace Stone.WinBiz.JISAdmin
{
public class F_JIS5000_Print
{
///
/// JIS打印领料单
///
public static void PrintCallShip()
{
string PackageGroupName = MyAppconfig.ReadValue("JIS打印领料单类型").Trim();
string SuperMarket = MyAppconfig.ReadValue("JIS打印领料单种类").Trim();
if (PackageGroupName == "") return;
if (SuperMarket == "") return;
Entity_t_JIS_PrintAssemble t_JIS_PrintAssemble = new Entity_t_JIS_PrintAssemble();
DataSet dsData = t_JIS_PrintAssemble.GetData("top 1 *", "[PackageGroupName]='" + PackageGroupName + "' and [SuperMarket]='" + SuperMarket + "' and [IsPrint]=0", "[ID] asc");
if (dsData.Tables[0].Rows.Count > 0)
{
t_JIS_PrintAssemble.Edit("[IsPrint]=1, [PrintTime]=getdate()", "[ID]=" + dsData.Tables[0].Rows[0]["ID"].ToString());
string OrderNumber = dsData.Tables[0].Rows[0]["OrderNumber"].ToString();
if (Convert.ToInt32(dsData.Tables[0].Rows[0]["IsReOrder"]) == 0)
{
//正常排序数据
Entity_t_JIS_Seq5000 t_JIS_Seq5000 = new Entity_t_JIS_Seq5000();
DataSet dsPrint = t_JIS_Seq5000.GetData("top 1 *", "[OrderNumber]='" + OrderNumber + "' and [PackageGroupName]='" + PackageGroupName + "'", "[ID] asc");
if (dsPrint.Tables[0].Rows.Count > 0)
{
dsPrint.Tables[0].TableName = "BillHead";
dsPrint.Tables[0].Rows[0]["OrderNumber"] = "PL" + OrderNumber;
F_JIS5000_Print.PrintAssembly(dsPrint, SuperMarket);
}
}
else
{
//ReOrder排序数据
Entity_t_JIS_Seq5000_ReOrder t_JIS_Seq5000_ReOrder = new Entity_t_JIS_Seq5000_ReOrder();
DataSet dsPrint = t_JIS_Seq5000_ReOrder.GetData("top 1 *", "[OrderNumber]='" + OrderNumber + "' and [PackageGroupName]='" + PackageGroupName + "'", "[ID] asc");
if (dsPrint.Tables[0].Rows.Count > 0)
{
dsPrint.Tables[0].TableName = "BillHead";
dsPrint.Tables[0].Rows[0]["OrderNumber"] = "PL" + OrderNumber;
F_JIS5000_Print_ReOrder.PrintAssembly(dsPrint, SuperMarket);
}
}
}
}
public static void PrintCallShipRe(string ID, string SuperMarket)
{
Entity_t_JIS_Seq5000 t_JIS_Seq5000 = new Entity_t_JIS_Seq5000();
DataSet dsPrint = t_JIS_Seq5000.GetData("top 1 *", "[ID]='" + ID + "'", "[ID] asc");
if (dsPrint.Tables[0].Rows.Count > 0)
{
if (Convert.ToInt32(dsPrint.Tables[0].Rows[0]["IsPrintAssemble"]) == 0) throw new Exception("请先打印装配单,然后才能补打");
string OrderNumber = dsPrint.Tables[0].Rows[0]["OrderNumber"].ToString();
dsPrint.Tables[0].TableName = "BillHead";
dsPrint.Tables[0].Rows[0]["OrderNumber"] = "PL" + OrderNumber;
F_JIS5000_Print.PrintAssembly(dsPrint, SuperMarket);
}
else
{
throw new Exception("补打记录不存在");
}
}
///
/// 打印装配单
///
///
public static void PrintAssembly(DataSet dsData)
{
PrintAssembly(dsData, "");
}
public static void PrintAssembly(DataSet dsData, string SuperMarket)
{
if (MyAppconfig.ReadValue("是否打印装配单") != "是") return;
/*
打印按 PartsFamily(3台电脑 前、后、左右门槛,按SupplyGroup打印4张单据 前后左右)
*/
foreach (DataRow drBillHead in dsData.Tables["BillHead"].Rows)
{
#region 表头
string PrintTime = MyDateTime.Format( MyDateTimeType.DateTime);
DataTable dtHead = new DataTable();
dtHead.Columns.Add("OrderNumber");
dtHead.Columns.Add("CallOffNumber");
dtHead.Columns.Add("CheckSequence");
dtHead.Columns.Add("PrintTime");
dtHead.Columns.Add("SwetTime");
dtHead.Columns.Add("SwetTacho");
dtHead.Columns.Add("PartsFamily");
dtHead.Columns.Add("SupplyGroup");
dtHead.Columns.Add("Variant");
DataRow drHead = dtHead.NewRow();
drHead["OrderNumber"] = drBillHead["OrderNumber"].ToString().Substring(0, drBillHead["OrderNumber"].ToString().Length - 1);
drHead["CallOffNumber"] = drBillHead["CallOffNumber"].ToString();
drHead["CheckSequence"] = drBillHead["CheckSequence"].ToString();
drHead["PrintTime"] = PrintTime;
drHead["SwetTime"] = MyDateTime.Format(Convert.ToDateTime(drBillHead["SwetTime"]), MyDateTimeType.DateTime);
drHead["SwetTacho"] = drBillHead["SwetTacho"] != DBNull.Value ? MyDateTime.Format(Convert.ToDateTime(drBillHead["SwetTacho"]), MyDateTimeType.DateTime) : "";
drHead["PartsFamily"] = drBillHead["PartsFamily"].ToString();
drHead["SupplyGroup"] = drBillHead["supplyGroup"].ToString();
drHead["Variant"] = drBillHead["Variant"].ToString();
dtHead.Rows.Add(drHead);
#endregion
#region 明细
//string orderNumber = drBillHead["orderNumber"].ToString().Trim();
//string partsFamily = drBillHead["partsFamily"].ToString().Trim();
//string strWhere = "[orderNumber]='{0}' and [partsFamily]='{1}' and [supplyGroup]='{2}' {3}";
//object[] obj = new object[4];
//obj[0] = orderNumber;
//obj[1] = partsFamily;
//obj[2] = drHead["SupplyGroup"].ToString();
//obj[3] = SuperMarket == "" ? "" : " and [SuperMarket]='" + SuperMarket + "'";
//strWhere = string.Format(strWhere, obj);
string ID = drBillHead["ID"].ToString();
string strWhere = "[SeqID]={0} {1}";
object[] obj = new object[2];
obj[0] = ID;
obj[1] = SuperMarket == "" ? "" : " and [SuperMarket]='" + SuperMarket + "'";
strWhere = string.Format(strWhere, obj);
Entity_v_JIS_Tod v_Tod = new Entity_v_JIS_Tod();
DataSet dsTod = v_Tod.GetData("*, barcodeCode as BarCodeCode2", strWhere, "seqnum asc");
for (int i = 0; i < dsTod.Tables[0].Rows.Count; i++)
{
if (dsTod.Tables[0].Rows[i]["BarCodeCode2"].ToString() == "1")
{
dsTod.Tables[0].Rows[i]["BarCodeCode2"] = "*";
dsTod.Tables[0].Rows[i]["BarCodeCode"] = "";
}
else if (dsTod.Tables[0].Rows[i]["BarCodeCode2"].ToString() == "2")
{
dsTod.Tables[0].Rows[i]["BarCodeCode2"] = "**";
dsTod.Tables[0].Rows[i]["BarCodeCode"] = "";
}
else
{
dsTod.Tables[0].Rows[i]["BarCodeCode2"] = "";
}
}
MyReport f_GridReport = new MyReport(MyIO.GetAppPath() + "\\Report\\JIS装配单.grf", dtHead, dsTod.Tables[0].Copy());
if (drBillHead["PackageGroupName"].ToString() == "左门槛")
{
f_GridReport.Report.Printer.PaperOrientation = GRPaperOrientation.grpoLandscape;
}
else
{
f_GridReport.Report.Printer.PaperOrientation = GRPaperOrientation.grpoPortrait;
}
f_GridReport.Report.Print(false);
if (MyAppconfig.ReadValue("JIS打印两份装配单") == "是")
{
f_GridReport.Report.Print(false);
}
#endregion
}
}
///
/// 打印装配不干胶标签
///
///
public static void PrintAssemblyLabel(DataSet dsData)
{
if (MyAppconfig.ReadValue("是否打印装配标签") != "是") return;
foreach (DataRow drBillHead in dsData.Tables["BillHead"].Rows)
{
string Model = drBillHead["Variant"].ToString();
if (Model.IndexOf("B") >= 0)
{
//Model = Model.Substring(0, Model.Length - 1) + "-01";
Model = Model.Substring(0, Model.Length) + "-01";
}
else
{
//Model = Model.Substring(0, Model.Length - 1) + "-02";
Model = Model.Substring(0, Model.Length) + "-02";
}
DataTable dtHead = new DataTable();
dtHead.Columns.Add("SequenceNumber");
dtHead.Columns.Add("OrderNumber");
dtHead.Columns.Add("VINNumber");
dtHead.Columns.Add("Model");
dtHead.Columns.Add("Description");
dtHead.Columns.Add("FTime");
dtHead.Columns.Add("中文描述");
dtHead.Columns.Add("PartColor");
DataRow drHead = dtHead.NewRow();
drHead["SequenceNumber"] = drBillHead["SequenceNumber"].ToString(); //JIS5000中貌似没有
drHead["OrderNumber"] = drBillHead["OrderNumber"].ToString().Substring(0, drBillHead["OrderNumber"].ToString().Length - 1);
drHead["VINNumber"] = drBillHead["VINNumber"].ToString(); //JIS5000没有
drHead["Model"] = Model;
drHead["Description"] = GetPartsFamilyDescription(drBillHead["partsFamily"].ToString());
drHead["FTime"] = MyDateTime.Format( MyDateTimeType.DateTime2);
drHead["中文描述"] = drBillHead["PackageGroupName"].ToString().Substring(0, 1);
drHead["PartColor"] = drBillHead["PartColor"].ToString();
dtHead.Rows.Add(drHead);
MyReport f_GridReport = new MyReport(MyIO.GetAppPath() + "\\Report\\JIS标签.grf", dtHead, null);
f_GridReport.Report.Printer.PrinterName = MyAppconfig.ReadValue("默认条码打印机");
f_GridReport.Report.Print(false);
}
}
///
/// 打印装箱单
///
///
public static void PrintPackingList(DataSet dsData, string BillNo, string PackageGroupName, string PageNumber)
{
Entity_v_JIS_Tod v_JIS_Tod = new Entity_v_JIS_Tod();
DataTable dtDetail = new DataTable();
dtDetail.Columns.Add("OrderNumber");
dtDetail.Columns.Add("BarCode");
dtDetail.Columns.Add("Color");
dtDetail.Columns.Add("Model");
dtDetail.Columns.Add("CallOffNumber");
dtDetail.Columns.Add("SwetTime");
dtDetail.Columns.Add("SwetTacho");
dtDetail.Columns.Add("SequenceNumber");
dtDetail.Columns.Add("PartName");
string supplyGroup = "";
foreach (DataRow drData in dsData.Tables[0].Rows)
{
DataSet dsTod = v_JIS_Tod.GetData("[SeqID]=" + drData["ID"].ToString() + " and [JisMajor]=1");
if (dsTod.Tables[0].Rows.Count == 0)
{
//throw new Exception(drData["OrderNumber"].ToString() + " " + drData["partsFamily"].ToString() + " 未设置主要零件,请在基础资料中设置");
continue;
}
DataRow drDetailNew = dtDetail.NewRow();
drDetailNew["OrderNumber"] = drData["OrderNumber"].ToString().Substring(0, drData["OrderNumber"].ToString().Length - 1);
drDetailNew["BarCode"] = dsTod.Tables[0].Rows[0]["BarCodeCode"].ToString();
drDetailNew["Color"] = dsTod.Tables[0].Rows[0]["ColorName"].ToString();
drDetailNew["Model"] = drData["Variant"].ToString();// dsTod.Tables[0].Rows[0]["Variant"].ToString();
drDetailNew["CallOffNumber"] = drData["CallOffNumber"].ToString();
drDetailNew["SwetTime"] = drData["SwetTime"].ToString();
drDetailNew["SwetTacho"] = drData["SwetTacho"] != DBNull.Value ? MyDateTime.Format(Convert.ToDateTime(drData["SwetTacho"]), MyDateTimeType.DateTime) : "";
drDetailNew["SequenceNumber"] = drData["SequenceNumber"].ToString();
drDetailNew["PartName"] = drData["PartName"].ToString();
dtDetail.Rows.Add(drDetailNew);
PackageGroupName = dsTod.Tables[0].Rows[0]["PackageGroupName"].ToString();
supplyGroup = dsTod.Tables[0].Rows[0]["supplyGroup"].ToString();
}
DataTable dtHead = new DataTable();
dtHead.Columns.Add("BillNo");
dtHead.Columns.Add("PageNumber");
dtHead.Columns.Add("Part");
dtHead.Columns.Add("SwetTimeTop");
DataRow drHead = dtHead.NewRow();
drHead["BillNo"] = BillNo;
drHead["PageNumber"] = PageNumber;
drHead["Part"] = PackageGroupName;
drHead["SwetTimeTop"] = MyDateTime.Format(Convert.ToDateTime(dtDetail.Rows[0]["SwetTime"]), MyDateTimeType.DateTime);
dtHead.Rows.Add(drHead);
MyReport f_GridReport = new MyReport(MyIO.GetAppPath() + "\\Report\\JIS装箱单.grf", dtHead, dtDetail);
//f_GridReport.Report.Printer.PaperOrientation = GRPaperOrientation.grpoLandscape;
f_GridReport.Report.Printer.PaperOrientation = GRPaperOrientation.grpoPortrait;
f_GridReport.Report.Print(false);
f_GridReport.Report.Print(false);
f_GridReport.Report.Print(false);
}
///
/// 打印ASN
///
public static void PrintASNList(DataSet dsData, string AsnNumber, bool RePrint)
{
DataTable dtHead = new DataTable();
dtHead.Columns.Add("Date");
dtHead.Columns.Add("Time");
dtHead.Columns.Add("Part");
dtHead.Columns.Add("ASNNo");
dtHead.Columns.Add("TotalBinQty");
dtHead.Columns.Add("TachoSwet");
dtHead.Columns.Add("TachoTime");
//dtHead.Columns.Add("Tacho");
DataRow[] drs = dsData.Tables[0].Select("1=1", "[SwetTime] asc");
//TimeSpan ts = Convert.ToDateTime(dsData.Tables[0].Rows[0]["SwetTacho"]) - Convert.ToDateTime(dsData.Tables[0].Rows[0]["SwetTime"]);
TimeSpan ts = Convert.ToDateTime(drs[0]["SwetTacho"]) - Convert.ToDateTime(drs[0]["SwetTime"]);
int TachoTime = Convert.ToInt32(Math.Round(ts.TotalMinutes, 0));
string sTachoTime = "";
if (TachoTime > 0)
{
//sTachoTime = "+" + MyStrings.PadLeftString(TachoTime.ToString(), '0', 5);
sTachoTime = "-" + MyStrings.PadLeftString(TachoTime.ToString(), '0', 5);
}
else
{
//sTachoTime = "-" + MyStrings.PadLeftString((-TachoTime).ToString(), '0', 5);
sTachoTime = "+" + MyStrings.PadLeftString((-TachoTime).ToString(), '0', 5);
}
DataRow drHead = dtHead.NewRow();
drHead["Date"] = MyDateTime.Format(MyDateTimeType.Date);
drHead["Time"] = MyDateTime.Format(MyDateTimeType.Time);
drHead["ASNNo"] = AsnNumber;
drHead["TotalBinQty"] = GetPackingListNumberCount(dsData);
drHead["TachoSwet"] = Convert.ToDateTime(drs[0]["SwetTacho"]).ToString("HH:mm");
//drHead["TachoTime"] = TachoTime >= 0 ? "+" + TachoTime : TachoTime.ToString();
drHead["TachoTime"] = sTachoTime;
//drHead["Tacho"] = GetTacho();
dtHead.Rows.Add(drHead);
DataTable dtDetail = new DataTable();
dtDetail.Columns.Add("LineItem");
dtDetail.Columns.Add("CallOff");
dtDetail.Columns.Add("OrderNo");
dtDetail.Columns.Add("PartFamily");
dtDetail.Columns.Add("SupplyGroup");
dtDetail.Columns.Add("SWET");
dtDetail.Columns.Add("SwetTacho");
dtDetail.Columns.Add("RunningBinNo");
dtDetail.Columns.Add("ModelCode");
dtDetail.Columns.Add("SequenceNumber");
dtDetail.Columns.Add("partNumber");
dtDetail.Columns.Add("PartName");
dtDetail.Columns.Add("PagerNumber");
int i = 0;
foreach (DataRow drData in dsData.Tables[0].Rows)
{
i++;
DataRow drDetailNew = dtDetail.NewRow();
drDetailNew["LineItem"] = MyStrings.PadLeftString(i.ToString(), '0', 3) + "0";
drDetailNew["CallOff"] = drData["CallOffNumber"].ToString();
drDetailNew["OrderNo"] = drData["OrderNumber"].ToString();
drDetailNew["PartFamily"] = drData["PartsFamily"].ToString();
drDetailNew["SupplyGroup"] = drData["SupplyGroup"].ToString();
drDetailNew["SWET"] = MyDateTime.Format(Convert.ToDateTime(drData["SwetTime"].ToString()), MyDateTimeType.DateTime3);
drDetailNew["SwetTacho"] = drData["SwetTacho"] != DBNull.Value ? MyDateTime.Format(Convert.ToDateTime(drData["SwetTacho"].ToString()), MyDateTimeType.DateTime3) : "";
drDetailNew["RunningBinNo"] = drData["PackingListNumber"].ToString();
drDetailNew["ModelCode"] = drData["Variant"].ToString();
drDetailNew["SequenceNumber"] = drData["SequenceNumber"].ToString();
drDetailNew["partNumber"] = drData["partNumber"].ToString();
drDetailNew["PartName"] = drData["PartName"].ToString();
drDetailNew["PagerNumber"] = drData["PagerNumber"].ToString();
dtDetail.Rows.Add(drDetailNew);
}
MyReport f_GridReport = new MyReport(MyIO.GetAppPath() + "\\Report\\ASN.grf", dtHead, dtDetail);
f_GridReport.Report.Print(false);
if (!RePrint)
{
f_GridReport.Report.Print(false);
f_GridReport.Report.Print(false);
f_GridReport.Report.Print(false);
f_GridReport.Report.Print(false);
}
}
public static int GetPackingListNumberCount(DataSet dsData)
{
List temp = new List();
foreach (DataRow drData in dsData.Tables[0].Rows)
{
if (temp.Count == 0)
{
temp.Add(drData["PackingListNumber"].ToString().Trim());
}
else
{
if (temp.IndexOf(drData["PackingListNumber"].ToString().Trim()) == -1)
{
temp.Add(drData["PackingListNumber"].ToString().Trim());
}
}
}
return temp.Count;
}
public static void WriteASN(DataSet dsData, string AsnNumber, bool isftp)
{
string text = GetASNTemp();
text = text.Replace("{DATE}", MyDateTime.Format(MyDateTimeType.Batch));
text = text.Replace("{TIME}", MyDateTime.Format(MyDateTimeType.Time2));
text = text.Replace("{ASNNUMBER}", AsnNumber);
text = text.Replace("{DNNUMBER}", AsnNumber.Substring(AsnNumber.Length - 9, 9));
text = text.Replace("{SEGQTY}", (dsData.Tables[0].Rows.Count + 5) + "");
string detail = "";
foreach (DataRow drData in dsData.Tables[0].Rows)
{
//ARD+::MIKKBR4:MIKFLG4 :4076174:6707067+0+00000000000000000'
string line = "ARD+::{0}:{1}:{2}:{3}+0+00000000000000000'";
object[] obj = new object[4];
obj[0] = drData["PartsFamily"].ToString().Trim();
obj[1] = drData["supplyGroup"].ToString().Trim();
obj[2] = drData["CallOffNumber"].ToString().Trim();
obj[3] = drData["OrderNumber"].ToString().Trim().Substring(0, drData["OrderNumber"].ToString().Trim().Length - 1);
line = string.Format(line, obj);
detail += line;
}
text = text.Replace("{DETAIL}", detail);
string filename = WriteANSFile(text);
if (isftp)
{
FtpASN(filename);
}
WriteQAD(dsData, AsnNumber, isftp);
}
public static void WriteQAD(DataSet dsData, string AsnNumber, bool isftp)
{
string filename = Application.StartupPath + "\\QAD_BAK\\";
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename += MyDateTime.Format( MyDateTimeType.Date);
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename = filename + "\\asn" + AsnNumber + ".txt";
StreamWriter sw = null;
try
{
sw = new StreamWriter(filename, false);
DataTable dtOut = new DataTable();
dtOut.Columns.Add("SwetTime", typeof(System.DateTime));
dtOut.Columns.Add("SequenceNumber");
dtOut.Columns.Add("OrderNumber");
dtOut.Columns.Add("PartsFamily");
dtOut.Columns.Add("supplyGroup");
dtOut.Columns.Add("PartName");
dtOut.Columns.Add("PartColor");
dtOut.Columns.Add("partNumber");
dtOut.Columns.Add("qty", typeof(System.Int32));
Entity_v_JIS_Tod v_JIS_Tod = new Entity_v_JIS_Tod();
foreach (DataRow drData in dsData.Tables[0].Rows)
{
string OrderNumber = drData["OrderNumber"].ToString();
string PartsFamily = drData["PartsFamily"].ToString();
string SupplyGroup = drData["SupplyGroup"].ToString();
string strWhere = "[SeqID]=" + drData["ID"].ToString();
if (dsData.Tables[0].TableName == "ReOrder")
{
strWhere = "[OrderNumber]='" + OrderNumber + "' and [PartsFamily]='" + PartsFamily + "' and [SupplyGroup]='" + SupplyGroup + "'";
}
DataSet dsTod = v_JIS_Tod.GetData("*", strWhere, "partNumber asc");
foreach (DataRow drTod in dsTod.Tables[0].Rows)
{
string partNumber = drTod["partNumber"].ToString();
int qty = Convert.ToInt32(drTod["quantity"].ToString());
DataRow[] drs = dtOut.Select("[partNumber]='" + partNumber + "'");
if (drs.Length == 0)
{
DataRow drNew = dtOut.NewRow();
drNew["SwetTime"] = drData["SwetTime"];
drNew["SequenceNumber"] = drData["SequenceNumber"].ToString();
drNew["OrderNumber"] = drData["OrderNumber"].ToString();
drNew["PartsFamily"] = drData["PartsFamily"].ToString();
drNew["supplyGroup"] = drData["supplyGroup"].ToString();
drNew["PartName"] = drTod["description"].ToString();
drNew["PartColor"] = drTod["ColorName"].ToString();
drNew["partNumber"] = partNumber;
drNew["qty"] = qty;
dtOut.Rows.Add(drNew);
}
else
{
drs[0]["qty"] = Convert.ToInt32(drs[0]["qty"]) + qty;
}
//DataRow drASN = t_JIS_ASN.Table.NewRow();
//drASN["SwetTime"] = Convert.ToDateTime(drData["SwetTime"]);
//drASN["AsnNumber"] = AsnNumber;
//drASN["SequenceNumber"] = drData["SequenceNumber"].ToString();
//drASN["OrderNumber"] = drData["OrderNumber"].ToString();
//drASN["PartsFamily"] = drData["PartsFamily"].ToString();
//drASN["supplyGroup"] = drData["supplyGroup"].ToString();
//drASN["partNumber"] = drData["partNumber"].ToString();
//drASN["PartName"] = drTod["description"].ToString();
//drASN["PartColor"] = drTod["ColorName"].ToString();
//drASN["quantity"] = drTod["quantity"].ToString();
//t_JIS_ASN.Add(drASN);
}
}
Entity_t_JIS_ASN t_JIS_ASN = new Entity_t_JIS_ASN();
t_JIS_ASN.Del("[AsnNumber]='" + AsnNumber + "'");
string text_temp = GetMESTemp();
int rownumber = 1;
foreach (DataRow drData in dtOut.Rows)
{
string text_line = text_temp;
text_line = text_line.Replace("{ASNNUMBER}", AsnNumber);
text_line = text_line.Replace("{DATE}", MyDateTime.Format( MyDateTimeType.Date3));
text_line = text_line.Replace("{ROWNO}", rownumber.ToString());
text_line = text_line.Replace("{PARTNO}", drData["partNumber"].ToString());
text_line = text_line.Replace("{QTY}", drData["qty"].ToString());
rownumber++;
sw.WriteLine(text_line);
DataRow drNew = t_JIS_ASN.Table.NewRow();
drNew["SwetTime"] = Convert.ToDateTime(drData["SwetTime"]);
drNew["AsnNumber"] = AsnNumber;
drNew["SequenceNumber"] = drData["SequenceNumber"].ToString();
drNew["OrderNumber"] = drData["OrderNumber"].ToString();
drNew["PartsFamily"] = drData["PartsFamily"].ToString();
drNew["supplyGroup"] = drData["supplyGroup"].ToString();
drNew["partNumber"] = drData["partNumber"].ToString();
drNew["PartName"] = drData["PartName"].ToString();
drNew["PartColor"] = drData["PartColor"].ToString();
drNew["quantity"] = drData["qty"].ToString();
t_JIS_ASN.Add(drNew);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sw != null) sw.Close();
}
if (isftp)
{
FtpQAD(filename);
}
}
public static void WriteASN_ReOrder(DataSet dsData, string AsnNumber)
{
string text = GetASNTemp();
text = text.Replace("{DATE}", MyDateTime.Format(MyDateTimeType.Batch));
text = text.Replace("{TIME}", MyDateTime.Format(MyDateTimeType.Time2));
text = text.Replace("{ASNNUMBER}", AsnNumber);
text = text.Replace("{DNNUMBER}", AsnNumber.Substring(AsnNumber.Length - 9, 9));
text = text.Replace("{SEGQTY}", (dsData.Tables[0].Rows.Count + 5) + "");
string detail = "";
foreach (DataRow drData in dsData.Tables[0].Rows)
{
//ARD+::MIKKBR4:MIKFLG4 :4076174:6707067+0+00000000000000000'
string line = "ARD+::{0}:{1}:{2}:{3}+0+00000000000000000'";
object[] obj = new object[4];
obj[0] = drData["PartsFamily"].ToString().Trim();
obj[1] = drData["supplyGroup"].ToString().Trim();
obj[2] = drData["CallOffNumber"].ToString().Trim();
obj[3] = drData["OrderNumber"].ToString().Trim().Substring(0, drData["OrderNumber"].ToString().Trim().Length - 1);
line = string.Format(line, obj);
detail += line;
}
text = text.Replace("{DETAIL}", detail);
string filename = WriteANSFile(text);
FtpASN(filename);
WriteQAD_ReOrder(dsData, AsnNumber);
}
public static void WriteQAD_ReOrder(DataSet dsData, string AsnNumber)
{
string filename = Application.StartupPath + "\\QAD_BAK\\";
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename += MyDateTime.Format(MyDateTimeType.Date);
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename = filename + "\\asn" + AsnNumber + ".txt";
StreamWriter sw = null;
try
{
sw = new StreamWriter(filename, false);
DataTable dtOut = new DataTable();
dtOut.Columns.Add("SwetTime", typeof(System.DateTime));
dtOut.Columns.Add("SequenceNumber");
dtOut.Columns.Add("OrderNumber");
dtOut.Columns.Add("PartsFamily");
dtOut.Columns.Add("supplyGroup");
dtOut.Columns.Add("PartName");
dtOut.Columns.Add("PartColor");
dtOut.Columns.Add("partNumber");
dtOut.Columns.Add("qty", typeof(System.Int32));
Entity_t_JIS_ASN_ReOrder t_JIS_ASN = new Entity_t_JIS_ASN_ReOrder();
t_JIS_ASN.Del("[AsnNumber]='" + AsnNumber + "'");
Entity_v_JIS_Tod_ReOrder v_JIS_Tod = new Entity_v_JIS_Tod_ReOrder();
foreach (DataRow drData in dsData.Tables[0].Rows)
{
string OrderNumber = drData["OrderNumber"].ToString();
string PartsFamily = drData["PartsFamily"].ToString();
string SupplyGroup = drData["SupplyGroup"].ToString();
string strWhere = "[SeqID]=" + drData["ID"].ToString();
if (dsData.Tables[0].TableName == "ReOrder")
{
strWhere = "[OrderNumber]='" + OrderNumber + "' and [PartsFamily]='" + PartsFamily + "' and [SupplyGroup]='" + SupplyGroup + "'";
}
DataSet dsTod = v_JIS_Tod.GetData("*", strWhere, "partNumber asc");
foreach (DataRow drTod in dsTod.Tables[0].Rows)
{
string partNumber = drTod["partNumber"].ToString();
int qty = Convert.ToInt32(drTod["quantity"].ToString());
DataRow[] drs = dtOut.Select("[partNumber]='" + partNumber + "'");
if (drs.Length == 0)
{
DataRow drNew = dtOut.NewRow();
drNew["SwetTime"] = drData["SwetTime"];
drNew["partNumber"] = partNumber;
drNew["qty"] = qty;
dtOut.Rows.Add(drNew);
}
else
{
drs[0]["qty"] = Convert.ToInt32(drs[0]["qty"]) + qty;
}
//DataRow drASN = t_JIS_ASN.Table.NewRow();
//drASN["SwetTime"] = Convert.ToDateTime(drData["SwetTime"]);
//drASN["AsnNumber"] = AsnNumber;
//drASN["SequenceNumber"] = drData["SequenceNumber"].ToString();
//drASN["OrderNumber"] = drData["OrderNumber"].ToString();
//drASN["PartsFamily"] = drData["PartsFamily"].ToString();
//drASN["supplyGroup"] = drData["supplyGroup"].ToString();
//drASN["partNumber"] = drData["partNumber"].ToString();
//drASN["PartName"] = drTod["description"].ToString();
//drASN["PartColor"] = drTod["ColorName"].ToString();
//drASN["quantity"] = drTod["quantity"].ToString();
//t_JIS_ASN.Add(drASN);
}
}
string text_temp = GetMESTemp();
int rownumber = 1;
foreach (DataRow drData in dtOut.Rows)
{
string text_line = text_temp;
text_line = text_line.Replace("{ASNNUMBER}", AsnNumber);
text_line = text_line.Replace("{DATE}", MyDateTime.Format(MyDateTimeType.Date));
text_line = text_line.Replace("{ROWNO}", rownumber.ToString());
text_line = text_line.Replace("{PARTNO}", drData["partNumber"].ToString());
text_line = text_line.Replace("{QTY}", drData["qty"].ToString());
rownumber++;
sw.WriteLine(text_line);
DataRow drNew = t_JIS_ASN.Table.NewRow();
drNew["SwetTime"] = Convert.ToDateTime(drData["SwetTime"]);
drNew["AsnNumber"] = AsnNumber;
drNew["SequenceNumber"] = drData["SequenceNumber"].ToString();
drNew["OrderNumber"] = drData["OrderNumber"].ToString();
drNew["PartsFamily"] = drData["PartsFamily"].ToString();
drNew["supplyGroup"] = drData["supplyGroup"].ToString();
drNew["partNumber"] = drData["partNumber"].ToString();
drNew["PartName"] = drData["PartName"].ToString();
drNew["PartColor"] = drData["PartColor"].ToString();
drNew["quantity"] = drData["qty"].ToString();
t_JIS_ASN.Add(drNew);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sw != null) sw.Close();
}
FtpQAD(filename);
}
#region VDA小件
public static string WriteASN_VDA(LocalDBService db ,DataSet dsData, string AsnNumber)
{
DateTime dtNow = MyDateTime.GetServerDateTime();
string fileType = dsData.Tables[0].Rows[0]["fileType"].ToString();
DateTime Date = Convert.ToDateTime(dsData.Tables[0].Rows[0]["Date"]);
string text = GetASNTemp_Standard();
string LocationCode = dsData.Tables[0].Rows[0]["LocationCode"].ToString();
if (LocationCode == "")
throw new Exception("卸货点代码不能为空");
text = text.Replace("{DATE}", dtNow.ToString("yyMMdd"));
text = text.Replace("{TIME}", dtNow.ToString("HHmm"));
text = text.Replace("{ASNNUMBER}", AsnNumber);
text = text.Replace("{DNNUMBER}", AsnNumber.Replace("ADT", ""));
text = text.Replace("{SEGQTY}", (dsData.Tables[0].Rows.Count + 7) + "");
text = text.Replace("{ASNLIUSHUI}", F_JIS_VDA_ASN.GetVDA_AsnLiushui(db, "00", 8));
text = text.Replace("{DATE1}", Date.ToString("yyMMddHHmm")); //预计到达时间(发货时间+600分钟)
text = text.Replace("{DATE2}", dtNow.ToString("yyMMdd:HHmm")); //发货时间
text = text.Replace("{LINE}", dsData.Tables[0].Rows.Count.ToString());
text = text.Replace("{TOTAL}", dsData.Tables[0].Compute("SUM(Qty)", "1=1").ToString());
text = text.Replace("{CUSTOMERCODE}", LocationCode);
string detail = "";
foreach (DataRow drData in dsData.Tables[0].Rows)
{
//ARD+9169691-03+24+L723190709++90000841838'
//金杯李尔不换行
//string line = "ARD+{0}+{1}+{2}:000000++{3}'\r\n";
string line = "ARD+{0}+{1}+{2}:000000++{3}:00000'";
object[] obj = new object[4];
obj[0] = drData["PartNumber"].ToString().Trim(); //零件号
obj[1] = drData["Qty"].ToString().Trim(); //数量
obj[2] = drData["OrderNumber"].ToString();
obj[3] = drData["PackageNo"].ToString().Trim();
line = string.Format(line, obj);
detail += line;
}
text = text.Replace("{DETAIL}", detail);
List lstName = WriteANSFile_Standard(text, fileType, AsnNumber);
FtpASN(lstName[0]);
#region 增加待生成报文数据 金杯李尔不使用FTP服务器 由服务器监听程序进行报文生成
var strsql = "";
strsql = "Insert into t_ASN_UPLOAD (AsnNum) values ('" + AsnNumber + "')";
db.Exec_NonQuery(strsql);
#endregion
return lstName[1];
}
public static void WriteQAD_VDA(DataSet dsData, string AsnNumber)
{
string filename = Application.StartupPath + "\\QAD_BAK\\";
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename += MyDateTime.Format(MyDateTimeType.Date);
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename = filename + "\\asn" + AsnNumber + ".txt";
StreamWriter sw = null;
try
{
sw = new StreamWriter(filename, false);
DataTable dtOut = new DataTable();
dtOut.Columns.Add("partNumber");
dtOut.Columns.Add("qty", typeof(System.Int32));
foreach (DataRow drData in dsData.Tables[0].Rows)
{
string partNumber = drData["partNumber"].ToString();
int qty = Convert.ToInt32(drData["qty"].ToString());
DataRow[] drs = dtOut.Select("[partNumber]='" + partNumber + "'");
if (drs.Length == 0)
{
DataRow drNew = dtOut.NewRow();
drNew["partNumber"] = partNumber;
drNew["qty"] = qty;
dtOut.Rows.Add(drNew);
}
else
{
drs[0]["qty"] = Convert.ToInt32(drs[0]["qty"]) + qty;
}
}
string text_temp = GetMESTemp();
int rownumber = 1;
foreach (DataRow drData in dtOut.Rows)
{
string text_line = text_temp;
text_line = text_line.Replace("{ASNNUMBER}", AsnNumber);
text_line = text_line.Replace("{DATE}", MyDateTime.Format(MyDateTimeType.Date3));
text_line = text_line.Replace("{ROWNO}", rownumber.ToString());
text_line = text_line.Replace("{PARTNO}", drData["partNumber"].ToString());
text_line = text_line.Replace("{QTY}", drData["qty"].ToString());
rownumber++;
sw.WriteLine(text_line);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sw != null) sw.Close();
}
FtpQAD(filename);
}
#endregion
#region 私有函数
//根据产品族代码取描述
public static string GetPartsFamilyDescription(string PartsFamily)
{
string ret = string.Empty;
Entity_v_PartsFamily v_PartsFamily = new Entity_v_PartsFamily();
DataSet dsData = v_PartsFamily.GetData("[Code]='" + PartsFamily + "'");
if (dsData.Tables[0].Rows.Count > 0)
{
ret = dsData.Tables[0].Rows[0]["Name"].ToString();
}
return ret;
}
//根据产品族名称取供应组
public static DataSet GetSupplyGroup(string PartsFamily)
{
Entity_t_SupplyGroup t_SupplyGroup = new Entity_t_SupplyGroup();
return t_SupplyGroup.GetData("[PartsFamilyCode]='" + PartsFamily + "'");
}
//获取单据编号
public static string GetBillNo(LocalDBService db, string type, int len)
{
string value = db.Exec_Object("exec p_GetBillNo '" + type + "'").ToString();
return type + MyStrings.PadLeftString(value, '0', len);
}
//获取两位数的编号,到了99自动变成1
public static string GetNumber(LocalDBService db, string type, int len)
{
//string value = db.Exec_Object("exec p_GetBillNo '" + type + "'").ToString();
string value = db.Exec_Object("exec p_GetNumber '" + type + "'").ToString();
return MyStrings.PadLeftString(value, '0', len);
}
//获取装箱单订单编号
//PackageGroupName-前保(F) 后保(B) 左门槛条(L) 左门槛(R)
public static string GetPackingListNumber(LocalDBService db, string PackageGroupName)
{
string ret = "PL";
switch (PackageGroupName)
{
case "前保":
ret += "F";
break;
case "后保":
ret += "B";
break;
case "左门槛":
ret += "L";
break;
case "右门槛":
ret += "R";
break;
case "扰流板":
ret += "S";
break;
}
ret += MyDateTime.Format(MyDateTimeType.YearMonth);
ret = GetBillNo(db, ret, 4);
return ret;
}
#region old asn
//获取ASN单号
/*
public static string GetASNNumber(LocalDBService db)
{
string ret = "SMH3";
ret += MyDateTime.GetServerDateTime().Year.ToString();
ret = GetBillNo(db, ret, 6);
return ret;
}
*/
#endregion
//获取ASN单号
public static string GetASNNumber(LocalDBService db, string PackageGroupName)
{
//string ret = "SMH3";
//ret += MyDateTime.GetServerDateTime().Year.ToString();
//ret = GetBillNo(db, ret, 6);
//return ret;
string ret = "SMH3";
ret += MyDateTime.GetServerDateTime().Year.ToString();
switch (PackageGroupName)
{
case "前保":
ret += "1";
ret = GetBillNo(db, ret, 5);
break;
case "后保":
ret += "2";
ret = GetBillNo(db, ret, 5);
break;
case "左门槛":
ret += "3";
ret = GetBillNo(db, ret, 4) + "A";
break;
case "右门槛":
ret += "3";
ret = GetBillNo(db, ret, 4) + "A";
break;
case "扰流板":
ret += "3";
ret = GetBillNo(db, ret, 4) + "A";
break;
}
//ret = GetBillNo(db, ret, 5);
return ret;
}
#region 写ASN文件
private static string WriteANSFile(string text)
{
//string filename = MyAppconfig.ReadValue("接口文件生成路径");
string filename = Application.StartupPath + "\\ASN_BAK\\";
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename += MyDateTime.Format(MyDateTimeType.Date);
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
filename = filename + "\\SY78.JIS." + MyDateTime.Format(MyDateTimeType.Time1) + ".txt";
StreamWriter sw = null;
try
{
sw = new StreamWriter(filename, false);
sw.Write(text);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sw != null) sw.Close();
}
return filename;
}
private static string GetASNTemp()
{
string asn_temp_file = Application.StartupPath + "\\ASN接口模板.txt";
if (!File.Exists(asn_temp_file)) throw new Exception(asn_temp_file + " 文件不存在!");
StreamReader sr = null;
try
{
sr = new StreamReader(asn_temp_file, Encoding.Default);
return sr.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sr != null) sr.Close();
}
}
private static List< string> WriteANSFile_Standard(string text, string fileType, string AsnNumber)
{
string filename = Application.StartupPath + "\\ASN_OUT\\";
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
// filename += MyDateTime.Format(MyDateTimeType.Date);
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
//金杯李尔不要后缀名
// string name = "BMW." + fileType + ".JIT.AVIEXP." + AsnNumber + ".txt";
string name = "BMW." + fileType + ".JIT.AVIEXP." + AsnNumber + "";
filename = filename + "\\" + name;
//金杯李尔 不在客户端生成ASN报文,统一由服务器生成
// StreamWriter sw = null;
// try
// {
// sw = new StreamWriter(filename, false);
// sw.Write(text);
// }
// catch (Exception ex)
// {
// throw ex;
// }
// finally
// {
// if (sw != null) sw.Close();
// }
List ret = new List();
ret.Add(filename);
ret.Add(name);
return ret;
}
private static string GetASNTemp_Standard()
{
string asn_temp_file = Application.StartupPath + "\\ASN接口模板STD.txt";
if (!File.Exists(asn_temp_file)) throw new Exception(asn_temp_file + " 文件不存在!");
StreamReader sr = null;
try
{
sr = new StreamReader(asn_temp_file, Encoding.Default);
return sr.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sr != null) sr.Close();
}
}
private static void FtpASN(string filename)
{
try
{
string ASN_FTP_AutoSend = MyAppconfig.ReadValue("ASN_FTP_AutoSend").Trim();
string ASN_FTP_Server = MyAppconfig.ReadValue("ASN_FTP_Server").Trim();
string ASN_FTP_Server_Path = MyAppconfig.ReadValue("ASN_FTP_Server_Path").Trim();
string ASN_FTP_UserName = MyAppconfig.ReadValue("ASN_FTP_UserName").Trim();
string ASN_FTP_Password = MyAppconfig.ReadValue("ASN_FTP_Password").Trim();
if (ASN_FTP_AutoSend == "是")
{
MyFTP.FTPUploadFile(ASN_FTP_Server, ASN_FTP_UserName, ASN_FTP_Password, filename, ASN_FTP_Server_Path);
}
}
catch (Exception ex)
{
MyLogger.Write(ex.Message);
throw new Exception("ASN文件上传失败");
}
}
#endregion
#region 写MES文件
private static string GetMESTemp()
{
string qad_temp_file = Application.StartupPath + "\\QAD接口模板.txt";
if (!File.Exists(qad_temp_file)) throw new Exception(qad_temp_file + " 文件不存在!");
StreamReader sr = null;
try
{
sr = new StreamReader(qad_temp_file, Encoding.Default);
return sr.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sr != null) sr.Close();
}
}
private static void FtpQAD(string filename)
{
try
{
string QAD_FTP_AutoSend = MyAppconfig.ReadValue("QAD_FTP_AutoSend").Trim();
string QAD_FTP_Server = MyAppconfig.ReadValue("QAD_FTP_Server").Trim();
string QAD_FTP_Server_Path = MyAppconfig.ReadValue("QAD_FTP_Server_Path").Trim();
string QAD_FTP_UserName = MyAppconfig.ReadValue("QAD_FTP_UserName").Trim();
string QAD_FTP_Password = MyAppconfig.ReadValue("QAD_FTP_Password").Trim();
if (QAD_FTP_AutoSend == "是")
{
MyFTP.FTPUploadFile(QAD_FTP_Server, QAD_FTP_UserName, QAD_FTP_Password, filename, QAD_FTP_Server_Path);
}
}
catch (Exception ex)
{
MyLogger.Write(ex.Message);
MyMessageBox.ShowErrorMessage(ex.Message);
}
}
#endregion
#endregion
}
}