Przeglądaj źródła

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

Lyyyi 3 tygodni temu
rodzic
commit
6e3a42ce8b

+ 3 - 0
OASystem/OASystem.Api/Controllers/AITestController.cs

@@ -392,6 +392,9 @@ namespace OASystem.API.Controllers
                     await Response.WriteAsync(NdjsonLine(chunk) + "\n", cancellationToken);
                     await Response.Body.FlushAsync(cancellationToken);
                 }
+
+                await Response.WriteAsync(JsonConvert.SerializeObject(new { phase = "success", text = "结束" }) + "\n", cancellationToken);
+                await Response.Body.FlushAsync(cancellationToken);
             }
             catch (OperationCanceledException)
             {

+ 6 - 1
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -13988,7 +13988,7 @@ FROM
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<IActionResult> BusinessInvitationInstructionsFileContentStream(BusinessInvitationInstructionsFileDto dto)
+        public async Task<IActionResult> BusinessInvitationInstructionsFileContentStream([FromBody] BusinessInvitationInstructionsFileDto dto, CancellationToken cancellationToken = default)
         {
             if (dto.Diid < 1)
             {
@@ -14094,15 +14094,20 @@ FROM
 
             try
             {
+                cancellationToken.ThrowIfCancellationRequested();
                 await foreach (var chunk in _deepSeekService.ChatStreamAsync(chat, "deepseek-reasoner", 0.7f, 60000))
                 {
                     await Response.WriteAsync(NdjsonLine(chunk) + "\n");
                     await Response.Body.FlushAsync();
                 }
+
+                await Response.WriteAsync(JsonConvert.SerializeObject(new { phase = "success", text = "结束" }) + "\n");
+                await Response.Body.FlushAsync(cancellationToken);
             }
             catch (Exception ex)
             {
                 await Response.WriteAsync(JsonConvert.SerializeObject(new { phase = "error", text = ex.Message }) + "\n");
+                await Response.Body.FlushAsync(cancellationToken);
             }
 
             return new EmptyResult();

+ 44 - 4
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -3471,9 +3471,47 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
                 }
 
                 var client = journal_detail.info.GetFieldValue("客户单位信息", "单位全称");
-                journal_data_Clients.Add(client);
+                if (!string.IsNullOrEmpty(client))
+                {
+                    journal_data_Clients.Add(client);
+                }
             }
 
+            //清洗JSON数据
+            //1.外出打卡
+            var checkin_data_clean = checkin_data.checkindata.Select(x => new
+            {
+                地点名称 = x.location_title, //地点名称
+                地点详情 = x.location_detail, //地点详情
+                用户ID = x.userid,
+                打卡时间 = x.checkin_time_dt.ToString("yyyy-MM-dd HH:mm:ss"), //打卡日期
+                备注信息 = x.notes, //备注
+            }).ToList();
+
+            //2. 外出及出差申请数据信息
+            var detailViews_clean = detailViews.Select(x =>
+            {
+                var x1 = x.info;
+                var contents = x.info.apply_data.contents;
+
+                var reasonText = contents
+                .FirstOrDefault(c => c.title.Any(t => t.text == "外出事由" || t.text == "出差事由"))
+                ?.value?.text;
+
+                var locationText = contents
+                    .FirstOrDefault(c => c.title.Any(t => t.text == "外出地点" || t.text == "出差地点"))
+                    ?.value?.text;
+
+                return new
+                {
+                    申请人ID = x1.applyer?.userid,                 // 申请人ID
+                    申请日期 = x1.apply_time_dt.ToString("yyyy-MM-dd"), // 申请日期,建议取开始日期
+                    审批状态 = x1.sp_status,
+                    外出事由 = reasonText,
+                    外出地点 = locationText,
+                };
+            }).ToList();
+
             var settingTemp = await _sqlSugar.Queryable<Sys_SetData>().FirstAsync(x => x.Id == 1461 && x.IsDel == 0);
             if (settingTemp != null && !string.IsNullOrEmpty(settingTemp.Remark))
             {
@@ -3481,8 +3519,8 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
                 {
                     FormatTemplate = settingTemp.Remark,
                     Parameters = new List<string> {
-                         JsonConvert.SerializeObject(checkin_data.checkindata),
-                         JsonConvert.SerializeObject(detailViews),
+                         JsonConvert.SerializeObject(checkin_data_clean),
+                         JsonConvert.SerializeObject(detailViews_clean),
                          user_entity.CnName,
                          start.ToString("yyyy-MM-dd"),
                          end.ToString("yyyy-MM-dd"),
@@ -3503,7 +3541,9 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
 
             try
             {
-                var resp = await _deepSeekService.ChatAsync(question, false, "deepseek-reasoner", 0.7f, 60000);
+                //Console.WriteLine(question);
+
+                var resp = await _deepSeekService.ChatAsync(question, false, "deepseek-reasoner", 0.3f, 60000);
                 if (!resp.Success)
                 {
                     jw.Msg = "Ai分析用户绩效失败!" + resp.Message;