|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text;
|
|
|
|
using Stone.Common;
|
|
|
|
using System.IO;
|
|
|
|
using Gm_WMS.DataAccess.DataService;
|
|
|
|
using Stone.Entity;
|
|
|
|
using System.Data;
|
|
|
|
using System.Threading;
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Stone.WinBiz.JISAdmin
|
|
|
|
{
|
|
|
|
public class F_EDI_JIS5000Sequence
|
|
|
|
{
|
|
|
|
public static bool IsRun = false;
|
|
|
|
|
|
|
|
public static string Path_Receive = string.Empty;
|
|
|
|
public static string Path_Error = string.Empty;
|
|
|
|
public static string Path_Bak = string.Empty;
|
|
|
|
|
|
|
|
static F_EDI_JIS5000Sequence()
|
|
|
|
{
|
|
|
|
Path_Receive = MyAppconfig.ReadValue("接收路径");
|
|
|
|
Path_Error = MyAppconfig.ReadValue("错误路径");
|
|
|
|
Path_Bak = MyAppconfig.ReadValue("备份路径");
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void Run()
|
|
|
|
{
|
|
|
|
int UpdateTime = Convert.ToInt32(MyAppconfig.ReadValue("解析刷新时间(秒)")) * 1000;
|
|
|
|
while (IsRun)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
ProcessData();
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
MyLogger.Write(ex.Message);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
System.Threading.Thread.Sleep(UpdateTime);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void ProcessData()
|
|
|
|
{
|
|
|
|
DirectoryInfo dir = new DirectoryInfo(Path_Receive);
|
|
|
|
FileInfo[] files = dir.GetFiles("*.*", SearchOption.TopDirectoryOnly);
|
|
|
|
|
|
|
|
//Array.Sort(files, new MyFileSort(FileOrder.LastWriteTime)); //按修改日期升序排列
|
|
|
|
Array.Sort(files, new MyFileSort(FileOrder.Name)); //按文件名升序排列
|
|
|
|
|
|
|
|
foreach (FileInfo file in files)
|
|
|
|
{
|
|
|
|
Entity_t_JIS_Log t_JIS_Log = new Entity_t_JIS_Log();
|
|
|
|
DataRow drJIS_Log = t_JIS_Log.Table.NewRow();
|
|
|
|
|
|
|
|
StreamReader sr = null;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
drJIS_Log["FileType"] = GetFileType(file.Name);
|
|
|
|
drJIS_Log["FileName"] = file.Name;
|
|
|
|
drJIS_Log["StartTime"] = MyDateTime.GetServerDateTime();
|
|
|
|
drJIS_Log = t_JIS_Log.Add(drJIS_Log);
|
|
|
|
|
|
|
|
sr = file.OpenText();
|
|
|
|
string text = sr.ReadToEnd();
|
|
|
|
sr.Close();
|
|
|
|
|
|
|
|
string fileType = "";
|
|
|
|
if (file.Name.ToUpper().IndexOf("SY78") >= 0)
|
|
|
|
{
|
|
|
|
fileType = "SY78";
|
|
|
|
}
|
|
|
|
if (file.Name.ToUpper().IndexOf("SY88") >= 0)
|
|
|
|
{
|
|
|
|
fileType = "SY88";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (fileType == "")
|
|
|
|
{
|
|
|
|
throw new Exception(file.Name + " 中不包含 SY78 或 SY88");
|
|
|
|
}
|
|
|
|
|
|
|
|
//判断文件格式是否正式
|
|
|
|
IsFileOK(text, file.Name);
|
|
|
|
|
|
|
|
DateTime StartTime = DateTime.Now;
|
|
|
|
|
|
|
|
var partMsg = "";
|
|
|
|
if (file.Name.ToUpper().IndexOf("DEL") >= 0)
|
|
|
|
{
|
|
|
|
ProcessDataLab(text, fileType, file.Name, out partMsg); //解析LAB数据
|
|
|
|
}
|
|
|
|
|
|
|
|
TimeSpan TimeOut = DateTime.Now - StartTime;
|
|
|
|
|
|
|
|
MyLogger.Write(file.Name + " 处理成功,用时[" + TimeOut.TotalSeconds + "]秒");
|
|
|
|
|
|
|
|
string Path_Bak_New = Path_Bak + "\\" + MyDateTime.Format(MyDateTimeType.Date);
|
|
|
|
if (!Directory.Exists(Path_Bak_New))
|
|
|
|
{
|
|
|
|
Directory.CreateDirectory(Path_Bak_New);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
MoveFile(file, Path_Bak_New);
|
|
|
|
|
|
|
|
drJIS_Log["EndTime"] = MyDateTime.GetServerDateTime();
|
|
|
|
drJIS_Log["ProcessState"] = "Success";
|
|
|
|
drJIS_Log["Memo"] = partMsg;
|
|
|
|
t_JIS_Log.Edit(drJIS_Log);
|
|
|
|
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
// MyLogger.Write(file.Name + " 处理失败,原因为:" + ex.Message);
|
|
|
|
MyLogger.Write(file.Name + " 处理失败,原因为:报文异常解析失败!");
|
|
|
|
if (sr != null) sr.Close();
|
|
|
|
|
|
|
|
drJIS_Log["EndTime"] = MyDateTime.GetServerDateTime();
|
|
|
|
drJIS_Log["ProcessState"] = "Failed";
|
|
|
|
drJIS_Log["Memo"] = MyStrings.GetString(ex.Message);
|
|
|
|
t_JIS_Log.Edit(drJIS_Log);
|
|
|
|
|
|
|
|
MoveFile(file, Path_Error);
|
|
|
|
|
|
|
|
//F_SMS.SendSMS(file.Name + " 处理失败,原因为:" + ex.Message);
|
|
|
|
LocalDBService db = new LocalDBService();
|
|
|
|
var strErrTypeCode = "01";
|
|
|
|
var strsql = "select top 1 * from t_ErrTypeLevel" +
|
|
|
|
" where Code = '" + strErrTypeCode + "'" +
|
|
|
|
" order by id desc";
|
|
|
|
var dsErrMail = db.Exec_DataSet(strsql);
|
|
|
|
if (dsErrMail.Tables[0].Rows.Count > 0)
|
|
|
|
{
|
|
|
|
//获取收件人
|
|
|
|
var mailTo = dsErrMail.Tables[0].Rows[0]["ToPerson"].ToString();
|
|
|
|
var errLvevl = dsErrMail.Tables[0].Rows[0]["ErrLevel"].ToString();
|
|
|
|
var errTypeDesc = dsErrMail.Tables[0].Rows[0]["ErrTypeDesc"].ToString();
|
|
|
|
//设置邮件标题
|
|
|
|
var title = "";
|
|
|
|
title = "LAB解析异常:错误级别-" + errLvevl + "-" + errTypeDesc;
|
|
|
|
F_Mail.Send(file.Name + "解析失败", title, mailTo);
|
|
|
|
}
|
|
|
|
|
|
|
|
// F_Mail.Send(file.Name + " 处理失败,原因为:" + ex.Message);
|
|
|
|
|
|
|
|
//如果文件有问题,不移动文件,等待一分钟后再处理
|
|
|
|
Thread.Sleep(60 * 1000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void ProcessDataLab(string text, string fileType, string filename,out string Msg)
|
|
|
|
{
|
|
|
|
|
|
|
|
Entity_t_JIS_Lab t_JIS_Lab = new Entity_t_JIS_Lab();
|
|
|
|
Entity_t_Product t_Product = new Entity_t_Product();
|
|
|
|
|
|
|
|
LocalDBService db = new LocalDBService();
|
|
|
|
|
|
|
|
text = text.Replace("\r\n", "").Replace("\r", "").Replace("\n", "");
|
|
|
|
string[] sp_text = text.Split('\'');
|
|
|
|
|
|
|
|
string version = string.Empty;
|
|
|
|
string releaseId = string.Empty;
|
|
|
|
string partNumber = string.Empty;
|
|
|
|
string orderNumber = string.Empty;
|
|
|
|
string status = string.Empty;
|
|
|
|
string startDate = string.Empty;
|
|
|
|
string endDate = string.Empty;
|
|
|
|
string quantity = string.Empty;
|
|
|
|
string cumulativeQuantity = string.Empty;
|
|
|
|
string location = string.Empty;
|
|
|
|
string LocationCode = string.Empty;
|
|
|
|
string time = "";
|
|
|
|
|
|
|
|
StringBuilder sqls = new StringBuilder();
|
|
|
|
string sql = "";
|
|
|
|
List<string> items = new List<string>();
|
|
|
|
|
|
|
|
//获取零件对应的版本号 add by jinh 20220419
|
|
|
|
//版本号在需求日期之后,目前是在需求日期处进行的数据插入
|
|
|
|
var lstPartRelease = new List<PartRelease>();
|
|
|
|
var partRelese = new PartRelease();
|
|
|
|
//定义预警级别
|
|
|
|
var errType = 0;
|
|
|
|
|
|
|
|
foreach (var line_text in sp_text)
|
|
|
|
{
|
|
|
|
if (line_text.Trim() == "") continue;
|
|
|
|
string[] sp_line = line_text.Split('+');
|
|
|
|
var partCode = "";
|
|
|
|
var release = "";
|
|
|
|
if (sp_line[0] == "ARD")
|
|
|
|
{
|
|
|
|
partRelese.PartCode = sp_line[1].Split(':')[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sp_line[0] == "ADI")
|
|
|
|
{
|
|
|
|
partRelese.Release = sp_line[1].Trim();
|
|
|
|
lstPartRelease.Add(partRelese);
|
|
|
|
partRelese = new PartRelease();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (string line_text in sp_text)
|
|
|
|
{
|
|
|
|
if (line_text.Trim() == "") continue;
|
|
|
|
string[] sp_line = line_text.Split('+');
|
|
|
|
|
|
|
|
if (sp_line[0] == "ARD")
|
|
|
|
{
|
|
|
|
partNumber = sp_line[1].Split(':')[0];
|
|
|
|
|
|
|
|
sql = $"delete from t_JIS_Lab where [fileType]='{fileType}' and [partNumber]='{partNumber}'";
|
|
|
|
sqls.AppendLine(sql);
|
|
|
|
|
|
|
|
if (sqls.Length > 20000)
|
|
|
|
{
|
|
|
|
db.Exec_NonQuery(sqls.ToString());
|
|
|
|
sqls = new StringBuilder();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var strPartMsg = "";
|
|
|
|
|
|
|
|
foreach (string line_text in sp_text)
|
|
|
|
{
|
|
|
|
if (line_text.Trim() == "") continue;
|
|
|
|
string[] sp_line = line_text.Split('+');
|
|
|
|
|
|
|
|
if (sp_line[0] == "UNB")
|
|
|
|
{
|
|
|
|
version = sp_line[5];
|
|
|
|
|
|
|
|
time = "20" + sp_line[4].Split(':')[0] + sp_line[4].Split(':')[1];
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (sp_line[0] == "MID")
|
|
|
|
//{
|
|
|
|
// releaseId = sp_line[1];
|
|
|
|
// releaseIdNew = releaseId.Replace("S", "").Replace("/", "").Replace("-", "").Replace(" ", "0");
|
|
|
|
|
|
|
|
//}
|
|
|
|
// if (sp_line[0] == "PDI")
|
|
|
|
// if (sp_line[0] == "ADI")
|
|
|
|
// {
|
|
|
|
// releaseId = sp_line[1].Trim();
|
|
|
|
// }
|
|
|
|
|
|
|
|
if (sp_line[0] == "SAD")
|
|
|
|
{
|
|
|
|
status = sp_line[1];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sp_line[0] == "ARD")
|
|
|
|
{
|
|
|
|
partNumber = sp_line[1].Split(':')[0];
|
|
|
|
orderNumber = sp_line[3];
|
|
|
|
//add by jinh 20220419 从list获取该零件的版本号
|
|
|
|
releaseId = lstPartRelease.FirstOrDefault(p => p.PartCode == partNumber).Release;
|
|
|
|
|
|
|
|
//校验零件号是否失效
|
|
|
|
var strsql = "";
|
|
|
|
strsql = "select top 1 * from t_Product where Code = '" + partNumber + "' order by id desc";
|
|
|
|
var dsProd = db.Exec_DataSet(strsql);
|
|
|
|
if (dsProd.Tables[0].Rows.Count > 0)
|
|
|
|
{
|
|
|
|
var strState = dsProd.Tables[0].Rows[0]["State"].ToString();
|
|
|
|
if (strState == "0" || string.IsNullOrEmpty(strState))
|
|
|
|
{
|
|
|
|
strPartMsg += "零件号 " + partNumber + " 已失效!" + Environment.NewLine;
|
|
|
|
if (errType == 0 || errType > 6)
|
|
|
|
{
|
|
|
|
errType = 6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
strPartMsg += "零件号 " + partNumber + " 未定义!" + Environment.NewLine;
|
|
|
|
if (errType == 0 || errType > 5)
|
|
|
|
{
|
|
|
|
errType = 5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sp_line[0] == "CSG")
|
|
|
|
{
|
|
|
|
LocationCode = sp_line[1].Split(':')[0];
|
|
|
|
location = sp_line[3];
|
|
|
|
|
|
|
|
//校验卸货点是否失效
|
|
|
|
var strsql = "";
|
|
|
|
strsql = "select top 1 * from t_Location where Code = '" + location + "' order by id desc";
|
|
|
|
var dsLoc = db.Exec_DataSet(strsql);
|
|
|
|
if (dsLoc.Tables[0].Rows.Count > 0)
|
|
|
|
{
|
|
|
|
var strState = dsLoc.Tables[0].Rows[0]["State"].ToString();
|
|
|
|
if (strState == "0" || string.IsNullOrEmpty(strState))
|
|
|
|
{
|
|
|
|
strPartMsg += "卸货点 " + location + " 已失效!" + Environment.NewLine;
|
|
|
|
if (errType == 0 || errType > 4)
|
|
|
|
{
|
|
|
|
errType = 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
strPartMsg += "卸货点 " + location + " 未在系统中定义!" + Environment.NewLine;
|
|
|
|
if (errType == 0 || errType > 2)
|
|
|
|
{
|
|
|
|
errType = 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验卸货点、卸货点代码是否匹配
|
|
|
|
strsql = "select top 1 * from t_Location" +
|
|
|
|
" where Code = '" + location + "'" +
|
|
|
|
//" and (LocCode1 = '" + LocationCode + "' or LocCode2 = '" + LocationCode + "' or LocCode3 = '" + LocationCode + "' or LocCode4 = '" + LocationCode + "')"+
|
|
|
|
" and (LocCode1 = '" + LocationCode + "')" +
|
|
|
|
" order by id desc";
|
|
|
|
dsLoc = db.Exec_DataSet(strsql);
|
|
|
|
if (dsLoc.Tables[0].Rows.Count == 0)
|
|
|
|
{
|
|
|
|
strPartMsg += "卸货点 " + location + " 对应的代码 " + LocationCode + " 未在系统中定义!" + Environment.NewLine;
|
|
|
|
if (errType == 0 || errType > 3)
|
|
|
|
{
|
|
|
|
errType = 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(sp_line[0] == "DST")
|
|
|
|
{
|
|
|
|
cumulativeQuantity = sp_line[2].Split(':')[1];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (sp_line[0] == "DEL")
|
|
|
|
{
|
|
|
|
startDate = sp_line[1].Split(':')[0];
|
|
|
|
endDate = sp_line[1].Split(':')[2];
|
|
|
|
|
|
|
|
quantity = sp_line[2].Split(':')[0];
|
|
|
|
//cumulativeQuantity = sp_line[2].Split(':')[4];
|
|
|
|
|
|
|
|
startDate = GetDateTimeStyle5(startDate, MyDateTimeType.Date);
|
|
|
|
endDate = GetDateTimeStyle5(endDate, MyDateTimeType.Date);
|
|
|
|
|
|
|
|
object[] obj = new object[14];
|
|
|
|
obj[0] = partNumber;
|
|
|
|
obj[1] = startDate;
|
|
|
|
obj[2] = endDate;
|
|
|
|
obj[3] = GetDateTimeStyle1(time, MyDateTimeType.DateTime);
|
|
|
|
obj[4] = releaseId;
|
|
|
|
obj[5] = location;
|
|
|
|
obj[6] = orderNumber;
|
|
|
|
obj[7] = cumulativeQuantity;
|
|
|
|
obj[8] = quantity;
|
|
|
|
obj[9] = status;
|
|
|
|
obj[10] = fileType;
|
|
|
|
obj[11] = version;
|
|
|
|
obj[12] = LocationCode;
|
|
|
|
obj[13] = filename;
|
|
|
|
|
|
|
|
|
|
|
|
//sql = "delete from t_JIS_Lab where partNumber='{0}' and startDate<='{1}' and endDate>='{2}'";
|
|
|
|
//sql = string.Format(sql, obj);
|
|
|
|
//sqls.AppendLine(sql);
|
|
|
|
|
|
|
|
|
|
|
|
//插入新的数据(当前数据)
|
|
|
|
sql = @"
|
|
|
|
insert into t_JIS_Lab(partNumber, startDate, endDate, [time], releaseId, location, orderNumber, cumulativeQuantity, quantity, [status], [fileType], [version], [LocationCode], [filename])
|
|
|
|
values('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', {7}, {8}, {9}, '{10}', '{11}', '{12}', '{13}')
|
|
|
|
";
|
|
|
|
sql = string.Format(sql, obj);
|
|
|
|
sqls.AppendLine(sql);
|
|
|
|
|
|
|
|
|
|
|
|
//插入新的数据(版本对比)
|
|
|
|
sql = @"
|
|
|
|
insert into t_JIS_Lab_All(partNumber, startDate, endDate, [time], releaseId, location, orderNumber, cumulativeQuantity, quantity, [status], [fileType], [version], [LocationCode], [filename])
|
|
|
|
values('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', {7}, {8}, {9}, '{10}', '{11}', '{12}', '{13}')
|
|
|
|
";
|
|
|
|
sql = string.Format(sql, obj);
|
|
|
|
sqls.AppendLine(sql);
|
|
|
|
|
|
|
|
|
|
|
|
//更新采购订单号
|
|
|
|
//sql = $"update t_Product set [StandardNo]='{orderNumber}' where [Code]='{partNumber}'";
|
|
|
|
//sqls.AppendLine(sql);
|
|
|
|
|
|
|
|
|
|
|
|
if (sqls.Length > 20000)
|
|
|
|
{
|
|
|
|
db.Exec_NonQuery(sqls.ToString());
|
|
|
|
sqls = new StringBuilder();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sqls.ToString() != "")
|
|
|
|
{
|
|
|
|
db.Exec_NonQuery(sqls.ToString());
|
|
|
|
sqls = new StringBuilder();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (strPartMsg != "")
|
|
|
|
{
|
|
|
|
var strErrTypeCode = errType.ToString("00");
|
|
|
|
var strsql = "select top 1 * from t_ErrTypeLevel" +
|
|
|
|
" where Code = '" + strErrTypeCode + "'" +
|
|
|
|
" order by id desc";
|
|
|
|
var dsErrMail = db.Exec_DataSet(strsql);
|
|
|
|
if (dsErrMail.Tables[0].Rows.Count > 0)
|
|
|
|
{
|
|
|
|
//获取收件人
|
|
|
|
var mailTo = dsErrMail.Tables[0].Rows[0]["ToPerson"].ToString();
|
|
|
|
var errLvevl = dsErrMail.Tables[0].Rows[0]["ErrLevel"].ToString();
|
|
|
|
var errTypeDesc = dsErrMail.Tables[0].Rows[0]["ErrTypeDesc"].ToString();
|
|
|
|
//设置邮件标题
|
|
|
|
var title = "";
|
|
|
|
title = "LAB解析异常-错误级别-" + errLvevl + "-" + errTypeDesc;
|
|
|
|
F_Mail.Send(title, strPartMsg, mailTo);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Msg = strPartMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void MoveFile(FileInfo file, string MovePath)
|
|
|
|
{
|
|
|
|
string filename1 = Path_Receive + "\\" + file.Name;
|
|
|
|
string filename2 = MovePath + "\\" + file.Name;
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if (File.Exists(filename2)) File.Delete(filename2);
|
|
|
|
File.Move(filename1, filename2);
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
MyLogger.Write("移动文件错误 " + filename1 + "->" + filename2 + ",原因为:" + ex.Message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static string GetFileType(string filename)
|
|
|
|
{
|
|
|
|
string ret = "";
|
|
|
|
|
|
|
|
if (filename.ToUpper().IndexOf("ASA") >= 0)
|
|
|
|
{
|
|
|
|
ret = "ASA";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filename.ToUpper().IndexOf("ATC") >= 0)
|
|
|
|
{
|
|
|
|
ret = "ATC";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filename.ToUpper().IndexOf("ATP") >= 0)
|
|
|
|
{
|
|
|
|
ret = "ATP";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filename.ToUpper().IndexOf("DEL") >= 0)
|
|
|
|
{
|
|
|
|
ret = "解析LAB文件";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filename.ToUpper().IndexOf("ANB") >= 0)
|
|
|
|
{
|
|
|
|
ret = "ANB";
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void IsFileOK(string text, string filename)
|
|
|
|
{
|
|
|
|
text = text.Replace("\r\n", "").Replace("\r", "").Replace("\n", "");
|
|
|
|
string[] sp_text = text.Split('\'');
|
|
|
|
|
|
|
|
|
|
|
|
if (sp_text[0].Substring(0, 3) != "UNB")
|
|
|
|
{
|
|
|
|
throw new Exception(filename + " 不以UNB开头");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sp_text[sp_text.Length - 2].Substring(0, 3) != "UNZ")
|
|
|
|
{
|
|
|
|
throw new Exception(filename + " 不以UNZ结尾");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sp_text[sp_text.Length - 3].Substring(0, 3) != "UNT")
|
|
|
|
{
|
|
|
|
throw new Exception(filename + " 未找到UNT");
|
|
|
|
}
|
|
|
|
|
|
|
|
int segment_count = Convert.ToInt32(sp_text[sp_text.Length - 3].Split('+')[1]);
|
|
|
|
|
|
|
|
if (segment_count != sp_text.Length - 3)
|
|
|
|
{
|
|
|
|
throw new Exception(filename + " Segment 数量不正确");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#region 日期时间转换
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 201401160939 和 20140116093911 将这种字符串转换为日期
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sDateTime"></param>
|
|
|
|
/// <param name="dType"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static string GetDateTimeStyle1(string sDateTime, MyDateTimeType dType)
|
|
|
|
{
|
|
|
|
if (sDateTime.Length != 12 && sDateTime.Length != 14)
|
|
|
|
{
|
|
|
|
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 = sDateTime.Substring(8, 2);
|
|
|
|
string m = sDateTime.Substring(10, 2);
|
|
|
|
string s = sDateTime.Length == 14 ? sDateTime.Substring(12, 2) : "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;
|
|
|
|
}
|
|
|
|
|
|
|
|
//12.04.2014 09:07:00
|
|
|
|
public static string GetDateTimeStyle2(string sDateTime, MyDateTimeType dType)
|
|
|
|
{
|
|
|
|
if (sDateTime.Length != 19) throw new Exception("[" + sDateTime + "]日期时间格式错误!");
|
|
|
|
|
|
|
|
string Result = "";
|
|
|
|
string year = sDateTime.Substring(6, 4);
|
|
|
|
string month = sDateTime.Substring(3, 2);
|
|
|
|
string day = sDateTime.Substring(0, 2);
|
|
|
|
|
|
|
|
string h = sDateTime.Substring(11, 2);
|
|
|
|
string m = sDateTime.Substring(14, 2);
|
|
|
|
string s = sDateTime.Substring(17, 2);
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 20140116093900 将这种字符串转换为日期
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sDateTime"></param>
|
|
|
|
/// <param name="dType"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static string GetDateTimeStyle3(string sDateTime, MyDateTimeType dType)
|
|
|
|
{
|
|
|
|
if (sDateTime.Length != 12 && sDateTime.Length != 14) 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 = sDateTime.Substring(8, 2);
|
|
|
|
string m = sDateTime.Substring(10, 2);
|
|
|
|
string s = sDateTime.Length == 14 ? sDateTime.Substring(12, 2) : "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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 20140808 将这种字符串转换为日期
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sDateTime"></param>
|
|
|
|
/// <param name="dType"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 140808 将这种字符串转换为日期
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sDateTime"></param>
|
|
|
|
/// <param name="dType"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static string GetDateTimeStyle5(string sDateTime, MyDateTimeType dType)
|
|
|
|
{
|
|
|
|
if (sDateTime.Length != 6) throw new Exception("[" + sDateTime + "]日期时间格式错误!");
|
|
|
|
|
|
|
|
string Result = "";
|
|
|
|
string year = "20" + sDateTime.Substring(0, 2);
|
|
|
|
string month = sDateTime.Substring(2, 2);
|
|
|
|
string day = sDateTime.Substring(4, 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
public partial class PartRelease
|
|
|
|
{
|
|
|
|
public string PartCode { get; set;}
|
|
|
|
|
|
|
|
public string Release { get; set; }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|