Browse Source

销售额界面相关接口更改

leiy 8 months ago
parent
commit
9517adabac

+ 93 - 34
OASystem/OASystem.Api/Controllers/StatisticsController.cs

@@ -2079,12 +2079,14 @@ namespace OASystem.API.Controllers
                                    .ToList();
             List<int> depIds = depData.Select(it => it.Id).ToList();
 
-            var jobData = _sqlSugar.Queryable<Sys_JobPost>().Where(it => it.IsDel == 0 && companyIds.Contains(it.CompanyId) && (it.JobName.Contains("经理") || it.JobName.Contains("主管")))
-                                   .Select(it => new { it.Id, it.CompanyId, it.DepId, it.JobName })
-                                   .ToList();
-            List<int> jobIds = jobData.Select(it => it.Id).ToList();
+            //
+            //var jobData = _sqlSugar.Queryable<Sys_JobPost>().Where(it => it.IsDel == 0 && companyIds.Contains(it.CompanyId) && (it.JobName.Contains("经理") || it.JobName.Contains("主管")))
+            //                       .Select(it => new { it.Id, it.CompanyId, it.DepId, it.JobName })
+            //                       .ToList();
+            //List<int> jobIds = jobData.Select(it => it.Id).ToList();
+            //(depIds.Contains(it.DepId) || jobIds.Contains(it.JobPostId)
             //userId = 21 
-            var userData = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && (depIds.Contains(it.DepId) || jobIds.Contains(it.JobPostId)))
+            var userData = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && (depIds.Contains(it.DepId) || it.Id==21))
                                    .Select(it => new { id = it.Id, companyId = it.CompanyId, name = it.CnName })
                                    .ToList();
 
@@ -2183,6 +2185,7 @@ namespace OASystem.API.Controllers
         /// <summary>
         ///  市场部销售额
         ///  年度/季度/月度 报表(同比)
+        ///  (增加团组查询条件 IsSure=1)
         /// </summary>
         /// <param name="_dto">市场部销售额请求dto</param>
         /// <returns></returns>
