Files
YunTongJackYunTask/Reportapi/MyCode.Project.Services/BLL/ReportExport/MemberAssetInquiryExport.cs

93 lines
3.4 KiB
C#
Raw Normal View History

2025-07-04 09:50:02 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyCode.Project.Domain.Message.Request.LxmZHMDReport;
using MyCode.Project.Domain.Message.Response.LxmZHMDReport;
using MyCode.Project.Infrastructure;
using MyCode.Project.Infrastructure.Cache;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.Constant;
using MyCode.Project.Infrastructure.Enumeration;
using MyCode.Project.Services.IServices;
namespace MyCode.Project.Services.BLL.ReportExport
{
public class MemberAssetInquiryExport : BaseExport
{
#region
private readonly ILxmReport2023Service _reportService;
private IMyCodeCacheService _myCodeCacheService;
public MemberAssetInquiryExport(ILxmReport2023Service reportService
, IMyCodeCacheService myCodeCacheService)
{
_reportService = reportService;
}
#endregion
#region Execute()
public override string Execute()
{
var req = JsonHelper.ToObject<ShopDiagnosisReportReq>(Condition.ToString());
var resultData = new ReportCalRateResp()
{
Total = 0,
Rate = 0.01m
};
var result = new Result()
{
Data = resultData,
Code = ResultCode.Success
};
if (base.ExcelFileType == (int)ExportFileType.Zip)
{
//类型为0是报表专用验证客户端是否在线
WebSocketBLL.CheckOnline(ReportId, 0);
//开始运算先发送个进度0%,表明开始
WebSocketBLL.SendSocketMsg(ReportId, JsonHelper.ToJson(result, false, true));
}
var pageSearch = base.GetPageSearch<MemberAssetInquiryReq>(Condition, 1);
var list = _reportService.GetMemberAssetInquiry(pageSearch, this.CurrentUser);
resultData.Total = list.TotalCount;
var fileName = $"会员统计--会员查询";
if (base.ExcelFileType == (int)ExportFileType.Zip)
{
resultData.Rate = 0.02m;
result.Data = resultData;
WebSocketBLL.SendSocketMsg(ReportId, JsonHelper.ToJson(result, false, true));
}
pageSearch.Page = 1;
pageSearch.PageSize = 10000;
int maxPage = (list.TotalCount+ pageSearch.PageSize-1) / pageSearch.PageSize;
string zipFile = "";
string hasDownloadZipCacheKey = CacheKey.HasDownloadZipCacheKey + $@":{ReportId}";
while (pageSearch.Page <= maxPage)
{
list = _reportService.GetMemberAssetInquiry(pageSearch, this.CurrentUser);
zipFile =base.PageListExecute<MemberAssetInquiryResp>(list, pageSearch.Page, pageSearch.PageSize, list.TotalCount, fileName, hasDownloadZipCacheKey);
pageSearch.Page++;
}
if (zipFile == "")
{
resultData.CurQty = list.TotalCount;
resultData.Rate = 1;
WebSocketBLL.SendSocketMsg(ReportId, JsonHelper.ToJson(result, false, true));
//移除正在下载
_myCodeCacheService.Delete($"{hasDownloadZipCacheKey}");
}
return zipFile;
}
#endregion
}
}