Esempio n. 1
0
        [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
                }));
            }
        }
Esempio n. 2
0
        /// <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;
        }
Esempio n. 3
0
        /// <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);
                }
            }
        }
Esempio n. 5
0
        /// <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;
            }
        }
Esempio n. 6
0
        /// <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;
            }
        }