From 92afa3a05c3aba9422275ccfe7a27c5fff9dfc1a Mon Sep 17 00:00:00 2001 From: shixianjie Date: Mon, 30 Sep 2024 14:41:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hjx/parent/HomeworkFeedbackActivity.java | 107 ++++++++++++++++++++- .../com/prws/common/bean/homework/Correction.java | 16 +++ .../prws/common/bean/homework/CorrectionPoint.java | 38 ++++++++ .../com/prws/common/bean/homework/HomeWork.java | 20 +++- .../com/prws/common/bean/homework/KeyValue.java | 22 +++++ .../main/java/com/prws/common/net/NetWorks.java | 3 + 6 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 libs/common/src/main/java/com/prws/common/bean/homework/Correction.java create mode 100644 libs/common/src/main/java/com/prws/common/bean/homework/CorrectionPoint.java create mode 100644 libs/common/src/main/java/com/prws/common/bean/homework/KeyValue.java diff --git a/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java b/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java index 0b3c697..8ae5cd7 100644 --- a/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java +++ b/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java @@ -1,9 +1,11 @@ package com.hjx.parent; +import android.annotation.SuppressLint; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.RadioButton; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -12,20 +14,30 @@ import com.bumptech.glide.Glide; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.google.android.flexbox.FlexboxLayoutManager; +import com.google.gson.Gson; import com.hjx.parent.databinding.ActivityHomeworkFeedbackBinding; import com.hjx.parent.rx.BaseRxActivity; import com.prws.common.bean.Student; +import com.prws.common.bean.homework.Correction; +import com.prws.common.bean.homework.CorrectionPoint; import com.prws.common.bean.homework.HomeWork; import com.prws.common.bean.homework.HomeworkList; +import com.prws.common.bean.homework.KeyValue; +import com.prws.common.net.NetWorks; import java.text.DecimalFormat; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; public class HomeworkFeedbackActivity extends BaseRxActivity { private Student student; private HomeworkList mData; private ArrayList mList; + private List corrections = new ArrayList<>(); @SuppressWarnings("unchecked") @Override @@ -41,7 +53,9 @@ public class HomeworkFeedbackActivity extends BaseRxActivity errorList = new ArrayList<>(); int correctNo = 0; for (HomeWork homeWork: mList) { - homeWork.homeworkId = mData.getId(); + homeWork.state = 1; + homeWork.index = mList.indexOf(homeWork); + corrections.add(new Correction(homeWork.brief, homeWork.check ? 1 : 0)); if (!homeWork.check) correctNo ++; else errorList.add(homeWork); } @@ -51,8 +65,99 @@ public class HomeworkFeedbackActivity extends BaseRxActivity submit()); + } + + @SuppressLint("CheckResult") + private void submit() { + Map body = new HashMap<>(); + body.put("homeworkId", mData.getId()); + body.put("comment", binding.etComment.getText().toString()); + body.put("stuId", student.stuId); + body.put("points", countPoint()); + body.put("correctionList", corrections); + NetWorks.service_url.uploadHomeworkFeedback(NetWorks.getHeader(), body) + .compose(transformSingle()) + .subscribe((response, th) -> { + if (th != null) th.printStackTrace(); + if (response != null && response.getSuccess()) { + // TODO + Toast.makeText(this, "反馈成功", Toast.LENGTH_SHORT).show(); + } + }); } + @SuppressLint("CheckResult") + private List countPoint() { + Set set = new HashSet<>(); + Map totalTimes = new HashMap<>(); + Map correctTimes = new HashMap<>(); + Map underTimes = new HashMap<>(); + Map baseTimes = new HashMap<>(); + Map normalTimes = new HashMap<>(); + Gson gson = new Gson(); + for (HomeWork homeWork: mList) { + homeWork.formatPoints(gson); + + set.addAll(homeWork.pointsObj); + for (KeyValue keyValue: homeWork.pointsObj) { + String key = keyValue.Key; + if (totalTimes.containsKey(key)) { + totalTimes.put(key, totalTimes.get(key) + 1); + } else { + totalTimes.put(key, 1); + } + if (!homeWork.check) { + if (correctTimes.containsKey(key)) { + correctTimes.put(key, correctTimes.get(key) + 1); + } else { + correctTimes.put(key, 1); + } + } else if (homeWork.state == 1) { + if (underTimes.containsKey(key)) { + underTimes.put(key, underTimes.get(key) + 1); + } else { + underTimes.put(key, 1); + } + } else if (homeWork.state == 2) { + if (baseTimes.containsKey(key)) { + baseTimes.put(key, baseTimes.get(key) + 1); + } else { + baseTimes.put(key, 1); + } + } else if (homeWork.state == 3) { + if (normalTimes.containsKey(key)) { + normalTimes.put(key, normalTimes.get(key) + 1); + } else { + normalTimes.put(key, 1); + } + } + } + } + List points = new ArrayList<>(); + for (KeyValue obj: set) { + CorrectionPoint point = new CorrectionPoint(); + point.pointId = obj.Key; + point.pointName = obj.Value; + point.totalCount = ifNull(totalTimes.get(obj.Key), 1); + point.correctCount = ifNull(correctTimes.get(obj.Key), 0); + point.understandCount = ifNull(underTimes.get(obj.Key), 0); + point.basicCount = ifNull(baseTimes.get(obj.Key), 0); + point.normalCount = ifNull(normalTimes.get(obj.Key), 0); + + points.add(point); + } + + return points; + } + + private int ifNull(Integer src, int defaultVal) { + if (src == null) return defaultVal; + else return src; + } + + @Override protected ActivityHomeworkFeedbackBinding getViewBinding() { return ActivityHomeworkFeedbackBinding.inflate(getLayoutInflater()); diff --git a/libs/common/src/main/java/com/prws/common/bean/homework/Correction.java b/libs/common/src/main/java/com/prws/common/bean/homework/Correction.java new file mode 100644 index 0000000..515fc19 --- /dev/null +++ b/libs/common/src/main/java/com/prws/common/bean/homework/Correction.java @@ -0,0 +1,16 @@ +package com.prws.common.bean.homework; + +public class Correction { + + public String brief; + + public int correction; // 0 对, 1 错 + + public Correction() { + } + + public Correction(String brief, int correction) { + this.brief = brief; + this.correction = correction; + } +} diff --git a/libs/common/src/main/java/com/prws/common/bean/homework/CorrectionPoint.java b/libs/common/src/main/java/com/prws/common/bean/homework/CorrectionPoint.java new file mode 100644 index 0000000..2294dd1 --- /dev/null +++ b/libs/common/src/main/java/com/prws/common/bean/homework/CorrectionPoint.java @@ -0,0 +1,38 @@ +package com.prws.common.bean.homework; + +public class CorrectionPoint { + /** + * 知识点id + */ + public String pointId; + + /** + * 知识点名称 + */ + public String pointName; + + /** + * 知识点出现次数 + */ + public Integer totalCount; + + /** + * 知识点正确次数 + */ + public Integer correctCount; + + /** + * 知识点听懂次数 + */ + public Integer understandCount; + + /** + * 知识点基本听懂次数 + */ + public Integer basicCount; + + /** + * 知识点一般听懂次数 + */ + public Integer normalCount; +} diff --git a/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java b/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java index e73df7e..6ac7de9 100644 --- a/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java +++ b/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java @@ -1,8 +1,12 @@ package com.prws.common.bean.homework; +import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; +import com.google.gson.reflect.TypeToken; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; public class HomeWork implements Serializable { @@ -16,8 +20,22 @@ public class HomeWork implements Serializable { public String answer; public String points; - public boolean check = false; + public boolean check = false; //选中为错题 public transient int index = 0; public transient int state = 1; + public transient List pointsObj; + public void formatPoints(Gson gson) { + if (points == null) { + pointsObj = new ArrayList<>(); + return; + } + try { + pointsObj = gson.fromJson(points, new TypeToken>(){}.getType()); + } catch (Exception e) { + e.printStackTrace(); + pointsObj = new ArrayList<>(); + } + } + } diff --git a/libs/common/src/main/java/com/prws/common/bean/homework/KeyValue.java b/libs/common/src/main/java/com/prws/common/bean/homework/KeyValue.java new file mode 100644 index 0000000..102ec4d --- /dev/null +++ b/libs/common/src/main/java/com/prws/common/bean/homework/KeyValue.java @@ -0,0 +1,22 @@ +package com.prws.common.bean.homework; + +import java.util.Objects; + +public class KeyValue { + public String Key; + public String Value; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + KeyValue keyValue = (KeyValue) o; + return Objects.equals(Key.toUpperCase(), keyValue.Key.toUpperCase()); + } + + @Override + public int hashCode() { + return Objects.hash(Key.toUpperCase()); + } + +} diff --git a/libs/common/src/main/java/com/prws/common/net/NetWorks.java b/libs/common/src/main/java/com/prws/common/net/NetWorks.java index e6854b2..afd1698 100644 --- a/libs/common/src/main/java/com/prws/common/net/NetWorks.java +++ b/libs/common/src/main/java/com/prws/common/net/NetWorks.java @@ -202,6 +202,9 @@ public class NetWorks extends RetrofitUtils { @GET("api/v1/homework/listHomeworkById") Single>> getHomeworkDetail(@Header("Authorization") String token, @Query("homeworkId") String homeworkId); + @POST("api/v1/homework/uploadHomeworkFeedback") + Single uploadHomeworkFeedback(@Header("Authorization") String token, @Body Map map); + } public static String getUserId() { -- 1.9.0