| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273 |
- // Fill out your copyright notice in the Description page of Project Settings.
- #include "MyBlueprintFunctionLibrary.h"
- #include "JsonUtilities/Public/JsonUtilities.h"
- #include "Runtime/Json/Public/Serialization/JsonReader.h"
- #include "Misc/DateTime.h"
- #include "Misc/Timespan.h"
- #include <Runtime/Engine/Classes/Kismet/KismetMathLibrary.h>
- FString UMyBlueprintFunctionLibrary::MyText()
- {
- int64 StartTimestamp = 1629431914;
- //int64 EndTimestamp = 1629393979;
- FDateTime StartTime = UnixTimestampToDateTime(StartTimestamp);
- //FTimespan Duration = FTimespan(8, 0, 0);
- StartTime = StartTime + (FDateTime::Now()-FDateTime::UtcNow());
- //FDateTime EndTime = UnixTimestampToDateTime(EndTimestamp);
- UE_LOG(LogTemp, Log, TEXT("StartTime======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- //UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- //FDateTime NowTime = FDateTime::UtcNow();
- //UE_LOG(LogTemp, Log, TEXT("Now======%s"), *NowTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- //获取时间戳
- //int64 NowTimestamp = NowTime.ToUnixTimestamp();
- //UE_LOG(LogTemp, Log, TEXT("%d"), NowTimestamp);
- //EndTime = StartTime+ FTimespan::FromSeconds(30);
- //UE_LOG(LogTemp, Log, TEXT("TimeUsed======%d"), (EndTime - StartTime).GetSeconds());
- /*UE_LOG(LogTemp, Log, TEXT("StartTime1======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("StartTimestamp======%d"), DateTimeToUnixTimestamp(StartTime));
- StartTime = UnixTimestampToDateTime(DateTimeToUnixTimestamp(StartTime));
- UE_LOG(LogTemp, Log, TEXT("StartTime2======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
-
- UE_LOG(LogTemp, Log, TEXT("TimeUsed1======%d"), (EndTime - StartTime).GetSeconds());*/
- return TEXT("MyTest");
- }
- FDateTime UMyBlueprintFunctionLibrary::UnixTimestampToDateTime(int64 UnixTime)
- {
- FDateTime Time = FDateTime::FromUnixTimestamp(UnixTime);
- return Time;
- }
- int64 UMyBlueprintFunctionLibrary::DateTimeToUnixTimestamp(FDateTime DateTime)
- {
- int64 Timestamp = DateTime.ToUnixTimestamp();
- return Timestamp;
- }
- int32 UMyBlueprintFunctionLibrary::GetCurrentIndex(FString RawDataJson)
- {
- //UE_LOG(LogTemp, Log, TEXT("RawDataJson=%s"), *RawDataJson);
- int32 CurrentIndex = 0;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader2 = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader2, JsonObjectValue))
- {
- CurrentIndex = (JsonObjectValue).Num();
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- double EndTimeStamp = jsonMember->GetIntegerField(TEXT("EndTime"));
- //UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
- if (EndTimeStamp == 0)
- {
- CurrentIndex = i;
- break;
- }
- }
- }
- return CurrentIndex;
- }
- FString UMyBlueprintFunctionLibrary::GetCallBackJsonStr(FString RawDataJson)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- FString JsonIDStr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- double Code = JsonRootObject->GetNumberField(TEXT("Code"));
- if (Code != 100)
- {
- return "";
- }
- JsonObjectPtr JsonExamObject = JsonRootObject->GetObjectField(TEXT("Exam"));
- JsonIDStr = JsonExamObject->GetStringField(TEXT("ScoreStep"));
- return JsonIDStr;
- }
- return "";
- }
- FString UMyBlueprintFunctionLibrary::GetTempScoresStr(FString RawDataJson)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- FString JsonIDStr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- const TArray< TSharedPtr<FJsonValue> > *JsonArrayValue;
- if (JsonRootObject->TryGetArrayField(TEXT("TempScores"), JsonArrayValue)) {
-
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&JsonIDStr);
- FJsonSerializer::Serialize(*JsonArrayValue, Writer);
- //UE_LOG(LogTemp, Log, TEXT("ScoresStr=%s"), *JsonIDStr);
- return JsonIDStr;
- }
- }
- return TEXT("");
- }
- FString UMyBlueprintFunctionLibrary::CreateExamJson(FString UserID, FString ExamId, FString DataJsonStr)
- {
- //FString DataJson = TEXT("[{\"Seq\":1,\"Title\":\"原理认知\",\"StartTime\":0,\"EndTime\":0,\"TimeUsed\":0,\"ExpectTime\":40,\"MaxScore\":11,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":2,\"Title\":\"实景考察\",\"StartTime\":0,\"EndTime\":0,\"TimeUsed\":0,\"ExpectTime\":10,\"MaxScore\":6,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":3,\"Title\":\"设备认知\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":5,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":4,\"Title\":\"设备搭建\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":5,\"MaxScore\":2,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":5,\"Title\":\"设备连接\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":5,\"MaxScore\":2,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":6,\"Title\":\"线上建组\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":2,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":7,\"Title\":\"研读分析剧本\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":8,\"Title\":\"线上互动研讨会\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":9,\"Title\":\"自主空间设计\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":10,\"Title\":\"自主设计气氛图\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":11,\"Title\":\"虚拟资产创作\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":13,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":12,\"Title\":\"虚景空间设计\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":13,\"Title\":\"实景空间设计\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":14,\"Title\":\"虚景实景拟合\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":15,\"Title\":\"光线调节\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":16,\"Title\":\"选择摄影画面\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":17,\"Title\":\"撰写报告\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":30,\"MaxScore\":1,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":18,\"Title\":\"气氛图互评\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":11,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":19,\"Title\":\"空间设计互评\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":11,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":20,\"Title\":\"会议纪要互评\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":11,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"},{\"Seq\":21,\"Title\":\"实验报告互评\",\"StartTime\":0,\"EndTime\":0,\"ExpectTime\":10,\"MaxScore\":21,\"Score\":-1,\"RepeatCount\":0,\"Evaluation\":\"\",\"ScoringModel\":\"赋分模型\",\"Remarks\":\"备注\"}]");
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- JsonRootObject->SetStringField(TEXT("Score"), DataJsonStr);
- JsonRootObject->SetNumberField(TEXT("StartTime"), 0);
- JsonRootObject->SetNumberField(TEXT("EndTime"), 0);
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("OutPutString======%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::ParseExamIdFromCreateExam(FString RawDataJson)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- //UE_LOG(LogTemp, Log, TEXT("RawDataJson=%s"), *RawDataJson);
- FString JsonIDStr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- JsonObjectPtr JsonExamObject = JsonRootObject->GetObjectField(TEXT("Exam"));
- JsonIDStr = JsonExamObject->GetStringField(TEXT("ID"));
- return JsonIDStr;
- }
- return TEXT("");
- }
- FString UMyBlueprintFunctionLibrary::GetExamUsingId(FString RawDataJson)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- //UE_LOG(LogTemp, Log, TEXT("RawDataJson=%s"), *RawDataJson);
- FString JsonIDStr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- JsonObjectPtr JsonExamObject = JsonRootObject->GetObjectField(TEXT("User"));
- JsonIDStr = JsonExamObject->GetStringField(TEXT("ExamUsingId"));
- return JsonIDStr;
- }
- return TEXT("");
- }
- FString UMyBlueprintFunctionLibrary::GetScoresStr(FString RawDataJson)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- FString ScoresStr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- JsonObjectPtr JsonExamObject = JsonRootObject->GetObjectField(TEXT("Exam"));
- ScoresStr = JsonExamObject->GetStringField(TEXT("ScoreStep"));
- return ScoresStr;
- }
- //UE_LOG(LogTemp, Log, TEXT("ScoresStr=%s"), *ScoresStr);
-
- return TEXT("");
- }
- TArray<int32> UMyBlueprintFunctionLibrary::GetScores(FString RawDataJson)
- {
- TArray<int32> ScoreArr;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader2 = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader2, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- ScoreArr.Add(jsonMember->GetIntegerField(TEXT("Score")));
- }
- }
- return ScoreArr;
- }
- int64 UMyBlueprintFunctionLibrary::GetStartTimestamp(FString RawDataJson)
- {
- int64 StartTimestamp = 0;
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- JsonObjectPtr ExamObj = JsonRootObject->GetObjectField(TEXT("Exam"));
- return ExamObj->GetNumberField(TEXT("StartTime"));
- }
- return 0;
- }
- FString UMyBlueprintFunctionLibrary::ParseAndGetScores(FString RawDataJson)
- {
- //UE_LOG(LogTemp, Log, TEXT("RawDataJson=%s"), *RawDataJson);
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- FString ScoreArrStr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
- {
- ScoreArrStr = JsonRootObject->GetStringField(TEXT("Score"));
- //UE_LOG(LogTemp, Log, TEXT("ScoreArrStr=%s"), *ScoreArrStr);
- }
- return ScoreArrStr;
- }
- int32 UMyBlueprintFunctionLibrary::GetScore(FString RawDataJson, int32 ScoreIndex)
- {
- double Score = -1;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- TArray<int32> ScoreArr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- Score = jsonMember->GetIntegerField(TEXT("Score"));
- //UE_LOG(LogTemp, Log, TEXT("Score====%d"), Score);
- break;
- }
- }
- }
- return Score;
- }
- FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString ExamId, FString UserID, int32 Score, int32 ScoreIndex,int64 StartTimeStamp,int64 EndTimeStamp)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- TArray<int32> ScoreArr;
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- jsonMember->SetNumberField(TEXT("Score"), Score);
- double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
- int32 Evaluation = Score / MaxScore * 100;
- FString EvaluationStr = TEXT("不及格");
- if (Evaluation < 60)
- {
- EvaluationStr = TEXT("不及格");
- }
- else if (Evaluation > 60 && Evaluation < 85)
- {
- EvaluationStr = TEXT("及格");
- }
- else
- {
- EvaluationStr = TEXT("优秀");
- }
- jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
- auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
- RepeatCount++;
- jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
- break;
- }
- }
- // set Score jsonstring
- FString ScoresString;
- TSharedRef<TJsonWriter<>> AWriter1 = TJsonWriterFactory<>::Create(&ScoresString);
- FJsonSerializer::Serialize(JsonObjectValue, AWriter1);
- JsonRootObject->SetStringField(TEXT("Score"), ScoresString);
- // set start time
- /*double StartTimeStamp = 0;
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- double STStamp = jsonMember->GetNumberField(TEXT("StartTime"));
- if (STStamp != 0)
- {
- StartTimeStamp = STStamp;
- break;
- }
- }*/
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- /*double EndTimeStamp = 0;
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- double ETStamp = jsonMember->GetNumberField(TEXT("EndTime"));
- if (ETStamp != 0)
- {
- EndTimeStamp = ETStamp;
- }
- }*/
- // set end time
- //JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
- /* UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeStamp);
- UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
- UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));*/
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("OutPutString======%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::SetOtherScoreJson(FString UserID, FString ExamId,FString ScoresStr, TArray<int32> Scores, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(ScoresStr);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- jsonMember->SetNumberField(TEXT("Score"), Scores[i]);
- double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
- int32 Evaluation = Scores[i] / MaxScore * 100;
- FString EvaluationStr = TEXT("不及格");
- if (Evaluation < 60)
- {
- EvaluationStr = TEXT("不及格");
- }
- else if (Evaluation > 60 && Evaluation < 85)
- {
- EvaluationStr = TEXT("及格");
- }
- else
- {
- EvaluationStr = TEXT("优秀");
- }
- jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
- auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
- RepeatCount++;
- jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
- }
- // set Score jsonstring
- FString ScoresString;
- TSharedRef<TJsonWriter<>> AWriter1 = TJsonWriterFactory<>::Create(&ScoresString);
- FJsonSerializer::Serialize(JsonObjectValue, AWriter1);
- JsonRootObject->SetStringField(TEXT("Score"), ScoresString);
-
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // set end time
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("%s"), *OutPutString);
- return OutPutString;
- }
- FDateTime UMyBlueprintFunctionLibrary::GetStartTime(FString RawDataJson, int32 ScoreIndex)
- {
- double StartTime = -1;
- TArray<int32> ScoreArr;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- StartTime = jsonMember->GetNumberField(TEXT("StartTime"));
- break;
- }
- }
- }
- return UnixTimestampToDateTime(StartTime);
- }
- int32 UMyBlueprintFunctionLibrary::GetStartTimestampByIndex(FString RawDataJson, int32 ScoreIndex)
- {
- double StartTime = -1;
- TArray<int32> ScoreArr;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- return jsonMember->GetNumberField(TEXT("StartTime"));
- break;
- }
- }
- }
- return 0;
- }
- int32 UMyBlueprintFunctionLibrary::GetEndTimestampByIndex(FString RawDataJson, int32 ScoreIndex)
- {
- double StartTime = -1;
- TArray<int32> ScoreArr;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- return jsonMember->GetNumberField(TEXT("EndTime"));
- break;
- }
- }
- }
- return 0;
- }
- FString UMyBlueprintFunctionLibrary::GetTotalUsedTimeStr(FString RawDataJson, FString UserID, FString ExamId)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- TSharedPtr<FJsonObject> StartMember = (JsonObjectValue)[0]->AsObject();
- TSharedPtr<FJsonObject> EndMember = (JsonObjectValue)[(JsonObjectValue).Num()-1]->AsObject();
- // start time
- double StartTimeStamp = StartMember->GetNumberField(TEXT("StartTime"));
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // end time
- double EndTimeStamp = StartMember->GetNumberField(TEXT("EndTime"));
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
-
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::SetEndTimeAndTotalUsedTimeAndTotalScore(FString RawDataJson, FString UserID, FString ExamId, FDateTime EndTime, int32 Index, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- //UE_LOG(LogTemp, Log, TEXT("RawDataJson===%s"), *RawDataJson);
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- int32 TotalScore = 0;
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- TotalScore+=jsonMember->GetNumberField(TEXT("Score"));
- if (Index == i)
- {
- jsonMember->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
- double StartTimeNum = jsonMember->GetNumberField(TEXT("StartTime"));
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeNum);
- int32 TimeUsed = UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds());
- jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
- break;
- }
- }
-
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), TotalScore);
- FString newScoreString = "";
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&newScoreString);
- FJsonSerializer::Serialize(JsonObjectValue, Writer);
- JsonRootObject->SetStringField(TEXT("Score"), newScoreString);
- TSharedPtr<FJsonObject> StartMember = (JsonObjectValue)[0]->AsObject();
- TSharedPtr<FJsonObject> EndMember = (JsonObjectValue)[(JsonObjectValue).Num() - 1]->AsObject();
-
- }
- // set start time
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- //FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // set end time
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- //FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- //JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round(EndTimeStamp - StartTimeStamp));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("OutPutString===%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::SetTotalEndTimeAndTotalUsedTimeAndTotalScore(FString RawDataJson, FString UserID, FString ExamId, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- //UE_LOG(LogTemp, Log, TEXT("RawDataJson===%s"), *RawDataJson);
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- int32 TotalScore = 0;
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- TotalScore += jsonMember->GetNumberField(TEXT("Score"));
- }
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), TotalScore);
- FString newScoreString = "";
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&newScoreString);
- FJsonSerializer::Serialize(JsonObjectValue, Writer);
-
- JsonRootObject->SetStringField(TEXT("Score"), newScoreString);
- TSharedPtr<FJsonObject> StartMember = (JsonObjectValue)[0]->AsObject();
- TSharedPtr<FJsonObject> EndMember = (JsonObjectValue)[(JsonObjectValue).Num() - 1]->AsObject();
- }
- // set start time
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- //FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // set end time
- //int64 EndTimeStamp = DateTimeToUnixTimestamp(EndTime);
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- //FDateTime AEndTime = EndTime;
-
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round(EndTimeStamp - StartTimeStamp));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- OutPutString = Trim(OutPutString);
- //UE_LOG(LogTemp, Log, TEXT("OutPutString===%s"), *OutPutString);
- return OutPutString;
- }
- FDateTime UMyBlueprintFunctionLibrary::GetExpectTime(FString RawDataJson, int32 ScoreIndex)
- {
- double ExpectTime = -1;
- double StartTime = -1;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- ExpectTime = jsonMember->GetIntegerField(TEXT("ExpectTime"));
- StartTime = jsonMember->GetNumberField(TEXT("StartTime"));
- break;
- }
- }
- }
- FTimespan Duration = FTimespan(0, ExpectTime, 0);
- FDateTime StartTimeDate = UnixTimestampToDateTime(StartTime);
-
- FDateTime ExpectTimeData = StartTimeDate + Duration;
- return ExpectTimeData;
- }
- bool UMyBlueprintFunctionLibrary::IsOverTime(FString RawDataJson, int32 ScoreIndex)
- {
- double ExpectTime = -1;
- double StartTime = -1;
- double EndTime = -1;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- ExpectTime = jsonMember->GetIntegerField(TEXT("ExpectTime"));
- StartTime = jsonMember->GetNumberField(TEXT("StartTime"));
- EndTime = jsonMember->GetNumberField(TEXT("EndTime"));
- break;
- }
- }
- }
- FTimespan Duration = FTimespan(0, ExpectTime, 0);
- FDateTime StartDateTime = UnixTimestampToDateTime(StartTime);
- FDateTime EndDateTime = UnixTimestampToDateTime(EndTime);
- FDateTime ExpectDataTime = StartDateTime + Duration;
- //UE_LOG(LogTemp, Log, TEXT("StartDateTime=%s"), *StartDateTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S"));
- //UE_LOG(LogTemp, Log, TEXT("EndDateTime=%s"), *EndDateTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S"));
- //UE_LOG(LogTemp, Log, TEXT("ExpectDataTime=%s"), *((EndDateTime - StartDateTime).ToString()));
- return EndDateTime > ExpectDataTime ?1:0;
- }
- FString UMyBlueprintFunctionLibrary::SetStartTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime StartTime, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- //UE_LOG(LogTemp, Log, TEXT("ScoresStr======%s"), *ScoresStr);
- //UE_LOG(LogTemp, Log, TEXT("StartTime======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- //UE_LOG(LogTemp, Log, TEXT("StartTime2======%s"), *(UnixTimestampToDateTime(-2006054656).ToString(TEXT("%Y-%m-%d-%H-%M-%S"))));
- /*UE_LOG(LogTemp, Log, TEXT("StartTimestamp2222======%d"), DateTimeToUnixTimestamp(StartTime));*/
-
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
-
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(ScoresStr);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- double ATime = jsonMember->GetNumberField(TEXT("StartTime"));
- if (ATime == 0)
- {
- jsonMember->SetNumberField(TEXT("StartTime"), DateTimeToUnixTimestamp(StartTime));
- /*UE_LOG(LogTemp, Log, TEXT("StartTime11======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("StartTimestamp11======%d"), DateTimeToUnixTimestamp(StartTime));*/
- }
- break;
- }
- }
- FString AStr;
- TSharedRef<TJsonWriter<>> Writer1 = TJsonWriterFactory<>::Create(&AStr);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonObjectValue, Writer1);
- JsonRootObject->SetStringField(TEXT("Score"), AStr);
- // set start time
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // set end time
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
- // set TimeUsed
- if (EndTimeStamp-StartTimeStamp>0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("SetStartTimeJson =====%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime EndTime, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- //UE_LOG(LogTemp, Log, TEXT("xxxxxxxxxxxxxxxxx"));
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- //UE_LOG(LogTemp, Log, TEXT("aaaaaaaaaaaaaaaaa=%s"), *ScoresStr);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(ScoresStr);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- //UE_LOG(LogTemp, Log, TEXT("bbbbbbbbbbbbb=%d"), (JsonObjectValue).Num());
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- jsonMember->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
- double StartTimeNum = jsonMember->GetNumberField(TEXT("StartTime"));
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeNum);
-
- /* UE_LOG(LogTemp, Log, TEXT("StartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- */
- int32 TimeUsed = UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds());
- //UE_LOG(LogTemp, Log, TEXT("TimeUsed =====%d"), TimeUsed);
- jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
- break;
- }
- }
- FString AStr;
- TSharedRef<TJsonWriter<>> Writer1 = TJsonWriterFactory<>::Create(&AStr);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonObjectValue, Writer1);
- JsonRootObject->SetStringField(TEXT("Score"), AStr);
- // set start time
- /*double StartTimeStamp = 0;
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- double STStamp = jsonMember->GetNumberField(TEXT("StartTime"));
- if (STStamp != 0)
- {
- StartTimeStamp = STStamp;
- break;
- }
- }*/
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- /*double EndTimeStamp = 0;
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- double ETStamp = jsonMember->GetNumberField(TEXT("EndTime"));
- if (ETStamp != 0)
- {
- EndTimeStamp = ETStamp;
- }
- }*/
- // set end time
- JsonRootObject->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
- FDateTime AEndTime = UnixTimestampToDateTime(DateTimeToUnixTimestamp(EndTime));
- /*UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeStamp);
- UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
- UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));*/
-
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("SetStartTimeJson =====%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::SetScoreAndStartTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime StartTime, int32 Score, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(ScoresStr);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- jsonMember->SetNumberField(TEXT("StartTime"), DateTimeToUnixTimestamp(StartTime));
- auto AEndTimeNum = jsonMember->GetNumberField(TEXT("EndTime"));
- FDateTime AEndTime = UnixTimestampToDateTime(AEndTimeNum);
- int32 TimeUsed = UKismetMathLibrary::Round((AEndTime - StartTime).GetSeconds());
- jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
- jsonMember->SetNumberField(TEXT("Score"), Score);
- double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
- int32 Evaluation = Score / MaxScore * 100;
- FString EvaluationStr = TEXT("不及格");
- if (Evaluation < 60)
- {
- EvaluationStr = TEXT("不及格");
- }
- else if (Evaluation > 60 && Evaluation < 85)
- {
- EvaluationStr = TEXT("及格");
- }
- else
- {
- EvaluationStr = TEXT("优秀");
- }
- jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
- auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
- RepeatCount++;
- jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
- break;
- }
- }
- FString AStr;
- TSharedRef<TJsonWriter<>> Writer1 = TJsonWriterFactory<>::Create(&AStr);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonObjectValue, Writer1);
- JsonRootObject->SetStringField(TEXT("Score"), AStr);
- // set start time
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // set end time
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("SetStartTimeJson =====%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::SetScoreAndEndTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime EndTime, int32 Score, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(ScoresStr);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- if (ScoreIndex == i)
- {
- jsonMember->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
- auto StartTimeNum = jsonMember->GetNumberField(TEXT("StartTime"));
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeNum);
- int32 TimeUsed = UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds());
- jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
- /*UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeNum);
- UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), DateTimeToUnixTimestamp(EndTime));
- UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("Timeused======%d"), UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds()));*/
- jsonMember->SetNumberField(TEXT("Score"), Score);
- double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
- int32 Evaluation = Score / MaxScore * 100;
- FString EvaluationStr = TEXT("不及格");
- if (Evaluation < 60)
- {
- EvaluationStr = TEXT("不及格");
- }
- else if (Evaluation > 60 && Evaluation < 85)
- {
- EvaluationStr = TEXT("及格");
- }
- else
- {
- EvaluationStr = TEXT("优秀");
- }
- jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
- auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
- RepeatCount++;
- jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
- break;
- }
- }
- FString AStr;
- TSharedRef<TJsonWriter<>> Writer1 = TJsonWriterFactory<>::Create(&AStr);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonObjectValue, Writer1);
- JsonRootObject->SetStringField(TEXT("Score"), AStr);
- // set start time
-
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
- // set end time
- JsonRootObject->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
- FDateTime AEndTime = UnixTimestampToDateTime(DateTimeToUnixTimestamp(EndTime));
- /*UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeStamp);
- UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
- UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
- UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));*/
- // set TimeUsed
- if (EndTimeStamp - StartTimeStamp > 0)
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
- }
- else
- {
- JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("SetStartTimeJson =====%s"), *OutPutString);
- return OutPutString;
- }
- bool UMyBlueprintFunctionLibrary::CanGoNextStep(FString RawDataJson, int32 MyIndex)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[(MyIndex-1)]->AsObject();
-
- double AScore = jsonMember->GetNumberField(TEXT("Score"));
- double AStartTimeStamp = jsonMember->GetNumberField(TEXT("StartTime"));
- double AEndTimeStamp = jsonMember->GetNumberField(TEXT("EndTime"));
- if (AScore != -1 && AStartTimeStamp != 0 && AEndTimeStamp != 0)
- {
- return true;
- }
- }
- return false;
- }
- bool UMyBlueprintFunctionLibrary::IsSubmit(FString RawDataJson)
- {
- bool bSubmit = true;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- int32 Score = jsonMember->GetIntegerField(TEXT("Score"));
- if (Score == -1)
- {
- bSubmit = false;
- }
- }
- }
- return bSubmit;
- }
- FString UMyBlueprintFunctionLibrary::GetSubmitJsonString(FString UserID, FString ProjectName,FString RawDataJson)
- {
- bool bSubmit = true;
- FString SubmitStr;
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- TSharedPtr<FJsonObject> EntryObject = MakeShareable(new FJsonObject);
- EntryObject->SetStringField(TEXT("UserID"), UserID);
- EntryObject->SetArrayField(TEXT("Scores"), JsonObjectValue);
- EntryObject->SetBoolField(TEXT("UpToIlab"), true);
- EntryObject->SetStringField(TEXT("ProjectName"), ProjectName);
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&SubmitStr);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(EntryObject.ToSharedRef(), Writer);
- }
- return SubmitStr;
- }
- FString UMyBlueprintFunctionLibrary::GetRestartJsonString(FString UserID, FString RawDataJson)
- {
- JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
- JsonRootObject->SetStringField(TEXT("UserID"), UserID);
- TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
- TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
- if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
- {
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
- jsonMember->SetNumberField(TEXT("EndTime"), 0);
- jsonMember->SetNumberField(TEXT("StartTime"), 0);
- jsonMember->SetNumberField(TEXT("Score"), 0);
- }
- }
- // FStringにJsonを書き込むためのWriterを作成
- FString OutPutString;
- TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
- //JsonをFStringに書き込み
- FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
- //UE_LOG(LogTemp, Log, TEXT("%s"), *OutPutString);
- return OutPutString;
- }
- FString UMyBlueprintFunctionLibrary::Trim(FString RawDataJson)
- {
- FString NewStr = RawDataJson;
- NewStr = NewStr.Replace(TEXT("\r"), TEXT(""));
- NewStr = NewStr.Replace(TEXT("\n"), TEXT(""));
- NewStr = NewStr.Replace(TEXT("\t"), TEXT(""));
- NewStr = NewStr.Replace(TEXT("\\r"), TEXT(""));
- NewStr = NewStr.Replace(TEXT("\\n"), TEXT(""));
- NewStr = NewStr.Replace(TEXT("\\t"), TEXT(""));
- //NewStr = NewStr.Replace(TEXT("\\"), TEXT(""));
- //UE_LOG(LogTemp, Log, TEXT("NewStr = %s"), *NewStr);
- return NewStr;
- }
-
|