Esempio n. 1
0
 /// <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);
     }
 }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        /// <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);
            }
        }