yuanrf 3 päivää sitten
vanhempi
commit
413da3103e
1 muutettua tiedostoa jossa 110 lisäystä ja 10 poistoa
  1. 110 10
      OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

+ 110 - 10
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -3140,7 +3140,7 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
             // 检索时间段团组信息
             var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
              .Where(x => x.IsDel == 0)
-             .Where(x => SqlFunc.Between(x.VisitDate, start, end.AddDays(1)))
+             .Where(x => SqlFunc.Between(x.VisitDate, start, end.AddMonths(1)))
             .Select(x => new
             {
                 x.TeamName,
@@ -3376,7 +3376,7 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
             // 检索时间段团组信息
             var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
              .Where(x => x.IsDel == 0)
-             .Where(x => SqlFunc.Between(x.VisitDate, start, end.AddDays(1)))
+             .Where(x => SqlFunc.Between(x.VisitDate, start, end.AddMonths(1)))
             .Select(x => new
             {
                 x.TeamName,
@@ -3527,7 +3527,7 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
             //检索负责的团组
             var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
             .Where(x => x.IsDel == 0)
-            .Where(x => SqlFunc.Between(x.VisitDate, start, end.AddDays(1)))
+            .Where(x => SqlFunc.Between(x.VisitDate, start, end.AddMonths(1)))
             .ToListAsync();
 
             string sqlAssignment = @$"
@@ -3537,9 +3537,6 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
             var assignmentList = await _sqlSugar.Ado.SqlQueryAsync<int>(sqlAssignment);
             group_data = group_data.Where(x => assignmentList.Contains(x.Id)).ToList();
 
-            string group_process_question = string.Empty;
-            string group_process_data = string.Empty;
-
             var back_group_list = await _sqlSugar.Queryable<Grp_InvertedList>()
             .Where(x => x.IsDel == 0)
             .Where(x => group_data.Select(y => y.Id).ToList().Contains(x.DiId))
@@ -3548,26 +3545,129 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
             var process_group_list = await _sqlSugar.Queryable<Grp_ProcessOverview>()
             .Where(x => x.IsDel == 0)
             .Where(x => group_data.Select(y => y.Id).ToList().Contains(x.GroupId))
+            .Where(x => x.ProcessType == GroupProcessType.AirTicket)
+            .ToListAsync();
+
+            var blackCode_group_list = await _sqlSugar.Queryable<Air_TicketBlackCode>()
+            .Where(x => x.IsDel == 0)
+            .Where(x => group_data.Select(y => y.Id).ToList().Contains(x.DiId))
             .ToListAsync();
 
+            string group_process_question = string.Empty;
+            string group_process_data = string.Empty;
             foreach (var item in group_data)
             {
+                //获取该团组最后的黑屏代码
+                var blackCode_data = blackCode_group_list
+                .Where(x => x.DiId == item.Id)
+                .OrderByDescending(x => x.CreateTime)
+                .FirstOrDefault();
+
                 //获取团组倒退表
-                var back_data = back_group_list.Where(x => x.DiId == item.Id).ToList();
+                var back_data = back_group_list
+                .Where(x => x.DiId == item.Id)
+                .ToList();
+
                 //获取团组进程
-                var process_data = process_group_list.Where(x => x.GroupId == item.Id).ToList();
+                var group_process = process_group_list
+                .Where(x => x.GroupId == item.Id)
+                .ToList();
+
+                var startTime = item.VisitDate.ToString("yyyy - MM - dd");
+                if (item.StepOperationTime.HasValue && item.StepOperationTime != DateTime.MinValue)
+                    startTime = item.StepOperationTime.Value.ToString("yyyy - MM - dd");
+                group_process_data += $"团组名称:{item.TeamName}," +
+                              $"出访日期:{startTime},团组创建时间:{item.CreateTime.ToString("yyyy - MM - dd HH:mm:ss")},团组机票进程信息如下:{JsonConvert.SerializeObject(group_process)}\r\n\r\n";
+
+                if (blackCode_data is null)
+                {
+                    group_process_data += "该团组无机票行程代码信息\r\n\r\n";
+                }
+                else
+                {
+                    group_process_data += $"该团组机票行程代码最后一个时间为:{blackCode_data.CreateTime.ToString("yyyy - MM - dd HH:mm:ss")}\r\n\r\n";
+                }
+
+                if (back_data.Count > 0)
+                {
+                    group_process_data += $"该团组倒推表开行前会时间为:{back_data.FirstOrDefault()?.PreTripMeetingDt}\r\n\r\n";
+                }
+                else
+                {
+                    group_process_data += "该团组无倒推表开行前会信息\r\n\r\n";
+                }
             }
 
-            //检索黑屏代码最后的时间
+            group_process_question += @$"团组数据:
+            {group_process_data}
+            
+            团组规则:
+1、根据机票方案出框架行程(机票录入行程代码后的最后一个时间匹配) 1个工作日
+2、联系并询价地接、餐厅、用车、景点等供应商(建团后确认出团的时候开始) 7个工作日
+3、提交供应商报价及比价表(上一步时间 + 2 +1) 1个工作日
+4、执行采购流程(上一步时间+2) 2个工作日
+5、制定最终《行程表》及《出行手册》 (行前3个工作日,和倒推表里的开行前会-3)
+6、送机
+            
+            根据提供的数据,总结分析出该员工{user_entity.CnName}的工作饱和度、工作详细完成度、工作效率、完成度、风险点、问题出现的地方及改进建议";
+
+            //模板
+            var settingTemp = await _sqlSugar.Queryable<Sys_SetData>().FirstAsync(x => x.Id == 1471 && x.IsDel == 0);
+            if (settingTemp != null && !string.IsNullOrEmpty(settingTemp.Remark))
+            {
+                var stringFormatResp = await GeneralMethod.StringFormatAsync(new StringFormatDto
+                {
+                    FormatTemplate = settingTemp.Remark,
+                    Parameters = new List<string> {
+                        group_process_data,
+                        user_entity.CnName
+                        }
+                });
+                if (stringFormatResp.Success)
+                {
+                    group_process_question = stringFormatResp.FormattedResult;
+                    _logger.LogInformation($"模板格式化成功,模板ID:{settingTemp.Id}, 时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
+                }
+                else
+                {
+                    _logger.LogError($"模板格式化失败,模板ID:{settingTemp.Id}, 时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}, 错误:{stringFormatResp.Message}");
+                }
+            }
+            else
+            {
+                jw.Msg = "获取模板失败!";
+                return Ok(jw);
+            }
+
+            var group_process_resp = await _deepSeekService.ChatAsync(group_process_question);
+            if (!group_process_resp.Success)
+            {
+                jw.Msg = "Ai分析用户机票进程失败!" + group_process_resp.Message;
+                return Ok(jw);
+            }
 
-            //业务分析
             jw.Code = 200;
             jw.Msg = "操作成功!";
             jw.Data = new AiResponse()
             {
                 KaoqinAnswer = kaoqinAnswer,
+                Answer = group_process_resp.Answer,
+            };
+
+            //保存至数据库中
+            Pm_PerformanceAnalysis insertData = new Pm_PerformanceAnalysis
+            {
+                CreateTime = DateTime.Now,
+                CreateUserId = createUserId,
+                IsDel = 0,
+                Year = start.Year,
+                Month = start.Month,
+                JsonResult = JsonConvert.SerializeObject(jw.Data),
+                UserId = userId,
             };
 
+            await _sqlSugar.Insertable(insertData).ExecuteCommandAsync();
+
             return Ok(jw);
 
         }