using Infrastructure;
using Microsoft.Extensions.Configuration;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.App.ServiceApp.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OpenAuth.App.ServiceApp
{
    /// <summary>
    /// 统计分析
    /// </summary>
    public class DataAnalysisApp : SqlSugarBaseApp<InsTask, SugarDbContext>
    {
        private readonly IConfiguration _configuration;
        private readonly ISqlSugarClient client;
        private readonly IAuth _auth;
        public DataAnalysisApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<InsTask> repository, IAuth auth, ISqlSugarClient sqlSugarClient, IConfiguration configuration) : base(unitWork, repository, auth)
        {
            _configuration = configuration;
            this.client = sqlSugarClient;
            _auth = auth;
        }
        /// <summary>
        /// 时相统计
        /// </summary>
        /// <returns></returns>
        public async Task<Response<PageInfo<List<InsTask>>>> GteTaskListForAdmin(int month, int week, DateTime beginTime, DateTime endTime, string taskName, int page, int limit)
        {
            using (var db = base.UnitWork.CreateContext())
            {
                RefAsync<int> totalCount = 0;
                var tsakList = await db.InsTask.AsQueryable()
                    .WhereIF(string.IsNullOrEmpty(taskName), r => r.TaskName.Contains(taskName))
                    .ToPageListAsync(page, limit, totalCount);

                if (beginTime.Year == 0001)
                {
                    beginTime = GetMonthStartAndEndDate(month).Start;
                    endTime = GetMonthStartAndEndDate(month).End;
                }
                var tifList = await db.InsTif.AsQueryable()
                    .WhereIF(beginTime.Year != 0001 || month != 0, r => r.CreateTime >= beginTime && r.CreateTime <= endTime)
                    .ToListAsync();
                //总面积
                var totalTifArea = tifList.Sum(r => r.AreaNum);
                //个数
                var totalTifCount = tifList.Count();
                return new Response<PageInfo<List<InsTask>>>
                {
                    Result = new PageInfo<List<InsTask>>
                    {
                        Items = tsakList,
                        Total = totalCount
                    }
                };

            }
        }
        /// <summary>
        /// 每个县区的时相统计
        /// </summary>
        /// <returns></returns>
        public async Task<Response<List<dynamic>>> GetShiXiangForArea(int month, int week, DateTime beginTime, DateTime endTime)
        {
            using (var db = base.UnitWork.CreateContext())
            {
                if (beginTime.Year == 0001)
                {
                    beginTime = GetMonthStartAndEndDate(month).Start;
                    endTime = GetMonthStartAndEndDate(month).End;
                }
                var tifList = db.InsTif.AsQueryable()
                    .WhereIF(beginTime.Year != 0001 || month != 0, r => r.CreateTime >= beginTime && r.CreateTime <= endTime);
                //总面积
                var totalTifArea = tifList.Sum(r => r.AreaNum);
                //个数
                var totalTifCount = tifList.Count();

                var endData = await tifList.GroupBy(r => r.AreaNum).Select<dynamic>(r => new
                {
                    r.AreaName,
                    sumArea = SqlFunc.AggregateSum(r.AreaNum),
                }).ToListAsync();
                return new Response<List<dynamic>>
                {
                    Result = endData,
                };
            }
        }
        /// <summary>
        /// 每天时相统计
        /// </summary>
        /// <returns></returns>
        public async Task<Response<List<dynamic>>> GetShiXiangForTime(int month, int week, DateTime beginTime, DateTime endTime)
        {
            using (var db = base.UnitWork.CreateContext())
            {
                if (beginTime.Year == 0001)
                {
                    beginTime = GetMonthStartAndEndDate(month).Start;
                    endTime = GetMonthStartAndEndDate(month).End;
                }
                var tifList = db.InsTif.AsQueryable()
                    .WhereIF(beginTime.Year != 0001 || month != 0, r => r.CreateTime >= beginTime && r.CreateTime <= endTime);
                //总面积
                var totalTifArea = tifList.Sum(r => r.AreaNum);
                //个数
                var totalTifCount = tifList.Count();

                var endData = await tifList.GroupBy(r => r.CreateTime).Select<dynamic>(r => new
                {
                    r.CreateTime,
                    sumArea = SqlFunc.AggregateSum(r.AreaNum),
                }).ToListAsync();
                return new Response<List<dynamic>>
                {
                    Result = endData,
                };
            }
        }
        static (DateTime Start, DateTime End) GetMonthStartAndEndDate(int month)
        {
            int year = DateTime.Now.Year; // 获取当前年份
            DateTime startDate = new DateTime(year, month, 1, 0, 0, 0); // 当月起始日期
            DateTime endDate = startDate.AddMonths(1).AddSeconds(-1); // 当月结束日期 
            return (startDate, endDate);
        }
        // 获取本月的起始时间和结束时间 
        public static (DateTime startOfMonth, DateTime endOfMonth) GetStartEndOfMonth()
        {
            DateTime now = DateTime.Now;
            // 本月的第一天
            DateTime startOfMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 0);
            // 本月的最后一天
            DateTime endOfMonth = startOfMonth.AddMonths(1).AddSeconds(-1);

            return (startOfMonth, endOfMonth);
        }
        public static (DateTime startOfWeek, DateTime endOfWeek) GetStartEndOfWeek()
        {
            DateTime now = DateTime.Now;
            // 计算本周的第一天（假设一周从周一开始）
            DateTime startOfWeek = now.AddDays(-((int)now.DayOfWeek - 1));
            startOfWeek = startOfWeek.Date;
            // 计算本周的最后一天（假设一周从周一开始，周日为最后一天）
            DateTime endOfWeek = startOfWeek.AddDays(7).AddSeconds(-1);
            return (startOfWeek, endOfWeek);
        }


        #region 统计数据
        /// <summary>
        /// 小组 人员  的任务数和图斑数
        /// </summary>
        /// <param name="type"></param>
        /// <param name="dateType"></param>
        /// <returns></returns>
        public async Task<Response<List<UserOrGroupTaskResp>>> GetGroupOrUserTaskAndTuBan(int type, int dateType)
        {
            var user = _auth.GetCurrentUser().User;

            DateTime beginTime, endTime;
            if (dateType == 1)
            {
                beginTime = GetStartEndOfMonth().startOfMonth;
                endTime = GetStartEndOfMonth().endOfMonth;
            }
            else if (dateType == 2)
            {
                beginTime = GetStartEndOfWeek().startOfWeek;
                endTime = GetStartEndOfWeek().endOfWeek;
            }
            else
            {
                beginTime = DateTime.Today;
                endTime = DateTime.Now;
            }

            using (var db = base.UnitWork.CreateContext())
            {
                // 获取当前用户相关的所有小组用户
                var groupIds = await db.SysGroup.AsQueryable()
                    .Where(r => r.GroupLeaderId == user.Id.ToString())
                    .Select(r => r.Id)
                    .ToListAsync();

                var groupUser = await db.SysGroupuser.AsQueryable()
                    .Where(r => groupIds.Contains(r.GroupId) || r.UserId == user.Id.ToString())
                    .Select(r => r.UserId)
                    .ToListAsync();

                // 如果是小组统计
                if (type == 1)
                {
                    var result = await db.InsTaskgroup.AsQueryable()
                        .LeftJoin<SysUser>((a, b) => a.ReciveUserId == b.Id.ToString())
                        .WhereIF(beginTime.Year != 0001, a => a.CreateTime >= beginTime && a.CreateTime <= endTime)
                        .WhereIF(groupUser.Count > 0, a => groupUser.Contains(a.ReciveUserId))
                        .Where((a,b)=>!string.IsNullOrEmpty(a.ReciveUserId))
                        .GroupBy((a, b) => b.Name)
                        .Select((a, b) => new UserOrGroupTaskResp
                        {
                            UserName = b.Name,
                            TaskCount = SqlFunc.AggregateCount(a.Id),
                            TuBanCount = SqlFunc.AggregateSum(a.EndNum - a.BeginNum),
                        }).MergeTable().OrderByDescending((t)=>t.TuBanCount).ToListAsync();

                    return new Response<List<UserOrGroupTaskResp>>
                    {
                        Result = result,
                    };
                }
                // 如果是人员统计
                else if (type == 2)
                {
                    var result = await db.InsTaskgroup.AsQueryable()
                        .LeftJoin<SysGroupuser>((a, b) => a.ReciveUserId == b.UserId)
                        .LeftJoin<SysGroup>((a, b, c) => b.GroupId == c.Id)
                        .WhereIF(beginTime.Year != 0001, a => a.CreateTime >= beginTime && a.CreateTime <= endTime)
                        .WhereIF(groupUser.Count > 0, a => groupUser.Contains(a.ReciveUserId))
                        .Where((a, b) => !string.IsNullOrEmpty(a.ReciveUserId))
                        .GroupBy((a, b, c) => c.Name)
                        .Select((a, b, c) => new UserOrGroupTaskResp
                        {
                            UserName = c.Name,
                            TaskCount = SqlFunc.AggregateCount(a.Id),
                            TuBanCount = SqlFunc.AggregateSum(a.EndNum - a.BeginNum),
                        }).MergeTable().OrderByDescending((t) => t.TuBanCount).ToListAsync();

                    return new Response<List<UserOrGroupTaskResp>>
                    {
                        Result = result,
                    };
                }
            }

            return new Response<List<UserOrGroupTaskResp>>(); // 默认返回空列表
        }

        //public async Task<Response<List<AiShpDataExpenseAccountingTableResp>>> GetAiShpDataExpenseAccountingTableOld(DateTime beginTime, DateTime endTime)
        //{
        //    using (var db = base.UnitWork.CreateContext())
        //    {
        //        var aiShpList = db.InsAishp.AsQueryable()
        //            .WhereIF(beginTime.Year != 0001, r => r.CreateTime >= beginTime && r.CreateTime <= endTime);
        //        //总面积
        //        var totalTifArea = aiShpList.Sum(r => r.AreaNum);
        //        //个数
        //        var totalTifCount = aiShpList.Count();

        //        var endData = await aiShpList.GroupBy(r => r.ShpDate.Date).Select(r => new AiShpDataExpenseAccountingTableResp
        //        {
        //            ShapDate = r.ShpDate.Date.ToString("yyyyMMdd"),
        //            AreaNum = SqlFunc.AggregateSum(r.AreaNum),
        //            ShpCount = SqlFunc.AggregateSum(r.ShpCount),
        //        }).ToListAsync();
        //        return new Response<List<AiShpDataExpenseAccountingTableResp>>()
        //        {
        //            Result = endData
        //        };
        //    }
        //}
        public async Task<Response<AiShpDataExpenseAccountingTableResp>> GetAiShpDataExpenseAccountingTable1(DateTime beginTime, DateTime endTime)
        {
            using (var db = base.UnitWork.CreateContext())
            {
                List<DateTime> dateList = new List<DateTime>();
                List<AiShpDataExpenseAccountingResp> dataList = new List<AiShpDataExpenseAccountingResp>();
                if (beginTime > endTime)
                {
                    throw new ArgumentException("开始时间需要小于结束时间");
                }
                // 从开始日期遍历到结束日期
                for (DateTime date = beginTime.Date; date <= endTime.Date; date = date.AddDays(1))
                {
                    dateList.Add(date);
                }
                var aiShpList = db.InsAishp.AsQueryable().WhereIF(beginTime.Year != 0001, r => r.CreateTime >= beginTime && r.CreateTime <= endTime);
                var taskList = db.InsTask.AsQueryable().WhereIF(beginTime.Year != 0001, t => t.CreateTime >= beginTime && t.CreateTime <= endTime);
                for (int i = 0; i < dateList.Count; i++)
                {
                    AiShpDataExpenseAccountingResp aiShpDataExpenseAccountingResp = new AiShpDataExpenseAccountingResp();

                    var aiShpListDay = db.InsAishp.AsQueryable().Where(r => r.ShpDate >= dateList[i]);
                    aiShpDataExpenseAccountingResp.Number = i + 1;
                    aiShpDataExpenseAccountingResp.ShapDate = dateList[i].ToString("yyyyMMdd");
                    //提取个数
                    aiShpDataExpenseAccountingResp.AreaNum = await aiShpListDay.SumAsync(r => r.AreaNum);
                    aiShpDataExpenseAccountingResp.ShpCount = await aiShpListDay.SumAsync(r => r.ShpCount);
                    //下发数量
                    aiShpDataExpenseAccountingResp.IssuedCount = await taskList.Where(t => aiShpListDay.Select(r => r.Id).ToList().Contains(t.ShpId)).CountAsync();

                }
                AiShpDataExpenseAccountingTableResp aiShpDataExpenseAccountingTableResp = new AiShpDataExpenseAccountingTableResp();
                aiShpDataExpenseAccountingTableResp.RespData = dataList;
                //总面积
                aiShpDataExpenseAccountingTableResp.TotalShpArea = aiShpList.Sum(r => r.AreaNum);
                //个数
                aiShpDataExpenseAccountingTableResp.TotalShpCount = aiShpList.Count();
                return new Response<AiShpDataExpenseAccountingTableResp>()
                {
                    Result = aiShpDataExpenseAccountingTableResp
                };
            }
        }
        public async Task<Response<AiShpDataExpenseAccountingTableResp>> GetAiShpDataExpenseAccountingTable(DateTime beginTime, DateTime endTime)
        {
            using (var db = base.UnitWork.CreateContext())
            {
                if (beginTime > endTime)
                {
                    throw new ArgumentException("开始时间需要小于结束时间");
                }

                var dateList = Enumerable.Range(0, (endTime.Date - beginTime.Date).Days + 1)
                                         .Select(offset => beginTime.Date.AddDays(offset))
                                         .ToList();

                var aiShpList = await db.InsAishp.AsQueryable()
                    .Where(r => r.ShpDate >= beginTime && r.ShpDate <= endTime)
                    .ToListAsync();

                var taskList = await db.InsTask.AsQueryable()
                    .Where(t => t.CreateTime >= beginTime && t.CreateTime <= endTime)
                    .ToListAsync();
                int TotalIssuedCount = 0;
                var dataList = dateList.Select(date =>
                {
                    var aiShpForDay = aiShpList.Where(r => r.ShpDate.Date == date).ToList();

                    var areaNum = aiShpForDay.Sum(r => r.AreaNum);
                    var shpCount = aiShpForDay.Sum(r => r.ShpCount ?? 0);

                    var issuedCount = taskList.Count(t => aiShpForDay.Any(r => r.Id == t.ShpId));
                    TotalIssuedCount += issuedCount;
                    //文件夹
                    var folderPath = string.Join(",", aiShpForDay.Select(r =>
                    {
                        var directory = Path.GetDirectoryName(r.ShpPath); // 获取目录部分
                        return directory != null ? Path.GetFileName(directory) : string.Empty; // 获取目录名
                    }).ToList());

                    return new AiShpDataExpenseAccountingResp
                    {
                        Number = dateList.IndexOf(date) + 1,
                        ShapDate = date.ToString("yyyyMMdd"),
                        AreaNum = areaNum,
                        ShpCount = shpCount,
                        IssuedCount = issuedCount,
                        FolderPath = folderPath,
                    };
                }).ToList();

                var totalShpArea = aiShpList.Sum(r => r.AreaNum);
                var totalShpCount = aiShpList.Count();

                var aiShpDataExpenseAccountingTableResp = new AiShpDataExpenseAccountingTableResp
                {
                    RespData = dataList,
                    TotalShpArea = totalShpArea,
                    TotalShpCount = totalShpCount,
                    TotalShpProduction = 0,
                    TotalShpInterpretation = 0,
                    TotalJudgment = 0,
                    TotalPush = 0,
                    TotalCost = 0,
                    TotalIssuedCount = TotalIssuedCount
                };

                return new Response<AiShpDataExpenseAccountingTableResp>
                {
                    Result = aiShpDataExpenseAccountingTableResp
                };
            }
        }
        //导出
        public Response<MemoryStream> CaseOfMineralsToExcelNew(DateTime startTime, DateTime endTime)
        {
            Response<MemoryStream> response = new Response<MemoryStream>();
            try
            {
                var list = GetAiShpDataExpenseAccountingTable(startTime, endTime).Result;
                HSSFWorkbook workbook = new HSSFWorkbook();

                #region 样式设置

                ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
                    VerticalAlignment vAlign, bool bold = false)
                {
                    IFont font = wb.CreateFont();
                    font.FontName = fontName;
                    font.FontHeightInPoints = fontHeight;
                    font.IsBold = bold;

                    ICellStyle style = wb.CreateCellStyle();
                    style.BorderBottom = BorderStyle.Thin;
                    style.BorderLeft = BorderStyle.Thin;
                    style.BorderRight = BorderStyle.Thin;
                    style.BorderTop = BorderStyle.Thin;
                    style.Alignment = hAlign;
                    style.VerticalAlignment = vAlign;
                    style.SetFont(font);
                    style.WrapText = true;

                    return style;
                }

                ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
                    VerticalAlignment vAlign, bool bold = false)
                {
                    IFont font = wb.CreateFont();
                    font.FontName = fontName;
                    font.FontHeightInPoints = fontHeight;
                    font.IsBold = bold;

                    ICellStyle style = wb.CreateCellStyle();
                    style.Alignment = hAlign;
                    style.VerticalAlignment = vAlign;
                    style.SetFont(font);
                    style.WrapText = true;

                    return style;
                }

                // 创建右对齐样式
                ICellStyle rightAlignStyle = workbook.CreateCellStyle();
                rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
                rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
                IFont font = workbook.CreateFont();
                font.FontName = "宋体";
                font.FontHeightInPoints = 12;
                rightAlignStyle.SetFont(font);
                rightAlignStyle.WrapText = true;
                //第二个sheet右对齐样式
                ICellStyle rightAlignStyle2 = workbook.CreateCellStyle();
                rightAlignStyle2.Alignment = HorizontalAlignment.Right; // 设置右对齐
                rightAlignStyle2.VerticalAlignment = VerticalAlignment.Center;
                IFont font1 = workbook.CreateFont();
                font1.FontName = "宋体";
                font1.FontHeightInPoints = 9;
                rightAlignStyle2.SetFont(font1);
                rightAlignStyle2.WrapText = true;

                ICellStyle contentStyle =
                    CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
                ICellStyle titleStyle =
                    CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
                ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
                    VerticalAlignment.Center);
                ICellStyle headerStyle2 =
                    CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
                ICellStyle headerStyle3 =
                    CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
                //第二个sheet
                ICellStyle contentStyle22 =
                    CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
                ICellStyle titleStyle2 =
                    CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
                ICellStyle headerStyle21 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
                    VerticalAlignment.Center);
                ICellStyle headerStyle23 =
                    CreateCellStyle(workbook, 12, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
                ICellStyle beizhuStyle21 =
                    CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);

                #endregion

                #region 第一个sheet

                #region 创建表头

                IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
                {
                    IRow row = sht.CreateRow(rowIndex);
                    row.HeightInPoints = heightInPoints;
                    return row;
                }

                void SetCellStyle(IRow row, ICellStyle style)
                {
                    foreach (NPOI.SS.UserModel.ICell cell in row.Cells)
                    {
                        cell.CellStyle = style;
                    }
                }

                #endregion

                #endregion


                #region 第二个sheet

                ISheet sheet2 = workbook.CreateSheet("Sheet2");

                #region 创建表头

                IRow row20 = CreateRowWithHeight(sheet2, 0, 42);
                row20.CreateCell(0).SetCellValue("汇总表");

                IRow row22 = CreateRowWithHeight(sheet2, 1, 24);

                row22.CreateCell(0).SetCellValue("县区");
                row22.CreateCell(1).SetCellValue("下发线索总数（个）");
                row22.CreateCell(2).SetCellValue("总数");
                row22.CreateCell(3);
                row22.CreateCell(4);
                row22.CreateCell(5).SetCellValue("定性");
                row22.CreateCell(6);
                row22.CreateCell(7);
                row22.CreateCell(8);
                row22.CreateCell(9).SetCellValue("分类");
                row22.CreateCell(10);
                row22.CreateCell(11).SetCellValue("超期未报（个）");

                IRow row23 = CreateRowWithHeight(sheet2, 2, 69);

                row23.CreateCell(0);
                row23.CreateCell(1);
                row23.CreateCell(2).SetCellValue("已完成（个）");
                row23.CreateCell(3).SetCellValue("未完成（个）");
                row23.CreateCell(4).SetCellValue("完成率（%）");
                row23.CreateCell(5).SetCellValue("合法（个）");
                row23.CreateCell(6).SetCellValue("违法（个）");
                row23.CreateCell(7).SetCellValue("其他（个）");
                row23.CreateCell(8).SetCellValue("未定性（个）");
                row23.CreateCell(9).SetCellValue("非法开采（个）");
                row23.CreateCell(10).SetCellValue("非法加工（个）");
                row23.CreateCell(11);

                // 设置样式
                SetCellStyle(row20, headerStyle21);

                SetCellStyle(row22, headerStyle23);
                SetCellStyle(row23, headerStyle23);


                // 合并单元格 
                sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 11)); // 合并标题行
                sheet2.AddMergedRegion(new CellRangeAddress(1, 2, 0, 0));
                sheet2.AddMergedRegion(new CellRangeAddress(1, 2, 1, 1));
                sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 2, 4));
                sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 5, 8));
                sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 9, 10));
                sheet2.AddMergedRegion(new CellRangeAddress(1, 2, 11, 11));



                // 设置列宽
                int[] normalColumns2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
                foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 9 * 256); // 设置列宽
                int[] normalColumns1 = { 9, 10, 11 };
                foreach (var index in normalColumns1) sheet2.SetColumnWidth(index, 12 * 256); // 设置列宽


                #endregion

                #region 填充数据 
                for (int i = 0; i < list.Result.RespData.Count - 1; i++)
                {
                    var rowIndex = i + 3; // 数据从第5行开始
                    var row = CreateRowWithHeight(sheet2, rowIndex, 34);
                    row.CreateCell(0).SetCellValue(list.Result.RespData[i].Number);
                    row.CreateCell(1).SetCellValue(list.Result.RespData[i].ShpProduction);
                    row.CreateCell(2).SetCellValue(list.Result.RespData[i].ShpInterpretation);
                    row.CreateCell(3).SetCellValue(list.Result.RespData[i].Judgment);
                    row.CreateCell(4).SetCellValue(list.Result.RespData[i].Push);
                    row.CreateCell(5).SetCellValue(list.Result.RespData[i].Cost);
                    row.CreateCell(6).SetCellValue(list.Result.RespData[i].ShpCount.ToString());
                    row.CreateCell(7).SetCellValue(list.Result.RespData[i].IssuedCount);
                    row.CreateCell(8).SetCellValue(list.Result.RespData[i].FolderPath);
                    row.CreateCell(9).SetCellValue(list.Result.RespData[i].Format);
                    row.CreateCell(10).SetCellValue(list.Result.RespData[i].Remark);
                    SetCellStyle(row, contentStyle22);
                }
                #endregion

                #endregion

                response.Result = new MemoryStream();
                workbook.Write(response.Result);
                response.Result.Position = 0;
                workbook.Close();

                response.Code = 200;
                response.Message = "获取成功";
            }
            catch (Exception ex)
            {
                response.Code = 500;
                response.Message = ex.Message;
            }

            return response;
        }
        #endregion
    }
}
