Commit ce70231eaa48ad076bae44fe8c4244475535a351
1 parent
02f157fa
增加接口
Showing
21 changed files
with
1281 additions
and
157 deletions
WebRoot/WEB-INF/jsp/sunvote/teacher/teacher_report_1.jsp
... | ... | @@ -73,29 +73,29 @@ |
73 | 73 | </thead> |
74 | 74 | <tbody> |
75 | 75 | <tr> |
76 | - <td class="center">班级课程总分</td> | |
77 | - <td class="center"></td> | |
76 | + <td class="center"><div style="width:150px;">班级课程总分</div></td> | |
77 | + <td class="center"><div style="width:150px;"></div></td> | |
78 | 78 | <td class="center"><div style="width:80px;"></div></td> |
79 | 79 | <c:forEach items="${testpaperList}" var="var" varStatus="vs"> |
80 | 80 | <td class="center"><div style="width:80px;margin:0 auto;">${var.TOTAL_SCORE}</div></td> |
81 | 81 | </c:forEach> |
82 | 82 | </tr> |
83 | 83 | <tr> |
84 | - <td class="center">班级课程平均分</td> | |
85 | - <td class="center"></td> | |
86 | - <td class="center"></td> | |
84 | + <td class="center"><div style="width:150px;">班级课程平均分</div></td> | |
85 | + <td class="center"><div style="width:150px;"></div></td> | |
86 | + <td class="center"><div style="width:80px;"></div></td> | |
87 | 87 | <c:forEach items="${testpaperList}" var="var" varStatus="vs"> |
88 | - <td class="center">${var.AVG_SCORE}</td> | |
88 | + <td class="center"><div style="width:80px;margin:0 auto;">${var.AVG_SCORE}</div></td> | |
89 | 89 | </c:forEach> |
90 | 90 | </tr> |
91 | 91 | <tr> |
92 | - <td class="center">班级课程平均得分率</td> | |
93 | - <td class="center"></td> | |
94 | - <td class="center"></td> | |
92 | + <td class="center"><div style="width:150px;">班级课程平均得分率</div></td> | |
93 | + <td class="center"><div style="width:150px;"></div></td> | |
94 | + <td class="center"><div style="width:80px;"></div></td> | |
95 | 95 | <c:forEach items="${testpaperList}" var="var" varStatus="vs"> |
96 | - <td class="center"><fmt:formatNumber type="number" | |
96 | + <td class="center"><div style="width:80px;margin:0 auto;"><fmt:formatNumber type="number" | |
97 | 97 | value="${var.TOTAL_SCORE == 0 ? 0: (var.AVG_SCORE / var.TOTAL_SCORE * 100)}" |
98 | - maxFractionDigits="2" />%</td> | |
98 | + maxFractionDigits="2" />%</div></td> | |
99 | 99 | </c:forEach> |
100 | 100 | </tr> |
101 | 101 | |
... | ... | @@ -106,15 +106,15 @@ |
106 | 106 | <%-- <td class="center"><a |
107 | 107 | href="report/student_report?studentid=${var.ID}&class_id=${info.CLASS_ID}">${var.NAME}</a> |
108 | 108 | </td> --%> |
109 | - <td class="center"><a | |
110 | - onclick="student('${info.CLASS_ID}','${var.ID}')">${var.NAME}</a> | |
109 | + <td class="center"><div style="width:150px;"><a | |
110 | + onclick="student('${info.CLASS_ID}','${var.ID}')">${var.NAME}</a></div> | |
111 | 111 | </td> |
112 | - <td class="center"><div style="width:80px;margin:0 auto;"><fmt:formatNumber type="number" | |
112 | + <td class="center"><div style="width:150px;"><fmt:formatNumber type="number" | |
113 | 113 | value="${var.TOTALSCORE == 0 ? 0: (var.GETSCORE / var.TOTALSCORE * 100)}" |
114 | 114 | maxFractionDigits="2" />%</div></td> |
115 | - <td class="center">${var.GETSCORE }</td> | |
115 | + <td class="center"><div style="width:80px;margin:0 auto;">${var.GETSCORE }</div></td> | |
116 | 116 | <c:forEach items="${testpaperList}" var="var1" varStatus="vs1"> |
117 | - <td class="center"><div style="width:80px;margin:0 auto;"><c:set var="TEST_ID" | |
117 | + <td class="center"><div style="width:180px;margin:0 auto;"><c:set var="TEST_ID" | |
118 | 118 | value="${var1.TESTPAPER_ID}" /> ${var[TEST_ID] }</div></td> |
119 | 119 | </c:forEach> |
120 | 120 | </tr> |
... | ... | @@ -268,12 +268,13 @@ |
268 | 268 | $("#simple-table").tablescroller(options); |
269 | 269 | |
270 | 270 | |
271 | - var name_height = $(".kc").last().parent().height()-18; | |
271 | + var name_height = $(".kc").last().parent().height()-18.5; | |
272 | + console.log(name_height); | |
272 | 273 | $(".th_name").height(name_height); |
273 | 274 | }); |
274 | 275 | |
275 | 276 | |
276 | - console.log('${studentList}'); | |
277 | + //console.log('${studentList}'); | |
277 | 278 | |
278 | 279 | </script> |
279 | 280 | ... | ... |
WebRoot/WEB-INF/jsp/sunvote/teacher/teacher_report_test.jsp
... | ... | @@ -52,51 +52,51 @@ |
52 | 52 | style="margin-top:0px;margin-bottom:0;"> |
53 | 53 | <thead> |
54 | 54 | <tr> |
55 | - <th class="center"><div style="width:80px;">键盘</div></th> | |
55 | + <th class="center"><div style="width:109px;">键盘</div></th> | |
56 | 56 | <th class="center"><div style="width:80px;">学号</div></th> |
57 | 57 | <th class="center"><div style="width:80px;">姓名</div></th> |
58 | 58 | <th class="center"><div style="width:80px;">得分</div></th> |
59 | 59 | <!-- <th class="center"><div style="width:80px;">正确率</div></th> --> |
60 | 60 | <th class="center"><div style="width:80px;">排名</div></th> |
61 | 61 | <c:forEach items="${questionInfo}" var="var" varStatus="vs"> |
62 | - <th class="center"><div style="width:80px;">题目${vs.index+1}</div></th> | |
62 | + <th class="center"><div style="width:80px;margin:0 auto;">题目${vs.index+1}</div></th> | |
63 | 63 | </c:forEach> |
64 | 64 | <!-- <th class="center"><div style="width:150px;">非选择题得分</div></th> --> |
65 | - <th class="center"><div style="width:80px;">总分</div></th> | |
65 | + <th class="center"><div style="width:80px;margin:0 auto;">总分</div></th> | |
66 | 66 | </tr> |
67 | 67 | </thead> |
68 | 68 | <tbody> |
69 | 69 | <tr> |
70 | - <td class="center">--</td> | |
71 | - <td class="center">--</td> | |
72 | - <td class="center">--</td> | |
73 | - <td class="center">--</td> | |
70 | + <td class="center"><div style="width:109px;">--</div></td> | |
71 | + <td class="center"><div style="width:80px;">--</div></td> | |
72 | + <td class="center"><div style="width:80px;">--</div></td> | |
73 | + <td class="center"><div style="width:80px;">--</div></td> | |
74 | 74 | <!-- <td class="center"></td> --> |
75 | - <td class="center">--</td> | |
75 | + <td class="center"><div style="width:80px;">--</div></td> | |
76 | 76 | <c:forEach items="${questionInfo}" var="var" varStatus="vs"> |
77 | - <td class="center"><fmt:formatNumber type="number" | |
77 | + <td class="center"><div style="width:80px;margin:0 auto;"><fmt:formatNumber type="number" | |
78 | 78 | value="${var == 0 ? 0: (var / classInfo.studentNum * 100)}" |
79 | - maxFractionDigits="1" />%</td> | |
79 | + maxFractionDigits="1" />%</div></td> | |
80 | 80 | </c:forEach> |
81 | 81 | <!-- <td class="center"></td> --> |
82 | - <td class="center"></td> | |
82 | + <td class="center"><div style="width:80px;margin:0 auto;"></div></td> | |
83 | 83 | </tr> |
84 | 84 | |
85 | 85 | <c:choose> |
86 | 86 | <c:when test="${not empty studentInfo}"> |
87 | 87 | <c:forEach items="${studentInfo}" var="var" varStatus="vs"> |
88 | 88 | <tr> |
89 | - <td class="center">${var.KEYPAD_ID}</td> | |
90 | - <td class="center">${var.NUMBER}</td> | |
91 | - <td class="center">${var.NAME}</td> | |
92 | - <td class="center">${var.GETSCORE}</td> | |
89 | + <td class="center"><div style="width:109px;">${var.KEYPAD_ID}</div></td> | |
90 | + <td class="center"><div style="width:80px;">${var.NUMBER}</div></td> | |
91 | + <td class="center"><div style="width:80px;">${var.NAME}</div></td> | |
92 | + <td class="center"><div style="width:80px;">${var.GETSCORE}</div></td> | |
93 | 93 | <%-- <td class="center">${var.RIGHT}</td> --%> |
94 | - <td class="center">${vs.index + 1}</td> | |
94 | + <td class="center"><div style="width:80px;">${vs.index + 1}</div></td> | |
95 | 95 | <c:forEach items="${questionInfo}" var="var1" varStatus="vs1"> |
96 | - <td class="center"><div style="width:80px">${var.detail[vs1.index].ANSWER}</div></td> | |
96 | + <td class="center"><div style="width:80px;margin:0 auto;">${var.detail[vs1.index].ANSWER}</div></td> | |
97 | 97 | </c:forEach> |
98 | 98 | <%-- <td class="center">${var.OTHER_SCORE}</td> --%> |
99 | - <td class="center">${var.GETSCORE}</td> | |
99 | + <td class="center"><div style="width:80px;margin:0 auto;">${var.GETSCORE}</div></td> | |
100 | 100 | </tr> |
101 | 101 | </c:forEach> |
102 | 102 | </c:when> | ... | ... |
resources/mybatis1/sunvote/CacheMapper.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="CacheMapper"> | |
4 | + | |
5 | + <!--表名 --> | |
6 | + <sql id="tableName"> | |
7 | + SV_CACHE | |
8 | + </sql> | |
9 | + | |
10 | + <!-- 字段 --> | |
11 | + <sql id="Field"> | |
12 | + `KEY`, | |
13 | + `CACHE` | |
14 | + </sql> | |
15 | + | |
16 | + <!-- 字段值 --> | |
17 | + <sql id="FieldValue"> | |
18 | + #{KEY}, | |
19 | + #{CACHE} | |
20 | + </sql> | |
21 | + | |
22 | + <!-- 新增--> | |
23 | + <insert id="save" parameterType="pd"> | |
24 | + insert into | |
25 | + <include refid="tableName"></include> | |
26 | + ( | |
27 | + <include refid="Field"></include> | |
28 | + ) values ( | |
29 | + <include refid="FieldValue"></include> | |
30 | + ) | |
31 | + </insert> | |
32 | + | |
33 | + <!-- 删除--> | |
34 | + <delete id="delete" parameterType="pd"> | |
35 | + delete from | |
36 | + <include refid="tableName"></include> | |
37 | + where | |
38 | + `KEY` = #{KEY} | |
39 | + </delete> | |
40 | + | |
41 | + <!-- 通过ID获取数据 --> | |
42 | + <select id="findById" parameterType="pd" resultType="pd"> | |
43 | + select | |
44 | + <include refid="Field"></include> | |
45 | + from | |
46 | + <include refid="tableName"></include> | |
47 | + where | |
48 | + `KEY` = #{KEY} | |
49 | + </select> | |
50 | + | |
51 | + <!-- 列表 --> | |
52 | + <select id="datalistPage" parameterType="page" resultType="pd"> | |
53 | + select | |
54 | + <include refid="Field"></include> | |
55 | + from | |
56 | + <include refid="tableName"></include> | |
57 | + where 1=1 | |
58 | + | |
59 | + </select> | |
60 | + | |
61 | + <!-- 列表(全部) --> | |
62 | + <select id="listAll" parameterType="pd" resultType="pd"> | |
63 | + select | |
64 | + <include refid="Field"></include> | |
65 | + from | |
66 | + <include refid="tableName"></include> | |
67 | + </select> | |
68 | + | |
69 | + <!-- 批量删除 --> | |
70 | + <delete id="deleteAll" parameterType="String"> | |
71 | + delete from | |
72 | + <include refid="tableName"></include> | |
73 | + where | |
74 | + `KEY` in | |
75 | + <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> | |
76 | + #{item} | |
77 | + </foreach> | |
78 | + </delete> | |
79 | + | |
80 | + <!-- fh313596790qq(青苔) --> | |
81 | +</mapper> | |
0 | 82 | \ No newline at end of file | ... | ... |
resources/mybatis1/sunvote/ChapterMapper.xml
... | ... | @@ -101,6 +101,31 @@ |
101 | 101 | <include refid="tableName"></include> |
102 | 102 | </select> |
103 | 103 | |
104 | + <!-- 列表(全部) --> | |
105 | + <select id="listAllChapter" parameterType="pd" resultType="pd"> | |
106 | + select | |
107 | + <include refid="Field"></include> | |
108 | + from | |
109 | + <include refid="tableName"></include> | |
110 | + | |
111 | + where 1 = 1 | |
112 | + | |
113 | + <if test="P_ID != null and P_ID != ''"> | |
114 | + and P_ID = #{P_ID} | |
115 | + </if> | |
116 | + | |
117 | + <if test="P_ID == null or P_ID == ''"> | |
118 | + and P_ID is NULL | |
119 | + </if> | |
120 | + | |
121 | + | |
122 | + <if test="TEACHINGMATERIAL_ID != null and TEACHINGMATERIAL_ID != ''"> | |
123 | + and TEACHINGMATERIAL_ID = #{TEACHINGMATERIAL_ID} | |
124 | + </if> | |
125 | + | |
126 | + order by RANK | |
127 | + </select> | |
128 | + | |
104 | 129 | <!-- 批量删除 --> |
105 | 130 | <delete id="deleteAll" parameterType="String"> |
106 | 131 | delete from | ... | ... |
resources/mybatis1/sunvote/KnowledgeMapper.xml
... | ... | @@ -13,6 +13,7 @@ |
13 | 13 | P_ID, |
14 | 14 | RANK, |
15 | 15 | CODE, |
16 | + SUBJECT_ID, | |
16 | 17 | REMARK, |
17 | 18 | KNOWLEDGE_ID |
18 | 19 | </sql> |
... | ... | @@ -23,6 +24,7 @@ |
23 | 24 | #{P_ID}, |
24 | 25 | #{RANK}, |
25 | 26 | #{CODE}, |
27 | + #{SUBJECT_ID}, | |
26 | 28 | #{REMARK}, |
27 | 29 | #{KNOWLEDGE_ID} |
28 | 30 | </sql> |
... | ... | @@ -98,6 +100,33 @@ |
98 | 100 | <include refid="tableName"></include> |
99 | 101 | </select> |
100 | 102 | |
103 | + <!-- 列表(全部) --> | |
104 | + <select id="listAllknowledge" parameterType="pd" resultType="pd"> | |
105 | + select | |
106 | + <include refid="Field"></include> | |
107 | + from | |
108 | + <include refid="tableName"></include> | |
109 | + | |
110 | + where 1 = 1 | |
111 | + | |
112 | + <if test="P_ID != null and P_ID != ''"> | |
113 | + and P_ID = #{P_ID} | |
114 | + </if> | |
115 | + | |
116 | + <if test="P_ID == null or P_ID == ''"> | |
117 | + and P_ID is NULL | |
118 | + </if> | |
119 | + | |
120 | + <if test="SUBJECT_ID != null and SUBJECT_ID != ''"> | |
121 | + and SUBJECT_ID = #{SUBJECT_ID} | |
122 | + </if> | |
123 | + <if test="KNOWLEDGE_FROM != null and KNOWLEDGE_FROM != ''"> | |
124 | + and KNOWLEDGE_FROM = #{KNOWLEDGE_FROM} | |
125 | + </if> | |
126 | + | |
127 | + </select> | |
128 | + | |
129 | + | |
101 | 130 | <!-- 批量删除 --> |
102 | 131 | <delete id="deleteAll" parameterType="String"> |
103 | 132 | delete from | ... | ... |
resources/mybatis1/sunvote/QuestionMapper.xml
... | ... | @@ -28,6 +28,7 @@ |
28 | 28 | USER_ID, |
29 | 29 | CREATE_DATE, |
30 | 30 | REMARK, |
31 | + METHOD, | |
31 | 32 | QUESTION_ID |
32 | 33 | </sql> |
33 | 34 | |
... | ... | @@ -52,6 +53,7 @@ |
52 | 53 | #{USER_ID}, |
53 | 54 | #{CREATE_DATE}, |
54 | 55 | #{REMARK}, |
56 | + #{METHOD}, | |
55 | 57 | #{QUESTION_ID} |
56 | 58 | </sql> |
57 | 59 | |
... | ... | @@ -98,6 +100,7 @@ |
98 | 100 | USER_ID = #{USER_ID}, |
99 | 101 | CREATE_DATE = #{CREATE_DATE}, |
100 | 102 | REMARK = #{REMARK}, |
103 | + METHOD = #{METHOD}, | |
101 | 104 | QUESTION_ID = QUESTION_ID |
102 | 105 | where |
103 | 106 | QUESTION_ID = #{QUESTION_ID} |
... | ... | @@ -140,6 +143,96 @@ |
140 | 143 | <include refid="tableName"></include> |
141 | 144 | </select> |
142 | 145 | |
146 | + <!-- 列表(全部) --> | |
147 | + <select id="listAllquestion" parameterType="pd" resultType="pd"> | |
148 | + select | |
149 | + <include refid="Field"></include> | |
150 | + from | |
151 | + <include refid="tableName"></include> | |
152 | + | |
153 | + where 1 =1 | |
154 | + <if test="CHAPTER_IDS != null and CHAPTER_IDS.size() > 0"> | |
155 | + and CHAPTER_ID in | |
156 | + | |
157 | + <foreach item="item" index="index" collection="CHAPTER_IDS" open="(" separator="," close=")"> | |
158 | + #{item} | |
159 | + </foreach> | |
160 | + | |
161 | + </if> | |
162 | + <if test="KNOWLEDGE_IDS != null and KNOWLEDGE_IDS.size() > 0"> | |
163 | + and | |
164 | + <foreach item="item" index="index" collection="KNOWLEDGE_IDS" open="(" separator=" or " close=")"> | |
165 | + FIND_IN_SET(#{item},KNOWLEDGE_ID) | |
166 | + </foreach> | |
167 | + | |
168 | + </if> | |
169 | + <if test="QUESTION_FROM != null and QUESTION_FROM != ''"> | |
170 | + and QUESTION_FROM = #{QUESTION_FROM} | |
171 | + </if> | |
172 | + <if test="USER_ID != null and USER_ID != ''"> | |
173 | + and USER_ID = #{USER_ID} | |
174 | + </if> | |
175 | + <if test="PROBLEM_TYPE != null and PROBLEM_TYPE != ''"> | |
176 | + and PROBLEM_TYPE = #{PROBLEM_TYPE} | |
177 | + </if> | |
178 | + <if test="SUBJECT_ID != null and SUBJECT_ID != ''"> | |
179 | + and SUBJECT_ID = #{SUBJECT_ID} | |
180 | + </if> | |
181 | + | |
182 | + ORDER BY QUESTION_ID | |
183 | + | |
184 | + <if test="COUNT != null and COUNT != ''"> | |
185 | + limit ${COUNT} | |
186 | + </if> | |
187 | + | |
188 | + | |
189 | + </select> | |
190 | + | |
191 | + <!-- 列表(全部) --> | |
192 | + <select id="listAllRandquestion" parameterType="pd" resultType="pd"> | |
193 | + select | |
194 | + <include refid="Field"></include> | |
195 | + from | |
196 | + <include refid="tableName"></include> | |
197 | + | |
198 | + where 1 =1 | |
199 | + <if test="CHAPTER_IDS != null and CHAPTER_IDS.size() > 0"> | |
200 | + and CHAPTER_ID in | |
201 | + | |
202 | + <foreach item="item" index="index" collection="CHAPTER_IDS" open="(" separator="," close=")"> | |
203 | + #{item} | |
204 | + </foreach> | |
205 | + | |
206 | + </if> | |
207 | + <if test="KNOWLEDGE_IDS != null and KNOWLEDGE_IDS.size() > 0"> | |
208 | + and | |
209 | + <foreach item="item" index="index" collection="KNOWLEDGE_IDS" open="(" separator=" or " close=")"> | |
210 | + FIND_IN_SET(#{item},KNOWLEDGE_ID) | |
211 | + </foreach> | |
212 | + | |
213 | + </if> | |
214 | + <if test="QUESTION_FROM != null and QUESTION_FROM != ''"> | |
215 | + and QUESTION_FROM = #{QUESTION_FROM} | |
216 | + </if> | |
217 | + <if test="USER_ID != null and USER_ID != ''"> | |
218 | + and USER_ID = #{USER_ID} | |
219 | + </if> | |
220 | + <if test="PROBLEM_TYPE != null and PROBLEM_TYPE != ''"> | |
221 | + and PROBLEM_TYPE = #{PROBLEM_TYPE} | |
222 | + </if> | |
223 | + <if test="SUBJECT_ID != null and SUBJECT_ID != ''"> | |
224 | + and SUBJECT_ID = #{SUBJECT_ID} | |
225 | + </if> | |
226 | + | |
227 | + ORDER BY rand() | |
228 | + | |
229 | + <if test="COUNT != null and COUNT != ''"> | |
230 | + limit ${COUNT} | |
231 | + </if> | |
232 | + | |
233 | + | |
234 | + </select> | |
235 | + | |
143 | 236 | <!-- 批量删除 --> |
144 | 237 | <delete id="deleteAll" parameterType="String"> |
145 | 238 | delete from | ... | ... |
resources/mybatis1/sunvote/TeachingMaterialMapper.xml
... | ... | @@ -32,17 +32,10 @@ |
32 | 32 | insert into |
33 | 33 | <include refid="tableName"></include> |
34 | 34 | ( |
35 | - NAME, | |
36 | - SUBJECT_ID, | |
37 | - GRADE_ID, | |
38 | - VERSION_CODE, | |
39 | - VERSION_NAME | |
35 | + <include refid="Field"></include> | |
36 | + | |
40 | 37 | ) values ( |
41 | - #{NAME}, | |
42 | - #{SUBJECT_ID}, | |
43 | - #{GRADE_ID}, | |
44 | - #{VERSION_CODE}, | |
45 | - #{VERSION_NAME} | |
38 | + <include refid="FieldValue"></include> | |
46 | 39 | ) |
47 | 40 | </insert> |
48 | 41 | ... | ... |
src/com/fh/bean/Point.java
0 → 100644
1 | +package com.fh.bean; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import com.google.gson.Gson; | |
6 | + | |
7 | +public class Point { | |
8 | + | |
9 | + private String code ; | |
10 | + | |
11 | + private String name; | |
12 | + | |
13 | + private String subjectCode; | |
14 | + | |
15 | + private List<Point> children ; | |
16 | + | |
17 | + public String getCode() { | |
18 | + return code; | |
19 | + } | |
20 | + | |
21 | + public void setCode(String code) { | |
22 | + this.code = code; | |
23 | + } | |
24 | + | |
25 | + public String getName() { | |
26 | + return name; | |
27 | + } | |
28 | + | |
29 | + public void setName(String name) { | |
30 | + this.name = name; | |
31 | + } | |
32 | + | |
33 | + public List<Point> getChildren() { | |
34 | + return children; | |
35 | + } | |
36 | + | |
37 | + public void setChildren(List<Point> children) { | |
38 | + this.children = children; | |
39 | + } | |
40 | + | |
41 | + | |
42 | + | |
43 | + public String getSubjectCode() { | |
44 | + return subjectCode; | |
45 | + } | |
46 | + | |
47 | + public void setSubjectCode(String subjectCode) { | |
48 | + this.subjectCode = subjectCode; | |
49 | + } | |
50 | + | |
51 | + public static Point parse(String json){ | |
52 | + Gson gson = new Gson(); | |
53 | + return gson.fromJson(json, Point.class); | |
54 | + } | |
55 | + | |
56 | + public String toJson(){ | |
57 | + Gson gson = new Gson(); | |
58 | + return gson.toJson(this); | |
59 | + } | |
60 | +} | ... | ... |
src/com/fh/controller/api/ResponseGson.java
1 | 1 | package com.fh.controller.api; |
2 | 2 | |
3 | +import java.lang.reflect.ParameterizedType; | |
4 | +import java.lang.reflect.Type; | |
5 | +import java.util.List; | |
6 | + | |
7 | +import com.fh.bean.Point; | |
3 | 8 | import com.google.gson.Gson; |
9 | +import com.google.gson.GsonBuilder; | |
10 | +import com.google.gson.reflect.TypeToken; | |
4 | 11 | |
5 | 12 | public class ResponseGson<T> { |
6 | 13 | |
... | ... | @@ -8,7 +15,7 @@ public class ResponseGson<T> { |
8 | 15 | |
9 | 16 | private String message = "success"; |
10 | 17 | |
11 | - private Object data; | |
18 | + private T data; | |
12 | 19 | |
13 | 20 | public String getCode() { |
14 | 21 | return code; |
... | ... | @@ -26,7 +33,7 @@ public class ResponseGson<T> { |
26 | 33 | this.message = message; |
27 | 34 | } |
28 | 35 | |
29 | - public Object getData() { | |
36 | + public T getData() { | |
30 | 37 | return data; |
31 | 38 | } |
32 | 39 | |
... | ... | @@ -35,10 +42,7 @@ public class ResponseGson<T> { |
35 | 42 | } |
36 | 43 | |
37 | 44 | public String toJson(){ |
38 | - if(data == null){ | |
39 | - data = new Object(); | |
40 | - } | |
41 | - Gson gson = new Gson(); | |
45 | + Gson gson = new GsonBuilder().serializeNulls().create(); | |
42 | 46 | return gson.toJson(this); |
43 | 47 | } |
44 | 48 | |
... | ... | @@ -48,6 +52,39 @@ public class ResponseGson<T> { |
48 | 52 | + ", data=" + data + "]"; |
49 | 53 | } |
50 | 54 | |
55 | + public static <T> ResponseGson<T> parse(String json) { | |
56 | + Gson gson = new Gson(); | |
57 | + Type objectType = new TypeToken<ResponseGson<T>>() {}.getType(); | |
58 | + return gson.fromJson(json, objectType); | |
59 | + } | |
60 | + | |
61 | + public static <T> ResponseGson<T> parse(String json,Class clazz) { | |
62 | + Gson gson = new Gson(); | |
63 | + if(clazz == Point.class){ | |
64 | + Type objectType = new TypeToken<ResponseGson<List<Point>>>() {}.getType(); | |
65 | + return gson.fromJson(json, objectType); | |
66 | + } | |
67 | + return null; | |
68 | + } | |
69 | + | |
70 | + | |
71 | + | |
72 | + static ParameterizedType type(final Class raw, final Type... args) { | |
73 | + return new ParameterizedType() { | |
74 | + public Type getRawType() { | |
75 | + return raw; | |
76 | + } | |
77 | + | |
78 | + public Type[] getActualTypeArguments() { | |
79 | + return args; | |
80 | + } | |
81 | + | |
82 | + public Type getOwnerType() { | |
83 | + return null; | |
84 | + } | |
85 | + }; | |
86 | + } | |
87 | + | |
51 | 88 | |
52 | 89 | public void setSuccess(){ |
53 | 90 | code = "0" ; | ... | ... |
src/com/fh/controller/api/V1.java
... | ... | @@ -2,7 +2,9 @@ package com.fh.controller.api; |
2 | 2 | |
3 | 3 | import java.util.ArrayList; |
4 | 4 | import java.util.Date; |
5 | +import java.util.Iterator; | |
5 | 6 | import java.util.List; |
7 | +import java.util.Map; | |
6 | 8 | |
7 | 9 | import javax.annotation.Resource; |
8 | 10 | import javax.servlet.http.HttpServletRequest; |
... | ... | @@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; |
14 | 16 | import org.springframework.web.bind.annotation.ResponseBody; |
15 | 17 | |
16 | 18 | import com.fh.bean.Paper; |
19 | +import com.fh.bean.Point; | |
17 | 20 | import com.fh.bean.Question; |
18 | 21 | import com.fh.bean.StudentAnswer; |
19 | 22 | import com.fh.bean.TestPaper; |
... | ... | @@ -27,6 +30,7 @@ import com.fh.service.feedback.problemphenomenon.ProblemPhenomenonManager; |
27 | 30 | import com.fh.service.software.softwareversion.SoftwareVersionManager; |
28 | 31 | import com.fh.service.sunvote.attachkeyboard.AttachKeyboardManager; |
29 | 32 | import com.fh.service.sunvote.basestation.BasestationManager; |
33 | +import com.fh.service.sunvote.cache.CacheManager; | |
30 | 34 | import com.fh.service.sunvote.chapter.ChapterManager; |
31 | 35 | import com.fh.service.sunvote.classbasetation.ClassBasetationManager; |
32 | 36 | import com.fh.service.sunvote.classroster.ClassRosterManager; |
... | ... | @@ -52,10 +56,10 @@ import com.fh.service.sunvote.student.StudentManager; |
52 | 56 | import com.fh.service.sunvote.studenttest.StudentTestManager; |
53 | 57 | import com.fh.service.sunvote.subject.SubjectManager; |
54 | 58 | import com.fh.service.sunvote.teacher.TeacherManager; |
59 | +import com.fh.service.sunvote.teachingmaterial.TeachingMaterialManager; | |
55 | 60 | import com.fh.service.sunvote.testpaper.TestPaperManager; |
56 | 61 | import com.fh.service.sunvote.testpaperinfo.TestPaperInfoManager; |
57 | 62 | import com.fh.service.system.user.UserManager; |
58 | -import com.fh.util.Jurisdiction; | |
59 | 63 | import com.fh.util.PageData; |
60 | 64 | import com.fh.util.Tools; |
61 | 65 | |
... | ... | @@ -149,22 +153,28 @@ public class V1 extends BaseController { |
149 | 153 | |
150 | 154 | @Resource(name = "v1Service") |
151 | 155 | private V1Manager v1Service; |
152 | - | |
153 | - @Resource(name="softwareversionService") | |
156 | + | |
157 | + @Resource(name = "softwareversionService") | |
154 | 158 | private SoftwareVersionManager softwareversionService; |
155 | - | |
156 | - @Resource(name="attachkeyboardService") | |
159 | + | |
160 | + @Resource(name = "attachkeyboardService") | |
157 | 161 | private AttachKeyboardManager attachkeyboardService; |
158 | - | |
159 | - @Resource(name="networkstatisticsService") | |
162 | + | |
163 | + @Resource(name = "networkstatisticsService") | |
160 | 164 | private NetworkStatisticsManager networkstatisticsService; |
161 | - | |
162 | - @Resource(name="eventService") | |
165 | + | |
166 | + @Resource(name = "eventService") | |
163 | 167 | private EventManager eventService; |
164 | - | |
165 | - @Resource(name="userService") | |
168 | + | |
169 | + @Resource(name = "userService") | |
166 | 170 | private UserManager userService; |
167 | 171 | |
172 | + @Resource(name = "teachingmaterialService") | |
173 | + private TeachingMaterialManager teachingmaterialService; | |
174 | + | |
175 | + @Resource(name="cacheService") | |
176 | + private CacheManager cacheService; | |
177 | + | |
168 | 178 | @RequestMapping(value = "/login", produces = "application/json;charset=UTF-8") |
169 | 179 | @ResponseBody |
170 | 180 | public Object login() throws Exception { |
... | ... | @@ -174,8 +184,9 @@ public class V1 extends BaseController { |
174 | 184 | if (!pd.containsKey("ACCOUT")) { |
175 | 185 | pd.put("ACCOUT", pd.get("USERNAME")); |
176 | 186 | } |
177 | - if (((pd.containsKey("USERNAME") || (pd.containsKey("ACCOUT") && pd.get("ACCOUT") != null)) && pd | |
178 | - .containsKey("PASSWORD")) || pd.containsKey("KEYPAD_ID")) { | |
187 | + if (((pd.containsKey("USERNAME") || (pd.containsKey("ACCOUT") && pd | |
188 | + .get("ACCOUT") != null)) && pd.containsKey("PASSWORD")) | |
189 | + || pd.containsKey("KEYPAD_ID")) { | |
179 | 190 | PageData pageData = teacherService.getUserInfo(pd); |
180 | 191 | if (pageData != null && pageData.getString("ID") != null) { |
181 | 192 | pageData.put("PASSWORD", "");// 返回参数中不返回密码 |
... | ... | @@ -193,19 +204,19 @@ public class V1 extends BaseController { |
193 | 204 | pageData.put("subjectList", subjectList); |
194 | 205 | |
195 | 206 | pageData.remove("SUBJECT_IDS"); |
196 | - | |
207 | + | |
197 | 208 | PageData eventPd = new PageData(); |
198 | 209 | eventPd.put("EVENT_ID", get32UUID()); |
199 | 210 | eventPd.put("EVENT_NAME", "login"); |
200 | 211 | eventPd.put("EVENT_USER", pageData.getString("ID")); |
201 | 212 | eventPd.put("EVENT_TYPE", "0"); |
202 | - eventPd.put("EVENT_START_TIME",Tools.date2Str(new Date())); | |
203 | - if(pd.getString("CLIENT_ID") != null){ | |
213 | + eventPd.put("EVENT_START_TIME", Tools.date2Str(new Date())); | |
214 | + if (pd.getString("CLIENT_ID") != null) { | |
204 | 215 | eventPd.put("CLIENT_ID", pd.getString("CLIENT_ID")); |
205 | - }else{ | |
216 | + } else { | |
206 | 217 | eventPd.put("CLIENT_ID", "CLIENT"); |
207 | 218 | } |
208 | - eventPd.put("EVENT_IP",getRemoteIp()); | |
219 | + eventPd.put("EVENT_IP", getRemoteIp()); | |
209 | 220 | eventService.save(eventPd); |
210 | 221 | |
211 | 222 | res.setData(pageData); |
... | ... | @@ -235,23 +246,26 @@ public class V1 extends BaseController { |
235 | 246 | List<PageData> studentList = v1Service.getClassStudent(pt); |
236 | 247 | pageData.put("studentList", studentList); |
237 | 248 | pt.put("CLASS_ID", pageData.get("ID")); |
238 | - List<PageData> keyboards = attachkeyboardService.listAllClassId(pt); | |
249 | + List<PageData> keyboards = attachkeyboardService | |
250 | + .listAllClassId(pt); | |
239 | 251 | pageData.put("keyboards", keyboards); |
240 | 252 | res.setData(pageData); |
241 | 253 | } else { |
242 | 254 | res.set2Error(); |
243 | 255 | } |
244 | - logger.info("class cost time : " + (System.currentTimeMillis() - cur)); | |
256 | + logger.info("class cost time : " | |
257 | + + (System.currentTimeMillis() - cur)); | |
245 | 258 | return res.toJson(); |
246 | 259 | } else { |
247 | 260 | ResponseGson<List<PageData>> res = new ResponseGson(); |
248 | 261 | List<PageData> list = sclassService.listAll(pd); |
249 | 262 | res.setData(list); |
250 | - logger.info("class cost time : " + (System.currentTimeMillis() - cur)); | |
263 | + logger.info("class cost time : " | |
264 | + + (System.currentTimeMillis() - cur)); | |
251 | 265 | return res.toJson(); |
252 | 266 | } |
253 | 267 | } |
254 | - | |
268 | + | |
255 | 269 | @RequestMapping(value = "/questiontype", produces = "application/json;charset=UTF-8") |
256 | 270 | @ResponseBody |
257 | 271 | public Object questiontype() throws Exception { |
... | ... | @@ -261,10 +275,11 @@ public class V1 extends BaseController { |
261 | 275 | ResponseGson<List<PageData>> res = new ResponseGson(); |
262 | 276 | List<PageData> list = questiontypeService.listAll(pd); |
263 | 277 | res.setData(list); |
264 | - logger.info("questiontype cost time : " + (System.currentTimeMillis() - cur)); | |
278 | + logger.info("questiontype cost time : " | |
279 | + + (System.currentTimeMillis() - cur)); | |
265 | 280 | return res.toJson(); |
266 | 281 | } |
267 | - | |
282 | + | |
268 | 283 | @RequestMapping(value = "/classtype", produces = "application/json;charset=UTF-8") |
269 | 284 | @ResponseBody |
270 | 285 | public Object classtype() throws Exception { |
... | ... | @@ -274,10 +289,11 @@ public class V1 extends BaseController { |
274 | 289 | ResponseGson<List<PageData>> res = new ResponseGson(); |
275 | 290 | List<PageData> list = classtypeService.listAll(pd); |
276 | 291 | res.setData(list); |
277 | - logger.info("classtype cost time : " + (System.currentTimeMillis() - cur)); | |
292 | + logger.info("classtype cost time : " | |
293 | + + (System.currentTimeMillis() - cur)); | |
278 | 294 | return res.toJson(); |
279 | 295 | } |
280 | - | |
296 | + | |
281 | 297 | @RequestMapping(value = "/grade", produces = "application/json;charset=UTF-8") |
282 | 298 | @ResponseBody |
283 | 299 | public Object grade() throws Exception { |
... | ... | @@ -295,7 +311,7 @@ public class V1 extends BaseController { |
295 | 311 | logger.info("class cost time : " + (System.currentTimeMillis() - cur)); |
296 | 312 | return res.toJson(); |
297 | 313 | } |
298 | - | |
314 | + | |
299 | 315 | @RequestMapping(value = "/subject", produces = "application/json;charset=UTF-8") |
300 | 316 | @ResponseBody |
301 | 317 | public Object subject() throws Exception { |
... | ... | @@ -313,8 +329,6 @@ public class V1 extends BaseController { |
313 | 329 | logger.info("subject cost time : " + (System.currentTimeMillis() - cur)); |
314 | 330 | return res.toJson(); |
315 | 331 | } |
316 | - | |
317 | - | |
318 | 332 | |
319 | 333 | @RequestMapping(value = "/keypadscan", produces = "application/json;charset=UTF-8") |
320 | 334 | @ResponseBody |
... | ... | @@ -333,7 +347,8 @@ public class V1 extends BaseController { |
333 | 347 | } catch (Exception ex) { |
334 | 348 | res.setDataError(); |
335 | 349 | } |
336 | - logger.info("keypadScan cost time : " + (System.currentTimeMillis() - cur)); | |
350 | + logger.info("keypadScan cost time : " | |
351 | + + (System.currentTimeMillis() - cur)); | |
337 | 352 | return res.toJson(); |
338 | 353 | } |
339 | 354 | |
... | ... | @@ -418,9 +433,9 @@ public class V1 extends BaseController { |
418 | 433 | question.setQuestion_from(qpd |
419 | 434 | .getString("QUESTION_FROM")); |
420 | 435 | question.setScore(qpd.getString("SCORE")); |
421 | - question.setPart_score(qpd | |
422 | - .getString("PART_SCORE")); | |
423 | - question.setQuestionType(qpd.getString("PROBLEM_TYPE_ID")); | |
436 | + question.setPart_score(qpd.getString("PART_SCORE")); | |
437 | + question.setQuestionType(qpd | |
438 | + .getString("PROBLEM_TYPE_ID")); | |
424 | 439 | question.setRank(qpd.getString("RANK")); |
425 | 440 | question.setNo_name(qpd.getString("NO_NAME")); |
426 | 441 | if ("-1".equals("" + qpd.getString("P_ID"))) { |
... | ... | @@ -449,9 +464,9 @@ public class V1 extends BaseController { |
449 | 464 | qq.setQuestion_from(q |
450 | 465 | .getString("QUESTION_FROM")); |
451 | 466 | qq.setScore(q.getString("SCORE")); |
452 | - qq.setPart_score(q | |
453 | - .getString("PART_SCORE")); | |
454 | - qq.setQuestionType(qpd.getString("PROBLEM_TYPE_ID")); | |
467 | + qq.setPart_score(q.getString("PART_SCORE")); | |
468 | + qq.setQuestionType(qpd | |
469 | + .getString("PROBLEM_TYPE_ID")); | |
455 | 470 | qq.setRank(q.getString("RANK")); |
456 | 471 | qq.setNo_name(q.getString("NO_NAME")); |
457 | 472 | question.getQuestions().add(qq); |
... | ... | @@ -477,7 +492,8 @@ public class V1 extends BaseController { |
477 | 492 | } else { |
478 | 493 | res.setOtherError(); |
479 | 494 | } |
480 | - logger.info("paperInfo cost time : " + (System.currentTimeMillis() - cur)); | |
495 | + logger.info("paperInfo cost time : " | |
496 | + + (System.currentTimeMillis() - cur)); | |
481 | 497 | return res.toJson(); |
482 | 498 | } |
483 | 499 | |
... | ... | @@ -488,10 +504,11 @@ public class V1 extends BaseController { |
488 | 504 | long cur = System.currentTimeMillis(); |
489 | 505 | PageData pd = this.getPageData(); |
490 | 506 | ResponseGson<PageData> res = new ResponseGson(); |
491 | - logger.info("paperquestion cost time : " + (System.currentTimeMillis() - cur)); | |
507 | + logger.info("paperquestion cost time : " | |
508 | + + (System.currentTimeMillis() - cur)); | |
492 | 509 | return res.toJson(); |
493 | 510 | } |
494 | - | |
511 | + | |
495 | 512 | @RequestMapping(value = "/question", produces = "application/json;charset=UTF-8") |
496 | 513 | @ResponseBody |
497 | 514 | public Object question() throws Exception { |
... | ... | @@ -499,17 +516,18 @@ public class V1 extends BaseController { |
499 | 516 | long cur = System.currentTimeMillis(); |
500 | 517 | PageData pd = this.getPageData(); |
501 | 518 | ResponseGson<PageData> res = new ResponseGson(); |
502 | - if(pd.containsKey("ID")){ | |
519 | + if (pd.containsKey("ID")) { | |
503 | 520 | pd.put("QUESTION_ID", pd.get("ID")); |
504 | 521 | PageData data = questionService.findById(pd); |
505 | 522 | res.setData(data); |
506 | - }else{ | |
523 | + } else { | |
507 | 524 | res.setDataError(); |
508 | 525 | } |
509 | - logger.info("question cost time : " + (System.currentTimeMillis() - cur)); | |
526 | + logger.info("question cost time : " | |
527 | + + (System.currentTimeMillis() - cur)); | |
510 | 528 | return res.toJson(); |
511 | 529 | } |
512 | - | |
530 | + | |
513 | 531 | @RequestMapping(value = "/question/add", produces = "application/json;charset=UTF-8") |
514 | 532 | @ResponseBody |
515 | 533 | public Object questionAdd() throws Exception { |
... | ... | @@ -519,10 +537,11 @@ public class V1 extends BaseController { |
519 | 537 | ResponseGson<PageData> res = new ResponseGson(); |
520 | 538 | pd.put("QUESTION_ID", this.get32UUID()); |
521 | 539 | questionService.save(pd); |
522 | - logger.info("questionAdd cost time : " + (System.currentTimeMillis() - cur)); | |
540 | + logger.info("questionAdd cost time : " | |
541 | + + (System.currentTimeMillis() - cur)); | |
523 | 542 | return res.toJson(); |
524 | 543 | } |
525 | - | |
544 | + | |
526 | 545 | @RequestMapping(value = "/uploadpaper", produces = "application/json;charset=UTF-8") |
527 | 546 | @ResponseBody |
528 | 547 | public Object uploadpaper() throws Exception { |
... | ... | @@ -552,8 +571,7 @@ public class V1 extends BaseController { |
552 | 571 | paperPd.put("CREATE_DATE", Tools.date2Str(new Date())); |
553 | 572 | paperPd.put("MODIFY_DATE", Tools.date2Str(new Date())); |
554 | 573 | |
555 | - int questionNum = 0 ; | |
556 | - | |
574 | + int questionNum = 0; | |
557 | 575 | |
558 | 576 | List<Question> questions = paper.getQuestions(); |
559 | 577 | if (questions != null) { |
... | ... | @@ -565,12 +583,14 @@ public class V1 extends BaseController { |
565 | 583 | && question.getQuestions().size() > 0) { |
566 | 584 | qPd.put("P_ID", "-1"); |
567 | 585 | } else { |
568 | - questionNum ++ ; | |
586 | + questionNum++; | |
569 | 587 | qPd.put("P_ID", "0"); |
570 | 588 | } |
571 | 589 | qPd.put("SUBJECT_ID", paper.getSubject_id()); |
572 | 590 | qPd.put("CHAPTER_ID", question.getChapter_id()); |
573 | - qPd.put("PROBLEM_TYPE_ID", question.getProblem_type_id() == null ? "1" : question.getProblem_type_id()); | |
591 | + qPd.put("PROBLEM_TYPE_ID", | |
592 | + question.getProblem_type_id() == null ? "1" | |
593 | + : question.getProblem_type_id()); | |
574 | 594 | qPd.put("TEACHER_ID", paper.getUser_id()); |
575 | 595 | qPd.put("SCHOOL_ID", schoolID); |
576 | 596 | qPd.put("KNOWLEDGE_ID", question.getKnowledge_id()); |
... | ... | @@ -607,7 +627,9 @@ public class V1 extends BaseController { |
607 | 627 | cqPd.put("P_ID", questionID); |
608 | 628 | cqPd.put("SUBJECT_ID", paper.getSubject_id()); |
609 | 629 | cqPd.put("CHAPTER_ID", q.getChapter_id()); |
610 | - cqPd.put("PROBLEM_TYPE_ID", question.getProblem_type_id() == null ? "1" : question.getProblem_type_id()); | |
630 | + cqPd.put("PROBLEM_TYPE_ID", question | |
631 | + .getProblem_type_id() == null ? "1" | |
632 | + : question.getProblem_type_id()); | |
611 | 633 | cqPd.put("TEACHER_ID", paper.getUser_id()); |
612 | 634 | cqPd.put("SCHOOL_ID", schoolID); |
613 | 635 | cqPd.put("KNOWLEDGE_ID", q.getKnowledge_id()); |
... | ... | @@ -636,7 +658,7 @@ public class V1 extends BaseController { |
636 | 658 | cpqPd.put("PAPERQUESTION_ID", this.get32UUID()); |
637 | 659 | |
638 | 660 | paperquestionService.save(cpqPd); |
639 | - questionNum ++ ; | |
661 | + questionNum++; | |
640 | 662 | } |
641 | 663 | } |
642 | 664 | } |
... | ... | @@ -647,7 +669,37 @@ public class V1 extends BaseController { |
647 | 669 | } else { |
648 | 670 | res.setDataError(); |
649 | 671 | } |
650 | - logger.info("uploadpaper cost time : " + (System.currentTimeMillis() - cur)); | |
672 | + logger.info("uploadpaper cost time : " | |
673 | + + (System.currentTimeMillis() - cur)); | |
674 | + return res.toJson(); | |
675 | + } | |
676 | + | |
677 | + @RequestMapping(value = "/uploadpoint", produces = "application/json;charset=UTF-8") | |
678 | + @ResponseBody | |
679 | + public Object uploadpoint() throws Exception { | |
680 | + event("uploadpoint"); | |
681 | + long cur = System.currentTimeMillis(); | |
682 | + PageData pd = this.getPageData(); | |
683 | + ResponseGson<String> res = new ResponseGson(); | |
684 | + | |
685 | + if (!StringUtils.isEmpty(pd.getJsonString())) { | |
686 | + try { | |
687 | + ResponseGson<List<Point>> req = ResponseGson.parse( | |
688 | + pd.getJsonString(), Point.class); | |
689 | + List<Point> list = req.getData(); | |
690 | + if (list != null && list.size() > 0) { | |
691 | + for (Point point : list) { | |
692 | + savePoint(point, null); | |
693 | + } | |
694 | + } | |
695 | + } catch (Exception e) { | |
696 | + res.setError(); | |
697 | + } | |
698 | + } else { | |
699 | + res.setDataError(); | |
700 | + } | |
701 | + logger.info("uploadpoint cost time : " | |
702 | + + (System.currentTimeMillis() - cur)); | |
651 | 703 | return res.toJson(); |
652 | 704 | } |
653 | 705 | |
... | ... | @@ -747,7 +799,7 @@ public class V1 extends BaseController { |
747 | 799 | } |
748 | 800 | testpaperinfoService.batchSave(testInfoPdList); |
749 | 801 | } |
750 | - }else{ | |
802 | + } else { | |
751 | 803 | testPaperId = listData.get(0).getString("TESTPAPER_ID"); |
752 | 804 | } |
753 | 805 | res.setData(testPaperId); |
... | ... | @@ -759,13 +811,13 @@ public class V1 extends BaseController { |
759 | 811 | } else { |
760 | 812 | res.setDataError(); |
761 | 813 | } |
762 | - logger.info("uploadtestpaper cost time:" + (System.currentTimeMillis() - cur)); | |
814 | + logger.info("uploadtestpaper cost time:" | |
815 | + + (System.currentTimeMillis() - cur)); | |
763 | 816 | |
764 | 817 | return res.toJson(); |
765 | 818 | |
766 | 819 | } |
767 | - | |
768 | - | |
820 | + | |
769 | 821 | // 上传测验成绩 |
770 | 822 | @RequestMapping(value = "/uploadupdatetestpaper", produces = "application/json;charset=UTF-8") |
771 | 823 | @ResponseBody |
... | ... | @@ -879,6 +931,74 @@ public class V1 extends BaseController { |
879 | 931 | |
880 | 932 | } |
881 | 933 | |
934 | + @RequestMapping(value = "/point", produces = "application/json;charset=UTF-8") | |
935 | + @ResponseBody | |
936 | + public Object point() throws Exception { | |
937 | + ResponseGson<List<PageData>> res = new ResponseGson(); | |
938 | + | |
939 | + PageData pd = getPageData(); | |
940 | + String key = this.getRequestKey(pd,"point"); | |
941 | + PageData pagedata = new PageData(); | |
942 | + pagedata.put("KEY", key); | |
943 | + if(!"".equals(key.trim())){ | |
944 | + PageData ret = cacheService.findById(pagedata); | |
945 | + if(ret != null && ret.get("CACHE") != null){ | |
946 | + return ret.get("CACHE"); | |
947 | + } | |
948 | + } | |
949 | + List<PageData> list = knowledgeService.listAllknowledge(pd); | |
950 | + String depth = pd.getString("DEPTH"); | |
951 | + int end = 3 ; | |
952 | + if(depth != null){ | |
953 | + try{ | |
954 | + end = Integer.parseInt(depth); | |
955 | + }catch(Exception e){ | |
956 | + | |
957 | + } | |
958 | + } | |
959 | + roundPointData(list,1,end); | |
960 | + res.setData(list); | |
961 | + String str = res.toJson(); | |
962 | + str = str.replaceAll("[^\\u0000-\\uFFFF]", ""); | |
963 | + pagedata.put("CACHE", str); | |
964 | + cacheService.save(pagedata); | |
965 | + return str; | |
966 | + } | |
967 | + | |
968 | + private void roundPointData(List<PageData> list,int dept , int end) throws Exception { | |
969 | + if (list != null) { | |
970 | + for (PageData pd : list) { | |
971 | + pd.put("P_ID", pd.getString("KNOWLEDGE_ID")); | |
972 | + if (pd.getString("P_ID") != null | |
973 | + && !"".equals(pd.getString("P_ID")) && dept < end) { | |
974 | + List<PageData> ret = knowledgeService.listAllknowledge(pd); | |
975 | + if (ret != null && ret.size() > 0) { | |
976 | + roundPointData(ret,dept + 1,end); | |
977 | + pd.put("CHILDREN", ret); | |
978 | + } | |
979 | + } | |
980 | + pd.remove("P_ID"); | |
981 | + } | |
982 | + } | |
983 | + } | |
984 | + | |
985 | + private void roundChapterData(List<PageData> list,int dept,int end) throws Exception { | |
986 | + if (list != null && dept < end) { | |
987 | + for (PageData pd : list) { | |
988 | + pd.put("P_ID", pd.getString("ID")); | |
989 | + if (pd.getString("P_ID") != null | |
990 | + && !"".equals(pd.getString("P_ID"))) { | |
991 | + List<PageData> ret = chapterService.listAllChapter(pd); | |
992 | + if (ret != null && ret.size() > 0) { | |
993 | + roundChapterData(ret,dept+1,end); | |
994 | + pd.put("CHILDREN", ret); | |
995 | + } | |
996 | + } | |
997 | + pd.remove("P_ID"); | |
998 | + } | |
999 | + } | |
1000 | + } | |
1001 | + | |
882 | 1002 | // 下载测验成绩 |
883 | 1003 | @RequestMapping(value = "/downloadtestpaper", produces = "application/json;charset=UTF-8") |
884 | 1004 | @ResponseBody |
... | ... | @@ -960,7 +1080,8 @@ public class V1 extends BaseController { |
960 | 1080 | res.setError(); |
961 | 1081 | } |
962 | 1082 | } |
963 | - logger.info("downloadtestpaper cost time:" + (System.currentTimeMillis() - cur)); | |
1083 | + logger.info("downloadtestpaper cost time:" | |
1084 | + + (System.currentTimeMillis() - cur)); | |
964 | 1085 | return res.toJson(); |
965 | 1086 | |
966 | 1087 | } |
... | ... | @@ -1006,20 +1127,18 @@ public class V1 extends BaseController { |
1006 | 1127 | return res.toJson(); |
1007 | 1128 | |
1008 | 1129 | } |
1009 | - | |
1010 | - | |
1130 | + | |
1011 | 1131 | @RequestMapping(value = "/schooladmin", produces = "application/json;charset=UTF-8") |
1012 | 1132 | @ResponseBody |
1013 | - public void schoolAdmin(){ | |
1133 | + public void schoolAdmin() { | |
1014 | 1134 | event("schoolAdmin"); |
1015 | 1135 | PageData pd = this.getPageData(); |
1016 | 1136 | this.getUserID(); |
1017 | 1137 | } |
1018 | - | |
1019 | - | |
1138 | + | |
1020 | 1139 | @RequestMapping(value = "/network", produces = "application/json;charset=UTF-8") |
1021 | 1140 | @ResponseBody |
1022 | - public Object network() throws Exception{ | |
1141 | + public Object network() throws Exception { | |
1023 | 1142 | event("network"); |
1024 | 1143 | PageData pd = this.getPageData(); |
1025 | 1144 | ResponseGson<PageData> res = new ResponseGson(); |
... | ... | @@ -1033,7 +1152,7 @@ public class V1 extends BaseController { |
1033 | 1152 | .getString("SUCCESS_COUNT")); |
1034 | 1153 | spd.put("SUCCESS_COUNT", ++successCount + ""); |
1035 | 1154 | int fail = seq - successCount; |
1036 | - if(fail < 0 ){ | |
1155 | + if (fail < 0) { | |
1037 | 1156 | fail = 0; |
1038 | 1157 | } |
1039 | 1158 | spd.put("FAIL_COUNT", fail + ""); |
... | ... | @@ -1047,7 +1166,7 @@ public class V1 extends BaseController { |
1047 | 1166 | pd.put("SUCCESS_COUNT", "1"); |
1048 | 1167 | pd.put("CLIENT_IP", getRemoteIp()); |
1049 | 1168 | int fail = seq - 1; |
1050 | - if(fail < 0 ){ | |
1169 | + if (fail < 0) { | |
1051 | 1170 | fail = 0; |
1052 | 1171 | } |
1053 | 1172 | pd.put("FAIL_COUNT", fail + ""); |
... | ... | @@ -1059,14 +1178,13 @@ public class V1 extends BaseController { |
1059 | 1178 | pd.remove("NETWORKSTATISTICS_ID"); |
1060 | 1179 | res.setData(pd); |
1061 | 1180 | } |
1062 | - }else{ | |
1181 | + } else { | |
1063 | 1182 | res.setDataError(); |
1064 | 1183 | } |
1065 | 1184 | return res.toJson(); |
1066 | 1185 | } |
1067 | - | |
1068 | - | |
1069 | - public String getRemoteIp(){ | |
1186 | + | |
1187 | + public String getRemoteIp() { | |
1070 | 1188 | HttpServletRequest request = getRequest(); |
1071 | 1189 | String ip = ""; |
1072 | 1190 | if (request.getHeader("x-forwarded-for") == null) { |
... | ... | @@ -1076,70 +1194,264 @@ public class V1 extends BaseController { |
1076 | 1194 | } |
1077 | 1195 | return ip; |
1078 | 1196 | } |
1079 | - | |
1197 | + | |
1080 | 1198 | @RequestMapping(value = "/newversion", produces = "application/json;charset=UTF-8") |
1081 | 1199 | @ResponseBody |
1082 | - public Object getNewVersion(HttpServletRequest request) throws Exception{ | |
1200 | + public Object getNewVersion(HttpServletRequest request) throws Exception { | |
1083 | 1201 | event("getNewVersion"); |
1084 | 1202 | PageData pd = this.getPageData(); |
1085 | 1203 | String softId = pd.getString("SOFTID"); |
1086 | 1204 | String path = request.getContextPath(); |
1087 | - String basePath = request.getScheme() + "://" | |
1088 | - + request.getServerName() + ":" + request.getServerPort() | |
1089 | - + path + "/"; | |
1205 | + String basePath = request.getScheme() + "://" + request.getServerName() | |
1206 | + + ":" + request.getServerPort() + path + "/"; | |
1090 | 1207 | ResponseGson<PageData> res = new ResponseGson(); |
1091 | - if(softId != null && !"".equals(softId)){ | |
1208 | + if (softId != null && !"".equals(softId)) { | |
1092 | 1209 | pd.put("SOFTWARE_ID", softId); |
1093 | 1210 | PageData result = softwareversionService.findNewVersion(pd); |
1094 | - if(result != null){ | |
1211 | + if (result != null) { | |
1095 | 1212 | result.remove("SOFTWAREVERSION_ID"); |
1096 | 1213 | result.remove("SOFTWARE_ID"); |
1097 | - result.put("VERSION_PATH",basePath + "uploadFiles/uploadFile/" + result.getString("VERSION_PATH")); | |
1214 | + result.put("VERSION_PATH", basePath + "uploadFiles/uploadFile/" | |
1215 | + + result.getString("VERSION_PATH")); | |
1098 | 1216 | res.setData(result); |
1099 | - }else{ | |
1217 | + } else { | |
1100 | 1218 | res.setDataError(); |
1101 | 1219 | } |
1102 | - }else{ | |
1220 | + } else { | |
1103 | 1221 | res.setDataError(); |
1104 | 1222 | } |
1105 | 1223 | return res.toJson(); |
1106 | 1224 | } |
1225 | + | |
1226 | + /** | |
1227 | + * 获取教材版本 | |
1228 | + * | |
1229 | + * @return | |
1230 | + * @throws Exception | |
1231 | + */ | |
1232 | + @RequestMapping(value = "/teachingmaterial", produces = "application/json;charset=UTF-8") | |
1233 | + @ResponseBody | |
1234 | + public Object teachingmaterial() throws Exception { | |
1235 | + PageData pd = getPageData(); | |
1236 | + ResponseGson<List<PageData>> ret = new ResponseGson<List<PageData>>(); | |
1237 | + List<PageData> lpd = new ArrayList<PageData>(); | |
1238 | + List<PageData> list = teachingmaterialService.listAll(pd); | |
1239 | + String subjectID = pd.getString("SUBJECT_ID"); | |
1240 | + if (subjectID != null && !"".equals(subjectID)) { | |
1241 | + for (PageData pad : list) { | |
1242 | + String subis = pad.getString("SUBJECT_ID"); | |
1243 | + if (subis != null) { | |
1244 | + String[] subs = subis.split(","); | |
1245 | + if (subs != null) { | |
1246 | + for (String sub : subs) { | |
1247 | + if (subjectID.trim().equals(sub.trim())) { | |
1248 | + pad.remove("SUBJECT_ID"); | |
1249 | + pad.put("VERSION_CODE", pad.getString("VERSION_CODE")); | |
1250 | + lpd.add(pad); | |
1251 | + break; | |
1252 | + } | |
1253 | + } | |
1254 | + } | |
1255 | + } | |
1256 | + } | |
1257 | + } else { | |
1258 | + for (PageData pad : list) { | |
1259 | + pad.remove("SUBJECT_ID"); | |
1260 | + pad.put("VERSION_CODE", pad.getString("VERSION_CODE")); | |
1261 | + lpd.add(pad); | |
1262 | + } | |
1263 | + } | |
1264 | + ret.setData(lpd); | |
1265 | + return ret.toJson(); | |
1266 | + } | |
1267 | + | |
1268 | + /** | |
1269 | + * 获取教材版本 | |
1270 | + * | |
1271 | + * @return | |
1272 | + * @throws Exception | |
1273 | + */ | |
1274 | + @RequestMapping(value = "/chapter", produces = "application/json;charset=UTF-8") | |
1275 | + @ResponseBody | |
1276 | + public Object chapter() throws Exception { | |
1277 | + PageData pd = getPageData(); | |
1278 | + String key = this.getRequestKey(pd,"chapter"); | |
1279 | + PageData pagedata = new PageData(); | |
1280 | + pagedata.put("KEY", key); | |
1281 | + if(!"".equals(key.trim())){ | |
1282 | + PageData ret = cacheService.findById(pagedata); | |
1283 | + if(ret != null && ret.get("CACHE") != null){ | |
1284 | + return ret.get("CACHE"); | |
1285 | + } | |
1286 | + } | |
1287 | + ResponseGson<List<PageData>> res = new ResponseGson<List<PageData>>(); | |
1288 | + List<PageData> list = chapterService.listAllChapter(pd); | |
1289 | + String depth = pd.getString("DEPTH"); | |
1290 | + int end = 3 ; | |
1291 | + if(depth != null){ | |
1292 | + try{ | |
1293 | + end = Integer.parseInt(depth); | |
1294 | + }catch(Exception e){ | |
1295 | + | |
1296 | + } | |
1297 | + } | |
1298 | + roundChapterData(list,1,end); | |
1299 | + res.setData(list); | |
1300 | + String str = res.toJson(); | |
1301 | + str = str.replaceAll("[^\\u0000-\\uFFFF]", ""); | |
1302 | + pagedata.put("CACHE", str); | |
1303 | + cacheService.save(pagedata); | |
1304 | + return str; | |
1305 | + } | |
1306 | + | |
1307 | + /** | |
1308 | + * 获取试题 | |
1309 | + * | |
1310 | + * @return | |
1311 | + * @throws Exception | |
1312 | + */ | |
1313 | + @RequestMapping(value = "/questions", produces = "application/json;charset=UTF-8") | |
1314 | + @ResponseBody | |
1315 | + public Object questions() throws Exception { | |
1316 | + PageData pd = getPageData(); | |
1317 | + ResponseGson<List<PageData>> res = new ResponseGson<List<PageData>>(); | |
1318 | + String teachingmaterialId = pd.getString("TEACHINGMATERIAL_ID"); | |
1319 | + String chapterId = pd.getString("CHAPTER_ID"); | |
1320 | + if(teachingmaterialId != null && !teachingmaterialId.equals("") && chapterId == null){ | |
1321 | + PageData chapterPd = new PageData(); | |
1322 | + chapterPd.put("TEACHINGMATERIAL_ID", teachingmaterialId); | |
1323 | + List<PageData> chapterList = chapterService.listAllChapter(chapterPd); | |
1324 | + roundChapterData(chapterList, 1, 3); | |
1325 | + List<String> ids = getIds(chapterList,"ID"); | |
1326 | + pd.put("CHAPTER_IDS", ids); | |
1327 | + }else{ | |
1328 | + List<String> ids = new ArrayList<String>(); | |
1329 | + if(chapterId != null && !"".equals(chapterId.trim())){ | |
1330 | + ids.add(chapterId); | |
1331 | + } | |
1332 | + pd.put("CHAPTER_IDS", ids); | |
1333 | + } | |
1334 | + pd.remove("CHAPTER_ID"); | |
1335 | + String knowledge = pd.getString("KNOWLEDGE_ID"); | |
1336 | + if(knowledge != null && !"".equals(knowledge.trim())){ | |
1337 | + PageData knowPd = new PageData(); | |
1338 | + knowPd.put("P_ID", knowledge); | |
1339 | + List<PageData> knowlist = knowledgeService.listAllknowledge(knowPd); | |
1340 | + roundPointData(knowlist, 1, 3); | |
1341 | + List<String> ids = getIds(knowlist,"KNOWLEDGE_ID"); | |
1342 | + ids.add(knowledge); | |
1343 | + pd.put("KNOWLEDGE_IDS",ids); | |
1344 | + pd.remove("KNOWLEDGE_ID"); | |
1345 | + } | |
1346 | + List<PageData> list = questionService.listAllquestion(pd); | |
1347 | + res.setData(list); | |
1348 | + return res.toJson(); | |
1349 | + } | |
1107 | 1350 | |
1351 | + /** | |
1352 | + * 随机获取试题 | |
1353 | + * | |
1354 | + * @return | |
1355 | + * @throws Exception | |
1356 | + */ | |
1357 | + @RequestMapping(value = "/randquestions", produces = "application/json;charset=UTF-8") | |
1358 | + @ResponseBody | |
1359 | + public Object randquestions() throws Exception { | |
1360 | + PageData pd = getPageData(); | |
1361 | + ResponseGson<List<PageData>> res = new ResponseGson<List<PageData>>(); | |
1362 | + String teachingmaterialId = pd.getString("TEACHINGMATERIAL_ID"); | |
1363 | + String chapterId = pd.getString("CHAPTER_ID"); | |
1364 | + if(teachingmaterialId != null && !teachingmaterialId.equals("") && chapterId == null){ | |
1365 | + PageData chapterPd = new PageData(); | |
1366 | + chapterPd.put("TEACHINGMATERIAL_ID", teachingmaterialId); | |
1367 | + List<PageData> chapterList = chapterService.listAllChapter(chapterPd); | |
1368 | + roundChapterData(chapterList, 1, 3); | |
1369 | + List<String> ids = getIds(chapterList,"ID"); | |
1370 | + pd.put("CHAPTER_IDS", ids); | |
1371 | + }else{ | |
1372 | + List<String> ids = new ArrayList<String>(); | |
1373 | + if(chapterId != null && !"".equals(chapterId.trim())){ | |
1374 | + ids.add(chapterId); | |
1375 | + } | |
1376 | + pd.put("CHAPTER_IDS", ids); | |
1377 | + } | |
1378 | + pd.remove("CHAPTER_ID"); | |
1379 | + String knowledge = pd.getString("KNOWLEDGE_ID"); | |
1380 | + if(knowledge != null && !"".equals(knowledge.trim())){ | |
1381 | + PageData knowPd = new PageData(); | |
1382 | + knowPd.put("P_ID", knowledge); | |
1383 | + List<PageData> knowlist = knowledgeService.listAllknowledge(knowPd); | |
1384 | + roundPointData(knowlist, 1, 3); | |
1385 | + List<String> ids = getIds(knowlist,"KNOWLEDGE_ID"); | |
1386 | + ids.add(knowledge); | |
1387 | + pd.put("KNOWLEDGE_IDS",ids); | |
1388 | + pd.remove("KNOWLEDGE_ID"); | |
1389 | + } | |
1390 | + List<PageData> list = questionService.listAllRandquestion(pd); | |
1391 | + res.setData(list); | |
1392 | + return res.toJson(); | |
1393 | + } | |
1394 | + | |
1395 | + public List<String> getIds(List<PageData> chapterList,String key){ | |
1396 | + List<String> ids = new ArrayList<String>(); | |
1397 | + if(chapterList != null && chapterList.size() > 0){ | |
1398 | + for(PageData pd : chapterList){ | |
1399 | + String chapterid = pd.getString(key); | |
1400 | + if(chapterid != null && !"".equals(chapterid)){ | |
1401 | + ids.add(chapterid); | |
1402 | + } | |
1403 | + Object obj = pd.get("CHILDREN"); | |
1404 | + if(obj != null && (obj instanceof List)){ | |
1405 | + @SuppressWarnings("unchecked") | |
1406 | + List<PageData> list = (List<PageData>)obj ; | |
1407 | + List<String> ret = getIds(list,key); | |
1408 | + if(ret != null && ret.size() > 0){ | |
1409 | + ids.addAll(ret); | |
1410 | + } | |
1411 | + } | |
1412 | + } | |
1413 | + } | |
1414 | + | |
1415 | + return ids; | |
1416 | + | |
1417 | + } | |
1418 | + | |
1108 | 1419 | @RequestMapping(value = "/tempcreateUser", produces = "application/json;charset=UTF-8") |
1109 | 1420 | @ResponseBody |
1110 | - public Object tempCreateUser() throws Exception{ | |
1421 | + public Object tempCreateUser() throws Exception { | |
1111 | 1422 | PageData pd = new PageData(); |
1112 | 1423 | pd = this.getPageData(); |
1113 | 1424 | pd.put("ID", this.get32UUID()); |
1114 | 1425 | teacherService.save(pd); |
1115 | - pd.put("USER_ID", pd.getString("ID")); //ID 主键 | |
1116 | - pd.put("LAST_LOGIN", ""); //最后登录时间 | |
1117 | - pd.put("IP", ""); //IP | |
1118 | - pd.put("STATUS", "0"); //状态 | |
1426 | + pd.put("USER_ID", pd.getString("ID")); // ID 主键 | |
1427 | + pd.put("LAST_LOGIN", ""); // 最后登录时间 | |
1428 | + pd.put("IP", ""); // IP | |
1429 | + pd.put("STATUS", "0"); // 状态 | |
1119 | 1430 | pd.put("SKIN", "default"); |
1120 | - pd.put("RIGHTS", ""); | |
1431 | + pd.put("RIGHTS", ""); | |
1121 | 1432 | pd.put("USERNAME", pd.getString("ACCOUT")); |
1122 | - pd.put("ROLE_ID", "57bb1e6f138247a0b05cc721a5da1b64"); | |
1123 | - pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("ACCOUT"), pd.getString("PASSWORD")).toString()); //密码加密 | |
1124 | - | |
1125 | - if(null == userService.findByUsername(pd)){ //判断用户名是否存在 | |
1126 | - userService.saveU(pd); //执行保存 | |
1433 | + pd.put("ROLE_ID", "57bb1e6f138247a0b05cc721a5da1b64"); | |
1434 | + pd.put("PASSWORD", | |
1435 | + new SimpleHash("SHA-1", pd.getString("ACCOUT"), pd | |
1436 | + .getString("PASSWORD")).toString()); // 密码加密 | |
1437 | + | |
1438 | + if (null == userService.findByUsername(pd)) { // 判断用户名是否存在 | |
1439 | + userService.saveU(pd); // 执行保存 | |
1127 | 1440 | } |
1128 | - | |
1129 | - //ID, TEACHER_ID, CLASS_ID, SUBJECT_ID, START_DATE, END_DATE, GRADE_ID, TERM_ID, REMARK | |
1441 | + | |
1442 | + // ID, TEACHER_ID, CLASS_ID, SUBJECT_ID, START_DATE, END_DATE, GRADE_ID, | |
1443 | + // TERM_ID, REMARK | |
1130 | 1444 | pd.put("TEACHER_ID", pd.get("ID")); |
1131 | 1445 | pd.put("CLASS_ID", "bc33389101ec46e6b7d47daa8adf58ac"); |
1132 | 1446 | pd.put("SUBJECT_ID", "1"); |
1133 | 1447 | pd.put("GRADE_ID", "1"); |
1134 | - pd.put("TERM_ID","0d8ea2efdef74accbd0d00e9bc07dfbb"); | |
1448 | + pd.put("TERM_ID", "0d8ea2efdef74accbd0d00e9bc07dfbb"); | |
1135 | 1449 | coursemanagementService.save(pd); |
1136 | - | |
1450 | + | |
1137 | 1451 | return "{'res':'success'}"; |
1138 | 1452 | } |
1139 | - | |
1140 | - | |
1141 | 1453 | |
1142 | - private void event(String apiName){ | |
1454 | + private void event(String apiName) { | |
1143 | 1455 | PageData eventPd = new PageData(); |
1144 | 1456 | eventPd.put("EVENT_ID", get32UUID()); |
1145 | 1457 | eventPd.put("EVENT_NAME", apiName); |
... | ... | @@ -1148,11 +1460,218 @@ public class V1 extends BaseController { |
1148 | 1460 | eventPd.put("EVENT_START_TIME", Tools.date2Str(new Date())); |
1149 | 1461 | eventPd.put("CLIENT_ID", "SERVER"); |
1150 | 1462 | eventPd.put("EVENT_IP", getRemoteIp()); |
1151 | - try{ | |
1463 | + try { | |
1152 | 1464 | eventService.save(eventPd); |
1153 | - }catch(Exception e){ | |
1154 | - | |
1465 | + } catch (Exception e) { | |
1466 | + | |
1467 | + } | |
1468 | + } | |
1469 | + | |
1470 | + static int index = 0; | |
1471 | + | |
1472 | + private void savePoint(Point point, String pid) { | |
1473 | + List<Point> children = point.getChildren(); | |
1474 | + if (children != null && children.size() > 0) { | |
1475 | + for (Point p : children) { | |
1476 | + savePoint(p, point.getCode()); | |
1477 | + } | |
1478 | + } | |
1479 | + PageData pageData = new PageData(); | |
1480 | + pageData.put("KNOWLEDGE_ID", point.getCode()); | |
1481 | + pageData.put("NAME", point.getName()); | |
1482 | + pageData.put("P_ID", pid); | |
1483 | + pageData.put("RANK", ++index); | |
1484 | + try { | |
1485 | + knowledgeService.save(pageData); | |
1486 | + } catch (Exception e) { | |
1487 | + e.printStackTrace(); | |
1488 | + } | |
1489 | + } | |
1490 | + | |
1491 | + @RequestMapping(value = "/uploadbook", produces = "application/json;charset=UTF-8") | |
1492 | + @ResponseBody | |
1493 | + public Object uploadbook() throws Exception { | |
1494 | + event("uploadbook"); | |
1495 | + long cur = System.currentTimeMillis(); | |
1496 | + PageData pd = this.getPageData(); | |
1497 | + ResponseGson<String> res = new ResponseGson(); | |
1498 | + | |
1499 | + if (!StringUtils.isEmpty(pd.getJsonString())) { | |
1500 | + try { | |
1501 | + ResponseGson<List<Point>> req = ResponseGson.parse( | |
1502 | + pd.getJsonString(), Point.class); | |
1503 | + List<Point> list = req.getData(); | |
1504 | + if (list != null && list.size() > 0) { | |
1505 | + for (Point point : list) { | |
1506 | + saveBook(point); | |
1507 | + } | |
1508 | + } | |
1509 | + } catch (Exception e) { | |
1510 | + res.setError(); | |
1511 | + } | |
1512 | + } else { | |
1513 | + res.setDataError(); | |
1514 | + } | |
1515 | + logger.info("uploadpoint cost time : " | |
1516 | + + (System.currentTimeMillis() - cur)); | |
1517 | + return res.toJson(); | |
1518 | + } | |
1519 | + | |
1520 | + private void saveBook(Point point) { | |
1521 | + | |
1522 | + PageData pd = new PageData(); | |
1523 | + pd.put("ID", point.getCode()); | |
1524 | + pd.put("NAME", point.getName()); | |
1525 | + pd.put("SUBJECT_ID", point.getSubjectCode()); | |
1526 | + try { | |
1527 | + teachingmaterialService.save(pd); | |
1528 | + } catch (Exception e) { | |
1529 | + // TODO Auto-generated catch block | |
1530 | + e.printStackTrace(); | |
1531 | + } | |
1532 | + } | |
1533 | + | |
1534 | + | |
1535 | + @RequestMapping(value = "/uploadyuncelianquestion", produces = "application/json;charset=UTF-8") | |
1536 | + @ResponseBody | |
1537 | + public Object uploadyuncelianquestion() throws Exception { | |
1538 | + event("uploadyuncelianquestion"); | |
1539 | + long cur = System.currentTimeMillis(); | |
1540 | + PageData pd = this.getPageData(); | |
1541 | + ResponseGson<Object> res = new ResponseGson(); | |
1542 | + | |
1543 | + if (!StringUtils.isEmpty(pd.getJsonString())) { | |
1544 | + try { | |
1545 | + ResponseGson<Object> req = ResponseGson.parse( | |
1546 | + pd.getJsonString()); | |
1547 | + Object data = req.getData(); | |
1548 | + if(data instanceof List){ | |
1549 | + List<Object> list = (List)data; | |
1550 | + for(Object obj : list){ | |
1551 | + if(obj instanceof Map){ | |
1552 | + Map map = (Map)obj; | |
1553 | + | |
1554 | + PageData pageData = new PageData(); | |
1555 | + pageData.put("QUESTION_ID", map.get("id")); | |
1556 | + Object cateObj = map.get("cate"); | |
1557 | + if(cateObj != null){ | |
1558 | + String cate = cateObj.toString(); | |
1559 | + float catef = Float.parseFloat(cate); | |
1560 | + pageData.put("QUESTION_TYPE_ID", (int)catef); | |
1561 | + } | |
1562 | + Object contentObj = map.get("content"); | |
1563 | + if(contentObj != null){ | |
1564 | + String content = contentObj.toString(); | |
1565 | + content = replaceWebUrl(content); | |
1566 | + pageData.put("CONTENT", content); | |
1567 | + } | |
1568 | + Object subjectCodeObj = map.get("subjectCode"); | |
1569 | + if(subjectCodeObj != null){ | |
1570 | + String subjectCode = subjectCodeObj.toString(); | |
1571 | + pageData.put("SUBJECT_ID",subjectCode); | |
1572 | + } | |
1573 | + Object optionsObj = map.get("options"); | |
1574 | + if(optionsObj instanceof List){ | |
1575 | + List ss = (List)optionsObj; | |
1576 | + pageData.put("OPTION_CONTENT", optionsObj.toString()); | |
1577 | + pageData.put("OPTION_NUM", "" + ss.size()); | |
1578 | + } | |
1579 | + Object answersObj = map.get("answers"); | |
1580 | + if(answersObj instanceof List){ | |
1581 | + List answers = (List)answersObj; | |
1582 | + StringBuilder sb = new StringBuilder(); | |
1583 | + for(Object as:answers){ | |
1584 | + sb.append(as.toString()); | |
1585 | + } | |
1586 | + pageData.put("ANSWER", sb.toString()); | |
1587 | + } | |
1588 | + Object difficulty = map.get("difficulty"); | |
1589 | + try{ | |
1590 | + if (difficulty != null) { | |
1591 | + float fdifficulty = Float | |
1592 | + .parseFloat(difficulty.toString()); | |
1593 | + pageData.put("DIFFICULTY", | |
1594 | + (int) fdifficulty); | |
1595 | + } | |
1596 | + }catch(Exception ex){ | |
1597 | + ex.printStackTrace(); | |
1598 | + } | |
1599 | + Object discussObj = map.get("discuss"); | |
1600 | + if(discussObj != null){ | |
1601 | + String discuss = discussObj.toString(); | |
1602 | + discuss = replaceWebUrl(discuss); | |
1603 | + pageData.put("REMARK", discuss); | |
1604 | + } | |
1605 | + Object analyseObj = map.get("analyse"); | |
1606 | + if(analyseObj != null){ | |
1607 | + String analyse = analyseObj.toString(); | |
1608 | + analyse = replaceWebUrl(analyse); | |
1609 | + pageData.put("ANALYSIS", analyse); | |
1610 | + } | |
1611 | + Object methodObj = map.get("method"); | |
1612 | + if(methodObj != null){ | |
1613 | + String method = methodObj.toString(); | |
1614 | + method = replaceWebUrl(method); | |
1615 | + pageData.put("METHOD", method); | |
1616 | + } | |
1617 | + Object points = map.get("points"); | |
1618 | + StringBuilder sb = new StringBuilder(); | |
1619 | + if(points instanceof List){ | |
1620 | + List pointsList = (List)points; | |
1621 | + for(Object pObject : pointsList){ | |
1622 | + if(pObject instanceof Map){ | |
1623 | + Map pMap = (Map)pObject; | |
1624 | + sb.append(pMap.get("code")).append(","); | |
1625 | + } | |
1626 | + } | |
1627 | + | |
1628 | + if(sb.toString().length() > 1){ | |
1629 | + sb.deleteCharAt(sb.length() - 1); | |
1630 | + } | |
1631 | + pageData.put("KNOWLEDGE_ID", sb.toString()); | |
1632 | + } | |
1633 | + pageData.put("QUESTION_FROM", "101"); | |
1634 | + try{ | |
1635 | + questionService.save(pageData); | |
1636 | + }catch(Exception e){ | |
1637 | + logger.error("save fail:" + map.get("id"),e); | |
1638 | + } | |
1639 | + } | |
1640 | + } | |
1641 | + } | |
1642 | + } catch (Exception e) { | |
1643 | + res.setError(); | |
1644 | + } | |
1645 | + } else { | |
1646 | + res.setDataError(); | |
1155 | 1647 | } |
1648 | + logger.info("uploadyuncelianquestion cost time : " | |
1649 | + + (System.currentTimeMillis() - cur)); | |
1650 | + return res.toJson(); | |
1156 | 1651 | } |
1652 | + | |
1157 | 1653 | |
1654 | + private String replaceWebUrl(String content){ | |
1655 | + if(content != null){ | |
1656 | + content = content.replaceAll("http://image.yuncelian.com/1/analysis/", "http://image.yuncelian.com/1/analysis/"); | |
1657 | + } | |
1658 | + return content; | |
1659 | + } | |
1660 | + | |
1661 | + | |
1662 | + public String getRequestKey(PageData pd,String methodName){ | |
1663 | + StringBuilder key = new StringBuilder() ; | |
1664 | + key.append(methodName).append("{"); | |
1665 | + if (pd != null) { | |
1666 | + Iterator iterator = pd.keySet().iterator(); | |
1667 | + while (iterator.hasNext()) { | |
1668 | + Object obj = iterator.next(); | |
1669 | + key.append(obj.toString()).append(":") | |
1670 | + .append(pd.get(obj).toString()).append(";"); | |
1671 | + } | |
1672 | + } | |
1673 | + key.append("}"); | |
1674 | + | |
1675 | + return key.toString(); | |
1676 | + } | |
1158 | 1677 | } | ... | ... |
src/com/fh/controller/sunvote/Myelfun.java
... | ... | @@ -105,13 +105,25 @@ public class Myelfun { |
105 | 105 | public static String findSubjectCName(String type) throws Exception{ |
106 | 106 | SubjectService subjectService = (SubjectService)SpringBeanFactoryUtils.getBean("subjectService"); |
107 | 107 | PageData pageData = new PageData(); |
108 | - pageData.put("ID", type); | |
109 | - pageData = subjectService.findById(pageData); | |
110 | - if(pageData != null){ | |
111 | - return pageData.getString("CNAME"); | |
108 | + StringBuilder sb = new StringBuilder(); | |
109 | + if(type.contains(",")){ | |
110 | + String[] types = type.split(","); | |
111 | + for (String t : types) { | |
112 | + pageData.put("ID", t); | |
113 | + pageData = subjectService.findById(pageData); | |
114 | + if (pageData != null) { | |
115 | + sb.append(pageData.getString("CNAME") + "; "); | |
116 | + } | |
117 | + } | |
118 | + sb.delete(sb.length() -3, sb.length()); | |
112 | 119 | }else{ |
113 | - return "" ; | |
120 | + pageData.put("ID", type); | |
121 | + pageData = subjectService.findById(pageData); | |
122 | + if (pageData != null) { | |
123 | + return pageData.getString("CNAME"); | |
124 | + } | |
114 | 125 | } |
126 | + return sb.toString() ; | |
115 | 127 | } |
116 | 128 | |
117 | 129 | /** | ... | ... |
src/com/fh/controller/sunvote/cache/CacheController.java
0 → 100644
1 | +package com.fh.controller.sunvote.cache; | |
2 | + | |
3 | +import java.io.PrintWriter; | |
4 | +import java.text.DateFormat; | |
5 | +import java.text.SimpleDateFormat; | |
6 | +import java.util.ArrayList; | |
7 | +import java.util.Date; | |
8 | +import java.util.HashMap; | |
9 | +import java.util.List; | |
10 | +import java.util.Map; | |
11 | +import javax.annotation.Resource; | |
12 | +import org.springframework.beans.propertyeditors.CustomDateEditor; | |
13 | +import org.springframework.stereotype.Controller; | |
14 | +import org.springframework.web.bind.WebDataBinder; | |
15 | +import org.springframework.web.bind.annotation.InitBinder; | |
16 | +import org.springframework.web.bind.annotation.RequestMapping; | |
17 | +import org.springframework.web.bind.annotation.ResponseBody; | |
18 | +import org.springframework.web.servlet.ModelAndView; | |
19 | +import com.fh.controller.base.BaseController; | |
20 | +import com.fh.entity.Page; | |
21 | +import com.fh.util.AppUtil; | |
22 | +import com.fh.util.ObjectExcelView; | |
23 | +import com.fh.util.PageData; | |
24 | +import com.fh.util.Jurisdiction; | |
25 | +import com.fh.util.Tools; | |
26 | +import com.fh.service.sunvote.cache.CacheManager; | |
27 | + | |
28 | +/** | |
29 | + * 说明:缓存管理 | |
30 | + * 创建人:FH Q313596790 | |
31 | + * 创建时间:2018-08-08 | |
32 | + */ | |
33 | +@Controller | |
34 | +@RequestMapping(value="/cache") | |
35 | +public class CacheController extends BaseController { | |
36 | + | |
37 | + String menuUrl = "cache/list.do"; //菜单地址(权限用) | |
38 | + @Resource(name="cacheService") | |
39 | + private CacheManager cacheService; | |
40 | + | |
41 | + /**保存 | |
42 | + * @param | |
43 | + * @throws Exception | |
44 | + */ | |
45 | + @RequestMapping(value="/save") | |
46 | + public ModelAndView save() throws Exception{ | |
47 | + logBefore(logger, Jurisdiction.getUsername()+"新增Cache"); | |
48 | + ModelAndView mv = this.getModelAndView(); | |
49 | + PageData pd = new PageData(); | |
50 | + pd = this.getPageData(); | |
51 | + pd.put("KEY", ""); //key | |
52 | + pd.put("CACHE", ""); //cache | |
53 | + cacheService.save(pd); | |
54 | + mv.addObject("msg","success"); | |
55 | + mv.setViewName("save_result"); | |
56 | + return mv; | |
57 | + } | |
58 | + | |
59 | + /**删除 | |
60 | + * @param out | |
61 | + * @throws Exception | |
62 | + */ | |
63 | + @RequestMapping(value="/delete") | |
64 | + public void delete(PrintWriter out) throws Exception{ | |
65 | + logBefore(logger, Jurisdiction.getUsername()+"删除Cache"); | |
66 | + PageData pd = new PageData(); | |
67 | + pd = this.getPageData(); | |
68 | + cacheService.delete(pd); | |
69 | + out.write("success"); | |
70 | + out.close(); | |
71 | + } | |
72 | + | |
73 | + | |
74 | + | |
75 | +} | ... | ... |
src/com/fh/controller/sunvote/grade/GradeController.java
... | ... | @@ -49,6 +49,7 @@ public class GradeController extends BaseController { |
49 | 49 | ModelAndView mv = this.getModelAndView(); |
50 | 50 | PageData pd = new PageData(); |
51 | 51 | pd = this.getPageData(); |
52 | + pd.put("ID",get32UUID()); | |
52 | 53 | gradeService.save(pd); |
53 | 54 | mv.addObject("msg","success"); |
54 | 55 | mv.setViewName("save_result"); | ... | ... |
src/com/fh/service/sunvote/cache/CacheManager.java
0 → 100644
1 | +package com.fh.service.sunvote.cache; | |
2 | + | |
3 | +import java.util.List; | |
4 | +import com.fh.entity.Page; | |
5 | +import com.fh.util.PageData; | |
6 | + | |
7 | +/** | |
8 | + * 说明: 缓存管理接口 | |
9 | + * 创建人:FH Q313596790 | |
10 | + * 创建时间:2018-08-08 | |
11 | + * @version | |
12 | + */ | |
13 | +public interface CacheManager{ | |
14 | + | |
15 | + /**新增 | |
16 | + * @param pd | |
17 | + * @throws Exception | |
18 | + */ | |
19 | + public void save(PageData pd)throws Exception; | |
20 | + | |
21 | + /**删除 | |
22 | + * @param pd | |
23 | + * @throws Exception | |
24 | + */ | |
25 | + public void delete(PageData pd)throws Exception; | |
26 | + | |
27 | + /**修改 | |
28 | + * @param pd | |
29 | + * @throws Exception | |
30 | + */ | |
31 | + public void edit(PageData pd)throws Exception; | |
32 | + | |
33 | + /**列表 | |
34 | + * @param page | |
35 | + * @throws Exception | |
36 | + */ | |
37 | + public List<PageData> list(Page page)throws Exception; | |
38 | + | |
39 | + /**列表(全部) | |
40 | + * @param pd | |
41 | + * @throws Exception | |
42 | + */ | |
43 | + public List<PageData> listAll(PageData pd)throws Exception; | |
44 | + | |
45 | + /**通过id获取数据 | |
46 | + * @param pd | |
47 | + * @throws Exception | |
48 | + */ | |
49 | + public PageData findById(PageData pd)throws Exception; | |
50 | + | |
51 | + /**批量删除 | |
52 | + * @param ArrayDATA_IDS | |
53 | + * @throws Exception | |
54 | + */ | |
55 | + public void deleteAll(String[] ArrayDATA_IDS)throws Exception; | |
56 | + | |
57 | +} | |
58 | + | ... | ... |
src/com/fh/service/sunvote/cache/impl/CacheService.java
0 → 100644
1 | +package com.fh.service.sunvote.cache.impl; | |
2 | + | |
3 | +import java.util.List; | |
4 | +import javax.annotation.Resource; | |
5 | +import org.springframework.stereotype.Service; | |
6 | +import com.fh.dao.DaoSupport; | |
7 | +import com.fh.entity.Page; | |
8 | +import com.fh.util.PageData; | |
9 | +import com.fh.service.sunvote.cache.CacheManager; | |
10 | + | |
11 | +/** | |
12 | + * 说明: 缓存管理 | |
13 | + * 创建人:FH Q313596790 | |
14 | + * 创建时间:2018-08-08 | |
15 | + * @version | |
16 | + */ | |
17 | +@Service("cacheService") | |
18 | +public class CacheService implements CacheManager{ | |
19 | + | |
20 | + @Resource(name = "daoSupport") | |
21 | + private DaoSupport dao; | |
22 | + | |
23 | + /**新增 | |
24 | + * @param pd | |
25 | + * @throws Exception | |
26 | + */ | |
27 | + public void save(PageData pd)throws Exception{ | |
28 | + dao.save("CacheMapper.save", pd); | |
29 | + } | |
30 | + | |
31 | + /**删除 | |
32 | + * @param pd | |
33 | + * @throws Exception | |
34 | + */ | |
35 | + public void delete(PageData pd)throws Exception{ | |
36 | + dao.delete("CacheMapper.delete", pd); | |
37 | + } | |
38 | + | |
39 | + /**修改 | |
40 | + * @param pd | |
41 | + * @throws Exception | |
42 | + */ | |
43 | + public void edit(PageData pd)throws Exception{ | |
44 | + dao.update("CacheMapper.edit", pd); | |
45 | + } | |
46 | + | |
47 | + /**列表 | |
48 | + * @param page | |
49 | + * @throws Exception | |
50 | + */ | |
51 | + @SuppressWarnings("unchecked") | |
52 | + public List<PageData> list(Page page)throws Exception{ | |
53 | + return (List<PageData>)dao.findForList("CacheMapper.datalistPage", page); | |
54 | + } | |
55 | + | |
56 | + /**列表(全部) | |
57 | + * @param pd | |
58 | + * @throws Exception | |
59 | + */ | |
60 | + @SuppressWarnings("unchecked") | |
61 | + public List<PageData> listAll(PageData pd)throws Exception{ | |
62 | + return (List<PageData>)dao.findForList("CacheMapper.listAll", pd); | |
63 | + } | |
64 | + | |
65 | + /**通过id获取数据 | |
66 | + * @param pd | |
67 | + * @throws Exception | |
68 | + */ | |
69 | + public PageData findById(PageData pd)throws Exception{ | |
70 | + return (PageData)dao.findForObject("CacheMapper.findById", pd); | |
71 | + } | |
72 | + | |
73 | + /**批量删除 | |
74 | + * @param ArrayDATA_IDS | |
75 | + * @throws Exception | |
76 | + */ | |
77 | + public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ | |
78 | + dao.delete("CacheMapper.deleteAll", ArrayDATA_IDS); | |
79 | + } | |
80 | + | |
81 | +} | |
82 | + | ... | ... |
src/com/fh/service/sunvote/chapter/ChapterManager.java
1 | 1 | package com.fh.service.sunvote.chapter; |
2 | 2 | |
3 | 3 | import java.util.List; |
4 | + | |
4 | 5 | import com.fh.entity.Page; |
5 | 6 | import com.fh.util.PageData; |
6 | 7 | |
... | ... | @@ -54,5 +55,8 @@ public interface ChapterManager{ |
54 | 55 | */ |
55 | 56 | public void deleteAll(String[] ArrayDATA_IDS)throws Exception; |
56 | 57 | |
58 | + | |
59 | + public List<PageData> listAllChapter(PageData pd)throws Exception; | |
60 | + | |
57 | 61 | } |
58 | 62 | ... | ... |
src/com/fh/service/sunvote/chapter/impl/ChapterService.java
... | ... | @@ -58,6 +58,15 @@ public class ChapterService implements ChapterManager{ |
58 | 58 | * @throws Exception |
59 | 59 | */ |
60 | 60 | @SuppressWarnings("unchecked") |
61 | + public List<PageData> listAllChapter(PageData pd)throws Exception{ | |
62 | + return (List<PageData>)dao.findForList("ChapterMapper.listAllChapter", pd); | |
63 | + } | |
64 | + | |
65 | + /**列表(全部) | |
66 | + * @param pd | |
67 | + * @throws Exception | |
68 | + */ | |
69 | + @SuppressWarnings("unchecked") | |
61 | 70 | public List<PageData> listAll(PageData pd)throws Exception{ |
62 | 71 | return (List<PageData>)dao.findForList("ChapterMapper.listAll", pd); |
63 | 72 | } | ... | ... |
src/com/fh/service/sunvote/knowledge/KnowledgeManager.java
1 | 1 | package com.fh.service.sunvote.knowledge; |
2 | 2 | |
3 | 3 | import java.util.List; |
4 | + | |
4 | 5 | import com.fh.entity.Page; |
5 | 6 | import com.fh.util.PageData; |
6 | 7 | |
... | ... | @@ -53,5 +54,13 @@ public interface KnowledgeManager{ |
53 | 54 | */ |
54 | 55 | public void deleteAll(String[] ArrayDATA_IDS)throws Exception; |
55 | 56 | |
57 | + /** | |
58 | + * | |
59 | + * @param pd | |
60 | + * @return | |
61 | + * @throws Exception | |
62 | + */ | |
63 | + public List<PageData> listAllknowledge(PageData pd)throws Exception; | |
64 | + | |
56 | 65 | } |
57 | 66 | ... | ... |
src/com/fh/service/sunvote/knowledge/impl/KnowledgeService.java
... | ... | @@ -61,6 +61,15 @@ public class KnowledgeService implements KnowledgeManager{ |
61 | 61 | return (List<PageData>)dao.findForList("KnowledgeMapper.listAll", pd); |
62 | 62 | } |
63 | 63 | |
64 | + /**列表(全部) | |
65 | + * @param pd | |
66 | + * @throws Exception | |
67 | + */ | |
68 | + @SuppressWarnings("unchecked") | |
69 | + public List<PageData> listAllknowledge(PageData pd)throws Exception{ | |
70 | + return (List<PageData>)dao.findForList("KnowledgeMapper.listAllknowledge", pd); | |
71 | + } | |
72 | + | |
64 | 73 | /**通过id获取数据 |
65 | 74 | * @param pd |
66 | 75 | * @throws Exception | ... | ... |
src/com/fh/service/sunvote/question/QuestionManager.java
1 | 1 | package com.fh.service.sunvote.question; |
2 | 2 | |
3 | 3 | import java.util.List; |
4 | + | |
4 | 5 | import com.fh.entity.Page; |
5 | 6 | import com.fh.util.PageData; |
6 | 7 | |
... | ... | @@ -53,5 +54,15 @@ public interface QuestionManager{ |
53 | 54 | */ |
54 | 55 | public void deleteAll(String[] ArrayDATA_IDS)throws Exception; |
55 | 56 | |
57 | + /** | |
58 | + * | |
59 | + * @param pd | |
60 | + * @return | |
61 | + * @throws Exception | |
62 | + */ | |
63 | + public List<PageData> listAllquestion(PageData pd)throws Exception; | |
64 | + | |
65 | + public List<PageData> listAllRandquestion(PageData pd)throws Exception; | |
66 | + | |
56 | 67 | } |
57 | 68 | ... | ... |
src/com/fh/service/sunvote/question/impl/QuestionService.java
... | ... | @@ -60,6 +60,22 @@ public class QuestionService implements QuestionManager{ |
60 | 60 | public List<PageData> listAll(PageData pd)throws Exception{ |
61 | 61 | return (List<PageData>)dao.findForList("QuestionMapper.listAll", pd); |
62 | 62 | } |
63 | + /**列表(全部) | |
64 | + * @param pd | |
65 | + * @throws Exception | |
66 | + */ | |
67 | + @SuppressWarnings("unchecked") | |
68 | + public List<PageData> listAllquestion(PageData pd)throws Exception{ | |
69 | + return (List<PageData>)dao.findForList("QuestionMapper.listAllquestion", pd); | |
70 | + } | |
71 | + /**列表(全部) | |
72 | + * @param pd | |
73 | + * @throws Exception | |
74 | + */ | |
75 | + @SuppressWarnings("unchecked") | |
76 | + public List<PageData> listAllRandquestion(PageData pd)throws Exception{ | |
77 | + return (List<PageData>)dao.findForList("QuestionMapper.listAllRandquestion", pd); | |
78 | + } | |
63 | 79 | |
64 | 80 | /**通过id获取数据 |
65 | 81 | * @param pd | ... | ... |