Пример #1
0
        public Result GetOrderRec(string orderNo)
        {
            Result result = new Result();

            result.Message = "暂未生成相应的回执";
            try
            {
                FtpUtil ftp         = new FtpUtil("", "name", "password");
                string  ftpResponse = "";
                Stream  stream      = ftp.FileStream("", ref ftpResponse);
                // 设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                stream.Seek(0, SeekOrigin.Begin);
                using (StreamReader reader = new StreamReader(stream))
                {
                    string data = reader.ReadToEnd();
                    // 接收回执
                    if (data.Contains("OrderRec"))
                    {
                        OrderRec orderRec = Util.Serialization.SerializationUtil.XmlDeserialize <OrderRec>(data);
                        if (orderRec.orderNo == orderNo)
                        {
                            // TODO:更新订单推送状态
                            result.Status = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// 获取订单商检回执
        /// </summary>
        /// <returns></returns>
        public override Result GetOrderRec()
        {
            Result result = new Result();

            try
            {
                FtpUtil ftp = new FtpUtil(config.GZJCIcpInfoTrade.FtpUrl, config.GZJCIcpInfoTrade.FtpName, config.GZJCIcpInfoTrade.FtpPassword);

                string[] fileList = GetIcpOutResult();

                if (fileList != null)
                {
                    foreach (string fileTxt in fileList)
                    {
                        string msg    = "";
                        Stream stream = ftp.FileStream(config.GZJCIcpInfoTrade.FtpUrl + fileTxt, ref msg);
                        //设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                        stream.Seek(0, SeekOrigin.Begin);
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            string txt = reader.ReadToEnd();

                            //接收回执
                            if (fileTxt.Contains("KJDOCREC_"))
                            {
                                Hyt.Model.Icp.GZBaiYunJiChang.Goods.DOCREC.DocRec DocRec = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Hyt.Model.Icp.GZBaiYunJiChang.Goods.DOCREC.DocRec>(txt);
                                //更新平台回执信息
                                if (DocRec.Declaration.OrgMessageType == "KJ881111")
                                {
                                    IcpBo.Instance.UpdatePlatDocRecByMessageID(DocRec.Declaration.OrgMessageID, txt, DocRec.Declaration.Status);
                                }
                                //更新商检回执信息
                                if (DocRec.Declaration.OrgMessageType == "881111")
                                {
                                    IcpBo.Instance.UpdateCiqDocRecByMessageID(DocRec.Declaration.OrgMessageID, txt, DocRec.Declaration.Status);
                                }
                            }
                        }
                    }
                    result.Status  = true;
                    result.Message = "获取成功";
                }
                else
                {
                    result.Status  = true;
                    result.Message = "暂未生成相应的回执";
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }
Пример #3
0
        /// <summary>
        /// 获取商品商检回执
        /// </summary>
        /// <returns></returns>
        public override Result GetGoodsRec()
        {
            Result result = new Result();

            try
            {
                FtpUtil ftp = new FtpUtil(config.GZJCIcpInfoTrade.FtpUrl, config.GZJCIcpInfoTrade.FtpName, config.GZJCIcpInfoTrade.FtpPassword);

                string[] fileList = GetIcpOutResult();

                if (fileList != null)
                {
                    foreach (string fileTxt in fileList)
                    {
                        string msg    = "";
                        Stream stream = ftp.FileStream(config.GZJCIcpInfoTrade.FtpUrl + fileTxt, ref msg);
                        //设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                        stream.Seek(0, SeekOrigin.Begin);
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            string txt = reader.ReadToEnd();

                            //接收回执
                            if (fileTxt.Contains("KJDOCREC_"))
                            {
                                Hyt.Model.Icp.GZBaiYunJiChang.Goods.DOCREC.DocRec DocRec = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Hyt.Model.Icp.GZBaiYunJiChang.Goods.DOCREC.DocRec>(txt);
                                //更新平台回执信息
                                if (DocRec.Declaration.OrgMessageType == "KJ881101")
                                {
                                    IcpBo.Instance.UpdatePlatDocRecByMessageID(DocRec.Declaration.OrgMessageID, txt, DocRec.Declaration.Status);
                                    if (DocRec.Declaration.Status != "S")
                                    {
                                        IcpBo.Instance.UpdateEntGoodsNoByMessageID(DocRec.Declaration.OrgMessageID, "None");
                                    }
                                }
                                //更新商检回执信息
                                if (DocRec.Declaration.OrgMessageType == "881101")
                                {
                                    IcpBo.Instance.UpdateCiqDocRecByMessageID(DocRec.Declaration.OrgMessageID, txt, DocRec.Declaration.Status);
                                    if (DocRec.Declaration.Status != "S")
                                    {
                                        IcpBo.Instance.UpdateEntGoodsNoByMessageID(DocRec.Declaration.OrgMessageID, "None");
                                    }
                                }
                            }
                            //国检审核回执
                            if (fileTxt.Contains("KJ881101CIQREC_"))
                            {
                                Hyt.Model.Icp.GZBaiYunJiChang.Goods.CIQREC.InternationalTrade     InternationalTrade = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Hyt.Model.Icp.GZBaiYunJiChang.Goods.CIQREC.InternationalTrade>(txt);
                                List <Hyt.Model.Icp.GZBaiYunJiChang.Goods.CIQREC.GoodsRegRecList> GoodsRegRecList    = InternationalTrade.Declaration.GoodsRegRecList;
                                foreach (Hyt.Model.Icp.GZBaiYunJiChang.Goods.CIQREC.GoodsRegRecList item in GoodsRegRecList)
                                {
                                    IcpBo.Instance.UpdateIcpGoodsItemCIQ((int)Model.CommonEnum.商检.广州白云机场, item.EntGoodsNo, item.CIQGRegStatus, item.CIQNotes);
                                    //审核通过,更新检验检疫商品备案编号
                                    if (item.CIQGRegStatus == "C")
                                    {
                                        IcpBo.Instance.UpdateCIQGoodsNo(item.EntGoodsNo, item.CIQGoodsNo);
                                    }
                                }
                            }
                            //海关审核回执
                            if (fileTxt.Contains("KJ881101CUSREC_"))
                            {
                                Hyt.Model.Icp.GZBaiYunJiChang.Goods.CUSREC.InternationalTrade     InternationalTrade = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Hyt.Model.Icp.GZBaiYunJiChang.Goods.CUSREC.InternationalTrade>(txt);
                                List <Hyt.Model.Icp.GZBaiYunJiChang.Goods.CUSREC.GoodsRegRecList> GoodsRegRecList    = InternationalTrade.Declaration.GoodsRegRecList;
                                foreach (Hyt.Model.Icp.GZBaiYunJiChang.Goods.CUSREC.GoodsRegRecList item in GoodsRegRecList)
                                {
                                    IcpBo.Instance.UpdateIcpGoodsItemCUS((int)Model.CommonEnum.商检.广州白云机场, item.EntGoodsNo, item.OpResult, item.CustomsNotes);
                                    //审核通过,更新海关正式备案编号
                                    if (item.OpResult == "C")
                                    {
                                        IcpBo.Instance.UpdateCusGoodsNo(item.EntGoodsNo, item.CusGoodsNo);
                                    }
                                }
                            }
                        }
                    }
                    result.Status  = true;
                    result.Message = "获取成功";
                }
                else
                {
                    result.Status  = true;
                    result.Message = "暂未生成相应的回执";
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }
Пример #4
0
        /// <summary>
        /// 查询海关订单
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <returns></returns>
        /// <remarks>2015-12-29 杨浩 创建</remarks>
        public override Result SearchCustomsOrder(int orderId)
        {
            lock (lockSearch)
            {
                var result = new Result()
                {
                    Status = false
                };

                try
                {
                    OrderStatus.海关报关状态 status = OrderStatus.海关报关状态.成功;

                    var customsLogInfo = BLL.Order.SoCustomsOrderLogBo.Instance.GetCustomsOrderLogInfo(orderId, (int)Code);
                    if (customsLogInfo == null)
                    {
                        result.Message = "还未提交订单至海关!";
                        return(result);
                    }

                    //原始文件(海关回执后缀为.txt的文件)
                    string oldFile = customsLogInfo.FileName + ".txt";

                    //失败回执文件名
                    string failureFileName = "0_" + oldFile;

                    //成功回执文件名
                    string successFileName = "1_" + oldFile;

                    string _ftpImageServer = FtpUrl + "DOWNLOAD/";

                    FtpUtil ftp = new FtpUtil(_ftpImageServer, FtpUserName, FtpPassword);
                    string  msg = "";

                    //首先读取成功的文件
                    Stream stream = ftp.FileStream(_ftpImageServer + successFileName, ref msg);

                    if (msg == "get file success!")
                    {
                        result.Status = true;
                        status        = OrderStatus.海关报关状态.成功;
                    }
                    else
                    {
                        msg = "";
                        //成功回执文件不存在则读取失败文件名称
                        stream = ftp.FileStream(_ftpImageServer + failureFileName, ref msg);
                        if (msg != "get file success!")
                        {
                            result.Status  = false;
                            result.Message = "暂时海关没有生成回执文件,请稍后再试!";
                            return(result);
                        }
                        status = OrderStatus.海关报关状态.失败;
                    }


                    //设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                    stream.Seek(0, SeekOrigin.Begin);
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        string xml = Decrypt(reader.ReadToEnd());

                        XmlDocument xmlDoc = new XmlDocument();
                        xmlDoc.LoadXml(xml);
                        XmlNode xmlNode         = xmlDoc.SelectSingleNode("//ResponseMessage//ResponseBodyList//ResponseBody");
                        var     customsOrderLog = new SoCustomsOrderLog();

                        customsOrderLog.StatusCode = xmlNode.SelectSingleNode("ReturnCode").InnerText;
                        customsOrderLog.StatusMsg  = xmlNode.SelectSingleNode("ReturnInfo").InnerText;

                        //switch (code)
                        //{
                        //    case "A01": customsOrderLog.StatusMsg = "-缺少接入企业备案号"; break;
                        //    case "A02": customsOrderLog.StatusMsg = "-电商接入企业未备案或失效"; break;
                        //    case "A10": customsOrderLog.StatusMsg = "-缺少电商企业备案号"; break;
                        //    case "A11": customsOrderLog.StatusMsg = "-电商企业未备案或失效"; break;
                        //    case "A14": customsOrderLog.StatusMsg = "-退回修改"; break;
                        //    case "B10": customsOrderLog.StatusMsg = "-报文类型不正确"; break;
                        //    case "B11": customsOrderLog.StatusMsg = "-业务字段异常"; break;
                        //    case "B12": customsOrderLog.StatusMsg = "-重复报文"; break;
                        //    case "B13": customsOrderLog.StatusMsg = "-重复记录"; break;
                        //    case "C01": customsOrderLog.StatusMsg = "-入库成功"; break;
                        //    default: break;
                        //}
                        if (customsOrderLog.StatusMsg == "订单编号已经存在,不可重复插入。")
                        {
                            status = OrderStatus.海关报关状态.成功;
                        }
                        else if (customsOrderLog.StatusCode != "C01")
                        {
                            status = OrderStatus.海关报关状态.失败;
                        }


                        customsOrderLog.LastUpdateBy = 0;
                        if (BLL.Authentication.AdminAuthenticationBo.Instance.IsLogin)
                        {
                            customsOrderLog.LastUpdateBy = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                        }

                        customsOrderLog.LastUpdateDate = DateTime.Now;
                        customsOrderLog.ReceiptContent = xml;
                        customsOrderLog.SysNo          = customsLogInfo.SysNo;
                        customsOrderLog.FileName       = customsLogInfo.FileName;
                        customsOrderLog.Packets        = customsLogInfo.Packets;
                        BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 2, orderId);

                        BLL.Order.SoCustomsOrderLogBo.Instance.UpdateCustomsOrderLog(customsOrderLog);

                        result.Message = customsOrderLog.StatusMsg;
                    }
                }
                catch (Exception ex)
                {
                    result.Message = "系统异常!";
                    result.Status  = false;
                    BLL.Log.LocalLogBo.Instance.Write(ex, "GZSearchCustomsOrder");
                }
                return(result);
            }
        }
Пример #5
0
        /// <summary>
        /// 查询海关订单
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <returns></returns>
        /// <remarks>2016-8-18 杨浩 重构</remarks>
        public override Result SearchCustomsOrder(int orderId)
        {
            var result = new Result()
            {
                Status = true
            };

            try
            {
                var resultDic = new Dictionary <int, string>();

                var    ftp         = new FtpUtil(FTPUri, FTPName, FTPPassword);
                string ftpResponse = "";


                #region

                /*
                 * <?xml version="1.0" encoding="UTF-8"?>
                 * <DocRec>
                 * <Head>
                 * <MessageID><![CDATA[KJDOCREC_KJGGPT2016110315520669308]]></MessageID>
                 * <MessageType><![CDATA[KJDOCREC]]></MessageType>
                 * <Sender><![CDATA[KJGGPT]]></Sender>
                 * <Receiver><![CDATA[GZXINRAO]]></Receiver>
                 * <SendTime><![CDATA[20161103155206]]></SendTime>
                 * <FunctionCode><![CDATA[]]></FunctionCode>
                 * <SignerInfo><![CDATA[]]></SignerInfo>
                 * <Version><![CDATA[2.0]]></Version>
                 * </Head>
                 * <Declaration>
                 * <OrgMessageID><![CDATA[F9F53112-3A28-4912-92EC-BD3085085FC8]]></OrgMessageID>
                 * <OrgMessageType><![CDATA[CEB311Message]]></OrgMessageType>
                 * <OrgSenderID><![CDATA[GZXINRAO]]></OrgSenderID>
                 * <OrgReceiverID><![CDATA[KJCUSTOM]]></OrgReceiverID>
                 * <OrgRecTime><![CDATA[20161103155206]]></OrgRecTime>
                 * <RespondBy>01</RespondBy>
                 * <RespondStatus><![CDATA[F]]></RespondStatus>
                 * <RespondNotes><![CDATA[1.4.2.业务验证失败:
                 * 1.广州海关单号【501_20161029101958】重复申报...
                 * ]]></RespondNotes>
                 * <Status>F</Status>
                 * <Notes><![CDATA[1.4.2.业务验证失败:
                 * 1.广州海关单号【501_20161029101958】重复申报...
                 * ]]></Notes>
                 * </Declaration>
                 * </DocRec>
                 * */

                #endregion
                // 获取文件列表
                //string[] fileList = ftp.GetFileList(FTPUri + "cebout/");
                string[] fileList = ftp.GetFileList(FTPUri + FolderOut);

                if (fileList != null && fileList.Length > 0)
                {
                    foreach (string fileName in fileList)
                    {
                        //Stream stream = ftp.FileStream(FTPUri + "cebout/" + fileName, ref ftpResponse);
                        var stream = ftp.FileStream(FTPUri + FolderOut + fileName, ref ftpResponse);
                        #region 更新订单海关推送状态

                        string xmlData = "";
                        stream.Seek(0, SeekOrigin.Begin);
                        using (var reader = new StreamReader(stream))
                        {
                            xmlData = reader.ReadToEnd();
                        }

                        if (!string.IsNullOrEmpty(xmlData))
                        {
                            int id = 0;
                            var customsOrderLog = new SoCustomsOrderLog();

                            var xml = new XmlDocumentExtender();
                            xml.LoadXml(xmlData);
                            var _xml = xml["CEB312Message"];

                            if (_xml != null)
                            {
                                var orderReturn = _xml["OrderReturn"];

                                //订单编号
                                if (!int.TryParse(orderReturn["orderNo"].InnerText.Split('_')[0], out id))
                                {
                                    continue;
                                }

                                var customsLogInfo = BLL.Order.SoCustomsOrderLogBo.Instance.GetCustomsOrderLogInfo(id, (int)Code);

                                int status = -999;

                                switch (orderReturn["returnStatus"].InnerText)
                                {
                                case "":    // 电子口岸申报中
                                    result.Message = "电子口岸申报中!";
                                    status         = (int)OrderStatus.海关报关状态.处理中;
                                    break;

                                case "2":    // 发送海关成功
                                    status         = (int)OrderStatus.海关报关状态.处理中;
                                    result.Message = orderReturn["returnInfo"].InnerText;
                                    if (customsLogInfo.StatusCode == "3")
                                    {
                                        status         = (int)OrderStatus.海关报关状态.作废;
                                        result.Message = orderReturn["returnInfo"].InnerText;
                                    }
                                    break;

                                case "4":    // 发送海关失败
                                case "100":  // 海关退单
                                    status         = (int)OrderStatus.海关报关状态.失败;
                                    result.Message = "海关退单!";
                                    break;

                                case "120":    // 海关入库
                                    status         = (int)OrderStatus.海关报关状态.成功;
                                    result.Message = "海关入库成功!";
                                    break;

                                default:
                                    status         = (int)OrderStatus.海关报关状态.失败;
                                    result.Message = "海关推送失败!";
                                    break;
                                }
                                customsOrderLog.StatusCode = "";
                                //customsOrderLog.StatusCode = orderReturn["returnStatus"].InnerText;
                                customsOrderLog.StatusMsg = orderReturn["returnInfo"].InnerText;

                                if (resultDic.ContainsKey(orderId))
                                {
                                    resultDic[orderId] = customsOrderLog.StatusMsg;
                                }
                                else
                                {
                                    resultDic.Add(orderId, customsOrderLog.StatusMsg);
                                }


                                BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 2, id);


                                if (customsLogInfo != null)
                                {
                                    customsOrderLog.LastUpdateBy = 0;
                                    if (BLL.Authentication.AdminAuthenticationBo.Instance.IsLogin)
                                    {
                                        customsOrderLog.LastUpdateBy = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                                    }

                                    customsOrderLog.LastUpdateDate = DateTime.Now;
                                    customsOrderLog.ReceiptContent = xmlData;
                                    customsOrderLog.SysNo          = customsLogInfo.SysNo;
                                    customsOrderLog.FileName       = customsLogInfo.FileName;
                                    customsOrderLog.Packets        = customsLogInfo.Packets;
                                    BLL.Order.SoCustomsOrderLogBo.Instance.UpdateCustomsOrderLog(customsOrderLog);
                                }
                            }
                            else
                            {
                                _xml = xml["DocRec"];
                                if (_xml != null)
                                {
                                    var status = _xml["Declaration"]["Status"].InnerText;
                                }
                            }
                        }

                        ftp.DeleteFile(FTPUri + FolderOut + fileName);//删除回执文件
                        #endregion
                    }


                    if (resultDic.ContainsKey(orderId))
                    {
                        result.Message = resultDic[orderId];
                    }
                    else
                    {
                        result.Message = "暂无回执";
                    }
                }
                else
                {
                    var customsLogInfo = BLL.Order.SoCustomsOrderLogBo.Instance.GetCustomsOrderLogInfo(orderId, (int)Code);
                    result.Status  = false;
                    result.Message = customsLogInfo != null?customsLogInfo.StatusMsg:"没有找到回执文件,请稍后重试!";
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }
Пример #6
0
        /// <summary>
        /// 获取商品回执
        /// </summary>
        /// <returns></returns>
        public Result GetRecByType(OrderStatus.商检反馈报文类型 type)
        {
            string strType = "";

            if (type == Hyt.Model.WorkflowStatus.OrderStatus.商检反馈报文类型.商品检查)
            {
                strType = "商品检查";
            }
            if (type == Hyt.Model.WorkflowStatus.OrderStatus.商检反馈报文类型.商品审核报文)
            {
                strType = "商品审核";
            }
            Result result = new Result();

            try
            {
                FtpUtil  ftp      = new FtpUtil(config.NSIcpInfo.FtpUrl, config.NSIcpInfo.FtpName, config.NSIcpInfo.FtpPassword);
                string[] fileList = GetCustomsOutResult(type);
                if (fileList != null)
                {
                    if (type == Hyt.Model.WorkflowStatus.OrderStatus.商检反馈报文类型.商品检查)
                    {
                        foreach (string fileTxt in fileList)
                        {
                            string msg    = "";
                            Stream stream = ftp.FileStream(config.NSIcpInfo.FtpUrl + "4200.IMPBA.SWBCARGOBACK.REPORT/" + fileTxt, ref msg);
                            //设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                            stream.Seek(0, SeekOrigin.Begin);
                            using (StreamReader reader = new StreamReader(stream))
                            {
                                string txt = reader.ReadToEnd();
                                //接收回执
                                if (fileTxt.Contains("DOCREC_"))
                                {
                                    Model.Icp.GZNanSha.CustomsResult.Commodity.ROOT root = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Model.Icp.GZNanSha.CustomsResult.Commodity.ROOT>(txt);
                                    //更新商检回执信息
                                    if (root.declaration.OrgMessageType == "661105")
                                    {
                                        CIcp Icp = IcpBo.Instance.GetEntityByMessageIDType(root.declaration.OrgMessageType, root.declaration.OrgMessageID);
                                        if (Icp != null)
                                        {
                                            if (Icp.Status == (int)OrderStatus.商检状态.已推送)
                                            {
                                                IcpBo.Instance.UpdatePlatDocRecByMessageID(root.declaration.OrgMessageID, txt, root.declaration.Status);
                                                if (root.declaration.Status == "10")
                                                {
                                                    IcpBo.Instance.UpdateStatus(root.declaration.OrgMessageID, (int)IcpStatus.商品商检推送状态.已接收);
                                                }
                                                if (root.declaration.Status == "20")
                                                {
                                                    IcpBo.Instance.UpdateStatus(root.declaration.OrgMessageID, (int)IcpStatus.商品商检推送状态.申报失败);
                                                    IcpBo.Instance.UpdateEntGoodsNoByMessageID(root.declaration.OrgMessageID, "None");
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (type == Hyt.Model.WorkflowStatus.OrderStatus.商检反馈报文类型.商品审核报文)
                    {
                        foreach (string fileTxt in fileList)
                        {
                            string msg    = "";
                            Stream stream = ftp.FileStream(config.NSIcpInfo.FtpUrl + "4200.IMPBA.SWBCARGOBACK.AUDIT/out/" + fileTxt, ref msg);
                            //设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                            stream.Seek(0, SeekOrigin.Begin);
                            using (StreamReader reader = new StreamReader(stream))
                            {
                                string txt = reader.ReadToEnd();
                                Hyt.Model.Icp.GZNanSha.CustomsResult.CommodityAudit.ROOT          root       = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Model.Icp.GZNanSha.CustomsResult.CommodityAudit.ROOT>(txt);
                                List <Hyt.Model.Icp.GZNanSha.CustomsResult.CommodityAudit.Record> RecordList = root.declaration.GoodsRegRecList.RecordList;
                                foreach (Hyt.Model.Icp.GZNanSha.CustomsResult.CommodityAudit.Record item in RecordList)
                                {
                                    //审核通过,更新检验检疫商品备案编号
                                    if (item.RegStatus == "10")
                                    {
                                        IcpBo.Instance.UpdateNSCIQGoodsNo(item.Gcode, item.CIQGoodsNO);
                                    }
                                }
                            }
                        }
                    }
                    result.Status  = true;
                    result.Message = strType + "回执获取成功";
                }
                else
                {
                    result.Status  = true;
                    result.Message = strType + "暂未生成相应的回执";
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }
Пример #7
0
        /// <summary>
        /// 获取订单回执
        /// </summary>
        /// <returns></returns>
        public override Result GetOrderRec()
        {
            Result result = new Result();

            try
            {
                FtpUtil  ftp      = new FtpUtil(config.NSIcpInfo.FtpUrl, config.NSIcpInfo.FtpName, config.NSIcpInfo.FtpPassword);
                string[] fileList = GetCustomsOutResult(OrderStatus.商检反馈报文类型.商品订单);
                if (fileList != null)
                {
                    foreach (string fileTxt in fileList)
                    {
                        string msg    = "";
                        Stream stream = ftp.FileStream(config.NSIcpInfo.FtpUrl + "4200.IMPBA.SWBEBTRADE.REPORT/" + fileTxt, ref msg);
                        //设置当前流的位置为流的开始,防止读取位置错误造成无法读取完整流的内容
                        stream.Seek(0, SeekOrigin.Begin);
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            string txt = reader.ReadToEnd();
                            //接收回执
                            if (fileTxt.Contains("DOCREC_"))
                            {
                                Model.Icp.GZNanSha.CustomsResult.Commodity.ROOT root = Hyt.Util.Serialization.SerializationUtil.XmlDeserialize <Model.Icp.GZNanSha.CustomsResult.Commodity.ROOT>(txt);
                                //更新商检回执信息
                                if (root.declaration.OrgMessageType == "661101")
                                {
                                    CIcp Icp = IcpBo.Instance.GetEntityByMessageIDType(root.declaration.OrgMessageType, root.declaration.OrgMessageID);
                                    if (Icp != null)
                                    {
                                        if (Icp.Status == (int)OrderStatus.商检状态.已推送)
                                        {
                                            IcpBo.Instance.UpdatePlatDocRecByMessageID(root.declaration.OrgMessageID, txt, root.declaration.Status);

                                            //Status: 10 入库成功,20 出错
                                            if (root.declaration.Status == "10")
                                            {
                                                //更新订单的商检推送状态为已通过
                                                IcpBo.Instance.UpdateStatus(root.declaration.OrgMessageID, (int)IcpStatus.商品商检推送状态.已接收);
                                                SoOrderBo.Instance.UpdateOrderNsStatus(Icp.SourceSysNo, (int)OrderStatus.商检状态.已通过);
                                            }
                                            if (root.declaration.Status == "20")
                                            {
                                                //更新订单的商检推送状态为未推送
                                                IcpBo.Instance.UpdateStatus(root.declaration.OrgMessageID, (int)IcpStatus.商品商检推送状态.申报失败);
                                                SoOrderBo.Instance.UpdateOrderNsStatus(Icp.SourceSysNo, (int)OrderStatus.商检状态.未推送);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    result.Status  = true;
                    result.Message = "商品订单回执获取成功";
                }
                else
                {
                    result.Status  = true;
                    result.Message = "暂未生成相应的回执";
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }