151 lines
5.4 KiB
C#
151 lines
5.4 KiB
C#
|
|
using Microsoft.Practices.ObjectBuilder2;
|
|||
|
|
using MyCode.Project.Domain.Message.Request.BaoDian;
|
|||
|
|
using MyCode.Project.Domain.Message.Request.LxmZHMDReport;
|
|||
|
|
using MyCode.Project.Domain.Message.Response.Bfy;
|
|||
|
|
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 System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace MyCode.Project.Services.BLL.ReportExport
|
|||
|
|
{
|
|||
|
|
public class SalesOrderAttributeAnalysisExport : BaseExport
|
|||
|
|
{
|
|||
|
|
#region 初始化
|
|||
|
|
private IReportService _reportService;
|
|||
|
|
private IMyCodeCacheService _myCodeCacheService;
|
|||
|
|
|
|||
|
|
public SalesOrderAttributeAnalysisExport(IReportService reportService
|
|||
|
|
,IMyCodeCacheService myCodeCacheService)
|
|||
|
|
{
|
|||
|
|
_reportService = reportService;
|
|||
|
|
_myCodeCacheService = myCodeCacheService;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region Execute(执行)
|
|||
|
|
public override string Execute()
|
|||
|
|
{
|
|||
|
|
var pageSearch = base.GetPageSearch<SalesOrderAttributeAnalysisReq>(Condition,1000000,1);
|
|||
|
|
|
|||
|
|
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 list = _reportService.GetSalesOrderAttributeAnalysis(pageSearch, this.CurrentUser);
|
|||
|
|
|
|||
|
|
resultData.Total = list.DataList.Count;
|
|||
|
|
var data = list.DataList;
|
|||
|
|
data = data.OrderBy(t => t.ShopName).ThenBy(t => t.SalesTime).ToList();
|
|||
|
|
|
|||
|
|
int rows = 0;
|
|||
|
|
string shopName = "";
|
|||
|
|
Dictionary<string, List<SalesOrderAttributeAnalysis>> keyValuePairs = new Dictionary<string, List<SalesOrderAttributeAnalysis>>();
|
|||
|
|
int num = 0;
|
|||
|
|
int numX = 10000;
|
|||
|
|
int numY = 1;
|
|||
|
|
string fileName = "";
|
|||
|
|
data.ForEach(x =>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if (num % numX == 0)
|
|||
|
|
{
|
|||
|
|
fileName = $"{num+1}_{numX* numY}";
|
|||
|
|
numY++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
num++;
|
|||
|
|
if (keyValuePairs.ContainsKey(fileName))
|
|||
|
|
{
|
|||
|
|
keyValuePairs[fileName].Add(x);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
keyValuePairs.Add(fileName, new List<SalesOrderAttributeAnalysis> { x });
|
|||
|
|
}
|
|||
|
|
//base.AddExcelProcess(fileName, dataResult);
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
keyValuePairs.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
var dataResult = new
|
|||
|
|
{
|
|||
|
|
op = t.Value
|
|||
|
|
};
|
|||
|
|
base.AddExcelProcess(t.Key, dataResult);
|
|||
|
|
});
|
|||
|
|
if (base.ExcelFileType == (int)ExportFileType.Zip)
|
|||
|
|
{
|
|||
|
|
resultData.Rate = 0.02m;
|
|||
|
|
result.Data = resultData;
|
|||
|
|
WebSocketBLL.SendSocketMsg(ReportId, JsonHelper.ToJson(result, false, true));
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return base.Execute();
|
|||
|
|
|
|||
|
|
//var pageSearch = base.GetPageSearch<SalesOrderAttributeAnalysisReq>(Condition, 1);
|
|||
|
|
//var list = _reportService.GetSalesOrderAttributeAnalysis(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 = 100;
|
|||
|
|
//int maxPage = (list.TotalCount + pageSearch.PageSize - 1) / pageSearch.PageSize;
|
|||
|
|
//string zipFile = "";
|
|||
|
|
//string hasDownloadZipCacheKey = CacheKey.HasDownloadZipCacheKey + $@":{ReportId}";
|
|||
|
|
//while (pageSearch.Page <= maxPage)
|
|||
|
|
//{
|
|||
|
|
// list = _reportService.GetSalesOrderAttributeAnalysis(pageSearch, this.CurrentUser);
|
|||
|
|
// zipFile = base.PageListExecute<SalesOrderAttributeAnalysis>(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}" + $@":{ReportId}");
|
|||
|
|
//}
|
|||
|
|
//return zipFile;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|