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 = ""; //LAB 调整 // if (file.Name.ToUpper().IndexOf("DEL") >= 0) if (file.Name.ToUpper().IndexOf("VDA") >= 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); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + file.Name + "解析失败')"; db.Exec_NonQuery(strsql); } // F_Mail.Send(file.Name + " 处理失败,原因为:" + ex.Message); //如果文件有问题,不移动文件,等待一分钟后再处理 Thread.Sleep(60 * 1000); } } try { #region 监控ASN报文是否成功生成 var db = new LocalDBService(); var strAsnUpLoadsql = "select top 1 * from t_ASN_UPLOAD where isCreate = 0 order by uid "; var dsAsnUpLoad = db.Exec_DataSet(strAsnUpLoadsql); if (dsAsnUpLoad.Tables[0].Rows.Count > 0) { //获取 ASN报文上传的时间 var alertTime = DateTime.Parse(dsAsnUpLoad.Tables[0].Rows[0]["AlertTime"].ToString()); var nowTime = DateTime.Now; TimeSpan timeSpan = nowTime - alertTime; var min = timeSpan.TotalMinutes; //超出10分钟 报文未生成,则进行预警预警 if (min > 10) { var strErrTypeCode = "08"; 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 = "服务器器ASN报文生成失败-错误级别-" + errLvevl + "-" + errTypeDesc; var strDetails = ""; var asnNum = dsAsnUpLoad.Tables[0].Rows[0]["AsnNum"].ToString(); strDetails = "ASN【" + asnNum + "】已超出10分钟未生成报文!"; F_Mail.Send(title, strDetails, mailTo); } //更新报警时间 strsql = "Update t_ASN_UPLOAD set AlertTime = getdate() " + " where isCreate = 0"; db.Exec_NonQuery(strsql); } } #endregion } catch (Exception e) { F_Mail.Send("ASN报文生成监控异常", "监控ASN报文是否生成失败 " + e.ToString(), "JLi50@lear.com"); } } /// /// By jinhao 20250407 LAB格式调整前 /// /// /// /// /// private static void ProcessDataLab_Old(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 partDesc = 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 items = new List(); //获取零件对应的版本号 add by jinh 20220419 //版本号在需求日期之后,目前是在需求日期处进行的数据插入 var lstPartRelease = new List(); var partRelese = new PartRelease(); 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 = ""; //卸货点新增 var alertMsg1 = ""; //卸货点与代码不匹配 var alertMsg2 = ""; //卸货点失效 var alertMsg3 = ""; //零件新增 var alertMsg4 = ""; //零件失效 var alertMsg5 = ""; 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]; partDesc = sp_line[1].Split(':')[2]; 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; alertMsg5 += "零件号 " + partNumber + " 已失效!" + Environment.NewLine; } } else { strPartMsg += "零件号," + partNumber + "," + partDesc + ",未定义!" + Environment.NewLine; alertMsg4 += "零件号," + partNumber + "," + partDesc + ",未定义!" + Environment.NewLine; } } 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; alertMsg3 += "卸货点 " + location + " 已失效!" + Environment.NewLine; } } else { strPartMsg += "卸货点 " + location + " 未在系统中定义!" + Environment.NewLine; alertMsg1 += "卸货点 " + location + " 未在系统中定义!" + Environment.NewLine; } //校验卸货点、卸货点代码是否匹配 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; alertMsg2 += "卸货点 " + location + " 对应的代码 " + LocationCode + " 未在系统中定义!" + Environment.NewLine; } } 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 strsql = ""; var dsErrMail = new DataSet(); if (alertMsg1 != "") { alertMsg1 = filename + " " + alertMsg1; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '02'" + " order by id desc"; 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, alertMsg1, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg1 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg2 != "") { alertMsg2 = filename + " " + alertMsg2; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '03'" + " order by id desc"; 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, alertMsg2, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg2 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg3 != "") { alertMsg3 = filename + " " + alertMsg3; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '04'" + " order by id desc"; 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, alertMsg3, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg3 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg4 != "") { alertMsg4 = filename + " " + alertMsg4; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '05'" + " order by id desc"; 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, alertMsg4, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg4 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg5 != "") { alertMsg5 = filename + " " + alertMsg5; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '06'" + " order by id desc"; 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, alertMsg5, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg5 + "')"; db.Exec_NonQuery(strsql); } } strPartMsg = filename + " " + strPartMsg; } Msg = strPartMsg; } 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 partDesc = 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 items = new List(); var strPartMsg = ""; var strPartRelease = ""; //卸货点新增 var alertMsg1 = ""; //卸货点与代码不匹配 var alertMsg2 = ""; //卸货点失效 var alertMsg3 = ""; //零件新增 var alertMsg4 = ""; //零件失效 var alertMsg5 = ""; //零件ReleaseID 不连续 var alertMsg6 = ""; status = "1"; //获取零件对应的版本号 add by jinh 20220419 //版本号在需求日期之后,目前是在需求日期处进行的数据插入 var lstPartRelease = new List(); var partRelese = new PartRelease(); foreach (var line_text in sp_text) { if (line_text.Trim() == "") continue; string[] sp_line = line_text.Split('+'); var partCode = ""; var release = ""; //LAB调整 LIN+1++5A0B549-00:IN ARD+7360674-02::MDL DISK HEADREST SUPPORT // if (sp_line[0] == "ARD") if (sp_line[0] == "LIN") { // partRelese.PartCode = sp_line[1].Split(':')[0]; partRelese.PartCode = sp_line[3].Split(':')[0]; } //LAB调整 RFF+AAN:1747' ADI+00001509+220308 // if (sp_line[0] == "ADI") if (sp_line[0] == "RFF" && sp_line[1].Substring(0, 3) == "AAN") { // partRelese.Release = sp_line[1].Trim(); partRelese.Release = sp_line[1].Split(':')[1].Trim(); //校验ReleaseID是否按顺序生成 var strsql = ""; strsql = "select top 1 * from t_JIS_Lab_All where partNumber = '" + partRelese.PartCode + "' order by id desc"; var dsPartRelease = db.Exec_DataSet(strsql); if (dsPartRelease.Tables[0].Rows.Count > 0) { var strRelese = dsPartRelease.Tables[0].Rows[0]["releaseId"].ToString(); if((int.Parse(strRelese)-int.Parse(partRelese.Release)) != 1) { strPartRelease += "零件号 " + partRelese.PartCode + " releaseId " + partRelese.Release + "与之前Lab文件的 releaseId " + strRelese + "不延续!" ; alertMsg6 += "零件号 " + partRelese.PartCode + " releaseId " + partRelese.Release + "与之前Lab文件的 releaseId " + strRelese + "不延续!" + Environment.NewLine; } } lstPartRelease.Add(partRelese); partRelese = new PartRelease(); } } //如果版本不连续,抛出异常,解析失败 考虑抛出在数据库中设置 if (alertMsg6.Trim() != "") { //通过前台配置ReleaseID不联系是否继续接续 var strsql = "select top 1 * from t_ErrTypeLevel where Code = '00' 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; string[] sp_line = line_text.Split('+'); //ARD+2972240-04::DS FINISHER BLACK+:00+I297224004+++-0 //LIN+1++5A0B549-00:IN if (sp_line[0] == "LIN") { partNumber = sp_line[3].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(); } } } int i = 1; foreach (string line_text in sp_text) { i++; if (i == 41) { i = i; } if (line_text.Trim() == "") continue; string[] sp_line = line_text.Split('+'); //DTM+2' continue if (sp_line[0] == "DTM" && sp_line[1].Split(':').Length <3) { continue; } //UNB+UNOA:1+O01770000000000X00A+O0177X1BH000000+220308:1458+S2022/6 -7++DELINS //UNB+UNOC:3+O01770000000000X00ATEST+O0177X1BH000000TEST+250307:1500+000000001 新LAB 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(); // } //新LAB未找到该点 赋固定值 // if (sp_line[0] == "SAD") // { // status = sp_line[1]; // } // ARD ARD+2972240-04::DS FINISHER BLACK+:00+I297224004+++-0 //LIN+1++5A0B549-00:IN if (sp_line[0] == "LIN") { partNumber = sp_line[3].Split(':')[0]; // partDesc = sp_line[1].Split(':')[2]; // orderNumber = sp_line[3]; //add by jinh 20220419 从list获取该零件的版本号 releaseId = lstPartRelease.FirstOrDefault(p => p.PartCode == partNumber).Release; } //新LAB 获取零件描述 //IMD+F++::272: REINFORCEMENT SILL TOP LH G20:F' if (sp_line[0] == "IMD") { partDesc = sp_line[3].Split(':')[3]; } //新LAB 获取采购订单号 //RFF+ON:N5A0B54900:00010' 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"; 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; alertMsg5 += "零件号 " + partNumber + " 已失效!" + Environment.NewLine; } } else { strPartMsg += "零件号," + partNumber + "," + partDesc + ",未定义!" + Environment.NewLine; alertMsg4 += "零件号," + partNumber + "," + partDesc + ",未定义!" + Environment.NewLine; } } //CSG+15288009:BMW BRILLIANCE AUTOMOTIVE LTD.:**********:::*******14*+:BMW BRILLIANCE AUTOMOTIVE LTD.+AS05+CN //NAD+BY+19461010::92 新LAB if (sp_line[0] == "NAD" && sp_line[1] == "BY") { LocationCode = sp_line[2].Split(':')[0]; } //新LAB 获取 location //LOC+11+TBL1::92' if (sp_line[0] == "LOC" && sp_line[1] == "11") { location = sp_line[2].Split(':')[0]; //校验卸货点是否失效 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; alertMsg3 += "卸货点 " + location + " 已失效!" + Environment.NewLine; } } else { strPartMsg += "卸货点 " + location + " 未在系统中定义!" + Environment.NewLine; alertMsg1 += "卸货点 " + location + " 未在系统中定义!" + Environment.NewLine; } //校验卸货点、卸货点代码是否匹配 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; alertMsg2 += "卸货点 " + location + " 对应的代码 " + LocationCode + " 未在系统中定义!" + Environment.NewLine; } } //DST+220308+242798:173410::000000 // QTY + 70:116053:PCE' if (sp_line[0] == "QTY" && sp_line[1].Split(':')[0].ToString() == "70") { cumulativeQuantity = sp_line[1].Split(':')[1]; } //DEL+220307::220307+0::0::196 //DTM+2:20231106:102' 日计划触发一次保存 // SCC + 24 Group is transfer daily demand to supplier; // SCC + 4 Group is transfer period demand to supplier; //获取日计划的数量 //QTY+113:720:PCE' if (sp_line[0] == "QTY" && sp_line[1].Split(':')[0].ToString() == "113") { quantity = sp_line[1].Split(':')[1]; } //DTM+2:20231106:102' 日计划触发一次保存 if (sp_line[0] == "DTM" && sp_line[1].Split(':')[0].ToString() == "2") { startDate = sp_line[1].Split(':')[1]; endDate = sp_line[1].Split(':')[1]; startDate = GetDateTimeStyle4(startDate, MyDateTimeType.Date); endDate = GetDateTimeStyle4(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 = @" 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(); } } //获取周期计划的数量 //QTY+113:410:PCE' 和日计划的数量取数逻辑一样 if (sp_line[0] == "QTY" && sp_line[1].Split(':')[0].ToString() == "113") { quantity = sp_line[1].Split(':')[1]; } //获取周期计划的 开始时间 // DTM + 64:20241111:102' if (sp_line[0] == "DTM" && sp_line[1].Split(':')[0].ToString() == "64") { startDate = sp_line[1].Split(':')[1]; } //获取周期计划的 结束时间 并保存 // DTM + 63:20241117:102' if (sp_line[0] == "DTM" && sp_line[1].Split(':')[0].ToString() == "63") { endDate = sp_line[1].Split(':')[1]; startDate = GetDateTimeStyle4(startDate, MyDateTimeType.Date); endDate = GetDateTimeStyle4(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 = @" 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); 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 strsql = ""; var dsErrMail = new DataSet(); if (alertMsg1 != "") { alertMsg1 = filename + " " + alertMsg1; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '02'" + " order by id desc"; 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, alertMsg1, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg1 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg2 != "") { alertMsg2 = filename + " " + alertMsg2; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '03'" + " order by id desc"; 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, alertMsg2, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg2 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg3 != "") { alertMsg3 = filename + " " + alertMsg3; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '04'" + " order by id desc"; 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, alertMsg3, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg3 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg4 != "") { alertMsg4 = filename + " " + alertMsg4; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '05'" + " order by id desc"; 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, alertMsg4, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg4 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg5 != "") { alertMsg5 = filename + " " + alertMsg5; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '06'" + " order by id desc"; 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, alertMsg5, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg5 + "')"; db.Exec_NonQuery(strsql); } } if (alertMsg6 != "") { alertMsg6 = filename + " " + alertMsg6; strsql = "select top 1 * from t_ErrTypeLevel" + " where Code = '00'" + " order by id desc"; 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, alertMsg5, mailTo); //插入报警信息 var operCode = dsErrMail.Tables[0].Rows[0]["OperCode"].ToString(); strsql = "Insert into t_Error_Log(OperCode,Msg) values ('" + operCode + "','" + alertMsg6 + "')"; db.Exec_NonQuery(strsql); } } strPartMsg = filename + " " + strPartMsg; } 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('\''); //LAB 调整 // if (sp_text[0].Substring(0, 3) != "UNB") if (sp_text[0].Substring(0, 3) != "UNA") { throw new Exception(filename + " 不以UNA开头"); } 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 - 4) { throw new Exception(filename + " Segment 数量不正确"); } } #region 日期时间转换 /// /// 201401160939 和 20140116093911 将这种字符串转换为日期 /// /// /// /// 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; } /// /// 20140116093900 将这种字符串转换为日期 /// /// /// /// 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; } /// /// 20140808 将这种字符串转换为日期 /// /// /// /// 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; } /// /// 140808 将这种字符串转换为日期 /// /// /// /// 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; } } } }