/// <summary> /// 程序执行主入口 /// </summary> /// <param name="requestEntity"></param> /// <param name="responseEntity"></param> protected override void DoExecute(RequestEntity requestEntity, ResponseEntity responseEntity) { // 定义接收客户端参数的变量 OverDueReportFilter filter = ServiceUtility.ConvertToFilterFromDict <OverDueReportFilter>(requestEntity.Parameters); filter.UserId = responseEntity.UserId; //检索数据获取出审核员贷后客户逾期情况汇总情况表 Singleton <GetOverDueTotalSearchResultBLL> .Instance.SearchData(filter, responseEntity); }
/// <summary> /// 获取检索数据的存储过程参数列表 /// </summary> /// <param name="baseFilter"></param> /// <returns></returns> protected override IDictionary <string, object> GetSearchSpInParams(BaseFilter baseFilter) { OverDueReportFilter filter = baseFilter as OverDueReportFilter; if (filter == null) { return(null); } IDictionary <string, object> inPutParam = new Dictionary <string, object>(); inPutParam.Add("@BeginDate", filter.BeginDate); inPutParam.Add("@EndDate", filter.EndDate); inPutParam.Add("@Type", filter.AppealType); return(inPutParam); }
/// <summary> /// 检索数据 /// </summary> /// <param name="baseFilter"></param> /// <param name="responseEntity"></param> public void SearchData(BaseFilter baseFilter, ResponseEntity responseEntity) { if (baseFilter == null) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.RequestCommandError); return; } OverDueReportFilter filter = baseFilter as OverDueReportFilter; if (filter == null) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.RequestCommandError); return; } var reportDetailList = Singleton <GetOverDueTotalSearchResultDAL <OverDueDetailReportData> > .Instance.SearchData(baseFilter); List <OverDueReportViewData> listOverDueReportViewData = new List <OverDueReportViewData>(); Dictionary <string, List <OverDueDetailReportData> > dicReport = new Dictionary <string, List <OverDueDetailReportData> >(); List <OverDueDetailReportData> lstTmp; List <int> lstBussinessIds = new List <int>(); foreach (var detail in reportDetailList) { if (!dicReport.TryGetValue(detail.OverTime, out lstTmp)) { lstTmp = new List <OverDueDetailReportData>(); } lstTmp.Add(detail); dicReport[detail.OverTime] = lstTmp; } int index = 0; int loanCount = 0; int firstOverDueCount = 0; int fourM2Count = 0; int threeNonePayCount = 0; int m1Count = 0; int m2Count = 0; int m3Count = 0; int m4Count = 0; int m5PlusCount = 0; OverDueReportViewData report; foreach (var key in dicReport.Keys) { lstTmp = dicReport[key]; report = new OverDueReportViewData(); report.FirstOverDueBusinessIDs = ""; report.FourM2BusinessIDs = ""; report.ThreeNonePayBusinessIDs = ""; report.M1BusinessIDs = ""; report.M2BusinessIDs = ""; report.M3BusinessIDs = ""; report.M4BusinessIDs = ""; report.M5PlusBusinessIDs = ""; // 序号 report.No = ++index; // 统计月份 report.StaticMonth = key; loanCount = 0; firstOverDueCount = 0; fourM2Count = 0; threeNonePayCount = 0; m1Count = 0; m2Count = 0; m3Count = 0; m4Count = 0; m5PlusCount = 0; if (lstTmp == null || lstTmp.Count == 0) { continue; } lstBussinessIds.Clear(); foreach (var detail in lstTmp) { if (!lstBussinessIds.Contains(detail.Bid)) { lstBussinessIds.Add(detail.Bid); } // 首逾数 if (detail.DifferCountFirst > 0 && !report.FirstOverDueBusinessIDs.Contains(detail.Bid.ToString())) { firstOverDueCount++; report.FirstOverDueBusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } // 前4期账单出现M2的数量 if (detail.DifferCountFour > 0 && !report.FourM2BusinessIDs.Contains(detail.Bid.ToString())) { fourM2Count++; report.FourM2BusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } // 前3期账单0次还款 if (detail.DifferCountThree == 0 && !report.ThreeNonePayBusinessIDs.Contains(detail.Bid.ToString())) { threeNonePayCount++; report.ThreeNonePayBusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } int mCount = detail.OverMonth; switch (mCount) { case 0: break; case 1: if (!report.M1BusinessIDs.Contains(detail.Bid.ToString())) { m1Count++; report.M1BusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } break; case 2: if (!report.M2BusinessIDs.Contains(detail.Bid.ToString())) { m2Count++; report.M2BusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } break; case 3: if (!report.M3BusinessIDs.Contains(detail.Bid.ToString())) { m3Count++; report.M3BusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } break; case 4: if (!report.M4BusinessIDs.Contains(detail.Bid.ToString())) { m4Count++; report.M4BusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } break; default: if (!report.M5PlusBusinessIDs.Contains(detail.Bid.ToString())) { m5PlusCount++; report.M5PlusBusinessIDs += WebServiceConst.Separater_Comma + detail.Bid; } break; } } // 已放款数 loanCount = lstBussinessIds.Count; report.LoanCount = loanCount; report.FirstOverDueCount = firstOverDueCount; report.FourM2Count = fourM2Count; report.ThreeNonePayCount = threeNonePayCount; // M1逾期率 report.M1Rate = string.Format("{0}%", Math.Round((double)m1Count / (double)loanCount * 100, 1).ToString("#0.0")); // M2逾期率 report.M2Rate = string.Format("{0}%", Math.Round((double)m2Count / (double)loanCount * 100, 1).ToString("#0.0")); // M3逾期率 report.M3Rate = string.Format("{0}%", Math.Round((double)m3Count / (double)loanCount * 100, 1).ToString("#0.0")); // M4逾期率 report.M4Rate = string.Format("{0}%", Math.Round((double)m4Count / (double)loanCount * 100, 1).ToString("#0.0")); // M5+逾期率 report.M5PlusRate = string.Format("{0}%", Math.Round((double)m5PlusCount / (double)loanCount * 100, 1).ToString("#0.0")); listOverDueReportViewData.Add(report); } if (listOverDueReportViewData == null || listOverDueReportViewData.Count == 0) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.NoResult); m_Logger.Info("未查询到数据。"); } else { // 设置输出文件 SetExportFile(filter, listOverDueReportViewData, responseEntity); } }