Преглед изворни кода

营业额团组列表下载excel

LEIYI пре 6 месеци
родитељ
комит
0cddf7c07e
1 измењених фајлова са 128 додато и 3 уклоњено
  1. 128 3
      OASystem/OASystem.Api/Controllers/StatisticsController.cs

+ 128 - 3
OASystem/OASystem.Api/Controllers/StatisticsController.cs

@@ -2317,8 +2317,8 @@ ORDER BY
         {
             //全部人员Id
             //查询所有公司的市场部
-            List<int> pickGroupIds = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).Select(it => it.JietuanOperator).Distinct().ToList();
-            List<int> userIds = new List<int>();
+           var pickGroupIds = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).Select(it => it.JietuanOperator).Distinct().ToList();
+           var userIds = new List<int>();
             var userDatas = await _sqlSugar.Queryable<Sys_Users>()
                                            .InnerJoin<Sys_Company>((u, c) => u.CompanyId == c.Id)
                                            .Where((u, c) => u.IsDel == 0 && pickGroupIds.Contains(u.Id))
@@ -2463,7 +2463,6 @@ FROM
             public string yoy { get; set; } = "1.00";
         }
 
-
         /// <summary>
         ///  市场部销售额
         ///  团组列表
@@ -2616,6 +2615,132 @@ FROM
             return Ok(JsonView(true, "操作成功!", groupData, total));
         }
 
+        /// <summary>
+        ///  市场部销售额
+        ///  团组列表Excel下载
+        /// </summary>
+        /// <param name="_dto">市场部销售额请求dto</param>
+        /// <returns></returns>
+        [HttpPost("PostMarketingSalesGroupExcel")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostMarketingSalesGroupExcel(MarketingSalesGroupListDto _dto)
+        {
+            #region  参数验证
+
+            MarketingSalesStatisticsDtoFoalidator validationRules = new MarketingSalesStatisticsDtoFoalidator();
+            var validResult = await validationRules.ValidateAsync(_dto);
+            if (!validResult.IsValid)
+            {
+                var errors = new StringBuilder();
+                foreach (var error in validResult.Errors) errors.AppendLine(error.ErrorMessage);
+                return Ok(JsonView(false, errors.ToString()));
+            }
+
+            PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+            #region 页面操作权限验证
+            pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+            if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, MsgTips.CheckAuth));
+            #endregion
+
+            #endregion
+
+            string userSql = "";
+            var userIds = new List<int>();
+            userIds = await GetUserIds(_dto.CompanyId, _dto.GroupPickupUserId);
+
+            if (userIds.Count <= 0)
+            {
+                return Ok(JsonView(false));
+            }
+            else userSql = @$" And di.JietuanOperator In ({string.Join(",", userIds)})";
+
+
+            if (!string.IsNullOrEmpty(_dto.SearchCriteria))
+            {
+                userSql += string.Format(@$" AND di.TeamName Like '%{_dto.SearchCriteria}%'");
+            }
+
+            string beginDt = $"{_dto.BeginDt} 00:00:00", 
+                   endDt = $"{_dto.EndDt} 23:59:59";
+
+            string sql = string.Format(@$"SELECT
+  ROW_NUMBER() OVER (
+    ORDER BY
+      CollectionDays
+  ) AS RowNumber,
+  *
+FROM
+  (
+    SELECT
+      di.Id,
+      di.TeamName,
+      di.ClientUnit,
+      di.ClientName,
+      di.VisitDate,
+      di.VisitPNumber,
+      di.JietuanOperator,
+      di.VisitEndDate,
+      (
+        SELECT
+          CAST(
+            COALESCE(SUM(ItemSumPrice * Rate), 0) AS DECIMAL(12, 2)
+          ) AS GroupSales
+        FROM
+          Fin_ForeignReceivables
+        WHERE
+          IsDel = 0
+          AND di.Id = Diid
+          AND AddingWay IN (0, 1, 2)
+      ) AS GroupSales,
+      u.CnName AS GroupPickupUser,
+      DATEADD(DAY, 7, di.VisitEndDate) AS CollectionDays
+    FROM
+      Grp_DelegationInfo di
+    WITH
+      (NoLock)
+      LEFT JOIN Sys_Users u ON di.JietuanOperator = u.Id
+    WHERE
+      di.Isdel = 0
+      AND  (
+        SELECT
+          CAST(
+            COALESCE(SUM(ItemSumPrice * Rate), 0) AS DECIMAL(12, 2)
+          ) AS GroupSales
+        FROM
+          Fin_ForeignReceivables
+        WHERE
+          IsDel = 0
+          AND di.Id = Diid
+          AND AddingWay IN (0, 1, 2)
+      ) > 0
+	   {userSql}  
+      AND VisitDate Between '{beginDt}' And  '{endDt}'
+  ) Temp ");
+            
+            var view = await _sqlSugar.SqlQueryable<MarketingSalesGroupList>(sql).ToListAsync();
+
+
+            if (view.Count < 1 ) return Ok(JsonView(false, "暂无数据!"));
+
+            //DataTable dt = GeneralMethod.
+            DataTable dt = CommonFun.GetDataTableFromIList(view);
+            dt.TableName = $"_view";
+            WorkbookDesigner designer = new WorkbookDesigner();
+            designer.Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/营业额团组报表模板.xls");
+            designer.SetDataSource(dt);
+            designer.Workbook.Worksheets[0].Name = "营业额团组报表";
+
+            designer.Process();
+
+            string fileName = $"MarketingSales/{_dto.BeginDt}~{_dto.EndDt}营业额团组报表{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx";
+            designer.Workbook.Save(AppSettingsHelper.Get("ExcelBasePath") + fileName);
+            string rst = AppSettingsHelper.Get("ExcelBaseUrl") + AppSettingsHelper.Get("ExcelFtpPath") + fileName;
+            return Ok(JsonView(true, "操作成功", new { url = rst }));
+
+        }
+
         /// <summary>
         ///  市场部销售额
         ///  客户类型、客户等级 统计