public void TestBatchRemoney() { var BaseRiskModellist = new List <BaseRiskModel>(); var baseRiskModel = new BaseRiskModel() { ArriveCode = "SHA", Cabin = "Y", DepartCode = "PEK", DepartureTime = DateTime.Now, EnterpriseID = 1089, EnterpriseName = "新测试企业五", EtermType = 0, EtermStatus = 1, EtermSuccessRate = 0, FlightNo = "CA1234", OrderAmount = 100, TicketNum = "9995783618889", PayCenterCode = "CSSX41080209", PayCenterName = "苏测试分销一", PersonName = "朱明", TicketPrice = 1200, TicketTime = DateTime.Now, TravelBatchId = "636403794183510244", TravelRiskType = 1, PNR = "QWERTY", WhiteFailRate = 0, WhiteSuccessRate = 0 }; BaseRiskModellist.Add(baseRiskModel); var ManageRisk = new ManageRiskModel() { AccountPeriod = "61", BackReapalNo = "100000000001678", EnterpriseID = 1089, TravelBatchId = "636403794183510244", FactoringEmail = "*****@*****.**", EnterpriseName = "新测试企业五", FactoringInterestRate = 0.018m, FactoringName = "测试保理", FactoringReapalNo = "100000000001024", InterestRate = 0, PayCenterCode = "CSSX41080209", PayCenterName = "苏测试分销一", UserFactoringId = 1, UserName = "******", baseRiskModelList = BaseRiskModellist }; new RemoneyService(ManageRisk).Execute(); }
/// <summary> /// 数据验证 /// </summary> /// <param name="et"></param> /// <param name="strTravelBatchId">当前批次Id</param> /// <returns></returns> private bool ExcelTable2EntityList(ExeclTalbe et, string strTravelBatchId) { var modeles = new List <BaseRiskModel>(); var result = true; Parallel.ForEach(et.rows, new ParallelOptions() { MaxDegreeOfParallelism = 8 }, row => { try { //TODO 调整格式验证 var model = new BaseRiskModel(); model.PayCenterCode = Parameter.PayCenterCode; model.PayCenterName = Parameter.PayCenterName; model.TravelBatchId = strTravelBatchId; //票价 var price = 0.0m; if (Decimal.TryParse(row.columns[0].ColumnValue.Trim(), out price) && 0.0m < price) { model.TicketPrice = price; } //订单价 if (Decimal.TryParse(row.columns[1].ColumnValue.Trim(), out price) && 0.0m < price) { model.OrderAmount = price; } DateTime cellDate; if (DateTime.TryParse(row.columns[2].ColumnValue.Trim(), out cellDate) && 1990 < cellDate.Year) { //起飞时间 model.DepartureTime = cellDate; } else { throw new Exception("起飞时间格式不正确"); } if (DateTime.TryParse(row.columns[9].ColumnValue.Trim(), out cellDate) && 1990 < cellDate.Year) { //出票时间 model.TicketTime = cellDate; } else { throw new Exception("出票时间格式不正确"); } //出发机场3字码 model.DepartCode = row.columns[3].ColumnValue.Trim(); if (!Regex.IsMatch(model.DepartCode, "^[A-Za-z]{3}$")) { throw new Exception("出发机场三字码格式不正确(例:PEK)!"); } //到达机场 model.ArriveCode = row.columns[4].ColumnValue.Trim(); if (!Regex.IsMatch(model.DepartCode, "^[A-Za-z]{3}$")) { throw new Exception("到达机场三字码格式不正确(例:PEK)!"); } //航班号 model.FlightNo = row.columns[5].ColumnValue.Trim(); if (!Regex.IsMatch(model.FlightNo, "^[A-Za-z0-9]{5,6}$")) { throw new Exception("航班号格式不正确(例:CA5698或CA234)!"); } //仓位 model.Cabin = row.columns[6].ColumnValue.Trim(); if (!Regex.IsMatch(model.Cabin, "^[A-Za-z0-9]{1,2}$")) { throw new Exception("舱位格式不正确(例:Y或Z1)!"); } //乘客姓名-不验证 model.PersonName = row.columns[7].ColumnValue.Trim(); if (string.IsNullOrEmpty(model.PersonName)) { throw new Exception("乘客姓名不能为空!"); } //票号13位数字 model.TicketNum = row.columns[8].ColumnValue.Replace("-", "").Trim(); if (!Regex.IsMatch(model.TicketNum, "^((?=.*[0-9].*))[0-9]{13}$")) { throw new Exception("票号格式不正确!"); } model.PNR = row.columns[10].ColumnValue.Trim(); if (!Regex.IsMatch(model.PNR, "^[A-Za-z0-9]{6}$")) { throw new Exception("PNR格式不正确!"); } if (1 > row.columns[11].ColumnValue.Split('|').Length) { throw new Exception("保理企业格式错误!"); } var enterpriseId = 0; Int32.TryParse(row.columns[11].ColumnValue.Split('|')[1].Trim(), out enterpriseId); model.EnterpriseID = enterpriseId; model.EnterpriseName = row.columns[11].ColumnValue.Split('|')[0]; //数据格式验证 modeles.Add(model); } catch (Exception e) { this._verifyResults.Add(new Tuple <string, string>("", row.RIndex + "行" + e.Message)); result = false; } }); _manageRiskModels = modeles.GroupBy(t => t.EnterpriseID).ToDictionary(t => t.Key, t => t.ToList()); return(result); }
/// <summary> /// 执行 /// </summary> public override void Execute() { Validate(); List <BaseRiskModel> list = new List <BaseRiskModel>(); //根据小何批次号获取本地票号信息 List <TravelBatchOrder> TravelBatchOrderList = new TravelBatchOrderRep().getManageRiskModelByUUId(uuid); foreach (var item in TravelBatchOrderList) { BaseRiskModel rm = new BaseRiskModel() { BlackResultState = Convert.ToInt32(item.BlackResultState), CheckStatus = Convert.ToInt32(item.CheckStatus), DepartureTime = Convert.ToDateTime(item.DepartureTime), EnterpriseID = Convert.ToInt64(item.EnterpriseId), EnterpriseName = item.EnterpriseName, EtermStatus = Convert.ToInt32(item.EtermStatus), EtermType = Convert.ToInt32(item.EtermType), FlightNo = item.FlightNo, //PayCenterCode = item.PayCenterCode, PNR = item.PNR, RegisterStatus = Convert.ToInt32(item.RegisterStatus), TicketNum = item.TicketNo, TicketTime = Convert.ToDateTime(item.TicketTime), //TravelBatchId = item.TravelBatchId, TravelRiskType = Convert.ToInt32(item.TravelRiskType), UUId = item.UUId, WhiteResultState = Convert.ToInt32(item.WhiteResultState), PersonName = item.PassengerName, ArriveCode = item.ArriveCode, Cabin = item.Cabin, DepartCode = item.DepartCode, OrderAmount = Convert.ToDecimal(item.OrderAmount), TicketPrice = Convert.ToDecimal(item.TicketPrice), FailReason = item.MatchResult }; list.Add(rm); } ManageRisk.baseRiskModelList = list; TravelBatch TravelBatch = new TravelBatchRep().GetTravelBatch(TravelBatchOrderList[0].TravelBatchId, TravelBatchOrderList[0].EnterpriseId.ToString()); ManageRisk.TravelBatchId = TravelBatchOrderList[0].TravelBatchId; ManageRisk.EnterpriseID = Convert.ToInt64(TravelBatchOrderList[0].EnterpriseId); ManageRisk.EnterpriseName = TravelBatchOrderList[0].EnterpriseName; ManageRisk.AccountPeriod = Convert.ToString(TravelBatch.AccountPeriod); ManageRisk.BackReapalNo = TravelBatch.BackReapalNo; ManageRisk.FactoringEmail = TravelBatch.FactoringEmail; ManageRisk.FactoringInterestRate = Convert.ToDecimal(TravelBatch.FactoringInterestRate); ManageRisk.FactoringName = TravelBatch.FactoringName; ManageRisk.FactoringReapalNo = TravelBatch.FactoringReapalNo; ManageRisk.InterestRate = Convert.ToDecimal(TravelBatch.InterestRate); ManageRisk.PayCenterCode = TravelBatch.PayCenterCode; ManageRisk.PayCenterName = TravelBatch.PayCenterName; ManageRisk.TravelBatchId = TravelBatch.TravelBatchId; ManageRisk.UserFactoringId = Convert.ToInt32(TravelBatch.UserFactoringId); ManageRisk.UserName = TravelBatch.UserName; LoggerFactory.Instance.Logger_Debug("ManageRisk实体结果:" + JsonConvert.SerializeObject(ManageRisk), "XHCheckTicketNotifyService"); ViewBaseCheck view = new ViewBaseCheck(); try { view = JsonConvert.DeserializeObject <ViewBaseCheck>(data); if (view.ErrorRes.Err_code == "200" && view.task[0].status.Trim() == "已完成" && view.task[0].iCount > 0 && view.checkdata[0].success > 0) { LoggerFactory.Instance.Logger_Debug("添加小和验证成功日志", "XHCheckTicketNotifyService"); //添加小和验证成功日志 new XHInterFaceCheckTicketResultLogRep().UpdateXHInterFaceCheckTicketResultLog(view.ErrorRes.uuid, 1); //调用小何验证(小何返回正常结果) XHCheckTicketResult(ManageRisk, view.checkdata[0].samelstDetailed, uuid, true); } else { //调用小何验证(小何返回信息异常) XHCheckTicketResult(ManageRisk, null, uuid, false); } } catch (Exception ex) { //记录错误日志 LoggerFactory.Instance.Logger_Debug("小何回调报错:uuid=" + uuid + " data=" + data, "XHCheckTicketNotifyService"); } }