yuanrf дней назад: 5
Родитель
Сommit
0c428b9d8a
1 измененных файлов с 145 добавлено и 2 удалено
  1. 145 2
      OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

+ 145 - 2
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -3418,6 +3418,55 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
                 }
             }
 
+
+            //获取请假数据
+            var filters_qj = new List<IQiYeWeChatApiService.FilterCondition>(){
+                 new
+                  IQiYeWeChatApiService.FilterCondition{
+                     key = "creator",
+                     value = user_entity.QiyeChatUserId
+                  },
+                  new IQiYeWeChatApiService.FilterCondition{
+                    key="record_type",
+                    value="1"
+                  },
+                  new IQiYeWeChatApiService.FilterCondition{
+                    key="sp_status",
+                    value="2"
+                  }};
+
+            //获取企微请假申请信息
+            var approval_data_qj = await _qiYeWeChatApiService.GetApprovalInfoUpdateAsync(start, end, newCursor: "", size: 100, filters: filters_qj);
+            if (approval_data_qj.errcode != 0)
+            {
+                jw.Msg = "获取企微请假申请信息失败!" + approval_data_qj.errmsg;
+                return null;
+            }
+
+            //获取上月企微请假申请信息
+            var approval_data_qj_upMonth = await _qiYeWeChatApiService.GetApprovalInfoUpdateAsync(start.AddMonths(-1), start, newCursor: "", size: 100, filters: filters_qj);
+            if (approval_data_qj_upMonth.errcode != 0)
+            {
+                jw.Msg = "获取企微上月请假申请信息失败!" + approval_data_qj_upMonth.errmsg;
+                return null;
+            }
+
+            var ApprovalDetailList_qj = new List<ApprovalDetailView>();
+            //合并请假数据
+            approval_data_qj.sp_no_list.AddRange(approval_data_qj_upMonth.sp_no_list);
+            approval_data_qj.sp_no_list = approval_data_qj.sp_no_list.Distinct().ToList();
+
+            foreach (var item in approval_data_qj.sp_no_list)
+            {
+                var approval_detail = await _qiYeWeChatApiService.GetApprovalDetailAsync(item);
+                if (approval_detail.errcode != 0)
+                {
+                    jw.Msg = "获取企微请假申请详情失败!" + approval_detail.errmsg;
+                    return null;
+                }
+                ApprovalDetailList_qj.Add(approval_detail);
+            }
+
             string question = string.Empty;
             var settingTemp = await _sqlSugar.Queryable<Sys_SetData>().FirstAsync(x => x.Id == 1462 && x.IsDel == 0);
             if (settingTemp != null && !string.IsNullOrEmpty(settingTemp.Remark))
@@ -3430,7 +3479,8 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
                         user_entity.CnName,
                         start.ToString("yyyy-MM-dd"),
                         end.ToString("yyyy-MM-dd"),
-                        JsonConvert.SerializeObject(ApprovalDetailList)
+                        JsonConvert.SerializeObject(ApprovalDetailList),
+                        JsonConvert.SerializeObject(ApprovalDetailList_qj)
                     }
                 });
 
@@ -3881,7 +3931,100 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
         [HttpGet]
         public async Task<IActionResult> AiPerformanceAnalysis_Financial_Fu_DepartmentAsync(int userId, DateTime start, DateTime end, int createUserId)
         {
-            return await AiPerformanceAnalysisAsync(userId, start, end, createUserId, GroupProcessType.FeeSettle);
+            var jw = JsonView(false);
+            var month = start.ToString("yyyy-MM");
+            var user_entity = await _sqlSugar.Queryable<Sys_Users>().FirstAsync(x => x.Id == userId && x.IsDel == 0);
+            if (user_entity == null)
+            {
+                jw.Msg = "用户不存在!";
+                return Ok(jw);
+            }
+
+            var data = await _companyDailyKyiRep.InfoAsync(month, userId);
+            if (data.Code == 200)
+            {
+                var value = data.Data as List<CompanyDailyKpiView>;
+
+                if (value == null || value.Count == 0)
+                {
+                    jw.Msg = "用户没有日常考情数据!";
+                    return Ok(jw);
+                }
+
+                var valueFormat = value.Select(x => new
+                {
+                    年月 = x.Month,
+                    序号 = x.EvalContentOrder,
+                    内容 = x.EvalContent,
+                    考核人 = x.EvaluatorName,
+                    是否出现失误 = x.IsMistake,
+                    失误原因 = x.MistakeReason
+                }
+                ).ToList();
+
+                string question = string.Empty;
+                var settingTemp = await _sqlSugar.Queryable<Sys_SetData>().FirstAsync(x => x.Id == 1488 && x.IsDel == 0);
+                if (settingTemp != null && !string.IsNullOrEmpty(settingTemp.Remark))
+                {
+                    var temp = await GeneralMethod.StringFormatAsync(new StringFormatDto
+                    {
+                        FormatTemplate = settingTemp.Remark,
+                        Parameters = new List<string> {
+                            JsonConvert.SerializeObject(valueFormat),
+                            user_entity.CnName,
+                            month
+                        }
+                    });
+                    if (temp.Success)
+                    {
+                        question = temp.FormattedResult;
+                    }
+                }
+
+                var resp = await _deepSeekService.ChatAsync(question);
+                if (!resp.Success)
+                {
+                    jw.Msg = "Ai分析用户财务绩效失败!" + resp.Message;
+                    return Ok(jw);
+                }
+
+                var kaoqinResp = await GetKaoqinAnalysisAsync(user_entity, start, end, jw, "Ai分析用户财务绩效");
+                if (string.IsNullOrEmpty(kaoqinResp))
+                {
+                    return Ok(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 Ok(jw);
+            }
+            else
+            {
+                jw.Msg = "获取用户财务绩效数据失败!";
+                return Ok(jw);
+            }
         }
 
         /// <summary>