@@ -2227,18 +2230,20 @@ namespace OASystem.API.Controllers
         private async Task<SalesYOYView> GroupSales(int companyId, int groupPickupUserId, string beginDt, string endDt)
         {
             decimal thisSales = 0.00M, lastSales = 0.00M, yoy = 0.00M;
+            var _view = new SalesYOYView();
+            //团组查询条件增加 isSure=1
             string userSqlWhere = "";
             if (companyId > 0) userSqlWhere += string.Format($" And CompanyId={companyId}");
             if (groupPickupUserId > 0) userSqlWhere += string.Format($" And Id={groupPickupUserId}");
             string sql = string.Format($@"SELECT
-  SUM(Sales) AS Sales
+    CAST(SUM(Sales) AS decimal(12,2)) AS Sales
 FROM
   (
     SELECT
       YEAR(di.VisitDate) AS [Year],
       (
         SELECT
-          SUM(ItemSumPrice * Rate)
+          CAST(SUM(ItemSumPrice * Rate) AS decimal(12,2))
         FROM
           Fin_ForeignReceivables
         WHERE
@@ -2250,6 +2255,7 @@ FROM
       Grp_DelegationInfo di
     WHERE
       di.IsDel = 0
+	  AND di.IsSure = 1
       AND di.JietuanOperator IN (
         SELECT
           Id
@@ -2263,21 +2269,22 @@ FROM
       AND di.VisitDate BETWEEN '{beginDt}' AND '{endDt}'
   ) temp");
 
-            var salesData = await _sqlSugar.SqlQueryable<SalesView>(sql).FirstAsync();
+            var newDB = _sqlSugar.CopyNew();
+            var salesData = newDB.SqlQueryable<SalesView>(sql).First();
 
             thisSales = salesData?.Sales ?? 0.00M;
 
             string lastBeginDt = Convert.ToDateTime(beginDt).AddYears(-1).ToString("yyyy-MM-dd HH:mm:ss"),
                    lastEndDt = Convert.ToDateTime(endDt).AddYears(-1).ToString("yyyy-MM-dd HH:mm:ss");
             string lastSql = string.Format($@"SELECT
-  SUM(Sales) AS Sales
+    CAST(SUM(Sales) AS decimal(12,2)) AS Sales
 FROM
   (
     SELECT
       YEAR(di.VisitDate) AS [Year],
       (
         SELECT
-          SUM(ItemSumPrice * Rate)
+          CAST(SUM(ItemSumPrice * Rate) AS decimal(12,2))
         FROM
           Fin_ForeignReceivables
         WHERE
@@ -2289,6 +2296,7 @@ FROM
       Grp_DelegationInfo di
     WHERE
       di.IsDel = 0
+	  AND di.IsSure = 1
       AND di.JietuanOperator IN (
         SELECT
           Id
@@ -2302,12 +2310,18 @@ FROM
       AND di.VisitDate BETWEEN '{lastBeginDt}' AND '{lastEndDt}'
   ) temp");
 
-            var salesData1 = await _sqlSugar.SqlQueryable<SalesView>(lastSql).FirstAsync();
+            var salesData1 = newDB.SqlQueryable<SalesView>(lastSql).First();
             lastSales = salesData1?.Sales ?? 0.00M;
 
+            if (lastSales < 1 || thisSales < 1)
+            {
+                thisSales = 1.00M;
+                lastSales = 1.00M;
+            }
+
             if (lastSales != 0 && thisSales != 0) yoy = (thisSales - lastSales) / lastSales;
 
-            var _view = new SalesYOYView
+            _view = new SalesYOYView
             {
                 thisYearSales = thisSales.ToString("#0.00"),
                 lastYearSales = lastSales.ToString("#0.00"),
@@ -2333,6 +2347,7 @@ FROM
         /// <summary>
         ///  市场部销售额
         ///  团组列表
+        ///  (增加团组查询条件 IsSure=1)
         /// </summary>
         /// <param name="_dto">市场部销售额请求dto</param>
         /// <returns></returns>
@@ -2363,41 +2378,85 @@ FROM
 
             string userSql = "";
             List<int> userIds = new List<int>();
+            //全部人员Id
+            //查询所有公司的市场部
+
+            var userDatas = await _sqlSugar.Queryable<Sys_Users>()
+                                     .InnerJoin<Sys_Company>((u, c) => u.CompanyId == c.Id)
+                                     .InnerJoin<Sys_Department>((u, c, d) => u.DepId == d.Id)
+                                     .Where((u, c, d) => u.IsDel == 0 && (u.Id == 21 || d.DepName.Contains("市场部")))
+                                     .Select((u, c, d) => new { u.Id ,u.CompanyId,u.CnName})
+                                     .ToListAsync();
+
+
             if (_dto.CompanyId > 0)
             {
-                userIds = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && it.CompanyId == _dto.CompanyId).Select(it => it.Id).ToList();
+                userIds = userDatas.Where(it => it.CompanyId == _dto.CompanyId).Select(it => it.Id).ToList();
+
+                //userIds = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && it.CompanyId == _dto.CompanyId).Select(it => it.Id).ToList();
+            }
+
+            if (_dto.GroupPickupUserId > 0)
+            {
+                userIds = userDatas.Where(it => it.Id == _dto.GroupPickupUserId).Select(it => it.Id).ToList();
             }
 
-            if (_dto.GroupPickupUserId > 0) userIds.Add(_dto.GroupPickupUserId);
+            userIds = userDatas.Select(it => it.Id).ToList();
 
             if (userIds.Count > 0)
             {
                 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,
-	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 {userSql}
-	And VisitDate Between '{beginDt}' And  '{endDt}'
-) Temp ");
+            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 di.IsSure = 1 {userSql} 
+      AND VisitDate Between '{beginDt}' And  '{endDt}'
+  ) Temp ");
 
             RefAsync<int> total = 0;
             var groupData = await _sqlSugar.SqlQueryable<MarketingSalesGroupList>(sql).ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);

+ 17 - 19
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/TaskAssignment.cs

@@ -20,26 +20,25 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
         public static async void PostTaskUpdateStatus()
         {
             //_taskAllocationRep.ChangeDataBase(DBEnum.OA2023DB);
-            var data = _taskAllocationRep._sqlSugar
-                                         .Queryable<Pm_TaskAllocation>()
-                                         .Where(it => it.IsDel == 0 &&
-                                                      !string.IsNullOrEmpty(it.PredictEndTime) &&
-                                                      Convert.ToDateTime(it.PredictEndTime) >= DateTime.Now
-                                               )
-                                         .ToList();
+            var newDB = _taskAllocationRep._sqlSugar.CopyNew();
+            var data = newDB.Queryable<Pm_TaskAllocation>()
+                            .Where(it => it.IsDel == 0 &&
+                                        !string.IsNullOrEmpty(it.PredictEndTime) &&
+                                        Convert.ToDateTime(it.PredictEndTime) >= DateTime.Now
+                                )
+                            .ToList();
             if (data.Count > 0)
             {
                 //处理要变更状态的员工
                 List<int> primaryIds = new List<int>();
                 primaryIds = data.Select(it => it.Id).ToList();
-                var subData = _taskAllocationRep._sqlSugar
-                                                .Queryable<Pm_TaskRelevanceUser>()
-                                                .Where(it => 
-                                                             it.IsDel == 0 &&
-                                                             primaryIds.Contains(it.TAId) &&
-                                                             it.TaskStatus <= TaskerEnum.UnderWay
-                                                      )
-                                                .ToList();
+                var subData = newDB.Queryable<Pm_TaskRelevanceUser>()
+                                    .Where(it => 
+                                                    it.IsDel == 0 &&
+                                                    primaryIds.Contains(it.TAId) &&
+                                                    it.TaskStatus <= TaskerEnum.UnderWay
+                                            )
+                                    .ToList();
                
                 if (subData.Count > 0)
                 {
@@ -50,10 +49,9 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                         item.Cause = string.Format(@"任务没有提交完成或者超时,由系统设置任务未完成");
                     }
 
-                    var updateStatus = _taskAllocationRep._sqlSugar
-                                                         .Updateable(subData)
-                                                         .WhereColumns(it => it.Id)
-                                                         .ExecuteCommand();
+                    var updateStatus = newDB.Updateable(subData)
+                                            .WhereColumns(it => it.Id)
+                                            .ExecuteCommand();
                     //_taskAllocationRep._sqlSugar.Close();
                 }
             }

+ 11 - 11
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/TaskNotification.cs

@@ -25,8 +25,8 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
 
             //在此处编写任务业务代码
             #region 消息处理
-
-            var data =  _taskAllocationRep._sqlSugar
+            var newDB = _taskAllocationRep._sqlSugar.CopyNew();
+            var data = newDB
                                          .Queryable<Pm_TaskAllocation>()
                                          .Where(it => it.IsDel == 0 &&
                                                       !string.IsNullOrEmpty(it.PredictEndTime) &&
@@ -38,7 +38,7 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                 //处理要任务提醒的员工
                 List<int> primaryIds = new List<int>();
                 primaryIds = data.Select(it => it.Id).ToList();
-                var subData = _taskAllocationRep._sqlSugar
+                var subData = newDB
                                                 .Queryable<Pm_TaskRelevanceUser>()
                                                 .Where(it => it.IsDel == 0 &&
                                                              primaryIds.Contains(it.TAId) &&
@@ -46,14 +46,14 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                                                       )
                                                 .ToList();
 
-                var depDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Department>().Where(it => it.IsDel == 0).ToList();
-                var groupDatas = _taskAllocationRep._sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).ToList();
-                var userDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0).ToList();
+                var depDatas = newDB.Queryable<Sys_Department>().Where(it => it.IsDel == 0).ToList();
+                var groupDatas = newDB.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).ToList();
+                var userDatas = newDB.Queryable<Sys_Users>().Where(it => it.IsDel == 0).ToList();
 
 
                 List<int> userIds = new List<int>();
 
-                _taskAllocationRep._sqlSugar.BeginTran();
+                newDB.BeginTran();
                 foreach (var item in data)
                 {
                     string depName = string.Empty;
@@ -99,10 +99,10 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                             DeleteTime = "1990-01-01 00:00:00.000",
                             DiId = item.DiId,
                         };
-                        var msgAddId = _taskAllocationRep._sqlSugar.Insertable(_Message).ExecuteReturnIdentity();
+                        var msgAddId = newDB.Insertable(_Message).ExecuteReturnIdentity();
                         if (msgAddId < 0)
                         {
-                            _taskAllocationRep._sqlSugar.RollbackTran();
+                            newDB.RollbackTran();
                             _logger.LogError("任务通知消息推送失败!");
                             return;
                         }
@@ -118,7 +118,7 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                             DeleteTime = "1990-01-01 00:00:00.000"
                         };
 
-                        var msgAuthAddId = _taskAllocationRep._sqlSugar.Insertable(_MessageReadAuth).ExecuteReturnIdentity();
+                        var msgAuthAddId = newDB.Insertable(_MessageReadAuth).ExecuteReturnIdentity();
                         if (msgAuthAddId < 0)
                         {
                             _taskAllocationRep._sqlSugar.RollbackTran();
@@ -128,7 +128,7 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                         userIds.Add(subItem.UserId);
                     }
                 }
-                _taskAllocationRep._sqlSugar.CommitTran();
+                newDB.CommitTran();
                 //推送消息
                await _hubContext.Clients.Clients(UserStore.OnlineUser.Where(it => userIds.Contains(it.UserId)).Select(it => it.ConnectionId).ToList()).ReceiveMessage("您有新的任务相关消息");
 

+ 2 - 0
OASystem/OASystem.Domain/Dtos/Statistics/MarketingSalesDto.cs

@@ -101,6 +101,8 @@ namespace OASystem.Domain.Dtos.Statistics
 
         public int PageIndex { get; set; } = 1;
         public int PageSize { get; set; } = 10;
+
+        public string SearchCriteria { get; set; }
     }
 
     /// <summary>

+ 1 - 0
OASystem/OASystem.Domain/ViewModels/Statistics/MarketingSalesView.cs

@@ -19,6 +19,7 @@ namespace OASystem.Domain.ViewModels.Statistics
         public int VisitPNumber { get; set; } 
         public DateTime VisitDate { get; set; }
         public DateTime VisitEndDate { get; set; }
+        public decimal GroupSales { get; set; }
         public DateTime CollectionDays { get; set; }
         public string GroupPickupUser { get; set; }
     }