Forráskód Böngészése

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

Lyyyi 1 hete%!(EXTRA string=óta)
szülő
commit
e74dff0314

+ 191 - 0
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1,4 +1,5 @@
 using Aspose.Cells;
+using Dm.util;
 using FluentValidation;
 using Markdig;
 using Microsoft.AspNetCore.SignalR;
@@ -3753,6 +3754,196 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
 
         }
 
+        /// <summary>
+        /// 商邀员工分析
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="start"></param>
+        /// <param name="end"></param>
+        /// <param name="createUserId"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<IActionResult> AiPerformanceAnalysis_BusinessInvitationAsync(int userId, DateTime start, DateTime end, int createUserId)
+        {
+            var jw = JsonView(false);
+
+            return Ok(jw);
+        }
+
+        /// <summary>
+        /// 信息部员工分析
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="start"></param>
+        /// <param name="end"></param>
+        /// <param name="createUserId"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<IActionResult> AiPerformanceAnalysis_InformationDepartmentAsync(int userId, DateTime start, DateTime end, int createUserId)
+        {
+            return Ok(await AiPerformanceAnalysis_TaskAllocationAsync(userId, start, end, createUserId, 1473));
+        }
+
+        /// <summary>
+        /// 财务部员工分析
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="start"></param>
+        /// <param name="end"></param>
+        /// <param name="createUserId"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<IActionResult> AiPerformanceAnalysis_FinancialDepartmentAsync(int userId, DateTime start, DateTime end, int createUserId)
+        {
+            return Ok(await AiPerformanceAnalysis_TaskAllocationAsync(userId, start, end, createUserId, 1474));
+        }
+
+        /// <summary>
+        /// 任务分配分析
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="start"></param>
+        /// <param name="end"></param>
+        /// <param name="createUserId"></param>
+        /// <returns></returns>
+        private async Task<JsonView> AiPerformanceAnalysis_TaskAllocationAsync(int userId, DateTime start, DateTime end, int createUserId, int setdataId)
+        {
+            var jw = JsonView(false);
+
+            var user_entity = _sqlSugar.Queryable<Sys_Users>().First(e => e.Id == userId && e.IsDel == 0);
+            if (user_entity == null)
+            {
+                jw.Msg = "用户不存在!";
+                return jw;
+            }
+
+            string sql = string.Format(@"Select 
+                      *
+					From
+					(
+					    Select
+					      ta.Id,
+					      ta.TaskName,
+					      ta.TaskContent,
+					      s.Name as 'TaskTypeName',
+					      ta.TaskPriority,
+					      d.DepName,
+					      di.TeamName,
+					      ta.Status,
+					      ta.PredictBeginTime,
+					      ta.PredictEndTime,
+					      ta.CreateUserId,
+					      u.CnName As CreateUserName,
+					      ta.CreateTime,
+					      ta.Remark,
+					      ta.OverTime,
+					      (
+					        SELECT
+					          STUFF(
+					            (
+					              Select
+					                ',' + u.CnName
+					              From
+					                Pm_TaskRelevanceUser tra
+					                Left Join Sys_Users u On tra.UserId = u.Id
+					              Where
+					                tra.Isdel = 0
+					                And tra.TAId = ta.Id FOR XML PATH('')
+					            ),
+					            1,
+					            1,
+					            ''
+					          )
+					      ) As Participant					      
+					    From
+					      Pm_TaskAllocation ta
+					      Left Join Sys_Department d On ta.DepId = d.Id
+					      Left Join Grp_DelegationInfo di On ta.DiId = di.Id
+					      Left Join Sys_Users u On ta.CreateUserId = u.Id
+					      left join Sys_SetData s on ta.TaskType = s.Id 
+					    Where
+					      ta.IsDel = 0 
+                           and ta.PredictEndTime  >= '{2}'
+                           and ta.PredictEndTime  <= '{3}'
+					  ) As temp
+					WHERE
+					  [CreateUserName] like '%{0}%'
+					  OR [Participant] like '%{1}%'", user_entity.CnName, user_entity.CnName, start.ToString("yyyy-MM-dd HH:mm:ss"), end.ToString("yyyy-MM-dd HH:mm:ss"));
+
+            var _view = await _sqlSugar
+                    .SqlQueryable<TaskListView>(sql)
+                    .ToListAsync();
+
+            if (_view == null || _view.Count == 0)
+            {
+                jw.Msg = "暂无任务数据不存在!";
+                return jw;
+            }
+
+            var setdata_entity = _sqlSugar.Queryable<Sys_SetData>()
+            .First(e => e.Id == setdataId && e.IsDel == 0);
+
+            string question = string.Empty;
+            var stringFormatResp = await GeneralMethod.StringFormatAsync(new StringFormatDto
+            {
+                FormatTemplate = setdata_entity.Remark,
+                Parameters = new List<string> {
+                    JsonConvert.SerializeObject(_view),
+                    user_entity.CnName,
+                    start.ToString("yyyy-MM-dd"),
+                    end.ToString("yyyy-MM-dd")
+                }
+            });
+
+            if (!stringFormatResp.Success)
+            {
+                jw.Msg = "数据模板格式化失败!" + stringFormatResp.Message;
+                return jw;
+            }
+
+            question = stringFormatResp.FormattedResult;
+
+            var resp = await _deepSeekService.ChatAsync(question);
+            if (!resp.Success)
+            {
+                jw.Msg = "Ai分析任务分配失败!" + resp.Message;
+                return jw;
+            }
+
+            var kaoqinResp = await GetKaoqinAnalysisAsync(user_entity, start, end, jw, "Ai分析任务分配");
+            if (string.IsNullOrEmpty(kaoqinResp))
+            {
+                return jw;
+            }
+
+            jw.Code = 200;
+            jw.Msg = "操作成功!";
+            jw.Data = new AiResponse()
+            {
+                Answer = resp.Answer,
+                KaoqinAnswer = kaoqinResp
+            };
+
+            //存入数据库
+            Pm_PerformanceAnalysis insertData = new Pm_PerformanceAnalysis
+            {
+                CreateTime = DateTime.Now,
+                CreateUserId = createUserId,
+                IsDel = 0,
+                Year = start.Year,
+                Month = start.Month,
+                JsonResult = JsonConvert.SerializeObject(jw.Data),
+                StartDate = start,
+                EndDate = end,
+                UserId = userId
+            };
+
+            await _sqlSugar.Insertable(insertData).ExecuteCommandAsync();
+
+            return jw;
+        }
+
+
 
         class wordTable
         {

+ 3 - 3
OASystem/OASystem.Domain/ViewModels/PersonnelModule/TaskAllocationView.cs

@@ -11,7 +11,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
     /// <summary>
     /// 任务分配View
     /// </summary>
-    public class TaskAllocationView: Pm_TaskAllocation
+    public class TaskAllocationView : Pm_TaskAllocation
     {
     }
 
@@ -172,7 +172,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         public string? PredictBeginTime { get; set; }
 
         /// <summary>
-        /// 预计开始时间
+        /// 预计结束时间
         /// </summary>
         public string? PredictEndTime { get; set; }
         /// <summary>
@@ -320,7 +320,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
     /// <summary>
     /// 任务参与人
     /// </summary>
-    public class TaskUserDetailsView 
+    public class TaskUserDetailsView
     {
         public int Id { get; set; }