Commit 92afa3a05c3aba9422275ccfe7a27c5fff9dfc1a
1 parent
7eb90a5ec1
Exists in
master
作业反馈
Showing
6 changed files
with
204 additions
and
2 deletions
Show diff stats
app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java
| 1 | 1 | package com.hjx.parent; |
| 2 | 2 | |
| 3 | +import android.annotation.SuppressLint; | |
| 3 | 4 | import android.os.Bundle; |
| 4 | 5 | import android.view.View; |
| 5 | 6 | import android.widget.ImageView; |
| 6 | 7 | import android.widget.RadioButton; |
| 8 | +import android.widget.Toast; | |
| 7 | 9 | |
| 8 | 10 | import androidx.annotation.NonNull; |
| 9 | 11 | import androidx.annotation.Nullable; |
| ... | ... | @@ -12,20 +14,30 @@ import com.bumptech.glide.Glide; |
| 12 | 14 | import com.chad.library.adapter.base.BaseQuickAdapter; |
| 13 | 15 | import com.chad.library.adapter.base.BaseViewHolder; |
| 14 | 16 | import com.google.android.flexbox.FlexboxLayoutManager; |
| 17 | +import com.google.gson.Gson; | |
| 15 | 18 | import com.hjx.parent.databinding.ActivityHomeworkFeedbackBinding; |
| 16 | 19 | import com.hjx.parent.rx.BaseRxActivity; |
| 17 | 20 | import com.prws.common.bean.Student; |
| 21 | +import com.prws.common.bean.homework.Correction; | |
| 22 | +import com.prws.common.bean.homework.CorrectionPoint; | |
| 18 | 23 | import com.prws.common.bean.homework.HomeWork; |
| 19 | 24 | import com.prws.common.bean.homework.HomeworkList; |
| 25 | +import com.prws.common.bean.homework.KeyValue; | |
| 26 | +import com.prws.common.net.NetWorks; | |
| 20 | 27 | |
| 21 | 28 | import java.text.DecimalFormat; |
| 22 | 29 | import java.util.ArrayList; |
| 30 | +import java.util.HashMap; | |
| 31 | +import java.util.HashSet; | |
| 23 | 32 | import java.util.List; |
| 33 | +import java.util.Map; | |
| 34 | +import java.util.Set; | |
| 24 | 35 | |
| 25 | 36 | public class HomeworkFeedbackActivity extends BaseRxActivity<ActivityHomeworkFeedbackBinding> { |
| 26 | 37 | private Student student; |
| 27 | 38 | private HomeworkList mData; |
| 28 | 39 | private ArrayList<HomeWork> mList; |
| 40 | + private List<Correction> corrections = new ArrayList<>(); | |
| 29 | 41 | |
| 30 | 42 | @SuppressWarnings("unchecked") |
| 31 | 43 | @Override |
| ... | ... | @@ -41,7 +53,9 @@ public class HomeworkFeedbackActivity extends BaseRxActivity<ActivityHomeworkFee |
| 41 | 53 | List<HomeWork> errorList = new ArrayList<>(); |
| 42 | 54 | int correctNo = 0; |
| 43 | 55 | for (HomeWork homeWork: mList) { |
| 44 | - homeWork.homeworkId = mData.getId(); | |
| 56 | + homeWork.state = 1; | |
| 57 | + homeWork.index = mList.indexOf(homeWork); | |
| 58 | + corrections.add(new Correction(homeWork.brief, homeWork.check ? 1 : 0)); | |
| 45 | 59 | if (!homeWork.check) correctNo ++; |
| 46 | 60 | else errorList.add(homeWork); |
| 47 | 61 | } |
| ... | ... | @@ -51,8 +65,99 @@ public class HomeworkFeedbackActivity extends BaseRxActivity<ActivityHomeworkFee |
| 51 | 65 | binding.rvCorrect.setAdapter(new NumberAdapter(mList)); |
| 52 | 66 | binding.rvError.setVisibility(errorList.isEmpty() ? View.GONE : View.VISIBLE); |
| 53 | 67 | binding.rvError.setAdapter(new EvalAdapter(errorList)); |
| 68 | + | |
| 69 | + binding.btnPublish.setOnClickListener(v -> submit()); | |
| 70 | + } | |
| 71 | + | |
| 72 | + @SuppressLint("CheckResult") | |
| 73 | + private void submit() { | |
| 74 | + Map<String, Object> body = new HashMap<>(); | |
| 75 | + body.put("homeworkId", mData.getId()); | |
| 76 | + body.put("comment", binding.etComment.getText().toString()); | |
| 77 | + body.put("stuId", student.stuId); | |
| 78 | + body.put("points", countPoint()); | |
| 79 | + body.put("correctionList", corrections); | |
| 80 | + NetWorks.service_url.uploadHomeworkFeedback(NetWorks.getHeader(), body) | |
| 81 | + .compose(transformSingle()) | |
| 82 | + .subscribe((response, th) -> { | |
| 83 | + if (th != null) th.printStackTrace(); | |
| 84 | + if (response != null && response.getSuccess()) { | |
| 85 | + // TODO | |
| 86 | + Toast.makeText(this, "反馈成功", Toast.LENGTH_SHORT).show(); | |
| 87 | + } | |
| 88 | + }); | |
| 54 | 89 | } |
| 55 | 90 | |
| 91 | + @SuppressLint("CheckResult") | |
| 92 | + private List<CorrectionPoint> countPoint() { | |
| 93 | + Set<KeyValue> set = new HashSet<>(); | |
| 94 | + Map<String, Integer> totalTimes = new HashMap<>(); | |
| 95 | + Map<String, Integer> correctTimes = new HashMap<>(); | |
| 96 | + Map<String, Integer> underTimes = new HashMap<>(); | |
| 97 | + Map<String, Integer> baseTimes = new HashMap<>(); | |
| 98 | + Map<String, Integer> normalTimes = new HashMap<>(); | |
| 99 | + Gson gson = new Gson(); | |
| 100 | + for (HomeWork homeWork: mList) { | |
| 101 | + homeWork.formatPoints(gson); | |
| 102 | + | |
| 103 | + set.addAll(homeWork.pointsObj); | |
| 104 | + for (KeyValue keyValue: homeWork.pointsObj) { | |
| 105 | + String key = keyValue.Key; | |
| 106 | + if (totalTimes.containsKey(key)) { | |
| 107 | + totalTimes.put(key, totalTimes.get(key) + 1); | |
| 108 | + } else { | |
| 109 | + totalTimes.put(key, 1); | |
| 110 | + } | |
| 111 | + if (!homeWork.check) { | |
| 112 | + if (correctTimes.containsKey(key)) { | |
| 113 | + correctTimes.put(key, correctTimes.get(key) + 1); | |
| 114 | + } else { | |
| 115 | + correctTimes.put(key, 1); | |
| 116 | + } | |
| 117 | + } else if (homeWork.state == 1) { | |
| 118 | + if (underTimes.containsKey(key)) { | |
| 119 | + underTimes.put(key, underTimes.get(key) + 1); | |
| 120 | + } else { | |
| 121 | + underTimes.put(key, 1); | |
| 122 | + } | |
| 123 | + } else if (homeWork.state == 2) { | |
| 124 | + if (baseTimes.containsKey(key)) { | |
| 125 | + baseTimes.put(key, baseTimes.get(key) + 1); | |
| 126 | + } else { | |
| 127 | + baseTimes.put(key, 1); | |
| 128 | + } | |
| 129 | + } else if (homeWork.state == 3) { | |
| 130 | + if (normalTimes.containsKey(key)) { | |
| 131 | + normalTimes.put(key, normalTimes.get(key) + 1); | |
| 132 | + } else { | |
| 133 | + normalTimes.put(key, 1); | |
| 134 | + } | |
| 135 | + } | |
| 136 | + } | |
| 137 | + } | |
| 138 | + List<CorrectionPoint> points = new ArrayList<>(); | |
| 139 | + for (KeyValue obj: set) { | |
| 140 | + CorrectionPoint point = new CorrectionPoint(); | |
| 141 | + point.pointId = obj.Key; | |
| 142 | + point.pointName = obj.Value; | |
| 143 | + point.totalCount = ifNull(totalTimes.get(obj.Key), 1); | |
| 144 | + point.correctCount = ifNull(correctTimes.get(obj.Key), 0); | |
| 145 | + point.understandCount = ifNull(underTimes.get(obj.Key), 0); | |
| 146 | + point.basicCount = ifNull(baseTimes.get(obj.Key), 0); | |
| 147 | + point.normalCount = ifNull(normalTimes.get(obj.Key), 0); | |
| 148 | + | |
| 149 | + points.add(point); | |
| 150 | + } | |
| 151 | + | |
| 152 | + return points; | |
| 153 | + } | |
| 154 | + | |
| 155 | + private int ifNull(Integer src, int defaultVal) { | |
| 156 | + if (src == null) return defaultVal; | |
| 157 | + else return src; | |
| 158 | + } | |
| 159 | + | |
| 160 | + | |
| 56 | 161 | @Override |
| 57 | 162 | protected ActivityHomeworkFeedbackBinding getViewBinding() { |
| 58 | 163 | return ActivityHomeworkFeedbackBinding.inflate(getLayoutInflater()); | ... | ... |
libs/common/src/main/java/com/prws/common/bean/homework/Correction.java
| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | +package com.prws.common.bean.homework; | |
| 2 | + | |
| 3 | +public class Correction { | |
| 4 | + | |
| 5 | + public String brief; | |
| 6 | + | |
| 7 | + public int correction; // 0 对, 1 错 | |
| 8 | + | |
| 9 | + public Correction() { | |
| 10 | + } | |
| 11 | + | |
| 12 | + public Correction(String brief, int correction) { | |
| 13 | + this.brief = brief; | |
| 14 | + this.correction = correction; | |
| 15 | + } | |
| 16 | +} | ... | ... |
libs/common/src/main/java/com/prws/common/bean/homework/CorrectionPoint.java
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | +package com.prws.common.bean.homework; | |
| 2 | + | |
| 3 | +public class CorrectionPoint { | |
| 4 | + /** | |
| 5 | + * 知识点id | |
| 6 | + */ | |
| 7 | + public String pointId; | |
| 8 | + | |
| 9 | + /** | |
| 10 | + * 知识点名称 | |
| 11 | + */ | |
| 12 | + public String pointName; | |
| 13 | + | |
| 14 | + /** | |
| 15 | + * 知识点出现次数 | |
| 16 | + */ | |
| 17 | + public Integer totalCount; | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 知识点正确次数 | |
| 21 | + */ | |
| 22 | + public Integer correctCount; | |
| 23 | + | |
| 24 | + /** | |
| 25 | + * 知识点听懂次数 | |
| 26 | + */ | |
| 27 | + public Integer understandCount; | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 知识点基本听懂次数 | |
| 31 | + */ | |
| 32 | + public Integer basicCount; | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * 知识点一般听懂次数 | |
| 36 | + */ | |
| 37 | + public Integer normalCount; | |
| 38 | +} | ... | ... |
libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java
| 1 | 1 | package com.prws.common.bean.homework; |
| 2 | 2 | |
| 3 | +import com.google.gson.Gson; | |
| 3 | 4 | import com.google.gson.annotations.SerializedName; |
| 5 | +import com.google.gson.reflect.TypeToken; | |
| 4 | 6 | |
| 5 | 7 | import java.io.Serializable; |
| 8 | +import java.util.ArrayList; | |
| 9 | +import java.util.List; | |
| 6 | 10 | |
| 7 | 11 | public class HomeWork implements Serializable { |
| 8 | 12 | |
| ... | ... | @@ -16,8 +20,22 @@ public class HomeWork implements Serializable { |
| 16 | 20 | public String answer; |
| 17 | 21 | public String points; |
| 18 | 22 | |
| 19 | - public boolean check = false; | |
| 23 | + public boolean check = false; //选中为错题 | |
| 20 | 24 | public transient int index = 0; |
| 21 | 25 | public transient int state = 1; |
| 22 | 26 | |
| 27 | + public transient List<KeyValue> pointsObj; | |
| 28 | + public void formatPoints(Gson gson) { | |
| 29 | + if (points == null) { | |
| 30 | + pointsObj = new ArrayList<>(); | |
| 31 | + return; | |
| 32 | + } | |
| 33 | + try { | |
| 34 | + pointsObj = gson.fromJson(points, new TypeToken<List<KeyValue>>(){}.getType()); | |
| 35 | + } catch (Exception e) { | |
| 36 | + e.printStackTrace(); | |
| 37 | + pointsObj = new ArrayList<>(); | |
| 38 | + } | |
| 39 | + } | |
| 40 | + | |
| 23 | 41 | } | ... | ... |
libs/common/src/main/java/com/prws/common/bean/homework/KeyValue.java
| ... | ... | @@ -0,0 +1,22 @@ |
| 1 | +package com.prws.common.bean.homework; | |
| 2 | + | |
| 3 | +import java.util.Objects; | |
| 4 | + | |
| 5 | +public class KeyValue { | |
| 6 | + public String Key; | |
| 7 | + public String Value; | |
| 8 | + | |
| 9 | + @Override | |
| 10 | + public boolean equals(Object o) { | |
| 11 | + if (this == o) return true; | |
| 12 | + if (o == null || getClass() != o.getClass()) return false; | |
| 13 | + KeyValue keyValue = (KeyValue) o; | |
| 14 | + return Objects.equals(Key.toUpperCase(), keyValue.Key.toUpperCase()); | |
| 15 | + } | |
| 16 | + | |
| 17 | + @Override | |
| 18 | + public int hashCode() { | |
| 19 | + return Objects.hash(Key.toUpperCase()); | |
| 20 | + } | |
| 21 | + | |
| 22 | +} | ... | ... |
libs/common/src/main/java/com/prws/common/net/NetWorks.java
| ... | ... | @@ -202,6 +202,9 @@ public class NetWorks extends RetrofitUtils { |
| 202 | 202 | @GET("api/v1/homework/listHomeworkById") |
| 203 | 203 | Single<ResponseResult<List<HomeWork>>> getHomeworkDetail(@Header("Authorization") String token, @Query("homeworkId") String homeworkId); |
| 204 | 204 | |
| 205 | + @POST("api/v1/homework/uploadHomeworkFeedback") | |
| 206 | + Single<ResponseResult> uploadHomeworkFeedback(@Header("Authorization") String token, @Body Map<String, Object> map); | |
| 207 | + | |
| 205 | 208 | } |
| 206 | 209 | |
| 207 | 210 | public static String getUserId() { | ... | ... |