|
@@ -3140,7 +3140,7 @@ OPTION (MAXRECURSION 0); -- 允许无限递归 ";
|
|
|
// 检索时间段团组信息
|
|
// 检索时间段团组信息
|
|
|
var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
|
.Where(x => x.IsDel == 0)
|
|
.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
|
|
.Select(x => new
|
|
|
{
|
|
{
|
|
|
x.TeamName,
|
|
x.TeamName,
|
|
@@ -3376,7 +3376,7 @@ OPTION (MAXRECURSION 0); -- 允许无限递归 ";
|
|
|
// 检索时间段团组信息
|
|
// 检索时间段团组信息
|
|
|
var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
|
.Where(x => x.IsDel == 0)
|
|
.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
|
|
.Select(x => new
|
|
|
{
|
|
{
|
|
|
x.TeamName,
|
|
x.TeamName,
|
|
@@ -3527,7 +3527,7 @@ OPTION (MAXRECURSION 0); -- 允许无限递归 ";
|
|
|
//检索负责的团组
|
|
//检索负责的团组
|
|
|
var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
var group_data = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
|
.Where(x => x.IsDel == 0)
|
|
.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();
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
string sqlAssignment = @$"
|
|
string sqlAssignment = @$"
|
|
@@ -3537,9 +3537,6 @@ OPTION (MAXRECURSION 0); -- 允许无限递归 ";
|
|
|
var assignmentList = await _sqlSugar.Ado.SqlQueryAsync<int>(sqlAssignment);
|
|
var assignmentList = await _sqlSugar.Ado.SqlQueryAsync<int>(sqlAssignment);
|
|
|
group_data = group_data.Where(x => assignmentList.Contains(x.Id)).ToList();
|
|
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>()
|
|
var back_group_list = await _sqlSugar.Queryable<Grp_InvertedList>()
|
|
|
.Where(x => x.IsDel == 0)
|
|
.Where(x => x.IsDel == 0)
|
|
|
.Where(x => group_data.Select(y => y.Id).ToList().Contains(x.DiId))
|
|
.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>()
|
|
var process_group_list = await _sqlSugar.Queryable<Grp_ProcessOverview>()
|
|
|
.Where(x => x.IsDel == 0)
|
|
.Where(x => x.IsDel == 0)
|
|
|
.Where(x => group_data.Select(y => y.Id).ToList().Contains(x.GroupId))
|
|
.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();
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
|
|
+ string group_process_question = string.Empty;
|
|
|
|
|
+ string group_process_data = string.Empty;
|
|
|
foreach (var item in group_data)
|
|
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.Code = 200;
|
|
|
jw.Msg = "操作成功!";
|
|
jw.Msg = "操作成功!";
|
|
|
jw.Data = new AiResponse()
|
|
jw.Data = new AiResponse()
|
|
|
{
|
|
{
|
|
|
KaoqinAnswer = kaoqinAnswer,
|
|
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);
|
|
return Ok(jw);
|
|
|
|
|
|
|
|
}
|
|
}
|