using Admin.NET.Core;
using Elastic.Transport;
using Furion.DatabaseAccessor;
using Furion.DataValidation;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using iText.Signatures.Validation.Report;
using Mapster;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MongoDB.Driver.Linq;
using Newtonsoft.Json;
using OfficeOpenXml.ConditionalFormatting;
using RazorEngine.Compilation.ImpromptuInterface.Optimization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace Admin.NET.Application
{
///
/// 量表类型表服务
///
[ApiDescriptionSettings("测评服务", Name = "BusScale", Order = 100)]
public class BusScaleService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _busScaleRep;
private readonly SqlSugarRepository _busScaleQuestionsRep;
private readonly SqlSugarRepository _busmenMapScaleRep;
private readonly SqlSugarRepository _dictdataRep;
private readonly SqlSugarRepository _studentScaleResultsRep;
private readonly SqlSugarRepository _custommapreportRep;
private readonly SqlSugarRepository _customexplainRep;
private readonly SqlSugarRepository _ScaleDescriptionRep;
private readonly UserManager _userManager;
private readonly SqlSugarRepository _hldtagmapprorep;
private readonly SqlSugarRepository _bustagmappersonrep;
///
///
///
///
///
///
///
///
///
///
///
///
///
///
public BusScaleService(
SqlSugarRepository busScaleRep,
SqlSugarRepository _ScaleQuestionRep,
SqlSugarRepository menMapScaleRep,
SqlSugarRepository dictdataRep,
SqlSugarRepository studentScaleResultsRep,
SqlSugarRepository custommapreportRep,
SqlSugarRepository customexplainRep,
SqlSugarRepository scaleDescriptionRep,
UserManager userManager, SqlSugarRepository hldtagmapprorep, SqlSugarRepository bustagmappersonrep
)
{
_busScaleRep = busScaleRep;
_busScaleQuestionsRep = _ScaleQuestionRep;
_busmenMapScaleRep = menMapScaleRep;
_dictdataRep = dictdataRep;
_studentScaleResultsRep = studentScaleResultsRep;
_custommapreportRep = custommapreportRep;
_customexplainRep = customexplainRep;
_ScaleDescriptionRep = scaleDescriptionRep;
_userManager = userManager;
_hldtagmapprorep = hldtagmapprorep;
_bustagmappersonrep = bustagmappersonrep;
}
///
/// 分页查询量表类型表
///
///
///
[HttpGet("page")]
public async Task> Page([FromQuery] BusScaleInput input)
{
var busScales = await _busScaleRep.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
.WhereIF(input.QuestionsType.HasValue, u => u.QuestionsType == input.QuestionsType)
.WhereIF(!string.IsNullOrEmpty(input.Summary), u => u.Summary == input.Summary)
.WhereIF(!string.IsNullOrEmpty(input.Pic), u => u.Pic == input.Pic)
//.Where(u => u.Sort == input.Sort)
.OrderBy(u => u.CreateTime, OrderByType.Desc)
.OrderBuilder(input)
.Select(s => new BusScaleOutput()
{
Name = s.Name,
QuestionsType = s.QuestionsType,
Summary = s.Summary,
Status = s.Status,
Pic = s.Pic,
Sort = s.Sort,
Id = s.Id
})
.ToPagedListAsync(input.Page, input.PageSize);
return busScales;
}
///
/// 增加量表类型表
///
///
///
[HttpPost("add")]
public async Task Add(AddBusScaleInput input)
{
var busScale = input.Adapt();
await _busScaleRep.InsertAsync(busScale);
}
///
/// 删除量表类型表
///
///
///
[HttpPost("delete")]
public async Task Delete(DeleteBusScaleInput input)
{
var busScale = await _busScaleRep.AsQueryable().FirstAsync(u => u.Id == input.Id);
await _busScaleRep.FakeDeleteAsync(busScale);
}
///
/// 更新量表类型表
///
///
///
[HttpPost("edit")]
public async Task Update(UpdateBusScaleInput input)
{
var isExist = await _busScaleRep.AsQueryable().AnyAsync(u => u.Id == input.Id);
if (!isExist) throw Oops.Oh(ErrorCodeEnum.D3000);
var busScale = input.Adapt();
await _busScaleRep.UpdateAsync(busScale);
}
///
/// 获取量表类型表
///
///
///
[HttpGet("detail")]
public async Task Get([FromQuery] QueryeBusScaleInput input)
{
return (await _busScaleRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt();
}
///
/// 获取量表类型表列表
///
///
///
[HttpGet("list")]
[AllowAnonymous]
public async Task> List([FromQuery] BusByMenuInput input)
{
if (input.MenuId <= 0)
{
throw Oops.Oh(ErrorCodeEnum.D1016);
}
var result = await _busmenMapScaleRep.AsQueryable().Where(e => e.MenuId == input.MenuId && e.IsDelete == false).Select(s => s.ScaleId).ToListAsync();
return await _busScaleRep.AsQueryable().Where(e => e.IsDelete == false && result.Contains(e.Id)).Select(e => new BusScaleOutput()
{
Name = e.Name,
QuestionsType = e.QuestionsType,
MinImg = e.MinImg,
Summary = e.Summary,
Status = e.Status,
Pic = e.Pic,
Sort = e.Sort,
Id = e.Id
}).ToListAsync();
}
///
/// 留学问卷试题获取
///
///
///
[HttpGet("getbusscalestudy")]
public async Task> GetBusScaleStudy([FromQuery] BusScaleRequestDTO requestDTO)
{
var scaleresult = new List();
var diclist = await _dictdataRep.AsQueryable().Where(e => e.DictTypeId == 341341177155653).ToListAsync();
var query = await _busScaleQuestionsRep.AsQueryable().Where(e => e.ScaleId == requestDTO.ScaleId && e.IsDelete == false).ToListAsync();
var list = new List();
query.ForEach(a =>
{
list.Add(JsonConvert.DeserializeObject(a.Context));
});
diclist.ForEach(a =>
{
int code = int.Parse(a.Code);
var item = new BusScaleStudyBroadResponseDTO()
{
TitleName = a.Value,
busScaleStudies = list.Where(e => e.type == code).ToList()
};
scaleresult.Add(item);
});
return scaleresult;
}
///
/// 根据用户Id获取试题进度
///
///
///
[HttpGet("getcustommaproccess")]
public async Task GetCustomMapProccess([FromQuery] CustomMapProccessRequestDTO requestDTO)
{
var res = new CustomMapProccessDTO();
var dicdata = await _dictdataRep.AsQueryable().Where(e => e.DictTypeId == 341857672892485).ToListAsync();
res.mapProccesses = dicdata.Select(s => new MapProccessDTO() { Name = s.Value, Status = 0, ScaleId = long.Parse(s.Code), Sort = s.OrderNo }).ToList();
var scaldescription = await _ScaleDescriptionRep.AsQueryable().Where(e => res.mapProccesses.Select(s => s.ScaleId).Contains(e.ScaleId)).ToListAsync();
var custommapreport = await _custommapreportRep.AsQueryable().Where(e => e.IsDelete == false && e.CustomId == requestDTO.CustomId && e.Status == 0).ToListAsync();
if (!custommapreport.Any())
{
await _custommapreportRep.InsertAsync(new BusCustomMapReport()
{
// CreateTime = DateTime.Now,
CreateUserId = _userManager.UserId,
CreateUserName = _userManager.Account,
CustomId = requestDTO.CustomId,
Proccess = 1,
Status = 0
});
res.ScaleId = dicdata.FirstOrDefault(s => s.OrderNo == 1).Code;
long scaleId = long.Parse(res.ScaleId);
res.Description = (await _busScaleRep.GetFirstAsync(e => e.Id == scaleId)).Summary;
res.mapProccesses.ForEach(a =>
{
a.Application = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).Application;
a.Notice = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).Notice;
a.UsesTime = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).UsesTime;
a.Introduce = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).Introduce;
a.Status = 0;
});
}
else
{
var customsort = custommapreport.FirstOrDefault().Proccess;
res.mapProccesses.ForEach(a =>
{
a.Status = a.Sort < customsort ? 1 : 0;
a.Application = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).Application;
a.Notice = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).Notice;
a.UsesTime = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).UsesTime;
a.Introduce = scaldescription.FirstOrDefault(s => s.ScaleId == a.ScaleId).Introduce;
});
res.ScaleId = dicdata.FirstOrDefault(s => s.OrderNo == customsort).Code;
long scaleId = long.Parse(res.ScaleId);
res.Description = (await _busScaleRep.GetFirstAsync(e => e.Id == scaleId)).Summary;
}
return res;
}
///
/// 根据量表类型Id获取量表试题内容
///
///
///
[HttpGet("getscalequestions")]
public async Task GetScaleQuestions([FromQuery] BusScaleRequestDTO requestDTO)
{
// int k = 0;
try
{
var scaleresult = new BusScaleResponseDTO();
var single = await _busScaleRep.GetFirstAsync(r => r.Id == requestDTO.ScaleId);
var query = await _busScaleQuestionsRep.AsQueryable().Where(e => e.ScaleId == requestDTO.ScaleId && e.IsDelete == false).ToListAsync();
var qlist = new List();
query.ForEach(c =>
{
// k++;
// var newmodel = new ScaleQuestions() { answer = c.Context };
var newmodel = JsonConvert.DeserializeObject(c.Context);
newmodel.sort = c.Sort;
newmodel.type = newmodel.answer.FirstOrDefault().tag;
qlist.Add(newmodel);
});
// scaleresult.Description = single.Summary;
scaleresult.scaleQuestions = qlist;
scaleresult.Go = single.Name.Contains("职业锚价值观") ? 1 : 0;//迎合前端给特例
scaleresult.QuestionsType = single.QuestionsType;
return scaleresult;
}
catch (Exception ex)
{
throw Oops.Oh(ex);
}
}
///
/// 获取量表描述
///
///
///
[HttpGet("GetBusScaleDescription")]
public async Task GetBusScaleDescription([FromQuery] BusScaleDescriptionRequestDTO requestDTO)
{
var res = new BusScaleDescriptionResponseDto();
res.busScaleDescriptions = await _ScaleDescriptionRep.AsQueryable()
.Where(e => e.ScaleId == requestDTO.ScaleId)
.Select(s => new BusScaleDescriptionDto()
{
Title = s.Title,
Application = s.Application,
Introduce = s.Introduce,
Notice = s.Notice,
ScaleId = s.ScaleId,
UsesTime = s.UsesTime,
Sort = s.Sort
}).ToListAsync();
return res;
}
///
/// 量表试题保存集合
///
///
///
[HttpPost("CustomBusScale")]
public async Task CustomBusScale(CustomBusScaleRequestDTO scaleRequestDTO)
{
var result = new CustomBusScaleDto();
var newpp = new BusScaleResult();
var scalTotals = new List();
var models = new BusStudentScaleResults()
{
CreateUserId = _userManager.UserId,
CreateTime = DateTime.Now,
CreateUserName = _userManager.Account,
SysOauthUserId = _userManager.UserId,
ScaleId = scaleRequestDTO.ScaleId,
TenantId = _userManager.TenantId,
// Type = -1,
// Result = JsonConvert.SerializeObject(newpp)
};
var single = new BusCustomMapReport();
switch (scaleRequestDTO.ScaleId)
{
case 339914746081349:// 兴趣测评[Holland]
var jsons = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString()).GroupBy(s => new { name = s.name }).Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).OrderByDescending(c => c.value).ToList();
int i = 0;
jsons.ForEach(a =>
{
i++;
if (i <= 3)
{
newpp.Result += a.name;
}
});
newpp.scalLists = jsons;
models.Result = JsonConvert.SerializeObject(newpp);
single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
single.Proccess = 2;
break;
case 339916661030981://性格测评[MBTI]
//E-I S-N T-F J-P
var mbtilist = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString()).GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var taglist = "ESTJ";
for (var k = 0; k < taglist.Length; k++)
{
switch (taglist[k].ToString())
{
case "E":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "I").value ? "E" : "I";
break;
case "S":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "N").value ? "S" : "N";
break;
case "T":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "F").value ? "T" : "F";
break;
case "J":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "P").value ? "J" : "P";
break;
}
}
newpp.scalLists = mbtilist;
models.Result = JsonConvert.SerializeObject(newpp);
single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
single.Proccess = 3;
break;
case 339916993155141://能力测评[MIDAS]
//Y(语言智能) R(人际智能) D(运动智能) Z(自然智能) K(空间智能) S(数理智能) L(音乐智能) N(内省智能)
var midaslist = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString()).GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var scalLists = new List();
midaslist.ForEach(a =>
{
var item = new ScalListItem();
switch (a.name)
{
case "Y":
item.value = a.value;
item.name = a.name;
item.type = "言语语言智能";
break;
case "R":
item.value = a.value;
item.name = a.name;
item.type = "人际交往智能";
break;
case "D":
item.value = a.value;
item.name = a.name;
item.type = "身体动觉智能";
break;
case "Z":
item.value = a.value;
item.name = a.name;
item.type = "自然观察智能";
break;
case "K":
item.value = a.value;
item.name = a.name;
item.type = "视觉空间智能";
break;
case "S":
item.value = a.value;
item.name = a.name;
item.type = "逻辑数理智能";
break;
case "L":
item.value = a.value;
item.name = a.name;
item.type = "音乐节奏智能";
break;
case "N":
item.value = a.value;
item.name = a.name;
item.type = "自知自省智能";
break;
}
scalLists.Add(item);
});
newpp.scalLists = scalLists;
models.Result = JsonConvert.SerializeObject(newpp);
single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
single.Proccess = 4;
break;
case 339917685502021://职业锚价值观[Career Anchors]
var careeranchors = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString()).GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
careeranchors.ForEach(a =>
{
a.value = a.value == 6 ? a.value + 4 : a.value;
});
newpp.scalLists = careeranchors;
newpp.Tag = string.Join("+", careeranchors.OrderByDescending(item => item.value).Take(2).Select(s => s.name).ToList());
models.Type = -1;
models.Result = JsonConvert.SerializeObject(newpp);
single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
single.Proccess = 5;
single.Status = 1;
break;
case 339926224392261://学习拖延
break;
case 339926358470725://厌学情绪评估
break;
case 339926424055877://学习风格
var fengge = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString()).GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var fglist = new List();
fengge.ForEach(a =>
{
var item = new ScalListItem();//A=冲动型或灵感型;P=务实型或实用型;R=沉思型或反思型;T=为理论型
switch (a.name)
{
case "A":
item.value = a.value;
item.name = a.name;
item.type = "冲动型或灵感型";
break;
case "P":
item.value = a.value;
item.name = a.name;
item.type = "务实型或实用型";
break;
case "R":
item.value = a.value;
item.name = a.name;
item.type = "沉思型或反思型";
break;
case "T":
item.value = a.value;
item.name = a.name;
item.type = "理论型";
break;
}
fglist.Add(item);
});
newpp.scalLists = fglist;
models.Type = 4;
models.Title = "学习风格";
models.Result = JsonConvert.SerializeObject(newpp);
break;
case 339926523736133://学生考试焦虑
scalTotals = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString());
models.Type = 1;
models.Title = "考试焦虑";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 339926607917125://学习技能
scalTotals = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString());
models.Type = 1;
models.Title = "学习技能";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 340506604851269://SAS焦虑测评
scalTotals = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString());
models.Type = 1;
models.Title = "焦虑自评";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 340506680250437://SDS抑郁测评
scalTotals = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString());
models.Type = 1;
models.Title = "抑郁自评";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 340506852511813://中学生心理健康诊断自评(MHT)
var mhtlist = JsonConvert.DeserializeObject>(scaleRequestDTO.Inputs.ToString()).GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var mht = new List();
mhtlist.ForEach(a =>
{
var item = new ScalListItem();//
switch (a.name)
{
case "A":
item.value = a.value;
item.name = a.name;
item.type = "学习焦虑";
break;
case "B":
item.value = a.value;
item.name = a.name;
item.type = "对人焦虑";
break;
case "C":
item.value = a.value;
item.name = a.name;
item.type = "孤独倾向";
break;
case "D":
item.value = a.value;
item.name = a.name;
item.type = "自责倾向";
break;
case "E":
item.value = a.value;
item.name = a.name;
item.type = "过敏倾向";
break;
case "F":
item.value = a.value;
item.name = a.name;
item.type = "身体症状";
break;
case "G":
item.value = a.value;
item.name = a.name;
item.type = "恐怖倾向";
break;
case "H":
item.value = a.value;
item.name = a.name;
item.type = "冲动倾向";
break;
case "X":
item.value = a.value;
item.name = a.name;
item.type = "效度";
break;
}
mht.Add(item);
});
newpp.scalLists = mht;
models.Type = 1;
models.Title = "中学生心理健康诊断自评";
models.Result = JsonConvert.SerializeObject(newpp);
break;
case 340507046379589://留学需求调研
models.Type = -2;
models.Title = "留学咨询";
models.Result = JsonConvert.SerializeObject(scaleRequestDTO.Inputs);
break;
}
await _studentScaleResultsRep.InsertAsync(models);
result.Id = models.Id;
if (single != null)
{
single.UpdateTime = DateTime.Now;
switch (single.Proccess)
{
case 2:
single.HId = models.Id;
break;
case 3:
single.MId = models.Id;
break;
case 4:
single.NId = models.Id;
break;
case 5:
single.JId = models.Id;
break;
}
single.UpdateUserId = _userManager.UserId;
single.UpdateUserName = _userManager.Account;
_custommapreportRep.Update(single);
result.ReportId = single.Id;
}
result.ScaleId = scaleRequestDTO.ScaleId;
return result;
}
///
/// 量表试题保存集合V2
/// type=0 兴趣测评报告
///=1 性格测评报告
///=2 能力测评
///=3 学生考试考虑
///=4 学习风格
///=5 学习技能
///=6 SAS
///=7 SDS
///=8 SCL-90
///=9 MHT
///=-1 价值观
///=-2 留学咨询
///
///
///
[HttpPost("CustomBusScale/v2")]
public async Task CustomBusScaleV2(CustomBusScaleRequestDTO scaleRequestDTO)
{
var result = new CustomBusScaleDto();
var newpp = new BusScaleResult();
var scalTotals = new List();
var models = new BusStudentScaleResults()
{
CreateUserId = _userManager.UserId,
CreateTime = DateTime.Now,
CreateUserName = _userManager.Account,
SysOauthUserId = _userManager.UserId,
ScaleId = scaleRequestDTO.ScaleId,
TenantId = _userManager.TenantId,
// Type = -1,
// Result = JsonConvert.SerializeObject(newpp)
};
// var single = new BusCustomMapReport();
switch (scaleRequestDTO.ScaleId)
{
case 339914746081349:// 兴趣测评[Holland]
var jsons = scaleRequestDTO.Inputs.GroupBy(s => new { name = s.name }).Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).OrderByDescending(c => c.value).ToList();
int i = 0;
jsons.ForEach(a =>
{
i++;
if (i <= 3)
{
newpp.Result += a.name;
}
});
newpp.scalLists = jsons;
models.Title = "兴趣测评";
models.Type = 0;
models.Result = JsonConvert.SerializeObject(newpp);
//single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
//single.Proccess = 2;
break;
case 339916661030981://性格测评[MBTI]
//E-I S-N T-F J-P
var mbtilist = scaleRequestDTO.Inputs.GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var taglist = "ESTJ";
for (var k = 0; k < taglist.Length; k++)
{
switch (taglist[k].ToString())
{
case "E":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "I").value ? "E" : "I";
break;
case "S":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "N").value ? "S" : "N";
break;
case "T":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "F").value ? "T" : "F";
break;
case "J":
newpp.Result += mbtilist.FirstOrDefault(e => e.name == taglist[k].ToString()).value > mbtilist.FirstOrDefault(e => e.name == "P").value ? "J" : "P";
break;
}
}
newpp.scalLists = mbtilist;
models.Title = "性格测评";
models.Type = 1;
models.Result = JsonConvert.SerializeObject(newpp);
// single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
// single.Proccess = 3;
break;
case 339916993155141://能力测评[MIDAS]
//Y(语言智能) R(人际智能) D(运动智能) Z(自然智能) K(空间智能) S(数理智能) L(音乐智能) N(内省智能)
var midaslist = scaleRequestDTO.Inputs.GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var scalLists = new List();
midaslist.ForEach(a =>
{
var item = new ScalListItem();
switch (a.name)
{
case "Y":
item.value = a.value;
item.name = a.name;
item.type = "言语语言智能";
break;
case "R":
item.value = a.value;
item.name = a.name;
item.type = "人际交往智能";
break;
case "D":
item.value = a.value;
item.name = a.name;
item.type = "身体动觉智能";
break;
case "Z":
item.value = a.value;
item.name = a.name;
item.type = "自然观察智能";
break;
case "K":
item.value = a.value;
item.name = a.name;
item.type = "视觉空间智能";
break;
case "S":
item.value = a.value;
item.name = a.name;
item.type = "逻辑数理智能";
break;
case "L":
item.value = a.value;
item.name = a.name;
item.type = "音乐节奏智能";
break;
case "N":
item.value = a.value;
item.name = a.name;
item.type = "自知自省智能";
break;
}
scalLists.Add(item);
});
newpp.scalLists = scalLists;
models.Title = "能力测评";
models.Type = 2;
models.Result = JsonConvert.SerializeObject(newpp);
// single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
// single.Proccess = 4;
break;
case 339917685502021://职业锚价值观[Career Anchors]
var careeranchors = scaleRequestDTO.Inputs.GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
careeranchors.ForEach(a =>
{
a.value = a.value == 6 ? a.value + 4 : a.value;
});
newpp.scalLists = careeranchors;
// 排序并取前两个元素,然后提取 name 字段,最后用 + 连接成字符串
newpp.Tag = string.Join("+", careeranchors.OrderByDescending(item => item.value).Take(2).Select(s => s.name));
models.Type = -1;
models.Title = "职业价值观";
models.Result = JsonConvert.SerializeObject(newpp);
// single = await _custommapreportRep.AsQueryable().FirstAsync(e => e.CustomId == scaleRequestDTO.CustomId && e.Status == 0 && e.IsDelete == false);
// single.Proccess = 5;
// single.Status = 1;
break;
case 339926224392261://学习拖延
break;
case 339926358470725://厌学情绪评估
break;
case 339926424055877://学习风格
var fengge = scaleRequestDTO.Inputs.GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var fglist = new List();
fengge.ForEach(a =>
{
var item = new ScalListItem();//A=冲动型或灵感型;P=务实型或实用型;R=沉思型或反思型;T=为理论型
switch (a.name)
{
case "A":
item.value = a.value;
item.name = a.name;
item.type = "冲动型或灵感型";
break;
case "P":
item.value = a.value;
item.name = a.name;
item.type = "务实型或实用型";
break;
case "R":
item.value = a.value;
item.name = a.name;
item.type = "沉思型或反思型";
break;
case "T":
item.value = a.value;
item.name = a.name;
item.type = "理论型";
break;
}
fglist.Add(item);
});
newpp.scalLists = fglist;
models.Type = 4;
models.Title = "学习风格";
models.Result = JsonConvert.SerializeObject(newpp);
break;
case 339926523736133://学生考试焦虑
scalTotals = new List { new ScalTotals() { Total = scaleRequestDTO.Inputs.First().value } };
models.Type = 3;
models.Title = "考试焦虑";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 339926607917125://学习技能
scalTotals = new List { new ScalTotals() { Total = scaleRequestDTO.Inputs.First().value } };
models.Type = 5;
models.Title = "学习技能";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 340506604851269://SAS焦虑测评
scalTotals = new List { new ScalTotals() { Total = scaleRequestDTO.Inputs.First().value } };
models.Type = 6;
models.Title = "焦虑自评";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 340506680250437://SDS抑郁测评
scalTotals = new List { new ScalTotals() { Total = scaleRequestDTO.Inputs.First().value } };
models.Type = 7;
models.Title = "抑郁自评";
models.Result = JsonConvert.SerializeObject(scalTotals);
break;
case 340506852511813://中学生心理健康诊断自评(MHT)
var mhtlist = scaleRequestDTO.Inputs.GroupBy(s => new { name = s.name })
.Select(s => new ScalListItem() { name = s.Key.name, value = s.Sum(c => c.value) }).ToList();
var mht = new List();
mhtlist.ForEach(a =>
{
var item = new ScalListItem();//
switch (a.name)
{
case "A":
item.value = a.value;
item.name = a.name;
item.type = "学习焦虑";
break;
case "B":
item.value = a.value;
item.name = a.name;
item.type = "对人焦虑";
break;
case "C":
item.value = a.value;
item.name = a.name;
item.type = "孤独倾向";
break;
case "D":
item.value = a.value;
item.name = a.name;
item.type = "自责倾向";
break;
case "E":
item.value = a.value;
item.name = a.name;
item.type = "过敏倾向";
break;
case "F":
item.value = a.value;
item.name = a.name;
item.type = "身体症状";
break;
case "G":
item.value = a.value;
item.name = a.name;
item.type = "恐怖倾向";
break;
case "H":
item.value = a.value;
item.name = a.name;
item.type = "冲动倾向";
break;
case "X":
item.value = a.value;
item.name = a.name;
item.type = "效度";
break;
}
mht.Add(item);
});
newpp.scalLists = mht;
models.Type = 9;
models.Title = "中学生心理健康诊断自评";
models.Result = JsonConvert.SerializeObject(newpp);
break;
case 340507046379589://留学需求调研
models.Type = -2;
models.Title = "留学咨询";
models.Result = JsonConvert.SerializeObject(scaleRequestDTO.Inputs);
break;
}
await _studentScaleResultsRep.InsertAsync(models);
////result.Id = models.Id;
////if (single != null)
////{
//// single.UpdateTime = DateTime.Now;
//// switch (single.Proccess)
//// {
//// case 2:
//// single.HId = models.Id;
//// break;
//// case 3:
//// single.MId = models.Id;
//// break;
//// case 4:
//// single.NId = models.Id;
//// break;
//// case 5:
//// single.JId = models.Id;
//// break;
//// }
//// single.UpdateUserId = _userManager.UserId;
//// single.UpdateUserName = _userManager.Account;
//// _custommapreportRep.Update(single);
//// result.ReportId = single.Id;
////}
result.ScaleId = scaleRequestDTO.ScaleId;
return new CustomBusScaleV2Dto()
{
Type = models.Type,
ReportId = models.Id,
};
}
///
/// 根据标签获取专业组
///
///
///
[HttpGet("getTagMapPro")]
public async Task> GetMapTag([FromQuery] string tag)
{
// var tags = UtilGetPermutations.GetPermutations(tag);
var taglist = await _hldtagmapprorep.AsQueryable().Where(e => e.Tag.Contains(tag)).Select().ToListAsync();
return taglist;
}
///
/// 标签性格代表人物
///
///
///
[HttpGet("getTagMapPerson")]
public async Task> GetTagMapPerson([FromQuery] string tag)
{
//var tags = UtilGetPermutations.GetPermutations(tag);
var taglist = await _bustagmappersonrep.AsQueryable().Where(e => tag.Contains(e.Tag)).Select().ToListAsync();
return taglist;
}
///
/// 获取我的报告列表
///
///
///
[HttpGet("GetBusCustomReports")]
public async Task GetBusCustomReports([FromQuery] BusCustomReportRequestDTO requestDTO)
{
var report = new BusCustomReportsList();
var list = new List();
var comphas = await _custommapreportRep.AsQueryable().Where(e => e.IsDelete == false && e.Status == 1 && e.CustomId == requestDTO.CustomId).ToListAsync();
list = comphas.Select(s => new CustomReports() { CreateTime = s.CreateTime.Value, ReportsId = s.Id, RoleName = "学生", Title = "综合报告", Type = 0 }).ToList();
var queryreports = await _studentScaleResultsRep.AsQueryable().Where(e => e.Type >= 0 && e.SysOauthUserId == requestDTO.CustomId).ToListAsync();
if (queryreports.Any())
{
list.AddRange(queryreports.Select(s => new CustomReports()
{
Type = s.Type,
CreateTime = s.CreateTime.Value,
ReportsId = s.Id,
RoleName = "学生",
Title = s.Title
}).ToList());
}
report.customReports = list.OrderByDescending(s => s.CreateTime).ToList();
return report;
}
///
/// 获取我的报告列表V2
///
///
///
[HttpGet("GetBusCustomReports/v2")]
public async Task GetBusCustomReportsV2([FromQuery] BusCustomReportRequestDTO requestDTO)
{
var report = new BusCustomReportsList();
var list = new List();
//var comphas = await _custommapreportRep.AsQueryable().Where(e => e.IsDelete == false && e.Status == 1 && e.CustomId == requestDTO.CustomId).ToListAsync();
//list = comphas.Select(s => new CustomReports() { CreateTime = s.CreateTime.Value, ReportsId = s.Id, RoleName = "学生", Title = "综合报告", Type = 0 }).ToList();
var queryreports = await _studentScaleResultsRep.AsQueryable().Where(e => e.SysOauthUserId == requestDTO.CustomId).ToListAsync();
if (queryreports.Any())
{
list.AddRange(queryreports.Select(s => new CustomReports()
{
Type = s.Type,
CreateTime = s.CreateTime.Value,
ReportsId = s.Id,
RoleName = "学生",
Title = s.Title
}).ToList());
}
report.customReports = list.OrderByDescending(s => s.CreateTime).ToList();
return report;
}
///
/// 获取综合报告所需ID
///
///
///
[HttpGet("GetReportMapIds")]
public async Task GetReportMapIds([FromQuery] BusReportMapIdsRequestDto requestDto)
{
var result = new BusReportMapIdsDto();
var query = await _custommapreportRep.AsQueryable().AnyAsync(e => e.IsDelete == false && e.Id == requestDto.ReportId);
if (query)
{
var customrep = await _custommapreportRep.GetFirstAsync(r => r.Id == requestDto.ReportId);
result.HId = customrep.HId;
result.JId = customrep.JId;
result.MId = customrep.MId;
result.NId = customrep.NId;
result.Proccess = customrep.Proccess;
}
return result;
}
///
/// 霍兰德报告
///
///
///
[HttpGet("GetHollandDimension")]
public async Task GetHollandDimension([FromQuery] BusReportsRequestDto requestDto)
{
var res = new HollandDimension();
var replistitem = new List();
string PinTitle = string.Empty;
var holland = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == requestDto.ScaleId);
var picinfo = JsonConvert.DeserializeObject(holland.Result);
var explainholland = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339914746081349).ToListAsync();
var max = picinfo.scalLists.Select(s => s.value).Max() + 1;
for (var i = 0; i < picinfo.Result.Length; i++)
{
var scalemodel = explainholland.FirstOrDefault(s => s.Tag == picinfo.Result[i].ToString());
PinTitle += "+" + scalemodel.Title;
replistitem.Add(new ReportItem()
{
Title = scalemodel.Title,
Description = scalemodel.Description,
Features = scalemodel.Features,
MainDomain = scalemodel.MainDomain,
Major = scalemodel.Major,
Occupation = scalemodel.Occupation,
Resolving = scalemodel.Resolving,
Tag = scalemodel.Tag,
Traits = scalemodel.Traits,
University = scalemodel.University
});
}
res = new HollandDimension()
{
picCharts = new PicChart()
{
indicator = picinfo.scalLists.Select(s => new Indicat() { Name = s.name, Max = max }).ToList(),
radars = picinfo.scalLists.Select(s => s.value).ToList()
},
Title = picinfo.Result + "(" + PinTitle + ")",
reportItems = replistitem,
HTag = picinfo.Result,
Description = string.Join(",", explainholland.Select(s => s.Description).ToList()),
};
return res;
}
///
/// 获取MBTI报告
///
///
///
[HttpGet("GetMBTIDimension")]
public async Task GetMBTIDimension([FromQuery] BusReportsRequestDto requestDto)
{
var bTIDimension = new MBTIDimension();
var mbtiinfo = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == requestDto.ScaleId);
if (mbtiinfo)
{
var explainmbti = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339916661030981).ToListAsync();
var mbit = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == requestDto.ScaleId);
var mbtiresult = JsonConvert.DeserializeObject(mbit.Result);
var mbtitag = explainmbti.FirstOrDefault(s => s.Tag == mbtiresult.Result.Trim());
var newlist = new List();
var oldlist = new List();
mbtiresult.scalLists.ForEach(a =>
{
string tagname = string.Format("({0}){1}",
a.name == "E" ? "外向" :
a.name == "S" ? "感觉" :
a.name == "T" ? "思考" :
a.name == "J" ? "判断" :
a.name == "I" ? "内向" :
a.name == "N" ? "直觉" :
a.name == "F" ? "情感" :
a.name == "P" ? "知觉" : "", a.name);
switch (a.name)
{
case "E":
case "S":
case "T":
case "J":
// a.value = a.value - 10;
newlist.Add(new ScalListItem() { name = tagname, value = a.value });
break;
}
switch (a.name)
{
case "I":
case "N":
case "F":
case "P":
oldlist.Add(new ScalListItem() { name = tagname, value = a.value });
break;
}
});
newlist.AddRange(oldlist);
bTIDimension = new MBTIDimension()
{
Title = mbtiresult.Result + "(" + mbtitag.Title + ")",
reportItem = new ReportItem()
{
Title = mbtitag.Title,
Tag = mbtitag.Tag,
Description = mbtitag.Description,
Features = mbtitag.Features,
MainDomain = mbtitag.MainDomain,
Major = mbtitag.Major,
Occupation = mbtitag.Occupation,
Resolving = mbtitag.Resolving,
Traits = mbtitag.Traits,
University = mbtitag.University
},
linChart = new LinChart()
{
Name = newlist.Select(s => s.name).ToList(),
Value = newlist.Select(s => (double)s.value).ToList()
},
Description = mbtitag.Resolving + mbtitag.Description + mbtitag.Traits.Replace("他们", ""),
};
}
return bTIDimension;
}
///
/// 获取能力维度报告
///
///
///
[HttpGet("GetAbilityDimension")]
public async Task GetAbilityDimension([FromQuery] BusReportsRequestDto requestDto)
{
var abilityDimension = new AbilityDimension();
var nengliinfo = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == requestDto.ScaleId);
if (nengliinfo)
{
var explainnengli = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339916993155141).ToListAsync();
var nengli = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == requestDto.ScaleId);
var ngresult = JsonConvert.DeserializeObject(nengli.Result);
var sysdicdata = await _dictdataRep.AsQueryable().Where(e => e.DictTypeId == 342316563505221).ToListAsync();
var replist = new List();
explainnengli.ForEach(o =>
{
replist.Add(new ReportItem()
{
Score = ngresult.scalLists.FirstOrDefault(e => e.type == o.Title).value,
Title = o.Title,
Description = o.Description,
Features = o.Features,
MainDomain = o.MainDomain,
Major = o.Major,
Occupation = o.Occupation,
Resolving = o.Resolving,
Traits = o.Traits,
University = o.University,
});
});
//Y(语言智能) R(人际智能) D(运动智能) Z(自然智能) K(空间智能) S(数理智能) L(音乐智能) N(内省智能)+分数
abilityDimension = new AbilityDimension()
{
reportItems = replist,
linChart = new List()
{
new LinChart()
{
Name = ngresult.scalLists.Select(s => s.name).ToList(),
Value = ngresult.scalLists.Select(s => (double)s.value).ToList()
},
new LinChart()
{
Name=sysdicdata.Select(S=>S.Value).ToList(),
Value=sysdicdata.Select(S=>double.Parse(S.Remark)).ToList()
}
}
};
abilityDimension.Title = string.Empty;
if (ngresult.scalLists.Any(e => e.value > 50))
{
abilityDimension.Title += string.Format("你的优势能力:{0}", string.Join(",", ngresult.scalLists.Where(e => e.value > 50).Select(s => s.type).ToList()));
}
if (ngresult.scalLists.Any(e => e.value <= 20))
{
abilityDimension.Title += string.Format("你的弱势能力:{0}", string.Join(",", ngresult.scalLists.Where(e => e.value <= 20).Select(s => s.type).ToList()));
}
ngresult.scalLists.ForEach(a =>
{
//var status = sysdicdata.Where(e => e.Value == a.name);
//if (status.Any())
//{
// var titles = status.FirstOrDefault(s => s.Value == a.name);
// abilityDimension.Title += a.value >= double.Parse(titles.Remark) ? titles.Value.Replace("智能", "") : a.name.Replace("智能", "");
//}
string nltag = string.Empty;
if (a.value <= 20)
{
nltag = "低弱";
}
if (a.value > 20 && a.value < 31)
{
nltag = "中下";
}
if (a.value >= 31 && a.value <= 50)
{
nltag = "中上";
}
if (a.value > 50)
{
nltag = "优秀";
}
if (a.value <= 30)
{
switch (a.type)
{
case "言语语言智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "阅读文学作品,学讲故事,学习外语 ");
break;
case "逻辑数理智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "学习心算,多玩一些推理游戏 ");
break;
case "视觉空间智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "学习绘画,经常装配物件(如玩具、积木等) ");
break;
case "身体动觉智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议{2}", a.type, nltag, "经常运动,尝试表演或舞蹈 ");
break;
case "音乐节奏智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "学习乐器,经常听音乐,尝试唱歌 ");
break;
case "人际交往智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "经常参加聚会,掌握倾听技巧,增强同理心 ");
break;
case "自知自省智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "尝试写日记(以心得体会为主),制定自我发展计划,偶尔做一些白日梦 ");
break;
case "自然观察智能":
abilityDimension.Description += string.Format("您的{0}属于{1},建议多{2}", a.type, nltag, "尝试郊游或参观博物馆,尝试种植花草或抚养宠物 ");
break;
}
}
});
}
return abilityDimension;
}
///
/// 获取职业锚维度报告
///
///
///
[HttpGet("GetOpinionAbout")]
public async Task GetOpinionAbout([FromQuery] BusReportsRequestDto requestDto)
{
var opinionAbout = new OpinionAboutValue();
var zhiyemao = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == requestDto.ScaleId);
if (zhiyemao)
{
var zhiyemaoinfo = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339917685502021).ToListAsync();
var zhiye = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == requestDto.ScaleId);
var zyresult = JsonConvert.DeserializeObject(zhiye.Result);
// var mbtitag = zhiyemaoinfo.FirstOrDefault(s => s.Tag == zyresult.Result.Trim());
var replist = new List();
var openinfo = new List();
zhiyemaoinfo.ForEach(a =>
{
replist.Add(new ReportItem()
{
Tag = "(" + a.Tag + ")" + zhiyemaoinfo.FirstOrDefault(s => s.Tag == a.Tag).Title,
Description = a.Resolving,
Features = a.Features,
MainDomain = a.MainDomain,
Major = a.Major,
Title = a.Title,
Traits = a.Traits
});
});
zyresult.scalLists.ForEach(a =>
{
a.name = zhiyemaoinfo.FirstOrDefault(s => s.Tag == a.name).Title + "(" + a.name + ")";
});
int max = zyresult.scalLists.Max(s => s.value) + 1;
opinionAbout = new OpinionAboutValue()
{
reportItems = replist,
opinionItems = zyresult.scalLists.Select(s => new OpinionItem() { Max = max, Name = s.name, Value = s.value }).ToList(),
picCharts = new PicChart()
{
indicator = zyresult.scalLists.Select(s => new Indicat() { Max = max, Name = s.name }).ToList(),
radars = zyresult.scalLists.Select(s => s.value).ToList()
}
};
opinionAbout.Tag = zyresult.Tag;
opinionAbout.Description += "价值观描述:";
var deslist = zyresult.scalLists.OrderByDescending(s => s.value).Take(2).ToList();
deslist.ForEach(a =>
{
opinionAbout.Description += zhiyemaoinfo.FirstOrDefault(s => a.name.Contains(s.Tag)).Description.Replace("他们", "");
});
}
return opinionAbout;
}
///
/// 获取学习风格结果
///
///
///
[HttpGet("GetStudyStyle")]
public async Task GetStudyStyle([FromQuery] BusReportsRequestDto requestDto)
{
var styleinfo = new StudyStyleResponseDTO();
var styleresult = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == requestDto.ScaleId);
if (styleresult)
{
var stylecustomer = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339926424055877).ToListAsync();
var stylequery = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == requestDto.ScaleId);
var stylerecover = JsonConvert.DeserializeObject(stylequery.Result);
var replist = new List();
stylecustomer.ForEach(a =>
{
replist.Add(new ReportItem()
{
Tag = "(" + a.Tag + ")" + stylecustomer.FirstOrDefault(s => s.Tag == a.Tag).Title,
Description = a.Description,
Features = a.Features,
MainDomain = a.MainDomain,
Major = a.Major,
Title = a.Title,
Traits = a.Traits
});
});
styleinfo.UserName = _userManager.RealName;
styleinfo.Description = @"你追求事物的内在含义并习惯亲身体验;你善于通过听和与人分享思想来学习;你喜欢与人沟通;你善于从多个角度观察问题并形成自己独特的观点";
styleinfo.TestTime = stylequery.CreateTime.Value;
styleinfo.reportItems = replist;
int max = stylerecover.scalLists.Max(s => s.value) + 1;
styleinfo.picCharts = new PicChart()
{
indicator = stylerecover.scalLists.Select(s => new Indicat() { Max = max, Name = s.name }).ToList(),
radars = stylerecover.scalLists.Select(s => s.value).ToList()
};
var scalinfo = new List();
var styletypes = new List();
stylerecover.scalLists.ForEach(a =>
{
string type = string.Empty;
switch (a.name)
{
case "A":
type = "冲动型";
break;
case "P":
type = "务实型";
styletypes.Add(new StudyStyleTables() { Type = "风格1", Score = a.value + stylerecover.scalLists.FirstOrDefault(s => s.name == "R").value });
styletypes.Add(new StudyStyleTables() { Type = "风格2", Score = a.value + stylerecover.scalLists.FirstOrDefault(s => s.name == "A").value });
break;
case "R":
type = "反思型";
break;
case "T":
type = "理论型";
styletypes.Add(new StudyStyleTables() { Type = "风格3", Score = a.value + stylerecover.scalLists.FirstOrDefault(s => s.name == "R").value });
styletypes.Add(new StudyStyleTables() { Type = "风格4", Score = a.value + stylerecover.scalLists.FirstOrDefault(s => s.name == "A").value });
break;
}
scalinfo.Add(new StudyStyleTables()
{
Type = type,
Score = a.value,
Description = a.value <= 15 ? "低偏好" : a.value >= 16 && a.value <= 35 ? "中等偏好" : a.value >= 36 && a.value <= 44 ? "强烈偏好" : "非常强烈偏好"
});
});
styleinfo.studyStyles = scalinfo;
var maxstyles = styletypes.OrderByDescending(s => s.Score).FirstOrDefault();
var styleresults = new StudyStyleResult();
switch (maxstyles.Type)
{
case "风格1":
styleresults.Advantage = "富于创造力和想像力";
styleresults.Seek = "重大项目中的自我成长和团队精神";
styleresults.SuitableOccupation = "为什么?为什么不?";
styleresults.FavoriteQuestions = "咨询、人事关系";
break;
case "风格2":
styleresults.Advantage = "创造概念和模式";
styleresults.Seek = "自我满足和智力认同.";
styleresults.SuitableOccupation = "什么?";
styleresults.FavoriteQuestions = "基础科学研究, 规划研究部";
break;
case "风格3":
styleresults.Advantage = "喜好实践";
styleresults.Seek = "现实和将来的一致性";
styleresults.SuitableOccupation = "怎么做?";
styleresults.FavoriteQuestions = "工程师,外科医生,护士,技工";
break;
case "风格4":
styleresults.Advantage = "执行能力强";
styleresults.Seek = "把事情做成";
styleresults.SuitableOccupation = "能变成什么样?";
styleresults.FavoriteQuestions = "市场,销售";
break;
}
styleinfo.studyStyleResult = styleresults;
}
return styleinfo;
}
///
/// 获取部分报告
///
///
///
[HttpGet("GetBusComprehensive")]
public async Task GetBusComprehensive([FromQuery] BusComprehensiveReportRequestDTO requestDTO)
{
var res = new BusComprehensiveReportDTO();
var query = await _custommapreportRep.GetFirstAsync(r => r.Id == requestDTO.ReportId);
var replistitem = new List();
string PinTitle = string.Empty;
#region 霍兰德++++++++++++++
var holland = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == query.HId);
var picinfo = JsonConvert.DeserializeObject(holland.Result);
var explainholland = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339914746081349).ToListAsync();
for (var i = 0; i <= picinfo.Result.Length; i++)
{
var scalemodel = explainholland.FirstOrDefault(s => s.Tag == picinfo.Result[i].ToString());
PinTitle += "+" + scalemodel.Title;
replistitem.Add(new ReportItem()
{
Title = scalemodel.Title,
Description = scalemodel.Description,
Features = scalemodel.Features,
MainDomain = scalemodel.MainDomain,
Major = scalemodel.Major,
Occupation = scalemodel.Occupation,
Resolving = scalemodel.Resolving,
Tag = scalemodel.Tag,
Traits = scalemodel.Traits,
University = scalemodel.University
});
}
res.hollandDimension = new HollandDimension()
{
picCharts = new PicChart()
{
indicator = picinfo.scalLists.Select(s => new Indicat() { Name = s.name, Max = 45 }).ToList(),
radars = picinfo.scalLists.Select(s => s.value).ToList()
},
Title = holland.Result + "(" + PinTitle + ")",
reportItems = replistitem
};
#endregion 霍兰德+++++++++++++++++
#region MBTI++++++++++++++++++++
var mbtiinfo = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == query.MId);
if (mbtiinfo)
{
var explainmbti = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339916661030981).ToListAsync();
var mbit = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == query.MId);
var mbtiresult = JsonConvert.DeserializeObject(mbit.Result);
var mbtitag = explainmbti.FirstOrDefault(s => s.Tag == mbtiresult.Result.Trim());
res.bTIDimension = new MBTIDimension()
{
Title = mbtiresult.Result + "(" + mbtitag.Title + ")",
reportItem = new ReportItem()
{
Title = mbtitag.Title,
Tag = mbtitag.Tag,
Description = mbtitag.Description,
Features = mbtitag.Features,
MainDomain = mbtitag.MainDomain,
Major = mbtitag.Major,
Occupation = mbtitag.Occupation,
Resolving = mbtitag.Resolving,
Traits = mbtitag.Traits,
University = mbtitag.University
},
linChart = new LinChart()
{
Name = mbtiresult.scalLists.Select(s => s.name).ToList(),
Value = mbtiresult.scalLists.Select(s => (double)s.value).ToList()
}
};
}
#endregion MBTI++++++++++++++++++++++
#region 能力维度++++++++++++++++++++++++
//var nengliinfo = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == query.NId);
//if (nengliinfo)
//{
// var explainnengli = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339916993155141).ToListAsync();
// var nengli = await _studentScaleResultsRep.FindAsync(query.NId);
// var ngresult = JsonConvert.DeserializeObject(nengli.Result);
// var mbtitag = explainnengli.FirstOrDefault(s => s.Tag == ngresult.Result.Trim());
// var replist = new List();
// explainnengli.ForEach(o =>
// {
// replist.Add(new ReportItem()
// {
// Title = o.Title,
// Description = o.Description,
// Features = o.Features,
// MainDomain = o.MainDomain,
// Major = o.Major,
// Occupation = o.Occupation,
// Resolving = o.Resolving,
// Traits = o.Traits,
// University = o.University,
// });
// });
// res.abilityDimension = new AbilityDimension()
// {
// reportItems = replist,
// linChart = new LinChart()
// {
// Name = ngresult.scalLists.Select(s => s.name).ToList(),
// Value = ngresult.scalLists.Select(s => (double)s.value).ToList()
// }
// };
//}
#endregion ++++++++++++++++++++++++++++
#region 职业锚+++++++++++++++++++++++++
var zhiyemao = await _studentScaleResultsRep.AsQueryable().AnyAsync(a => a.Id == query.JId);
if (zhiyemao)
{
var zhiyemaoinfo = await _customexplainRep.AsQueryable().Where(e => e.ScaleId == 339917685502021).ToListAsync();
var zhiye = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == query.NId);
var zyresult = JsonConvert.DeserializeObject(zhiye.Result);
var mbtitag = zhiyemaoinfo.FirstOrDefault(s => s.Tag == zyresult.Result.Trim());
res.opinionAbout = new OpinionAboutValue()
{
};
}
#endregion ++++++++++++++++++++++++++++
return res;
}
///
///获取报告关键词
///type=0 兴趣测评报告
///=1 性格测评报告
///=2 能力测评
///=3 学生考试考虑
///=4 学习风格
///=5 学习技能
///=6 SAS
///=7 SDS
///=8 SCL-90
///=9 MHT
///=-1 价值观
///=-2 留学咨询
///
///
///
[HttpGet("GetBusAIReportKeyWord")]
public async Task GetBusAIReportKeyWord([FromQuery] ReportAIPrompt prompt)
{
StringBuilder description = new StringBuilder();
description.Append("我的");
var result = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == prompt.Id);
if (result == null)
throw Oops.Oh("未找到该报告");
switch (prompt.Type)
{
case 0:
var jons = JsonConvert.DeserializeObject(result.Result);
string hladstr = string.Empty;
jons.scalLists.ForEach(c =>
{
hladstr += $"标签:{c.name}得分为:{c.value}";
});
description.Append($"霍兰德测评标签是{jons.Result},{hladstr}");
break;
case 1:
var mbtiresult = JsonConvert.DeserializeObject(result.Result);
string jsstr = string.Empty;
mbtiresult.scalLists.ForEach(c =>
{
jsstr += $"标签:{c.name}得分为:{c.value}";
});
description.Append($"MBTI测评标签是{mbtiresult.Result};{jsstr}");
break;
case 2:
var dyzn = JsonConvert.DeserializeObject(result.Result);
string dyznstr = string.Empty;
dyzn.scalLists.ForEach(c =>
{
dyznstr = $"标签({c.type}):{c.name}得分为:{c.value}";
});
description.Append($"多元智能测评结果是{dyznstr}");
break;
case 3:
var ksjl = JsonConvert.DeserializeObject>(result.Result);
description.Append($"学生考试焦虑测评分数是:{ksjl.First().Total}");
break;
case 4:
description.Append($"学习风格测评结果是{result.Result.ToJson()}");
break;
case 5:
var xxjn = JsonConvert.DeserializeObject>(result.Result).FirstOrDefault();
description.Append($"学习技能测评得分是{xxjn.Total}");
break;
case 6:
var sas = JsonConvert.DeserializeObject>(result.Result);
description.Append($"SAS焦虑测评分数是{sas.First().Total}");
break;
case 7:
var sds = JsonConvert.DeserializeObject>(result.Result);
description.Append($"SDS抑郁测测评分数是{sds.First().Total}");
break;
case 8:
var scl = JsonConvert.DeserializeObject>(result.Result);
description.Append($"SCL-90测测评分数是{scl.First().Total}");
break;
}
description.Append(",可以帮我分析一下给出的结果,给我一些好的建议吗?");
return description.ToString();
}
///
/// 获取学生量表结果值匹配解释
///
///
[HttpGet("GetCustomScaleExplains")]
public async Task GetCustomScaleExplains([FromQuery] BusCustomScaleExplainRequestDTO busCustom)
{
var result = new BusCustomScaleExplainDTO();
var single = await _studentScaleResultsRep.GetFirstAsync(r => r.Id == busCustom.CustomScaleId);
result.Title = single.Title;
result.TestTime = single.CreateTime.Value;
result.CustomName = _userManager.RealName;
switch (single.ScaleId)
{
case 339914746081349:// 兴趣测评[Holland]
break;
case 339916661030981://性格测评[MBTI]
break;
case 339916993155141://能力测评[MIDAS]
break;
case 339917685502021://职业锚价值观[Career Anchors]
break;
case 339926224392261://学习拖延
break;
case 339926358470725://厌学情绪评估
break;
case 339926424055877://学习风格
string tagdesc = "{\"tags\":[{\"name\":\"冲动型或灵感型\",\"code\":\"A\",\"features\":[\"反应快但精确性差\",\"急于求成,缺乏全面分析\",\"乐于交往但易自我中心\",\"宏观思考有优势\",\"阅读困难,易伴学习能力缺失\"],\"learning_performance\":[\"挑战新经验但易厌倦实施过程\",\"群体交往中试图成为中心\",\"复杂问题解决易片面化\"],\"notes\":\"低偏好者需尝试新鲜事物,培养整体视角\"},{\"name\":\"务实型或实用型\",\"code\":\"P\",\"features\":[\"渴望验证新想法的可行性\",\"脚踏实地,实用主义导向\",\"对做事技巧感兴趣\",\"对重复讨论易急躁\"],\"learning_performance\":[\"热衷实践验证\",\"偏好榜样示范学习\",\"重视外部有效性\"],\"notes\":\"低偏好者需加强范例学习,增加实践参与\"},{\"name\":\"沉思型或反思型\",\"code\":\"R\",\"features\":[\"反应慢但精确性高\",\"注重质量胜过速度\",\"细节加工策略\",\"复杂问题表现突出\"],\"learning_performance\":[\"阅读/记忆/推理能力强\",\"偏好观察后发言\",\"行为低调从容\"],\"notes\":\"低偏好者需培养反思习惯,强化经验总结\"},{\"name\":\"理论型\",\"code\":\"T\",\"features\":[\"系统化理论构建能力\",\"逻辑性强,追求完美\",\"冷静客观的分析倾向\"],\"learning_performance\":[\"关注原理与规律\",\"拒绝主观判断\",\"追求确定性\"],\"notes\":\"低偏好者需加强基础理论积累,关注行业新规\"}]}";
string style01 = "{\"tags\":[{\"title\":\"个人特质\",\"items\":[{\"title\":\"内在追求\",\"desc\":\"追求事物的内在含义并习惯亲身体验\"},{\"title\":\"学习方式\",\"desc\":\"善于通过听和与人分享思想来学习\"},{\"title\":\"沟通倾向\",\"desc\":\"喜欢与人沟通\"},{\"title\":\"思维特征\",\"desc\":\"善于从多个角度观察问题并形成独特观点\"}]},{\"title\":\"核心优势\",\"items\":[{\"title\":\"创造力\",\"desc\":\"富于创造力和想象力\"},{\"title\":\"职业追求\",\"desc\":\"在重大项目中追求自我成长和团队精神\"}]},{\"title\":\"典型提问\",\"items\":[{\"title\":\"探索本质\",\"desc\":\"最爱问:为什么?为什么不?\"}]},{\"title\":\"职业适配\",\"items\":[{\"title\":\"适合领域\",\"desc\":\"咨询、人事关系\"}]},{\"title\":\"策略偏好\",\"items\":[{\"title\":\"计划性\",\"desc\":\"预先计划和组织\"},{\"title\":\"反思性\",\"desc\":\"适时反思\"},{\"title\":\"自我管理\",\"desc\":\"自我管理\"},{\"title\":\"自我认知\",\"desc\":\"尊重自我评价\"},{\"title\":\"团队协作\",\"desc\":\"团队精神\"},{\"title\":\"集体智慧\",\"desc\":\"集体讨论\"},{\"title\":\"逻辑推理\",\"desc\":\"演绎推理\"}]}]}";
string style02 = "{\"tags\":[{\"title\":\"认知特质\",\"items\":[{\"title\":\"实证导向\",\"desc\":\"注重客观依据(实证)\"},{\"title\":\"思维学习方式\",\"desc\":\"善于通过分析和思考来学习\"},{\"title\":\"抽象学习偏好\",\"desc\":\"喜欢抽象概念并勤于学习\"},{\"title\":\"专家依赖倾向\",\"desc\":\"更愿意听从专家的意见而行事\"}]},{\"title\":\"核心能力\",\"items\":[{\"title\":\"模式构建\",\"desc\":\"创造概念和模式\"}]},{\"title\":\"价值追求\",\"items\":[{\"title\":\"内在驱动\",\"desc\":\"追求自我满足和智力认同\"}]},{\"title\":\"认知倾向\",\"items\":[{\"title\":\"本质探究\",\"desc\":\"最爱问:什么?\"}]},{\"title\":\"职业适配\",\"items\":[{\"title\":\"研究领域\",\"desc\":\"基础科学研究, 规划研究部\"}]},{\"title\":\"策略偏好\",\"items\":[{\"title\":\"计划性\",\"desc\":\"预先计划和组织\"},{\"title\":\"指导性\",\"desc\":\"指导他人工作\"},{\"title\":\"记录系统\",\"desc\":\"完备的记录(笔记、文档)\"},{\"title\":\"自我验证\",\"desc\":\"自我检查(测试)\"},{\"title\":\"专家咨询\",\"desc\":\"征询专家意见\"},{\"title\":\"建构性研究\",\"desc\":\"建构性研究\"}]}]}";
string style03 = "{\"tags\":[{\"title\":\"行动导向\",\"items\":[{\"title\":\"明确性需求\",\"desc\":\"非常希望知道自己具体应该做什么和怎么做\"},{\"title\":\"实践学习法\",\"desc\":\"在实践中检验理论从而完成自我学习\"},{\"title\":\"实例抽象化\",\"desc\":\"习惯通过实例来构造抽象概念\"},{\"title\":\"实践偏好\",\"desc\":\"喜欢动手实践和解决实际问题\"}]},{\"title\":\"核心能力\",\"items\":[{\"title\":\"实践专长\",\"desc\":\"喜好实践\"}]},{\"title\":\"价值追求\",\"items\":[{\"title\":\"现实一致性\",\"desc\":\"追求现实和将来的一致性\"}]},{\"title\":\"认知倾向\",\"items\":[{\"title\":\"行动探究\",\"desc\":\"最爱问:怎么做?\"}]},{\"title\":\"职业适配\",\"items\":[{\"title\":\"实践型职业\",\"desc\":\"工程师, 外科医生, 护士,技工\"}]},{\"title\":\"策略偏好\",\"items\":[{\"title\":\"实践优先\",\"desc\":\"实践工作\"},{\"title\":\"执行导向\",\"desc\":\"项目执行\"},{\"title\":\"自我评估\",\"desc\":\"自我评价\"},{\"title\":\"实验验证\",\"desc\":\"实验\"},{\"title\":\"逻辑推理\",\"desc\":\"演绎推理\"}]}]}";
string style04 = "{\"tags\":[{\"title\":\"探索特质\",\"items\":[{\"title\":\"功能探索欲\",\"desc\":\"希望知道当前物件的功能\"},{\"title\":\"试错学习法\",\"desc\":\"通常通过尝试、错误、再尝试的自我发现中学习\"},{\"title\":\"应变适应力\",\"desc\":\"喜欢变化,应变能力强,喜欢冒险\"},{\"title\":\"社交倾向\",\"desc\":\"容易与人相处,有时热心过头\"},{\"title\":\"直觉判断力\",\"desc\":\"往往不通过推理凭直觉就能做出正确的判断\"}]},{\"title\":\"核心能力\",\"items\":[{\"title\":\"执行专长\",\"desc\":\"执行能力强\"}]},{\"title\":\"价值追求\",\"items\":[{\"title\":\"结果导向\",\"desc\":\"追求把事情做成\"}]},{\"title\":\"认知倾向\",\"items\":[{\"title\":\"可能性探究\",\"desc\":\"最爱问:能变成什么样?\"}]},{\"title\":\"职业适配\",\"items\":[{\"title\":\"动态型职业\",\"desc\":\"市场, 销售\"}]},{\"title\":\"策略偏好\",\"items\":[{\"title\":\"执行导向\",\"desc\":\"具体项目执行\"},{\"title\":\"短期规划\",\"desc\":\"建立短期目标\"},{\"title\":\"人际互动\",\"desc\":\"与教师和同学互动\"},{\"title\":\"体能活动\",\"desc\":\"体力活动\"},{\"title\":\"环境变换\",\"desc\":\"学习环境和内容的变换\"},{\"title\":\"自主工作\",\"desc\":\"独立工作\"}]}]}";
var xxfg = JsonConvert.DeserializeObject(single.Result);
result.Result = xxfg.scalLists.Select(s => new xxfgItem()
{
name = s.name,
type = s.type,
value = s.value,
desc = s.value <= 10 ? "低偏好" : s.value >= 11 && s.value <= 25 ? "中等偏好" : s.value >= 26 && s.value <= 40 ? "强烈偏好" : "非常强烈偏好"
}).ToJson();
var stylevalue = FindMaxCombination(xxfg.scalLists);
var tagparse = JsonConvert.DeserializeObject(tagdesc);
switch (stylevalue)
{
case 1:
result.TagName = "务实型(P)+反思型(R)";
result.Suggestions = style01;
result.Description = tagparse.tags.Where(e => e.code == "P" || e.code == "R").ToJson();
break;
case 2:
result.TagName = "反思型(R)+理论型(T)";
result.Suggestions = style02;
result.Description = tagparse.tags.Where(e => e.code == "T" || e.code == "R").ToJson();
break;
case 3:
result.TagName = "理论型(T)+冲动型(A)";
result.Suggestions = style03;
result.Description = tagparse.tags.Where(e => e.code == "T" || e.code == "A").ToJson();
break;
case 4:
result.TagName = "冲动型(A)+务实型(P)";
result.Suggestions = style04;
result.Description = tagparse.tags.Where(e => e.code == "P" || e.code == "A").ToJson();
break;
}
break;
case 339926523736133://学生考试焦虑
var ksjl = JsonConvert.DeserializeObject>(single.Result).FirstOrDefault();
result.Total = ksjl.Total.ToString();
if (ksjl.Total < 12)
{
result.TagName = "低考试焦虑水平";
result.Description = "你的考试焦虑水平较低,展现出对考试的良好适应能力。你能以平稳的心态面对考试,不易受紧张情绪干扰,这种状态有助于你在考试中正常甚至超常发挥。建议继续保持对学习的专注和对考试的合理认知,避免因过度放松而忽视备考细节。";
result.Suggestions = "[{\"title\":\"考试减压技巧\",\"items\":[{\"title\":\"维持日常节奏\",\"description\":\"考前无需刻意改变作息,按平时的学习习惯复习,避免因 “过度准备” 产生额外压力。\"},{\"title\":\"积极心理暗示\",\"description\":\"偶尔提醒自己 “按步骤做好准备即可,结果顺其自然”,强化 “努力大于结果” 的心态。\"},{\"title\":\"适度身体放松\",\"description\":\"考前 1 天可进行轻度运动(如散步、瑜伽),或听轻音乐,但避免剧烈运动或熬夜。\"}]},{\"title\":\"应试技巧\",\"items\":[{\"title\":\"目标拆解\",\"description\":\"将考试目标细化为 '每道题认真读题' '合理分配答题时间' 等具体行动,而非纠结于 '必须考高分'\"},{\"title\":\"细节检查\",\"description\":\"发卷后先浏览全卷,标记难题题号,按 '先易后难' 顺序答题,避免因个别题目卡壳影响整体节奏。\"},{\"title\":\"考完即止\",\"description\":\"一科结束后不与他人对答案,专注下一科备考,避免因局部失误影响后续心态\"}]}]";
}
if (ksjl.Total >= 12 && ksjl.Total <= 20)
{
result.TagName = "中等考试焦虑水平";
result.Description = "你的考试焦虑处于中等水平,这是多数人面对重要考试时的正常反应。适度的焦虑能提升你的备考动力,但需注意避免过度放大考试的重要性,导致紧张情绪干扰发挥。通过针对性的调整策略,你可以将焦虑转化为积极的应试状态。";
result.Suggestions = "[{\"title\":\"考试减压技巧\",\"items\":[{\"title\":\"认知矫正训练\",\"description\":\"记录考前负面想法:用理性思维反驳(如:一次考试不能定义我的能力,我平时的积累才是基础)。|写下过去 3 次考试中做得好的细节(如'数学应用题步骤清晰'),增强自我效能感。\"},{\"title\":\"生理放松法\",\"items\":[{\"title\":\"4-7-8 呼吸法\",\"description\":\"吸气 4 秒→屏息 7 秒→呼气 8 秒,重复 3-5 次,快速平复紧张情绪。\"},{\"title\":\"身体扫描\",\"description\":\"考前一晚躺在床上,从脚趾到头顶逐部位有意识地放松,改善睡眠质量。\"}]},{\"title\":\"时间管理策略\",\"items\":[{\"title\":\"番茄工作法\",\"description\":\"用 '番茄工作法' 复习(25 分钟专注 + 5 分钟休息),避免长时间高强度学习导致疲劳累积。','考前 3 天制定 '倒计时计划',明确每天复习内容(如 '第一天:梳理物理公式;第二天:限时做英语阅读'),减少不确定性带来的焦虑。\"}]}]}]";
}
if (ksjl.Total > 20)
{
result.TagName = "较高考试焦虑水平";
result.Description = "你的考试焦虑水平较高,过度的紧张情绪已可能对学习效率和考试表现产生明显影响。请接纳这种状态的合理性(焦虑是对重要目标的自然反应),但不必被其控制。通过科学的干预方法和持续练习,你完全可以逐步降低焦虑对自己的困扰。";
result.Suggestions = "[{\"title\":\"深层认知调整\",\"items\":[{\"title\":\"考试≠威胁\",\"description\":\" 重构:用具体证据反驳 '灾难化思维'。例如:若担心 '考不好就考不上大学',可列出 '过去1年中,我通过努力提升了XX科目成绩'等事实,弱化 '一次考试决定命运”的绝对化认知。', '设定 '合理期待':将目标调整为 '比上次进步10分''完成80%的题目并保证正确率',而非不切实际的高标准。\"}]},{\"title\":\"专业放松训练\",\"items\":[{\"title\":\"正念冥想\",\"description\":\"每天花10分钟专注于呼吸或身体感受,当杂念出现时,不评判地将注意力拉回当下(可使用 '潮汐''Headspace'等APP辅助)。\"},{\"title\":\"渐进式肌肉放松\",\"description\":\"从手部开始,逐组肌肉先紧绷5秒再放松10秒,体验紧张 - 放松的差异,降低身体紧绷感。\"}]},{\"title\":\"环境与行为干预\",\"items\":[{\"title\":\"专注于自己的复习节奏\",\"description\":\"考前1周避免接触引发焦虑的外界刺激(如他人的 '考前抱怨''成绩攀比')。', '若 '临时抱佛脚”导致熬夜和疲惫,可尝试' \"},{\"title\":\"分段复习法\",\"description\":\"每天固定3个1小时高效时段(如早8-9点、下午3-4点、晚7-8点),配合充足睡眠(保证7小时以上)。\"}]},{\"title\":\"分阶段备考策略\",\"items\":[{\"title\":\"基础阶段(考前2-4周)\",\"description\":\"以课本和笔记为主,确保掌握80%的基础知识点,放弃偏题怪题,建立 '保底信心'。\"},{\"title\":\"强化阶段(考前1周)\",\"description\":\"用真题进行模拟考试,严格限时,熟悉考试流程(如发卷时间、填答题卡节奏),减少考场陌生感。\"},{\"title\":\"冲刺阶段(考前3天)\",\"description\":\"复习 '错题本'和 '知识点卡片',不学习新内容,避免增加认知负荷。\"}]},{\"title\":\"考场应急方案\",\"items\":[{\"title\":\"步骤分策略\",\"description\":\"若发卷后心跳加速、大脑空白,可先在草稿纸写 '我现在有点紧张,这很正常,做3次深呼吸就会好',通过书写疏导情绪。', '遇到完全不会的题目,采用 '步骤分策略':写下相关公式或已知条件,避免空白卷,同时暗示自己 '这题占分不多,其他题目做好更重要'。\"}]},{\"title\":\"长期心态建设\",\"items\":[{\"title\":\"平时增加暴露练习\",\"description\":\"主动参加小型测试或在课堂上发言,逐步适应 '被评价'的场景,降低对考试的敏感度。', '若自我调节困难,及时寻求帮助:向信任的老师、家长或心理咨询师倾诉,必要时接受专业心理干预(如系统脱敏法)。\"}]}]";
}
result.Result = single.Result;
break;
case 339926607917125://学习技能
var xxjn = JsonConvert.DeserializeObject>(single.Result).FirstOrDefault();
if (xxjn.Total < 137)
{
if (xxjn.Total < 80)
{
result.TagName = "学习技能水平很差";
}
if (xxjn.Total >= 80 && xxjn.Total <= 104)
{
result.TagName = "学习技能水平较差";
}
if (xxjn.Total >= 105 && xxjn.Total <= 136)
{
result.TagName = "学习技能水平一般";
}
result.Description = "你的学习技能水平较差,可能在学习方法、时间管理、情绪调节等方面存在一定的不足。建议你可以通过一些学习技巧和方法来提升自己的学习能力,比如制定合理的学习计划、掌握有效的记忆方法、培养良好的学习习惯等。";
result.Suggestions = "{\"succestions\":[{\"title\":\"改进学习方法建议\",\"items\":[{\"title\":\"预习\",\"description\":\"用快速略读法事先预习极多次, 但不要求完全懂\"},{\"title\":\"上课\",\"description\":\"(a) 用专心放轻松的方法听讲, 保持灵敏的心去听, 不主动要求自己全部听懂。(b) 除非特殊状况, 一定要作笔记, 笔记愈整洁明晰愈好(不要为了省钱将笔记记得密密麻麻的), 以利日后快、 慢速的复习。(c) 在老师停顿或转身抄黑板的时候, 迅速回想(最好口中默念出来) 老师刚刚讲的重点, 此种回想又可以叫潜意识迅速转极多次以消化之\"},{\"title\":\"家中复习\",\"description\":\"复习功课的第一步骤, 也是先快速略读多次, 有空的时候作一次详读之后(此时要在课本、 笔记上划出重点), 再多花一点时间回想上课的重点。 若因为晚上补习没有足够时间, 虽可以省掉详读, 但略读和回想一定要作。 记住不论如何忙, 最多三、 五天一定要将老师教过的部份, 作过一次详读(没有时间的话, 至少要作快速详读)\"},{\"title\":\"做作业\",\"description\":\"做作业之前( 必要时可以找一本比较完整的参考书来做, 其作业题通常比课本多很多), 要确定有没有先回想重点\"},{\"title\":\"复习以前的功课\",\"description\":\"每隔三五天最好翻开笔记本, 迅速的略读前一两个星期的功课。 有空的话, 将笔记本上划重点的部份出声念一遍\"},{\"title\":\"考前复习\",\"description\":\"和家中复习那一项差不多, 但要找出时间, 针对笔记上的重点发出声音教给一个假想的人或同学。 同时也要找一些例题和具有代表性的习题, 教一教这个假想人\"},{\"title\":\"考前猜题\",\"description\":\"想象自己是老师, 出一些与重点有关的题目。 不一定要真的去作出来(因为是自己出的题目, 若题目合理则本来就会做), 但可以将这一些题目和课本互相印证, 找出某几课中的真正重点和如何应用这些重点\"},{\"title\":\"考前保持最佳状态\",\"description\":\"(a) 考前做一些有代表性的例题和习题, 从这一些题目中回想重点, 回想时若发现忘了重点, 翻开笔记看一看那一部份重点就可。(b) 将笔记上的重点(或整理出的重点) 重复多次地看, 虽然不耐烦了还要再看, 过度50 %\"}]}]}";
}
if (xxjn.Total >= 137 && xxjn.Total <= 160)
{
result.TagName = "学习技能较好";
result.Description = "您在学习技能方面表现出色,展现出较强的自主学习能力、良好的学习习惯和高效的学习策略。能够主动规划学习任务,善于运用多种方法理解和巩固知识,在课堂内外表现出积极的参与度和问题解决能力,对学习过程有清晰的认知和调控能力。";
result.Suggestions = "{\"succestions\":[{\"title\":\"优势分析\",\"items\":[{\"title\":\"主动学习意识强\",\"description\":\"善于标记重点、归纳知识、主动提问,对学习内容有深入探究的意愿,例如在阅读和听讲时能提出个人观点,重视预习和复习,积极通过参考书、请教他人等方式解决问题\"},{\"title\":\"学习策略科学\",\"description\":\"能根据任务调整学习方法,合理规划时间(如考前计划复习),注重通过练习、总结图表等方式强化记忆和理解,善于在实践中应用知识(如实验操作有条理、联系生活实际)\"},{\"title\":\"自我管理能力突出\",\"description\":\"面对学习压力或疲劳时,能有效维持注意力、克服紧张情绪,及时调整状态,保持较高的学习效率\"},{\"title\":\"合作与反思能力良好\",\"description\":\"在交流中善于吸收他人经验,受挫时能分析原因、持续改进,形成良性学习循环\"}]},{\"title\":\"提升建议\",\"items\":[{\"title\":\"深化学习深度\",\"description\":[\"对已掌握的知识尝试跨学科整合,例如在学习专业内容时主动联系其他学科的原理或方法,培养综合思维\",\"针对公式、定理等,不仅满足于熟练运用,尝试探究其推导过程和底层逻辑,提升知识迁移能力\"]},{\"title\":\"优化时间管理\",\"description\":[\"制定更细致的长期学习计划,例如按月或学期规划拓展阅读、实践项目等,避免局限于课堂和作业\",\"针对“提前做好准备”的习惯,可尝试制定应急预案(如突发任务时的时间分配策略),增强计划灵活性\"]},{\"title\":\"强化输出与实践\",\"description\":[\"定期通过写作、讲解(如向他人分享学习心得)等方式输出知识,检验理解的完整性,例如将归纳的要点转化为思维导图或小论文\",\"积极参与课外实践(如小调查、实验设计),将理论知识与实际问题结合,提升解决复杂问题的能力\"]}]}]}";
}
if (xxjn.Total >= 161)
{
result.TagName = "学习技能优秀";
result.Suggestions = "{\"succestions\":[{\"title\":\"进阶建议\",\"items\":[{\"title\":\"发挥引领作用\",\"description\":[\"主动分享学习经验,例如组织学习小组、撰写学习技巧总结,在帮助他人的过程中深化自身理解\",\"针对“喜欢进一步思考或探究”的优势,可尝试参与科研小项目或学术讨论,培养创新思维\"]},{\"title\":\"培养全局视野\",\"description\":[\"从“掌握知识”向“构建知识体系”升级,梳理学科内的逻辑框架和不同学科间的联系,形成系统化认知\",\"关注学习目标与长期发展的关联,例如明确专业相关知识的实际应用场景,增强学习的目的性和内驱力\"]},{\"title\":\"突破舒适区\",\"description\":[\"挑战跨专业或难度较高的学习任务(如阅读非专业领域的经典著作),拓宽知识面和思维边界\",\"在解决难题时,尝试先独立探索多种解法,再对比他人思路,避免依赖现有方法,培养批判性思维\"]},{\"title\":\"保持反思与迭代\",\"description\":[\"建立学习日志,定期记录学习策略的效果和改进方向,例如每周总结一次“高效/低效学习时段”及原因\",\"关注认知科学或学习心理学知识,科学优化学习习惯,例如利用记忆曲线调整复习频率,提升学习效能\"]}]}]}";
}
result.Total = xxjn.Total.ToString();
result.Result = single.Result;
break;
case 340506604851269://SAS焦虑测评
var sas = JsonConvert.DeserializeObject>(single.Result).FirstOrDefault();
if (sas.Total < 50)
{
result.TagName = "无焦虑情况";
result.Description = "如果你的 SAS 焦虑量表得分显示无焦虑,那真的很棒!这意味着在目前阶段,你能够很好地应对学习和生活中的各种挑战,心态平稳且积极。日常的小烦恼不太会影响到你,能保持良好的情绪状态去享受校园时光,和同学愉快相处,专注投入到学习里。继续保持这样乐观向上的生活态度哦,未来也一定能轻松应对各种状况。";
}
if (sas.Total >= 50 && sas.Total <= 59)
{
result.TagName = "可能轻度焦虑";
result.Description = "当量表结果是轻度焦虑时,先别太紧张,这在高中生里其实挺常见的。它可能表示最近的学习任务、考试压力,或者和同学、老师的关系等,给你带来了一些小小的困扰,让你偶尔会感到有些不安。不过这种焦虑程度并不会对你的日常生活和学习造成严重阻碍。你可以尝试在课余时间多参加一些自己喜欢的活动,比如听音乐、运动一下,找朋友倾诉倾诉,把这些小烦恼释放出去,很快就能恢复活力满满的状态啦。";
}
if (sas.Total > 59 && sas.Total <= 69)
{
result.TagName = "可能中度焦虑";
result.Description = "若是处于中度焦虑水平,说明你可能在一段时间内承受了较多的压力,这些压力已经开始比较明显地影响到你的情绪和状态了。或许你在学习时难以集中注意力,睡眠质量也有所下降,心情常常感到烦躁。别担心,这是身体在提醒你需要重视当下的状况,调整一下节奏了。建议你可以和老师、家长沟通沟通,让他们了解你的感受,同时制定一个合理的学习和休息计划,给自己留出足够的放松时间,也可以考虑找学校的心理老师聊聊,他们能给你更专业的建议,帮助你缓解焦虑。";
}
if (sas.Total >= 70)
{
result.TagName = "可能重度焦虑";
result.Title = "要是量表结果显示重度焦虑,这真的很不容易,你一定在经历一段特别艰难的时期。这种程度的焦虑可能已经严重干扰到你的日常生活,比如日常的学习对你来说变得非常困难,食欲、睡眠都受到很大影响,情绪上常常处于低落、紧张的状态。请你一定要重视起来,不要一个人默默承受。立刻寻求专业帮助,比如去看心理医生,他们会根据你的具体情况提供专业的治疗方案。同时,告诉身边信任的人,无论是家人还是朋友,他们都会给予你关心和支持,陪你一起度过这个难关,你并不孤单。";
}
result.Total = sas.Total.ToString();
result.Result = single.Result;
break;
case 340506680250437://SDS抑郁测评
var sds = JsonConvert.DeserializeObject>(single.Result).FirstOrDefault();
double count = Math.Round(sds.Total * 1.25, 2, MidpointRounding.AwayFromZero);
if (count < 53)
{
result.TagName = "无抑郁情况";
result.Description = "倘若你的 SDS 抑郁量表得分表明无抑郁,这简直太棒啦!这表明现阶段你能从容应对高中生活里的风风雨雨,始终保持积极乐观的心态。在校园中,无论是繁重的课业,还是和同学间的小摩擦,都无法动摇你内心的阳光。你尽情享受着和小伙伴们的欢声笑语,全神贯注地投入学习,对未来充满了无限憧憬。希望你能一直将这份积极向上的生活态度延续下去,未来不管遇到什么,都能勇敢无畏、轻松化解。";
}
if (count > 53 && count <= 61)
{
result.TagName = "可能轻度抑郁";
result.Description = "当量表结果显示为轻度抑郁时,先别慌,在高中生群体里,这种情况并不少见。这可能意味着近期学习的压力、和朋友闹别扭,又或是家庭里一些小状况,给你的心情蒙上了一层薄薄的阴霾,让你偶尔会陷入情绪的低谷,感到有些沮丧。不过,这种程度的抑郁还不足以严重干扰你的日常生活与学习。你不妨在课余时间去操场跑跑步,让汗水带走烦恼;或是戴上耳机,沉浸在自己喜欢的音乐世界里;也可以跟知心好友坦诚倾诉,把心里的不愉快一股脑倒出来。相信通过这些方式,你很快就能重新找回往日的活力与快乐。";
}
if (count > 61 && count <= 71)
{
result.TagName = "可能中度抑郁";
result.Description = "要是处于中度抑郁状态,那就说明在过去的一段时间里,你承受了较大的压力,这些压力已经在明显地影响你的情绪和生活状态了。或许你会发现,学习时难以集中精力,原本轻松的题目如今也变得棘手起来;晚上躺在床上,翻来覆去难以入眠,睡眠质量大不如前;平日里,心情总是莫名地低落、烦躁,对很多曾经感兴趣的事情都提不起劲。别害怕,这其实是身体在向你发出信号,提醒你要关注当下的状态,及时做出调整。你可以试着跟老师、父母好好聊聊,让他们知晓你的内心感受,大家一起制定一个科学合理的学习和休息计划,保证自己有充足的放松时间。另外,学校的心理老师也是很好的倾诉对象,他们有着专业的知识和丰富的经验,能给你提供有效的建议,助你走出这片情绪的迷雾。";
}
if (count >= 72)
{
result.TagName = "可能重度抑郁";
result.Description = "如果量表结果显示重度抑郁,你真的太不容易了,此刻的你一定正深陷困境,承受着巨大的痛苦。这种程度的抑郁已经严重扰乱了你的日常生活,学习对你而言可能成了难以逾越的高山,每一个字、每一道题都仿佛在眼前模糊不清;食欲变得极其不稳定,要么毫无胃口,要么暴饮暴食;夜晚更是被失眠紧紧纠缠,黑暗中只剩无尽的孤独与绝望,情绪时刻被低落、紧张笼罩。请你务必高度重视起来,千万不要独自默默忍受这份痛苦。立即寻求专业的帮助,比如前往医院,找专业的心理医生进行诊断和治疗,他们会依据你的实际情况,量身定制专属的治疗方案。同时,勇敢地向身边信任的人敞开心扉,无论是父母温暖的怀抱,还是朋友坚定的陪伴,他们都会给予你最真挚的关心与支持,陪你一步步熬过这段至暗时光,你从来都不是一个人在战斗。";
}
result.Total = count.ToString();
result.Result = single.Result;
break;
case 340506852511813://中学生心理健康诊断自评(MHT)
break;
case 340507046379589://留学需求调研
break;
}
return result;
}
[NonAction]
private int FindMaxCombination(List data)
{
// 通过Name获取值(更直观)
var typeDict = data.ToDictionary(d => d.name, d => d.value);
// 计算组合值
int combo1 = typeDict["T"] + typeDict["A"]; // 理论型 + 冲动型
int combo2 = typeDict["A"] + typeDict["P"]; // 冲动型 + 务实型
int combo3 = typeDict["P"] + typeDict["R"]; // 务实型 + 沉思型
int combo4 = typeDict["R"] + typeDict["T"]; // 沉思型 + 理论型
// 找出最大值
int max = Math.Max(Math.Max(combo1, combo2), Math.Max(combo3, combo4));
//return (combo1 == max ? "理论型+冲动型" :
// combo2 == max ? "冲动型+务实型" :
// combo3 == max ? "务实型+沉思型" : "沉思型+理论型");
return (combo1 == max ? 3 :
combo2 == max ? 4 :
combo3 == max ? 1 : 2);
}
}
}