/// <summary> /// 退货仓sftp日志单条 /// </summary> /// <param name="logs"></param> /// <returns></returns> public bool AddNikeReturnSFTPLog(WMS_NikeReturnSFTP_Log log) { try { List <WMS_NikeReturnSFTP_Log> logs = new List <WMS_NikeReturnSFTP_Log>(); logs.Add(log); return(new LogOperationAccessor().AddNikeReturnSFTPLogs(logs)); } catch (Exception ex) { return(false); } }
/// <summary> /// 发送文件 /// </summary> public void SendFileToLF() { try { //读取send文件夹,发送到LFsftp //读取文件列表 string[] sendfiles = Directory.GetFiles(SFTPConstants.SendFilePath); if (sendfiles.Length > 0) { for (int i = 0; i < sendfiles.Length; i++) { WMS_NikeReturnSFTP_Log log = new WMS_NikeReturnSFTP_Log(); log.SourceFileName = sendfiles[i]; log.Type = "SendFile"; try { FileInfo file = new FileInfo(sendfiles[i]); string filename = file.Name; log.Str7 = SFTPConstants.sftpip; log.Str8 = SFTPConstants.sftpport; log.Str9 = SFTPConstants.sftpuser; log.Str10 = SFTPConstants.sftppwd; SFTPHelper sftp = new SFTPHelper(SFTPConstants.sftpip, SFTPConstants.sftpport, SFTPConstants.sftpuser, SFTPConstants.sftppwd); //string sftpfilepath = SFTPConstants.sftpfilepath + @"\" + filename; //发送文件 sftp.Put(sendfiles[i], filename); log.ToFileName = SFTPConstants.SentFilePath + @"\" + filename; log.Flag = "Y"; log.ResultDesc = "发送成功"; FileCommon.MoveToCover(log.SourceFileName, log.ToFileName); } catch (Exception ex) { log.Flag = "N"; log.ResultDesc = "发送失败:" + ex.Message.ToString(); } new LogOperationService().AddNikeReturnSFTPLog(log); } } } catch (Exception e) { WMS_NikeReturnSFTP_Log log = new WMS_NikeReturnSFTP_Log(); log.Type = "SendFile"; log.Flag = "N"; log.ResultDesc = e.Message.ToString(); new LogOperationService().AddNikeReturnSFTPLog(log); } }
public void ReadFile() { try { //读取文件列表 string[] receivefiles = Directory.GetFiles(SFTPConstants.ReceiveFilePath); if (receivefiles.Length > 0) { //TextHelper txthelper = new TextHelper(); for (int i = 0; i < receivefiles.Length; i++) { WMS_NikeReturnSFTP_Log log = new WMS_NikeReturnSFTP_Log(); log.SourceFileName = receivefiles[i]; FileInfo file = new FileInfo(receivefiles[i]); string filename = file.Name; string result = "";//解析的错误提示 string externumber = ""; try { List <string> txtlists = TextHelper.ReadTextFileToList(receivefiles[i]);//读取成list //没有数据 if (txtlists.Count() > 0) { //可以处理多个接口文件 switch (txtlists[0].ToString().Substring(0, 9).Trim()) { case "WMSSHP": //LF推给我们的出库单 log.Type = "WMSALLOC"; result = new WMSALLOCManage().LFOrderImportByLoadKey(txtlists, out externumber); break; default: log.Type = ""; result = "未能从文件中识别出对应的接口"; break; } if (result == "") { //解析成功,移动到success文件夹 log.ToFileName = SFTPConstants.SuccessFilePath + @"\" + log.Type + @"\" + filename; log.ResultDesc = "解析成功"; log.Str1 = externumber; log.Flag = "Y"; } else { if (log.Type != "") { if (result.Contains("数据库插入失败")) { log.ToFileName = "";// SFTPConstants.SuccessFilePath + @"\" + log.Type + @"\" + filename; log.ResultDesc = "解析失败:" + result; log.Str1 = externumber; log.Flag = "E"; } else { log.ToFileName = SFTPConstants.FaildFilePath + @"\" + log.Type + @"\" + filename;//移动到解析失败文件夹 log.ResultDesc = "解析失败:" + result; log.Str1 = externumber; log.Flag = "N"; } } else { log.ToFileName = SFTPConstants.ErrorFilePath + @"\" + filename; log.ResultDesc = "解析失败:" + result; log.Str1 = externumber; log.Flag = "N"; } } } else { log.ToFileName = SFTPConstants.ErrorFilePath + @"\" + filename; log.Flag = "N"; log.ResultDesc = "解析失败:文档中无数据"; } } catch (Exception ex) { //报错了放到error文件 log.ToFileName = SFTPConstants.ErrorFilePath + @"\" + filename; log.Flag = "N"; log.ResultDesc = "解析报错:" + ex.Message.ToString(); } if (log.Flag == "E")//数据库失败再解析一次 { } else { FileCommon.MoveToCover(log.SourceFileName, log.ToFileName); } new LogOperationService().AddNikeReturnSFTPLog(log); } } } catch (Exception e) { WMS_NikeReturnSFTP_Log log = new WMS_NikeReturnSFTP_Log(); log.Flag = "N"; log.ResultDesc = "读取文件报错:" + e.Message.ToString(); new LogOperationService().AddNikeReturnSFTPLog(log); } }
/// <summary> /// 取订单包装信息。一个loadkey下的多个订单组成一个文件 /// </summary> public void BuildPack() { try { //查询已出库的包装信息 GetOrderByConditionResponse response = new GetOrderByConditionResponse(); response = new OrderManagementService().GetReturnSFTPPackage(0); if (response != null && response.OrderCollection != null && response.OrderCollection.Any() && response.packages != null && response.packages.Any() && response.packageDetails != null && response.packageDetails.Any()) { //List<WMS_NikeReturnSFTP_Log> logs = new List<WMS_NikeReturnSFTP_Log>(); //一个loadkey为一个文件 List <string> loadkeylist = response.OrderCollection.Select(m => m.str9).Distinct().ToList(); foreach (var loadkeyitem in loadkeylist) { WMS_NikeReturnSFTP_Log log = new WMS_NikeReturnSFTP_Log(); log.Type = "WMSPACK"; log.Str1 = loadkeyitem; string msg = ""; try { List <string> wmspacktxtlist = new List <string>(); //文档头 string WMSPAC = ""; WMSPAC += "WMSPAC".TxtPadRightstring(10) + "I".TxtPadRightstring(2) + DateTime.Now.ToString("yyyyMMddHHmmss") + "NIKECN".TxtPadRightstring(20) + "CN".TxtPadRightstring(5) + "Pack Inbound".TxtPadRightstring(30) + "".TxtPadRightstring(20); wmspacktxtlist.Add(WMSPAC); //得到loadkey下的订单 IEnumerable <OrderInfo> orders = response.OrderCollection.Where(m => m.str9 == loadkeyitem).ToList(); foreach (var orderitem in orders) { string PACHD = "";//订单头 PACHD += "PACHDA" + orderitem.str11.TxtPadRightstring(10) + "NIKECN".TxtPadRightstring(20) + "".TxtPadRightstring(10) + orderitem.str9.TxtPadRightstring(10) + "".TxtPadRightstring(18) + "".TxtPadRightstring(15) + "0" + "".TxtPadRightstring(110); //订单的包装信息 IEnumerable <PackageInfo> packages = response.packages.Where(m => m.OID == orderitem.ID).ToList(); if (packages == null || !packages.Any()) { msg = "LoadKey:" + loadkeyitem + " 对应的订单:" + orderitem.ExternOrderNumber + " 没有包装信息"; break; } //计算总重量,体积 decimal TotCtnWeight = 0; decimal TotCtnCube = 0; packages.ToList().ForEach((m) => { TotCtnWeight += m.GrossWeight.ObjectToDecimal(); TotCtnCube += m.NetWeight.ObjectToDecimal(); }); PACHD += TotCtnWeight.ToString().TxtPadRightstring(16) + TotCtnCube.ToString().TxtPadRightstring(16) + "NIKECN".TxtPadRightstring(10) + "".TxtPadRightstring(290); wmspacktxtlist.Add(PACHD); #region 包装信息 int packindex = 0;//包装箱号索引 foreach (var packitem in packages) { //得到明细 IEnumerable <PackageDetailInfo> packageDetails = response.packageDetails.Where(m => m.PID == packitem.ID).ToList(); if (packageDetails == null || !packageDetails.Any()) { msg = "LoadKey:" + loadkeyitem + " 对应的订单:" + orderitem.ExternOrderNumber + " 没有包装明细信息"; break; } packindex++; //包装头信息 string PACIF = ""; PACIF += "PACIFA" + orderitem.str11.TxtPadRightstring(10) + packindex.ToString().TxtPadRightstring(10) + packitem.GrossWeight.ToString().TxtPadRightstring(16) + packitem.NetWeight.ToString().TxtPadRightstring(16) + "".TxtPadRightstring(20) + packindex.ToString().TxtPadRightstring(40); PACIF += packitem.Length.TxtPadRightstring(16) + packitem.Width.TxtPadRightstring(16) + packitem.Height.TxtPadRightstring(16) + "".TxtPadRightstring(170); wmspacktxtlist.Add(PACIF); foreach (var packdetailitem in packageDetails) { string PACDT = "";//包装明细 PACDT += "PACDTA" + orderitem.str11.TxtPadRightstring(10) + packindex.ToString().TxtPadRightstring(10) + packindex.ToString().TxtPadRightstring(20) + packindex.ToString().TxtPadLeftstring(5, '0') + "NIKECN".TxtPadRightstring(15); string sku = packdetailitem.str10.Replace("-", "").ToString() + packdetailitem.str9.ToString(); PACDT += sku.TxtPadRightstring(20) + packdetailitem.Qty.ObjectToNullableInt32().ToString().TxtPadRightstring(10) + "runbow".TxtPadRightstring(20) + "".TxtPadRightstring(10) + "".TxtPadRightstring(50) + packindex.ToString().TxtPadRightstring(30) + "".TxtPadRightstring(150); wmspacktxtlist.Add(PACDT); } } #endregion if (!string.IsNullOrEmpty(msg)) { break; } } if (!string.IsNullOrEmpty(msg)) { log.Flag = "N"; log.ResultDesc = "生成包装信息反馈文件失败:" + msg; new LogOperationService().AddNikeReturnSFTPLog(log); //下一个loadkey continue; } //loadkey级别生成完毕 string PACTR = ""; PACTR += "PACTR" + (wmspacktxtlist.Count - 1).ToString().TxtPadLeftstring(10, '0'); wmspacktxtlist.Add(PACTR); //生成文件到发送文件夹 string filepath = SFTPConstants.SendFilePath + @"\" + "WMSPACK_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt"; TextHelper.WriteListToTextFile(wmspacktxtlist, filepath); log.Flag = "Y"; log.ResultDesc = "生成包装反馈文件成功"; log.ToFileName = filepath; //更新订单反馈状态 string ids = ""; orders.ToList().ForEach((o) => { ids += o.ID + ","; }); ids = ids.Substring(0, ids.Length - 1); new OrderManagementService().UpdateReturnSFTPOrderFlag(ids, 1); new LogOperationService().AddNikeReturnSFTPLog(log); } catch (Exception el) { //这个loadkey报错了不影响其他loadkey发送 log.Flag = "N"; log.ResultDesc = "生成包装信息反馈文件失败:" + el.Message.ToString(); new LogOperationService().AddNikeReturnSFTPLog(log); } } } else { //没有待回传信息 } } catch (Exception ex) { WMS_NikeReturnSFTP_Log log = new WMS_NikeReturnSFTP_Log() { Type = "WMSPACK", Flag = "N", ResultDesc = "生成包装信息反馈文件失败:" + ex.Message.ToString() }; new LogOperationService().AddNikeReturnSFTPLog(log); } }