Пример #1
0
        public override bool Put()
        {
            try
            {
                //获取配置参数
                DefConfigurationSectionRequest DefRequest =
                    this._paramList.SingleOrDefault(
                        o => o.Key == "SKURequest").Value;
                Request request = null;
                if (DefRequest != null)
                {
                    LogHelper.WriteLog(typeof(string), batchNumber + ":<<上传", LogHelper.LogLevel.INFO);
                    switch (DefRequest.runningMode)
                    {
                    case "off":
                        LogHelper.WriteLog(typeof(string), batchNumber + ":上传的模式不存在", LogHelper.LogLevel.Warn);
                        break;

                    case "on_once":     //执行单次模式,按照配置表提供的参数执行

                        //请求参数
                        request = new Request(DefRequest.startTime, DefRequest.endTime, DefRequest.page,
                                              DefRequest.pageSize);
                        //return (GetSKU(batchNumber, request));
                        break;

                    case "on_continuity":          ///执行连续模式,获取起始日期和终止日期的时间差,用于配置
                        ASNAccessor Accessor = new ASNAccessor();
                        Accessor.wms_receipt();    //上传入库反馈
                        Accessor.Create_SHPPK();   //上传出库反馈
                        Accessor.QueryIQCManual(); //生成手工单移库
                        Accessor.WMSAdjustment();  //上传调整反馈
                        //Accessor.WMSInventory();//上传库存快照反馈
                        return(true);

                    default:
                        LogHelper.WriteLog(typeof(string), batchNumber + ":上传的模式不存在", LogHelper.LogLevel.Error);
                        break;
                    }
                    return(true);
                }
                else
                {
                    LogHelper.WriteLog(typeof(string), batchNumber + ":请求参数为空,无法继续",
                                       LogHelper.LogLevel.Error);
                    return(false);
                }
            }
            catch
            (Exception
             ex)
            {
                LogHelper.WriteLog(ex.GetType(), batchNumber + ":" + ex.Message, LogHelper.LogLevel.Error);
                return(false);
            }
            finally
            {
                LogHelper.WriteLog(typeof(string), batchNumber + ">>结束上传", LogHelper.LogLevel.INFO);
            }
        }
Пример #2
0
        public override bool Business()
        {
            try
            {
                SFTPHelper fTPHelper = new SFTPHelper(SFTPIP, SFTPort, SFTPUser, SFTPPwd);
                //读取文件列表
                string[] receivefiles = Directory.GetFiles(SFTPConstants.ReceiveFilePath);
                LogHelper.WriteLog(typeof(string), "开始处理文件", LogHelper.LogLevel.INFO);

                if (receivefiles.Length > 0)
                {
                    //TextHelper txthelper = new TextHelper();
                    for (int i = 0; i < receivefiles.Length; i++)
                    {
                        LogModel log = new LogModel();
                        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 "WMSSKU":    //PUMA推给我们的
                                    log.Type = "WMSSKU";
                                    result   = new ProductAccessor().AddProduct(txtlists, out externumber);
                                    break;

                                case "WMSASN":    //PUMA推给我们的 入库单
                                    log.Type = "WMSASN";
                                    result   = new ASNAccessor().GetInbound_ASNHD(txtlists, out externumber);
                                    break;

                                case "WMSORD":    //PUMA推给我们的 出库单
                                    log.Type = "WMSORD";
                                    result   = new ASNAccessor().GetInbound_ORDHD(txtlists, out externumber);
                                    break;

                                default:
                                    log.Type = "";
                                    result   = "未能从文件中识别出对应的接口";
                                    break;
                                }

                                if (result == "200")
                                {
                                    //解析成功,移动到success文件夹
                                    log.ToFileName  = SFTPConstants.SuccessFilePath + @"\" + log.Type + @"\" + filename;
                                    log.ResultDesc  = "解析成功";
                                    log.Externumber = externumber;
                                    log.Flag        = "Y";

                                    if (log.Type == "WMSSKU")
                                    {
                                        fTPHelper.Delete(OUT_MASTER + "//" + filename);
                                    }
                                    else
                                    {
                                        fTPHelper.Delete(OUT_TRANSACTION + "//" + filename);
                                    }
                                }
                                else
                                {
                                    if (log.Type != "")
                                    {
                                        if (result.Contains("数据库插入失败"))
                                        {
                                            log.ToFileName  = "";// SFTPConstants.SuccessFilePath + @"\" + log.Type + @"\" + filename;
                                            log.ResultDesc  = "解析失败:" + result;
                                            log.Externumber = externumber;
                                            log.Flag        = "E";
                                        }
                                        else
                                        {
                                            log.ToFileName  = SFTPConstants.FaildFilePath + @"\" + log.Type + @"\" + filename;//移动到解析失败文件夹
                                            log.ResultDesc  = "解析失败:" + result;
                                            log.Externumber = externumber;
                                            log.Flag        = "N";
                                        }
                                    }
                                    else
                                    {
                                        log.ToFileName  = SFTPConstants.ErrorFilePath + @"\" + filename;
                                        log.ResultDesc  = "解析失败:" + result;
                                        log.Externumber = 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
                        {
                            LocalFileHelper.MoveToCover(log.SourceFileName, log.ToFileName);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(typeof(string), "处理文件错误" + ex.ToString(), LogHelper.LogLevel.INFO);

                //throw;
            }
            return(true);
        }