Bläddra i källkod

年度/季度/月度 报表(同比) 逻辑更改

leiy 9 månader sedan
förälder
incheckning
e1be8b569a
1 ändrade filer med 42 tillägg och 20 borttagningar
  1. 42 20
      OASystem/OASystem.Api/Controllers/StatisticsController.cs

+ 42 - 20
OASystem/OASystem.Api/Controllers/StatisticsController.cs

@@ -22,6 +22,7 @@ using static OASystem.API.OAMethodLib.GeneralMethod;
 using TypeInfo = OASystem.Domain.ViewModels.Statistics.TypeInfo;
 using System.Net.NetworkInformation;
 using System.ComponentModel.Design;
+using NetTaste;
 
 namespace OASystem.API.Controllers
 {
@@ -2241,33 +2242,54 @@ namespace OASystem.API.Controllers
         private async Task<decimal> GroupSales(int companyId,int groupPickupUserId,string beginDt,string endDt)
         {
             decimal sales = 0.00M;
-
-            //相关人员userId
-            List<int> userId = new List<int>();
             string userSqlWhere = "";
             if (companyId > 0) userSqlWhere += string.Format($" And CompanyId={companyId}");
             if (groupPickupUserId > 0) userSqlWhere += string.Format($" And Id={groupPickupUserId}");
-            string userSql = string.Format($" Select * From Sys_Users Where Isdel = 0 {userSqlWhere}");
-            userId = await _sqlSugar.SqlQueryable<Sys_Users>(userSql).Select(it => it.Id).ToListAsync();
-
-            //团组信息
-            string groupSql = string.Format($"Select * From Grp_DelegationInfo Where Isdel = 0 And VisitDate Between '{beginDt}' And '{endDt}'");
-            if (userId.Count > 0) groupSql = $"{groupSql} And JietuanOperator In ({string.Join(",", userId)})";
-            var groupIds = await _sqlSugar.SqlQueryable<Grp_DelegationInfo>(groupSql).Select(it => it.Id).ToListAsync();
-
-
-            //销售额 = 收款账单.账单模块 + 收款账单.成本预算模块 +  收款账单.分摊费用 Fin_ForeignReceivables
-            List<int> feeTypes = new List<int>() {
-                0 ,//- 账单模块
-                1 ,// - 成本预算模块
-                2 ,// - 分摊费用
-            };
-            var foreignReceivables = await _sqlSugar.Queryable<Fin_ForeignReceivables>().Where(it => it.IsDel == 0 && feeTypes.Contains(it.AddingWay) && groupIds.Contains(it.Diid)).ToListAsync();
-            sales = foreignReceivables.Sum(it => it.ItemSumPrice * it.Rate);
+            string sql = string.Format($@"SELECT
+  SUM(Sales) AS Sales
+FROM
+  (
+    SELECT
+      YEAR(di.VisitDate) AS [Year],
+      (
+        SELECT
+          SUM(ItemSumPrice * Rate)
+        FROM
+          Fin_ForeignReceivables
+        WHERE
+          IsDel = 0
+          AND AddingWay IN (0, 1, 2)
+          AND di.Id = Diid
+      ) AS Sales
+    FROM
+      Grp_DelegationInfo di
+    WHERE
+      di.IsDel = 0
+      AND di.JietuanOperator IN (
+        SELECT
+          Id
+        FROM
+          Sys_Users
+        WITH
+          (NoLock)
+        WHERE
+          IsDel = 0 {userSqlWhere} 
+      )
+      AND di.VisitDate BETWEEN '{beginDt}' AND '{endDt}'
+  ) temp");
+
+            var salesData = await _sqlSugar.SqlQueryable<SalesView>(sql).FirstAsync();
+
+            sales = salesData?.Sales ?? 0.00M;
 
             return sales;
         }
 
+        private class SalesView
+        {
+            public decimal Sales { get; set; }
+        }
+
         /// <summary>
         ///  市场部销售额
         ///  团组列表