[RequestSizeLimit(100 * 1024 * 1024)] //限制http大小 public async Task <IActionResult> Post([FromHeader] string fileOwner, List <IFormFile> files) { try { if (string.IsNullOrWhiteSpace(fileOwner)) { return(AssertNotFound(new ResponseFileResult { Result = false, Code = ResponseCode.InvalidParameters, ErrorMessage = "文件归属不能为空" })); } if (files == null || !files.Any()) { return(AssertNotFound(new ResponseFileResult { Result = false, Code = ResponseCode.InvalidParameters, ErrorMessage = "附件不能为空" })); } string filePath = Path.Combine(Directory.GetCurrentDirectory(), BASEFILE, $@"{fileOwner}"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } var result = new ResponseFileResult(); var fileList = new List <FileResultModel>(); foreach (var file in files) { var fileModel = new FileResultModel(); var fileName = ContentDispositionHeaderValue .Parse(file.ContentDisposition) .FileName .Trim('"'); var newName = Guid.NewGuid().ToString() + Path.GetExtension(fileName); var filefullPath = Path.Combine(filePath, $@"{newName}"); using (FileStream fs = new FileStream(filefullPath, FileMode.Create))//System.IO.File.Create(filefullPath) { await file.CopyToAsync(fs); fs.Flush(); } fileList.Add(new FileResultModel { Name = fileName, Size = file.Length, Url = $@"/file/download?fileOwner={fileOwner}&fileName={newName}" }); } result.FileResultList = fileList; return(AssertNotFound(result)); } catch (Exception ex) { return(AssertNotFound(new ResponseFileResult { Result = false, Code = ResponseCode.UnknownException, ErrorMessage = ex.Message })); } }
/// <summary> /// 设置输出文件 /// </summary> /// <param name="filter"></param> /// <param name="dt"></param> /// <param name="responseEntity"></param> protected void SetExportFile(BaseExportFilter filter, DataTable dt , ResponseEntity responseEntity, string sheetName = "Sheet1") { ResponseFileResult responseResult = new ResponseFileResult(); responseResult.Result = FileExportUtility.GenerateFileStream(dt, (EnumExportFileType)filter.ExportFileType, sheetName); dt = null; ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.Success); responseEntity.Results = responseResult; }
/// <summary> /// 设置输出文件 /// </summary> /// <param name="filter"></param> /// <param name="list"></param> /// <param name="responseEntity"></param> protected void SetExportFile(BaseExportFilter filter, ICollection list , ResponseEntity responseEntity, string sheetName = "Sheet1") { string[] titles = filter.Titles.Split(WebServiceConst.Separater_Comma.ToArray()).ToArray(); string[] fields = filter.Fields.Split(WebServiceConst.Separater_Comma.ToArray()).ToArray(); ResponseFileResult responseResult = new ResponseFileResult(); responseResult.Result = FileExportUtility.GenerateFileStream(titles, fields, list, (EnumExportFileType)filter.ExportFileType, sheetName); titles = null; fields = null; list = null; ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.Success); responseEntity.Results = responseResult; }
/// <summary> /// 程序执行主入口 /// </summary> /// <param name="serviceData"></param> public void Execute(object serviceData) { ResponseEntity responseEntity = new ResponseEntity(); ServiceData data = serviceData as ServiceData; if (data == null) { return; } ServiceCommand command = data.Command; if (command == null) { return; } RequestEntity requestEntity = command.Entity; if (requestEntity == null) { responseEntity.ResponseStatus = (int)EnumResponseState.RequestCommandError; return; } //请求ID responseEntity.RequestId = requestEntity.RequestId; // 用户名 responseEntity.UserId = requestEntity.UserId; string errorMessage = ""; // 记录执行时间类 using (StopWatcherAuto auto = new StopWatcherAuto()) { int ServiceID = ContractSide.SHWS; int LendingBHID = ContractSide.SHBH; string lockkey = string.Empty; try { if (HaveFrozenBusiness(LendingBHID, ServiceID, ref errorMessage)) { return; } AnnulCLoanByBusinessesByBoHai(Const.COMPANY_WX_SHWS_SERVICE, Const.COMPANY_BHXT_LENDING); string sqllend = SqlFile.PayBankSqlBH.ToFileContent (true, ServiceID, "AND BUS.LendingSideID =" + LendingBHID, ServiceID, "AND BUS.LendingSideID =" + LendingBHID); string sqlserv = SqlFile.PayBankSqlServer.ToFileContent (true, ServiceID, "AND BUS.LendingSideID =" + LendingBHID); PayBankDal dal = new PayBankDal(); var datalend = dal.GetPayBankExportItem(sqllend); var dataserv = dal.GetPayBankExportItem(sqlserv); if (datalend.Count == 0 && dataserv.Count == 0) { errorMessage = "无扣款指令导出。"; m_Logger.Info("无扣款指令导出!"); return; } // 为导出订单加锁 lockkey = SetBusinessLock(ServiceID, LendingBHID); // 根据子公司编号获取导出扣款文件名 var titles = GetTitles(ServiceID, lockkey); // 根据子公司编号获取导出扣款指令配置 var dic = GetDeductCommand(ServiceID); var lstBankAccount = Singleton <BankAccountsCache> .Instance.BankAccounts; BankFactory fac = new BankFactory(dic); var cmpanys = Singleton <CompanyCache> .Instance.CompanyEnumeration; byte[] ret = fac.ExportBHXT(datalend, dataserv, requestEntity.UserId, lstBankAccount, cmpanys, titles, ServiceID, LendingBHID, lockkey); if (ret == null) { //为导出订单解锁 SetBusinessUnLock(lockkey); errorMessage = "无扣款指令导出。"; m_Logger.Info("无扣款指令导出。"); } else { var result = new ResponseFileResult(); result.Result = ret; responseEntity.ResponseStatus = (int)EnumResponseState.Success; responseEntity.Results = result; } } catch (Exception ex) { errorMessage = ""; responseEntity.ResponseStatus = (int)EnumResponseState.Others; responseEntity.ResponseMessage = "导出扣款指令失败。" + ex.Message.ToString(); m_Logger.Error("导出扣款指令失败:" + ex.Message.ToString()); m_Logger.Error("导出扣款指令失败:" + ex.StackTrace.ToString()); // 为导出订单解锁 SetBusinessUnLock(lockkey); } finally { if (errorMessage.Length > 0) { responseEntity.ResponseStatus = (int)EnumResponseState.Others; responseEntity.ResponseMessage = errorMessage; } Singleton <ResultCacheManager> .Instance.AddResult(command.Guid, responseEntity); } } }
/// <summary> /// 检索数据 /// </summary> /// <param name="filter"></param> /// <param name="responseEntity"></param> public void SearchData(SearchBusinessListFilter filter, ResponseEntity responseEntity) { if (filter == null) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.RequestCommandError); return; } if (filter.IsFilterServiceSideKey) { List <string> companys = Singleton <RedisEnumOperatorBLL> .Instance.GetUserOwnCompanyKeys(responseEntity.UserId); filter.BranchKey = string.Join("','", companys.ToArray()); } if (filter.IsFilterBranchKeys) { List <string> stores = Singleton <RedisEnumOperatorBLL> .Instance.GetUserOwnStoreKeys(responseEntity.UserId); filter.BranchKeys = string.Join("','", stores.ToArray()); } var businessDetail = Singleton <BusinessDetailDAL <BusinessDetailViewData> > .Instance.SearchData(filter); if (businessDetail == null || businessDetail.Count == 0) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.NoResult); m_Logger.Info("未查询到数据!。"); } else { foreach (var business in businessDetail) { business.LoanKindName = Singleton <RedisEnumOperatorBLL> .Instance.GetRedisData( RedisEnumOperatorBLL.HashId_LoanKind_6, business.LoanKind).Name; business.RegionName = Singleton <RedisEnumOperatorBLL> .Instance.GetRedisData( RedisEnumOperatorBLL.HashId_Region_9, business.Region).Name; business.BranchKeyName = Singleton <RedisEnumOperatorBLL> .Instance.GetRedisData( RedisEnumOperatorBLL.HashId_Store_12, business.BranchKey).Name; } filter.BusinessID = businessDetail[0].BusinessID; var lstBills = Singleton <BillDetailDAL <BillDetailViewData> > .Instance.SearchData(filter); var lstBillItems = Singleton <BillItemDetailDAL <BillItemDetailViewData> > .Instance.SearchData(filter); var lstReceives = Singleton <ReceiveDetailDAL <ReceiveDetailViewData> > .Instance.SearchData(filter); var lstReceiveCut = Singleton <ReceiveCutDetailDAL <ReceivedCutViewData> > .Instance.SearchData(filter); var lastCloseDay = Singleton <GetLatestCloseTimeBLL> .Instance.GetLatestCloseTimeViewData(businessDetail[0].ServiceSideID); businessDetail[0].LatestTime = lastCloseDay.LatestTime; List <PenaltyIntViewData> lstPenaltyInt = null; // 罚息 if (filter.IsSearchPenaltyInt) { lstPenaltyInt = Singleton <PenaltyIntDetailDAL <PenaltyIntViewData> > .Instance.SearchData(filter); } // 代偿卡 List <AdaptationCardDetailData> lstACard = null; if (filter.IsSearchAdaptationCard) { lstACard = Singleton <AdaptationCardDAL <AdaptationCardDetailData> > .Instance.SearchData(filter); lstACard.ForEach(p => { p.AdaBankName = Singleton <RedisEnumOperatorBLL> .Instance.GetRedisData( RedisEnumOperatorBLL.HashId_BankList_8, p.AdaBankName).Name; }); } StringBuilder sbHead = new StringBuilder(); int billLength = 0; int billItemLength = 0; int receiveLength = 0; int receiveCutLength = 0; int penaltyIntLength = 0; int aCardLength = 0; if (lstBills != null && lstBills.Count != 0) { billLength = lstBills.Count; } if (lstBillItems != null && lstBillItems.Count != 0) { billItemLength = lstBillItems.Count; } if (lstReceives != null && lstReceives.Count != 0) { receiveLength = lstReceives.Count; } if (lstReceiveCut != null && lstReceiveCut.Count != 0) { receiveCutLength = lstReceiveCut.Count; } if (lstPenaltyInt != null && lstPenaltyInt.Count != 0) { penaltyIntLength = lstPenaltyInt.Count; } if (lstACard != null && lstACard.Count != 0) { aCardLength = lstACard.Count; } sbHead.AppendFormat("{0}{1}{2}{1}{3}{1}{4}{1}{5}{1}{6}{1}{7}" , 1, WebServiceConst.Separater_Semicolon, billLength, billItemLength , receiveLength, receiveCutLength, penaltyIntLength, aCardLength); StringBuilder sbContent = new StringBuilder(); sbContent.AppendLine(sbHead.ToString()); sbContent.AppendLine(businessDetail[0].ToString()); if (lstBills != null && lstBills.Count != 0) { foreach (var bill in lstBills) { sbContent.AppendLine(bill.ToString()); } } if (lstBillItems != null && lstBillItems.Count != 0) { foreach (var billItem in lstBillItems) { sbContent.AppendLine(billItem.ToString()); } } if (lstReceives != null && lstReceives.Count != 0) { foreach (var receive in lstReceives) { sbContent.AppendLine(receive.ToString()); } } if (lstReceiveCut != null && lstReceiveCut.Count != 0) { foreach (var receiveCut in lstReceiveCut) { sbContent.AppendLine(receiveCut.ToString()); } } if (lstPenaltyInt != null && lstPenaltyInt.Count != 0) { foreach (var penaltyInt in lstPenaltyInt) { sbContent.AppendLine(penaltyInt.ToString()); } } if (lstACard != null && lstACard.Count != 0) { foreach (var aCard in lstACard) { sbContent.AppendLine(aCard.ToString()); } } var responseResult = new ResponseFileResult(); responseResult.Result = ConvertUtility.CodingToByte(sbContent.ToString(), 2); ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.Success); responseEntity.Results = responseResult; } }
/// <summary> /// 检索数据 /// </summary> /// <param name="baseFilter"></param> /// <param name="responseEntity"></param> public void ExportData(BaseFilter baseFilter, ResponseEntity responseEntity) { var filter = baseFilter as RelativeDayExportDunFilter; if (filter == null) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.RequestCommandError); return; } DataTable dt = Singleton <RelativeDayDunTaskExportDAL <RelativeDaySearchDunExportViewData> > .Instance.SearchDataToDataTable(filter); if (dt == null || dt.Rows.Count <= 0) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.NoResult, "无催收单导出"); m_Logger.Info("无催收单导出。"); return; } AsposeXls.Workbook workbook = new AsposeXls.Workbook(); AsposeXls.Worksheet sheet = workbook.Worksheets[0]; Aspose.Cells.Style sc1 = workbook.Styles[workbook.Styles.Add()]; sc1.ShrinkToFit = true; sc1.Number = 14; sc1.HorizontalAlignment = AsposeXls.TextAlignmentType.Center; sc1.VerticalAlignment = AsposeXls.TextAlignmentType.Center; Aspose.Cells.StyleFlag scf1 = new Aspose.Cells.StyleFlag(); scf1.ShrinkToFit = true; scf1.NumberFormat = true; scf1.HorizontalAlignment = true; scf1.VerticalAlignment = true; Aspose.Cells.Column colomn1 = sheet.Cells.Columns[9]; colomn1.ApplyStyle(sc1, scf1); sheet.FreezePanes(1, 1, 1, 0); //冻结第一行 DataTable dtb = dt.Clone(); foreach (DataRow item in dt.Rows) { DataRow NewRow = dtb.NewRow(); for (int i = 0; i < NewRow.ItemArray.Length; i++) { NewRow[i] = item[i]; } NewRow["客户类型"] = Convert.ToByte(item["客户类型"]).ValueToDesc <EnumBusinessStatus>(); NewRow["逾期月数"] = "M" + item["逾期月数"].ToString(); NewRow["客户状态"] = Convert.ToByte(item["客户状态"]).ValueToDesc <EnumLawsuitStatus>(); //NewRow["产品类型"] = Convert.ToByte(item["产品类型"]).ValueToDesc<EnumLawsuitStatus>(); NewRow["产品种类"] = Convert.ToByte(item["产品种类"]).ValueToDesc <EnumProductKind>(); dtb.Rows.Add(NewRow); } sheet.Cells.ImportDataTable(dtb, true, 0, 0); sheet.AutoFitColumns(); byte[] result = null; using (MemoryStream stream = new MemoryStream()) { workbook.Save(stream, SaveFormat.Xlsx); result = stream.ToArray(); } if (result == null || result.Length == 0) { ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.NoResult); m_Logger.Info("无催收单导出。"); } else { // 设置输出文件 ResponseFileResult responseResult = new ResponseFileResult(); responseResult.Result = result; ServiceUtility.SetResponseStatus(responseEntity, EnumResponseState.Success); responseEntity.Results = responseResult; } }