|
@@ -64,12 +64,13 @@ namespace TEAMModelFunction
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- var message = new ServiceBusMessage(new { id = input[0].Id, name = "Exam", code = code }.ToJsonString());
|
|
|
- message.Properties.Add("name", "Exam");
|
|
|
+
|
|
|
List<ChangeRecord> records = await _azureStorage.FindListByDict<ChangeRecord>(new Dictionary<string, object>() { { "RowKey", input[0].Id }, { "PartitionKey", info.progress } });
|
|
|
//ChangeRecord record = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ChangeRecord>(input[0].Id, new Azure.Cosmos.PartitionKey($"{info.progress}"));
|
|
|
switch (info.progress) {
|
|
|
case "pending":
|
|
|
+ var message = new ServiceBusMessage(new { id = input[0].Id, progress = "going", code = code }.ToJsonString());
|
|
|
+ message.Properties.Add("name", "Exam");
|
|
|
if (records.Count> 0)
|
|
|
{
|
|
|
await _serviceBus.GetServiceBusClient().cancelMessage("active-task", records[0].sequenceNumber);
|
|
@@ -84,7 +85,8 @@ namespace TEAMModelFunction
|
|
|
{
|
|
|
RowKey = input[0].Id,
|
|
|
PartitionKey = "pending",
|
|
|
- sequenceNumber = start
|
|
|
+ sequenceNumber = start,
|
|
|
+ msgId = message.MessageId
|
|
|
};
|
|
|
await _azureStorage.Save<ChangeRecord>(changeRecord);
|
|
|
//await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(changeRecord, new Azure.Cosmos.PartitionKey($"{changeRecord.code}"));
|
|
@@ -126,15 +128,17 @@ namespace TEAMModelFunction
|
|
|
result.studentScores.Add(ansPoint);
|
|
|
}
|
|
|
}
|
|
|
- result.progress = info.progress;
|
|
|
+ //result.progress = info.progress;
|
|
|
result.school = info.school;
|
|
|
await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(result, new Azure.Cosmos.PartitionKey($"{result.code}"));
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+ var messageEnd = new ServiceBusMessage(new { id = input[0].Id, progress = "finish", code = code }.ToJsonString());
|
|
|
+ messageEnd.Properties.Add("name", "Exam");
|
|
|
if (records.Count > 0)
|
|
|
{
|
|
|
- long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", message, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
+ long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageEnd, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
await _serviceBus.GetServiceBusClient().cancelMessage("active-task", records[0].sequenceNumber);
|
|
|
records[0].sequenceNumber = end;
|
|
|
await _azureStorage.SaveOrUpdate<ChangeRecord>(records[0]);
|
|
@@ -142,12 +146,13 @@ namespace TEAMModelFunction
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", message, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
+ long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageEnd, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
ChangeRecord changeRecord = new ChangeRecord
|
|
|
{
|
|
|
RowKey = input[0].Id,
|
|
|
PartitionKey = "going",
|
|
|
- sequenceNumber = end
|
|
|
+ sequenceNumber = end,
|
|
|
+ msgId = messageEnd.MessageId
|
|
|
};
|
|
|
await _azureStorage.Save<ChangeRecord>(changeRecord);
|
|
|
//await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(changeRecord, new Azure.Cosmos.PartitionKey($"{changeRecord.code}"));
|
|
@@ -158,27 +163,18 @@ namespace TEAMModelFunction
|
|
|
for (int j = 0; j < info.subjects.Count; j++)
|
|
|
{
|
|
|
ExamResult result = new ExamResult();
|
|
|
- result.ttl = -1;
|
|
|
- result.pk = typeof(ExamResult).Name;
|
|
|
- result.code = "ExamResult-" + info.school;
|
|
|
- result.school = info.school;
|
|
|
- result.id = Guid.NewGuid().ToString();
|
|
|
- result.examId = info.id;
|
|
|
- result.subjectId = info.subjects[j].id;
|
|
|
- result.year = info.year;
|
|
|
- result.paper = info.papers[j];
|
|
|
- result.point = info.papers[j].point;
|
|
|
- result.scope = info.scope;
|
|
|
- result.name = info.name;
|
|
|
- //result.time
|
|
|
-
|
|
|
//人数总和
|
|
|
int Count = 0;
|
|
|
int m = 0;
|
|
|
List<ClassRange> classRanges = new List<ClassRange>();
|
|
|
foreach (ExamClassResult classResult in examClassResults)
|
|
|
{
|
|
|
- if (classResult.subjectId.Equals(info.subjects[j].id)) {
|
|
|
+ if (classResult.subjectId.Equals(info.subjects[j].id))
|
|
|
+ {
|
|
|
+ foreach (List<double> scores in classResult.studentScores)
|
|
|
+ {
|
|
|
+ result.studentScores.Add(scores);
|
|
|
+ }
|
|
|
//处理班级信息
|
|
|
ClassRange range = new ClassRange();
|
|
|
range.id = classResult.info.id;
|
|
@@ -203,27 +199,36 @@ namespace TEAMModelFunction
|
|
|
foreach (string id in classResult.studentIds)
|
|
|
{
|
|
|
result.studentIds.Add(id);
|
|
|
- }
|
|
|
- foreach (List<double> scores in classResult.studentScores)
|
|
|
- {
|
|
|
- result.studentScores.Add(scores);
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
result.classes = classRanges;
|
|
|
+ result.ttl = -1;
|
|
|
+ result.pk = typeof(ExamResult).Name;
|
|
|
+ result.code = "ExamResult-" + info.school;
|
|
|
+ result.school = info.school;
|
|
|
+ result.id = Guid.NewGuid().ToString();
|
|
|
+ result.examId = info.id;
|
|
|
+ result.subjectId = info.subjects[j].id;
|
|
|
+ result.year = info.year;
|
|
|
+ result.paper = info.papers[j];
|
|
|
+ result.point = info.papers[j].point;
|
|
|
+ result.scope = info.scope;
|
|
|
+ result.name = info.name;
|
|
|
+ //result.time
|
|
|
await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").CreateItemAsync(result, new Azure.Cosmos.PartitionKey($"ExamResult-{result.school}"));
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
|
case "Vote":
|
|
|
- Vote vote = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<Vote>(input[0].Id, new Azure.Cosmos.PartitionKey($"{code}"));
|
|
|
- var messageVote = new ServiceBusMessage(new { id = input[0].Id, name = "Vote", code = code }.ToJsonString());
|
|
|
- messageVote.Properties.Add("name", "Vote");
|
|
|
+ Vote vote = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<Vote>(input[0].Id, new Azure.Cosmos.PartitionKey($"{code}"));
|
|
|
List<ChangeRecord> voteRecords = await _azureStorage.FindListByDict<ChangeRecord>(new Dictionary<string, object>() { { "RowKey", input[0].Id }, { "PartitionKey", vote.progress } });
|
|
|
//ChangeRecord voteRecord = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ChangeRecord>(input[0].Id, new Azure.Cosmos.PartitionKey($"{vote.progress}"));
|
|
|
switch (vote.progress) {
|
|
|
case "pending":
|
|
|
+ var messageVote = new ServiceBusMessage(new { id = input[0].Id, progress = "going", code = code }.ToJsonString());
|
|
|
+ messageVote.Properties.Add("name", "Vote");
|
|
|
if (voteRecords.Count > 0)
|
|
|
{
|
|
|
long start = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageVote, DateTimeOffset.FromUnixTimeMilliseconds(stime));
|
|
@@ -239,16 +244,19 @@ namespace TEAMModelFunction
|
|
|
{
|
|
|
RowKey = input[0].Id,
|
|
|
PartitionKey = "pending",
|
|
|
- sequenceNumber = start
|
|
|
+ sequenceNumber = start,
|
|
|
+ msgId = messageVote.MessageId
|
|
|
};
|
|
|
await _azureStorage.Save<ChangeRecord>(changeRecord);
|
|
|
//await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(changeRecord, new Azure.Cosmos.PartitionKey($"{changeRecord.code}"));
|
|
|
}
|
|
|
break;
|
|
|
case "going":
|
|
|
+ var messageVoteEnd = new ServiceBusMessage(new { id = input[0].Id, progress = "finish", code = code }.ToJsonString());
|
|
|
+ messageVoteEnd.Properties.Add("name", "Vote");
|
|
|
if (voteRecords.Count > 0)
|
|
|
{
|
|
|
- long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageVote, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
+ long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageVoteEnd, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
await _serviceBus.GetServiceBusClient().cancelMessage("active-task", voteRecords[0].sequenceNumber);
|
|
|
voteRecords[0].sequenceNumber = end;
|
|
|
await _azureStorage.SaveOrUpdate<ChangeRecord>(voteRecords[0]);
|
|
@@ -256,12 +264,13 @@ namespace TEAMModelFunction
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageVote, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
+ long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageVoteEnd, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
ChangeRecord changeRecord = new ChangeRecord
|
|
|
{
|
|
|
RowKey = input[0].Id,
|
|
|
PartitionKey = "going",
|
|
|
- sequenceNumber = end
|
|
|
+ sequenceNumber = end,
|
|
|
+ msgId = messageVoteEnd.MessageId
|
|
|
};
|
|
|
await _azureStorage.Save<ChangeRecord>(changeRecord);
|
|
|
//await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(changeRecord, new Azure.Cosmos.PartitionKey($"{changeRecord.code}"));
|
|
@@ -270,9 +279,7 @@ namespace TEAMModelFunction
|
|
|
}
|
|
|
break;
|
|
|
case "Survey":
|
|
|
- Survey survey = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<Survey>(input[0].Id, new Azure.Cosmos.PartitionKey($"{code}"));
|
|
|
- var messageSurvey = new ServiceBusMessage(new { id = input[0].Id, name = "Survey", code = code }.ToJsonString());
|
|
|
- messageSurvey.Properties.Add("name", "Survey");
|
|
|
+ Survey survey = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<Survey>(input[0].Id, new Azure.Cosmos.PartitionKey($"{code}"));
|
|
|
//messageSurvey.ScheduledEnqueueTime = DateTimeOffset.FromUnixTimeMilliseconds(stime);
|
|
|
//string msgid = messageSurvey.MessageId;
|
|
|
List<ChangeRecord> changeRecords = await _azureStorage.FindListByDict<ChangeRecord>(new Dictionary<string, object>() { { "RowKey", input[0].Id },{"PartitionKey", survey.progress} });
|
|
@@ -280,6 +287,8 @@ namespace TEAMModelFunction
|
|
|
switch (survey.progress)
|
|
|
{
|
|
|
case "pending":
|
|
|
+ var messageSurvey = new ServiceBusMessage(new { id = input[0].Id, progress = "going", code = code }.ToJsonString());
|
|
|
+ messageSurvey.Properties.Add("name", "Survey");
|
|
|
if (changeRecords.Count > 0)
|
|
|
{
|
|
|
await _serviceBus.GetServiceBusClient().cancelMessage("active-task", changeRecords[0].sequenceNumber);
|
|
@@ -295,28 +304,32 @@ namespace TEAMModelFunction
|
|
|
{
|
|
|
RowKey = input[0].Id,
|
|
|
PartitionKey = "pending",
|
|
|
- sequenceNumber = start
|
|
|
+ sequenceNumber = start,
|
|
|
+ msgId = messageSurvey.MessageId
|
|
|
};
|
|
|
await _azureStorage.Save<ChangeRecord>(changeRecord);
|
|
|
//await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(changeRecord, new Azure.Cosmos.PartitionKey($"{changeRecord.code}"));
|
|
|
}
|
|
|
break;
|
|
|
case "going":
|
|
|
+ var messageSurveyEnd = new ServiceBusMessage(new { id = input[0].Id, progress = "finish", code = code }.ToJsonString());
|
|
|
+ messageSurveyEnd.Properties.Add("name", "Survey");
|
|
|
if (changeRecords.Count > 0)
|
|
|
{
|
|
|
- long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageSurvey, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
+ long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageSurveyEnd, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
await _serviceBus.GetServiceBusClient().cancelMessage("active-task", changeRecords[0].sequenceNumber);
|
|
|
changeRecords[0].sequenceNumber = end;
|
|
|
await _azureStorage.SaveOrUpdate<ChangeRecord>(changeRecords[0]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageSurvey, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
+ long end = await _serviceBus.GetServiceBusClient().SendScheduleMessageAsync("active-task", messageSurveyEnd, DateTimeOffset.FromUnixTimeMilliseconds(etime));
|
|
|
ChangeRecord changeRecord = new ChangeRecord
|
|
|
{
|
|
|
RowKey = input[0].Id,
|
|
|
PartitionKey = "going",
|
|
|
- sequenceNumber = end
|
|
|
+ sequenceNumber = end,
|
|
|
+ msgId = messageSurveyEnd.MessageId
|
|
|
};
|
|
|
await _azureStorage.Save<ChangeRecord>(changeRecord);
|
|
|
//await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(changeRecord, new Azure.Cosmos.PartitionKey($"{changeRecord.code}"));
|