|
@@ -1517,19 +1517,24 @@ namespace TEAMModelOS.Controllers
|
|
|
ExamInfo info = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ExamInfo>(id.ToString(), new PartitionKey($"Exam-{code}"));
|
|
|
List<ExamClassResult> classResults = new();
|
|
|
List<dynamic> attr = new List<dynamic>();
|
|
|
- //List<dynamic> all = new List<dynamic>();
|
|
|
var record = await redisClient.HashGetAllAsync($"Exam:Scoring:{id}-{subjectId}");
|
|
|
foreach (var rcd in record)
|
|
|
{
|
|
|
var value = JsonDocument.Parse(rcd.Value.ToString());
|
|
|
- value.RootElement.TryGetProperty("tmdId", out JsonElement tmdId);
|
|
|
- if (tId.ToString().Equals(tmdId.ToString()))
|
|
|
+ value.RootElement.TryGetProperty("info", out JsonElement json);
|
|
|
+ List<tmdInfo> tmds = json.ToObject<List<tmdInfo>>();
|
|
|
+ foreach (tmdInfo tmd in tmds)
|
|
|
{
|
|
|
- attr.Add(new { stuId = rcd.Name.ToString(), info = value });
|
|
|
+ if (!string.IsNullOrEmpty(tmd.tmdId) && tmd.tmdId.Equals(tId.ToString()))
|
|
|
+ {
|
|
|
+ attr.Add(new { stuId = rcd.Name.ToString(), info = value });
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ /* if (tId.ToString().Equals(tmdId.ToString()))
|
|
|
+ {
|
|
|
+ attr.Add(new { stuId = rcd.Name.ToString(), info = value });
|
|
|
+ }*/
|
|
|
}
|
|
|
int index = 0;
|
|
|
foreach (ExamSubject subject in info.subjects)
|
|
@@ -1576,15 +1581,29 @@ namespace TEAMModelOS.Controllers
|
|
|
foreach (var rcd in record)
|
|
|
{
|
|
|
var value = JsonDocument.Parse(rcd.Value.ToString());
|
|
|
- value.RootElement.TryGetProperty("tmdId", out JsonElement tmdId);
|
|
|
- if (tId.ToString().Equals(tmdId.ToString()))
|
|
|
+ value.RootElement.TryGetProperty("info", out JsonElement json);
|
|
|
+ List<tmdInfo> tmds = json.ToObject<List<tmdInfo>>();
|
|
|
+ foreach (tmdInfo tmd in tmds)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(tmd.tmdId) && tmd.tmdId.Equals(tId.ToString()))
|
|
|
+ {
|
|
|
+ recs.Add(new { stuId = rcd.Name.ToString(), info = value });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (string.IsNullOrEmpty(tmd.tmdId))
|
|
|
+ {
|
|
|
+ all.Add(new { stuId = rcd.Name.ToString(), ans = value });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*if (tId.ToString().Equals(tmdId.ToString()))
|
|
|
{
|
|
|
recs.Add(new { stuId = rcd.Name.ToString(), ans = value });
|
|
|
}
|
|
|
if (string.IsNullOrEmpty(tmdId.ToString()))
|
|
|
{
|
|
|
all.Add(new { stuId = rcd.Name.ToString(), ans = value });
|
|
|
- }
|
|
|
+ }*/
|
|
|
}
|
|
|
if (requert.TryGetProperty("stuId", out JsonElement stuId))
|
|
|
{
|
|
@@ -1594,7 +1613,17 @@ namespace TEAMModelOS.Controllers
|
|
|
//保证此学生与该老师绑定
|
|
|
value.RootElement.TryGetProperty("ans", out JsonElement blob);
|
|
|
value.RootElement.TryGetProperty("score", out JsonElement sc);
|
|
|
- await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", stuId.ToString(), new { ans = blob, score = sc, tmdId = tId }.ToJsonString());
|
|
|
+ value.RootElement.TryGetProperty("info", out JsonElement json);
|
|
|
+ List<tmdInfo> tmds = json.ToObject<List<tmdInfo>>();
|
|
|
+ foreach (tmdInfo tmd in tmds)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(tmd.tmdId))
|
|
|
+ {
|
|
|
+ tmd.tmdId = tId.ToString();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", stuId.ToString(), new { info = tmds, ans = blob, score = sc }.ToJsonString());
|
|
|
|
|
|
return Ok(value);
|
|
|
}
|
|
@@ -1621,8 +1650,18 @@ namespace TEAMModelOS.Controllers
|
|
|
json.RootElement.TryGetProperty("ans", out JsonElement ans);
|
|
|
ans.TryGetProperty("score", out JsonElement sc);
|
|
|
ans.TryGetProperty("ans", out JsonElement blob);
|
|
|
+ ans.TryGetProperty("info", out JsonElement element);
|
|
|
+ List<tmdInfo> tmds = element.ToObject<List<tmdInfo>>();
|
|
|
+ foreach (tmdInfo tmd in tmds)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(tmd.tmdId))
|
|
|
+ {
|
|
|
+ tmd.tmdId = tId.ToString();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
//选取后,缓存池相应的减少,以便于分配给其他的老师
|
|
|
- await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString(), new { ans = blob, score = sc, tmdId = tId }.ToJsonString());
|
|
|
+ await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString(), new { info = tmds, ans = blob, score = sc }.ToJsonString());
|
|
|
return Ok(item);
|
|
|
}
|
|
|
|
|
@@ -1686,29 +1725,40 @@ namespace TEAMModelOS.Controllers
|
|
|
if (!requert.TryGetProperty("stuId", out JsonElement sId)) return BadRequest();
|
|
|
if (!requert.TryGetProperty("subjectId", out JsonElement subjectId)) return BadRequest();
|
|
|
if (!requert.TryGetProperty("tmdId", out JsonElement tId)) return BadRequest();
|
|
|
- if (!requert.TryGetProperty("score", out JsonElement score)) return BadRequest();
|
|
|
+ if (!requert.TryGetProperty("score", out JsonElement score)) return BadRequest();
|
|
|
if (!requert.TryGetProperty("count", out JsonElement count)) return BadRequest();
|
|
|
if (!requert.TryGetProperty("code", out JsonElement code)) return BadRequest();
|
|
|
//if (!requert.TryGetProperty("mark", out JsonElement mark)) return BadRequest();
|
|
|
//requert.TryGetProperty("mark", out JsonElement mark);
|
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
|
- var redisClient = _azureRedis.GetRedisClient(8);
|
|
|
+ var redisClient = _azureRedis.GetRedisClient(8);
|
|
|
List<ExamClassResult> classResults = new();
|
|
|
List<dynamic> recs = new List<dynamic>();
|
|
|
var record = await redisClient.HashGetAllAsync($"Exam:Scoring:{id}-{subjectId}");
|
|
|
foreach (var rcd in record)
|
|
|
{
|
|
|
var values = JsonDocument.Parse(rcd.Value.ToString());
|
|
|
- values.RootElement.TryGetProperty("tmdId", out JsonElement tmdId);
|
|
|
- if (tId.ToString().Equals(tmdId.ToString()))
|
|
|
+ values.RootElement.TryGetProperty("info", out JsonElement json);
|
|
|
+ List<tmdInfo> tmdInfos = json.ToObject<List<tmdInfo>>();
|
|
|
+ foreach (tmdInfo tmd in tmdInfos)
|
|
|
{
|
|
|
- recs.Add(new { stuId = rcd.Name.ToString(), ans = values });
|
|
|
+ if (!string.IsNullOrEmpty(tmd.tmdId) && tmd.tmdId.Equals(tId.ToString()))
|
|
|
+ {
|
|
|
+ recs.Add(new { stuId = rcd.Name.ToString(), info = values });
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
+ /*if (tId.ToString().Equals(tmdId.ToString()))
|
|
|
+ {
|
|
|
+ recs.Add(new { stuId = rcd.Name.ToString(), ans = values });
|
|
|
+ }*/
|
|
|
}
|
|
|
var stuAns = await redisClient.HashGetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString());
|
|
|
var value = JsonDocument.Parse(stuAns.ToString());
|
|
|
value.RootElement.TryGetProperty("ans", out JsonElement blob);
|
|
|
- value.RootElement.TryGetProperty("mark", out JsonElement element);
|
|
|
+ value.RootElement.TryGetProperty("info", out JsonElement element);
|
|
|
+ List<tmdInfo> tmds = element.ToObject<List<tmdInfo>>();
|
|
|
+
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
if (requert.TryGetProperty("mark", out JsonElement mark))
|
|
|
{
|
|
@@ -1718,12 +1768,30 @@ namespace TEAMModelOS.Controllers
|
|
|
builder.Append(sId).Append("mark").Append("/");
|
|
|
builder.Append("ans.json");
|
|
|
await _azureStorage.UploadFileByContainer(code.ToString(), mark.ToJsonString(), "exam", builder.ToString(), false);
|
|
|
- await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString(), new { ans = blob, score = score, tmdId = tId, mark = builder.ToString() }.ToJsonString());
|
|
|
+ foreach (tmdInfo tmd in tmds)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(tmd.tmdId))
|
|
|
+ {
|
|
|
+ tmd.tmdId = tId.ToString();
|
|
|
+ tmd.mark = builder.ToString();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString(), new { info = tmds, ans = blob, score = score }.ToJsonString());
|
|
|
}
|
|
|
- else {
|
|
|
- await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString(), new { ans = blob, score = score, tmdId = tId, mark = element }.ToJsonString());
|
|
|
- }
|
|
|
-
|
|
|
+ else
|
|
|
+ {
|
|
|
+ foreach (tmdInfo tmd in tmds)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(tmd.tmdId))
|
|
|
+ {
|
|
|
+ tmd.tmdId = tId.ToString();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ await redisClient.HashSetAsync($"Exam:Scoring:{id}-{subjectId}", sId.ToString(), new { info = tmds, ans = blob, score = score }.ToJsonString());
|
|
|
+ }
|
|
|
+
|
|
|
if (recs.Count == count.GetInt32())
|
|
|
{
|
|
|
await foreach (var item in client.GetContainer("TEAMModelOS", "Common").GetItemQueryIterator<ExamClassResult>(
|