|
@@ -14,6 +14,7 @@ using Microsoft.Azure.Cosmos;
|
|
|
using TEAMModelOS.SDK.Models.Cosmos.Common;
|
|
|
|
|
|
using TEAMModelOS.Function;
|
|
|
+using static TEAMModelOS.SDK.Models.Cosmos.Student.StudentAnalysis;
|
|
|
|
|
|
namespace TEAMModelOS.CosmosDBTriggers
|
|
|
{
|
|
@@ -398,7 +399,7 @@ namespace TEAMModelOS.CosmosDBTriggers
|
|
|
var period = scInfo.period.Where(x => x.id.Equals(art.period.id))?.FirstOrDefault();
|
|
|
|
|
|
List<StudentArtResult> studentArtResults = new();
|
|
|
- string sql = $"SELECT value c FROM c where c.pk='ArtResult' ";
|
|
|
+ string sql = $"SELECT value c FROM c where c.pk='ArtResult'";
|
|
|
await foreach (var item in client.GetContainer(Constant.TEAMModelOS, Constant.Student)
|
|
|
.GetItemQueryIteratorSql<StudentArtResult>(queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"ArtResult-{art.id}") }))
|
|
|
{
|
|
@@ -697,20 +698,57 @@ namespace TEAMModelOS.CosmosDBTriggers
|
|
|
c.score
|
|
|
}),
|
|
|
});*/
|
|
|
- var quotaPercent = setting.quotas.Select(x => new
|
|
|
- {
|
|
|
- x.id,
|
|
|
- x.percent,
|
|
|
- score = x.children.Select(c => new
|
|
|
- {
|
|
|
- real = rs.results.Where(r => r.quotaId.Equals(c.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * c.percent * 0.01,
|
|
|
- score = c.children.Select(s => new
|
|
|
- {
|
|
|
- real = rs.results.Where(r => r.quotaId.Equals(s.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * s.percent * 0.01
|
|
|
- }).Sum(n => n.real) * c.percent * 0.01
|
|
|
- }).Sum(n => n.real + n.score) * x.percent * 0.01
|
|
|
- });
|
|
|
- double realScore = Math.Round((double)quotaPercent.Sum(c => c.score), 2);
|
|
|
+ /* var quotaPercent = setting.quotas.Select(x => new
|
|
|
+ {
|
|
|
+ x.id,
|
|
|
+ x.percent,
|
|
|
+ score = x.children.Select(c => new
|
|
|
+ {
|
|
|
+ realx = rs.results.Where(r => r.quotaId.Equals(c.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * c.percent * 0.01,
|
|
|
+ scorex = c.children.Select(s => new
|
|
|
+ {
|
|
|
+ realy = rs.results.Where(r => r.quotaId.Equals(s.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * s.percent * 0.01
|
|
|
+ }).Sum(n => n.realy) * c.percent * 0.01
|
|
|
+ }).Sum(n => n.realx + n.scorex) * x.percent * 0.01
|
|
|
+ });*/
|
|
|
+ double scoreAll = 0;
|
|
|
+ foreach (var quota in setting.quotas) {
|
|
|
+ if (quota.children.Count != 0) {
|
|
|
+ double score_2 = 0;
|
|
|
+ foreach (var quota_1 in quota.children) {
|
|
|
+
|
|
|
+ if (quota_1.children.Count != 0)
|
|
|
+ {
|
|
|
+ double score_3 = 0;
|
|
|
+ foreach (var quota_2 in quota_1.children)
|
|
|
+ {
|
|
|
+ foreach (var result in rs.results)
|
|
|
+ {
|
|
|
+ if (result.quotaId.Equals(quota_2.id) && result.subjectId.Equals(sc.subjectId) && result.score > -1)
|
|
|
+ {
|
|
|
+
|
|
|
+ score_3 += result.score * quota_2.percent * 0.01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ score_2 += score_3 * quota_1.percent * 0.01;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ foreach (var result in rs.results)
|
|
|
+ {
|
|
|
+ if (result.quotaId.Equals(quota_1.id) && result.subjectId.Equals(sc.subjectId) && result.score > -1)
|
|
|
+ {
|
|
|
+
|
|
|
+ score_2 += result.score * quota_1.percent * 0.01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ scoreAll += score_2 * quota.percent * 0.01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ double realScore = Math.Round(scoreAll, 2);
|
|
|
sc.score = realScore;
|
|
|
//}
|
|
|
}
|