/// <summary> /// 申报商品 /// </summary> /// <param name="decalreList">待申报商品列表,必须是同一个商家,不能超过10个商品</param> /// <returns></returns> public DeclareProductResult DeclareProduct(List <WaitDeclareProduct> decalreList) { DeclareProductResult result = new DeclareProductResult(); //检查是否有数据 if (decalreList == null || decalreList.Count <= 0) { return(result); } var group = decalreList.GroupBy(d => d.MerchantSysNo); //检查数据是否满足要求 if (group.Count() > 1 || decalreList.Count > 10) { throw new BizException("待申报商品列表,必须是同一个商家,不能超过10个商品"); } //获取商家取关务对接相关信息 VendorCustomsInfo customsInfo = SODA.LoadVendorCustomsInfoByMerchant(decalreList.FirstOrDefault().MerchantSysNo); //获取待申报商品详细信息 List <ProductDeclare> dataList = ObjectFactory <IIMBizInteract> .Instance.DeclareGetProduct(decalreList); #region 构造请求参数 EasiPayRequestDeclareProduct requestInfo = new EasiPayRequestDeclareProduct(); requestInfo.version = AppSettingManager.GetSetting("SO", "EasiPayDeclareProductConfigVersion"); requestInfo.commitTime = DateTime.Now.ToString("yyyyMMddHHmmss"); requestInfo.coName = customsInfo.CBTMerchantName; requestInfo.coCode = customsInfo.CBTSRC_NCode; requestInfo.serialNumber = this.CreateSerialNumber(requestInfo.coCode); requestInfo.Cargoes = EntityConverter <ProductDeclare, EasiPayRequestDeclareProductDetail> .Convert(dataList, (s, t) => { t.cargoCode = s.ProductID; t.cargoBrand = s.BrandName; t.cargoNameCh = s.ProductName; t.cargoNameEh = s.ProductNameEN; t.cargoModel = s.ProductMode; t.cargoSpec = s.Specifications; t.cargoPlace = s.CountryName; t.cargoFunction = s.Functions; t.cargoPurpose = s.Purpose; t.cargoIngredient = s.Component; t.cargoFactoryDate = s.ManufactureDate.ToString("yyyyMMdd"); t.cargoUnit = s.TaxUnit; t.cargoUnitNum = s.TaxQty.ToString(); t.cargoPrice = s.CurrentPrice.ToString("F2"); t.cargoGrossWT = s.GrossWeight; t.cargoNetWT = s.SuttleWeight; t.serverType = s.BizType == TradeType.FTA ? "S02" : "S01"; t.customsCode = s.CustomsCode; t.copGNo = s.ProductSKUNO; t.materialID = s.SuppliesSerialNo; t.beianUnit = s.ApplyUnit; t.beianQty = s.ApplyQty.ToString(); }); requestInfo.operationCode = "1"; requestInfo.spt = ""; #endregion #region 3.处理请求,解析请求结果 string reqContent = BuildPostReqData(requestInfo, customsInfo.CBTProductDeclareSecretKey); string note = string.Empty; string strRequestResult = HttpPostRequest(AppSettingManager.GetSetting("SO", "EasiPayDeclareProductConfigRequestUrl"), reqContent); strRequestResult = CommonUtility.HttpUrlDecode(strRequestResult); EasiPayRequestResult requestResult = SerializationUtility.JsonDeserialize <EasiPayRequestResult>(strRequestResult); if (requestResult.status.ToLower().Equals("success")) { result.Success = true; try { ObjectFactory <IIMBizInteract> .Instance.ProductBatchEntry(decalreList.Select(t => t.ProductSysNo).ToList(), "", ProductEntryStatus.Entry, ProductEntryStatusEx.Customs); } catch (Exception ex) { result.Message = ex.Message; } note = "商品报关申请成功"; } else { result.Message = requestResult.msg; note = "商品报关申请失败:" + requestResult.msg; } #region 写系统Log ApplicationEventLog log = new ApplicationEventLog() { Source = "JOB ProductDeclare", ReferenceIP = ServiceContext.Current.ClientIP, EventType = 8, HostName = "JOB", EventTitle = "ProductDeclare Request", EventMessage = reqContent, LanguageCode = "zh-CN", CompanyCode = "8601", StoreCompanyCode = "8601", EventDetail = note }; ObjectFactory <ICommonBizInteract> .Instance.CreateApplicationEventLog(log); #endregion #endregion return(result); }