Blame view

src/com/fh/controller/sunvote/paper/PaperController.java 53.8 KB
bed6e1fc   孙向锦   添加其他功能
1
2
3
4
  package com.fh.controller.sunvote.paper;
  
  import java.io.PrintWriter;
  import java.text.DateFormat;
f4a73594   jack   1.增加班级统计报表和导出
5
  import java.text.DecimalFormat;
bed6e1fc   孙向锦   添加其他功能
6
7
  import java.text.SimpleDateFormat;
  import java.util.ArrayList;
f4a73594   jack   1.增加班级统计报表和导出
8
9
10
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.Comparator;
bed6e1fc   孙向锦   添加其他功能
11
12
13
14
  import java.util.Date;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
338594c8   孙向锦   添加教师端页面
15
  
bed6e1fc   孙向锦   添加其他功能
16
  import javax.annotation.Resource;
338594c8   孙向锦   添加教师端页面
17
18
  
  import org.apache.shiro.session.Session;
bed6e1fc   孙向锦   添加其他功能
19
20
21
22
23
24
25
  import org.springframework.beans.propertyeditors.CustomDateEditor;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.WebDataBinder;
  import org.springframework.web.bind.annotation.InitBinder;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.ResponseBody;
  import org.springframework.web.servlet.ModelAndView;
338594c8   孙向锦   添加教师端页面
26
  
f4a73594   jack   1.增加班级统计报表和导出
27
  import com.alibaba.druid.support.json.JSONUtils;
338594c8   孙向锦   添加教师端页面
28
29
  import com.fh.bean.Paper;
  import com.fh.bean.Question;
f4a73594   jack   1.增加班级统计报表和导出
30
  import com.fh.controller.api.ResponseGson;
bed6e1fc   孙向锦   添加其他功能
31
  import com.fh.controller.base.BaseController;
f4a73594   jack   1.增加班级统计报表和导出
32
  import com.fh.controller.sunvote.Myelfun;
bed6e1fc   孙向锦   添加其他功能
33
  import com.fh.entity.Page;
338594c8   孙向锦   添加教师端页面
34
  import com.fh.entity.system.User;
4f32cbf7   孙向锦   更新新东方服务界面维护文档
35
  import com.fh.service.api.V1Manager;
83b5ddeb   孙向锦   模板添加
36
  import com.fh.service.sunvote.pagetemplate.PageTemplateManager;
4f32cbf7   孙向锦   更新新东方服务界面维护文档
37
38
  import com.fh.service.sunvote.paper.PaperManager;
  import com.fh.service.sunvote.paperquestion.PaperQuestionManager;
107fa3a0   孙向锦   修改试卷单选多远混合出题
39
  import com.fh.service.sunvote.question.QuestionManager;
837ae11d   孙向锦   添加班長管理
40
  import com.fh.service.sunvote.schoolgradesubject.SchoolGradeSubjectManager;
f4a73594   jack   1.增加班级统计报表和导出
41
42
43
44
45
46
  import com.fh.service.sunvote.sclass.SClassManager;
  import com.fh.service.sunvote.sclass.impl.SClassService;
  import com.fh.service.sunvote.student.StudentManager;
  import com.fh.service.sunvote.studenttest.StudentTestManager;
  import com.fh.service.sunvote.testpaper.TestPaperManager;
  import com.fh.service.sunvote.testpaperinfo.TestPaperInfoManager;
bed6e1fc   孙向锦   添加其他功能
47
  import com.fh.util.AppUtil;
338594c8   孙向锦   添加教师端页面
48
  import com.fh.util.Const;
4f32cbf7   孙向锦   更新新东方服务界面维护文档
49
  import com.fh.util.Jurisdiction;
bed6e1fc   孙向锦   添加其他功能
50
  import com.fh.util.ObjectExcelView;
89ac0783   jack   1.添加年级卷分析功能
51
  import com.fh.util.ObjectExcelView2;
bed6e1fc   孙向锦   添加其他功能
52
  import com.fh.util.PageData;
7bbf5236   jack   2.限制出题数为64
53
  import com.hp.hpl.sparta.ParseException;
bed6e1fc   孙向锦   添加其他功能
54
  
782f81b0   jack   1.增加未知学生的判断
55
56
  /**
   * 说明:试卷 创建时间:2018-05-17
bed6e1fc   孙向锦   添加其他功能
57
58
   */
  @Controller
782f81b0   jack   1.增加未知学生的判断
59
  @RequestMapping(value = "/paper")
bed6e1fc   孙向锦   添加其他功能
60
  public class PaperController extends BaseController {
782f81b0   jack   1.增加未知学生的判断
61
62
63
  
  	String menuUrl = "paper/list.do"; // 菜单地址(权限用)
  	@Resource(name = "paperService")
bed6e1fc   孙向锦   添加其他功能
64
  	private PaperManager paperService;
782f81b0   jack   1.增加未知学生的判断
65
66
  
  	@Resource(name = "testpaperService")
f4a73594   jack   1.增加班级统计报表和导出
67
  	private TestPaperManager testpaperService;
782f81b0   jack   1.增加未知学生的判断
68
69
  
  	@Resource(name = "testpaperinfoService")
f4a73594   jack   1.增加班级统计报表和导出
70
  	private TestPaperInfoManager testpaperinfoService;
782f81b0   jack   1.增加未知学生的判断
71
72
  
  	@Resource(name = "studentService")
f4a73594   jack   1.增加班级统计报表和导出
73
  	private StudentManager stundentService;
782f81b0   jack   1.增加未知学生的判断
74
75
  
  	@Resource(name = "paperquestionService")
338594c8   孙向锦   添加教师端页面
76
  	private PaperQuestionManager paperquestionService;
782f81b0   jack   1.增加未知学生的判断
77
78
  
  	@Resource(name = "questionService")
107fa3a0   孙向锦   修改试卷单选多远混合出题
79
  	private QuestionManager questionService;
782f81b0   jack   1.增加未知学生的判断
80
  
338594c8   孙向锦   添加教师端页面
81
  	@Resource(name = "v1Service")
782f81b0   jack   1.增加未知学生的判断
82
83
84
  	private V1Manager v1Service;
  
  	@Resource(name = "schoolgradesubjectService")
837ae11d   孙向锦   添加班長管理
85
  	private SchoolGradeSubjectManager schoolgradesubjectService;
782f81b0   jack   1.增加未知学生的判断
86
87
  
  	@Resource(name = "pagetemplateService")
83b5ddeb   孙向锦   模板添加
88
  	private PageTemplateManager pagetemplateService;
782f81b0   jack   1.增加未知学生的判断
89
90
  
  	@Resource(name = "studenttestService")
f4a73594   jack   1.增加班级统计报表和导出
91
  	private StudentTestManager studenttestService;
782f81b0   jack   1.增加未知学生的判断
92
93
  
  	@Resource(name = "sclassService")
f4a73594   jack   1.增加班级统计报表和导出
94
  	private SClassManager sclassService;
782f81b0   jack   1.增加未知学生的判断
95
96
97
98
  
  	/**
  	 * 保存
  	 * 
bed6e1fc   孙向锦   添加其他功能
99
100
101
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
102
103
104
105
106
107
  	@RequestMapping(value = "/save")
  	public ModelAndView save() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "新增Paper");
  		if (!Jurisdiction.buttonJurisdiction(menuUrl, "add")) {
  			return null;
  		} // 校验权限
bed6e1fc   孙向锦   添加其他功能
108
109
110
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
111
  		pd.put("PAPER_ID", this.get32UUID()); // 主键
bed6e1fc   孙向锦   添加其他功能
112
  		paperService.save(pd);
782f81b0   jack   1.增加未知学生的判断
113
  		mv.addObject("msg", "success");
bed6e1fc   孙向锦   添加其他功能
114
115
116
  		mv.setViewName("save_result");
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
117
118
119
120
  
  	/**
  	 * 保存
  	 * 
338594c8   孙向锦   添加教师端页面
121
122
123
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
124
125
126
  	@RequestMapping(value = "/newpaper")
  	public ModelAndView newPaper() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "新增Paper");
338594c8   孙向锦   添加教师端页面
127
  		ModelAndView mv = this.getModelAndView();
782f81b0   jack   1.增加未知学生的判断
128
129
  
  		mv.addObject("msg", "success");
338594c8   孙向锦   添加教师端页面
130
131
132
  		mv.setViewName("save_result");
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
133
134
135
136
  
  	/**
  	 * 删除
  	 * 
bed6e1fc   孙向锦   添加其他功能
137
138
139
  	 * @param out
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
140
141
142
  	@RequestMapping(value = "/delete")
  	public void delete(PrintWriter out) throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "删除Paper");
bed6e1fc   孙向锦   添加其他功能
143
144
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
145
146
  		String[] ArrayDATA_IDS = new String[] { pd.getString("PAPER_ID") };
  		if (pd.getString("QINGSONGKAO") != null) {
107fa3a0   孙向锦   修改试卷单选多远混合出题
147
148
  			List<PageData> list = paperquestionService.listAll(pd);
  			String[] qids = new String[list.size()];
782f81b0   jack   1.增加未知学生的判断
149
150
  			int i = 0;
  			for (PageData ptd : list) {
107fa3a0   孙向锦   修改试卷单选多远混合出题
151
152
  				qids[i++] = ptd.getString("QUESTION_ID");
  			}
782f81b0   jack   1.增加未知学生的判断
153
  			if (qids.length > 0) {
107fa3a0   孙向锦   修改试卷单选多远混合出题
154
155
156
  				questionService.deleteAll(qids);
  			}
  		}
338594c8   孙向锦   添加教师端页面
157
  		paperquestionService.deleteAllPaper(ArrayDATA_IDS);
bed6e1fc   孙向锦   添加其他功能
158
159
160
161
  		paperService.delete(pd);
  		out.write("success");
  		out.close();
  	}
782f81b0   jack   1.增加未知学生的判断
162
163
164
165
  
  	/**
  	 * 修改
  	 * 
bed6e1fc   孙向锦   添加其他功能
166
167
168
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
169
170
171
172
173
174
  	@RequestMapping(value = "/edit")
  	public ModelAndView edit() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "修改Paper");
  		if (!Jurisdiction.buttonJurisdiction(menuUrl, "edit")) {
  			return null;
  		} // 校验权限
bed6e1fc   孙向锦   添加其他功能
175
176
177
178
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
  		paperService.edit(pd);
782f81b0   jack   1.增加未知学生的判断
179
  		mv.addObject("msg", "success");
bed6e1fc   孙向锦   添加其他功能
180
181
182
  		mv.setViewName("save_result");
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
183
184
185
186
  
  	/**
  	 * 列表
  	 * 
bed6e1fc   孙向锦   添加其他功能
187
188
189
  	 * @param page
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
190
191
192
193
194
  	@RequestMapping(value = "/list")
  	public ModelAndView list(Page page) throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "列表Paper");
  		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
  		// //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
bed6e1fc   孙向锦   添加其他功能
195
196
197
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
198
199
  		String keywords = pd.getString("keywords"); // 关键词检索条件
  		if (null != keywords && !"".equals(keywords)) {
bed6e1fc   孙向锦   添加其他功能
200
201
202
  			pd.put("keywords", keywords.trim());
  		}
  		page.setPd(pd);
782f81b0   jack   1.增加未知学生的判断
203
  		List<PageData> varList = paperService.list(page); // 列出Paper列表
bed6e1fc   孙向锦   添加其他功能
204
205
206
  		mv.setViewName("sunvote/paper/paper_list");
  		mv.addObject("varList", varList);
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
207
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
bed6e1fc   孙向锦   添加其他功能
208
209
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
210
211
212
  
  	@RequestMapping(value = "/paperRep")
  	public ModelAndView paperRep() throws Exception {
f4a73594   jack   1.增加班级统计报表和导出
213
214
215
216
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		List<PageData> templist = new ArrayList<PageData>();
  		PageData saveData = new PageData();
782f81b0   jack   1.增加未知学生的判断
217
  		DecimalFormat decimalFormat = new DecimalFormat("0.00");
4926e3fd   jack   1.修复bug
218
  		String total_score = "";
f4a73594   jack   1.增加班级统计报表和导出
219
220
  		ResponseGson<PageData> res = new ResponseGson();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
221
  		if (pd.containsKey("PAPER_ID")) {
f4a73594   jack   1.增加班级统计报表和导出
222
  			List<PageData> list = testpaperService.listAll(pd);
4926e3fd   jack   1.修复bug
223
  			total_score = list.get(0).getString("TOTAL_SCORE");
f4a73594   jack   1.增加班级统计报表和导出
224
  			pd.put("testpaperlist", list);
782f81b0   jack   1.增加未知学生的判断
225
226
227
228
229
230
  			Integer you_sum = 0; // 优秀总人数
  			Integer liang_sum = 0; // 良好总人数
  			Integer jige_sum = 0; // 及格总人数
  			Integer difen_sum = 0; // 低分总人数
  			Integer num_sum = 0; // 年级总人数
  			Float avg_sum = (float) 0; // 平均分的和
d6389252   jack   1.增加年级卷测验统计
231
  			String testpaperList = "";
782f81b0   jack   1.增加未知学生的判断
232
233
  
  			for (int i = 0; i < list.size(); i++) {
f4a73594   jack   1.增加班级统计报表和导出
234
  				PageData data = new PageData();
782f81b0   jack   1.增加未知学生的判断
235
  
f4a73594   jack   1.增加班级统计报表和导出
236
  				PageData pdtemp = new PageData();
782f81b0   jack   1.增加未知学生的判断
237
238
239
240
241
242
243
244
245
246
247
248
  				if (!list.get(i).getString("SCLASS_ID").isEmpty()) {
  					pdtemp.put("CLASS_ID", list.get(i).get("SCLASS_ID")
  							.toString());
  				} else {
  					pdtemp.put("CLASS_ID", "");
  
  				}
  
  				List<PageData> studentlist = stundentService
  						.listAllClass(pdtemp);
  				testpaperList += list.get(i).get("TESTPAPER_ID").toString()
  						+ ",";
f4a73594   jack   1.增加班级统计报表和导出
249
250
251
252
253
254
255
  				data.put("testpaper_id", list.get(i).get("TESTPAPER_ID"));
  				data.put("student_num", studentlist.size());
  				data.put("creat_time", list.get(i).get("CREATE_DATE"));
  				data.put("avg_score", list.get(i).get("AVG_SCORE"));
  				data.put("class_id", list.get(i).get("SCLASS_ID"));
  				pdtemp.put("TEST_ID", list.get(i).get("TESTPAPER_ID"));
  				List<PageData> l = studenttestService.listAll(pdtemp);
782f81b0   jack   1.增加未知学生的判断
256
  
f4a73594   jack   1.增加班级统计报表和导出
257
258
259
260
  				Integer you = 0;
  				Integer liang = 0;
  				Integer jige = 0;
  				Integer difen = 0;
dec964f0   jack   1.修复bug
261
262
  				Float total = list.get(i).get("TOTAL_SCORE")
  						.toString().isEmpty()?0:Float.valueOf(list.get(i).get("TOTAL_SCORE")
782f81b0   jack   1.增加未知学生的判断
263
264
265
266
267
268
269
  						.toString());
  
  				for (int j = 0; j < l.size(); j++) {
  					Float score = Float.valueOf(l.get(j).get("SCORE")
  							.toString());
  					if (total != 0) {
  						if (score / total >= 0.8) {
f4a73594   jack   1.增加班级统计报表和导出
270
  							you++;
782f81b0   jack   1.增加未知学生的判断
271
  						} else if (score / total >= 0.7) {
f4a73594   jack   1.增加班级统计报表和导出
272
  							liang++;
782f81b0   jack   1.增加未知学生的判断
273
  						} else if (score / total >= 0.6) {
f4a73594   jack   1.增加班级统计报表和导出
274
  							jige++;
782f81b0   jack   1.增加未知学生的判断
275
  						} else if (score / total < 0.3) {
f4a73594   jack   1.增加班级统计报表和导出
276
277
278
  							difen++;
  						}
  					}
782f81b0   jack   1.增加未知学生的判断
279
  
f4a73594   jack   1.增加班级统计报表和导出
280
  				}
782f81b0   jack   1.增加未知学生的判断
281
  				you_sum += you;
d6389252   jack   1.增加年级卷测验统计
282
  				liang_sum += liang;
782f81b0   jack   1.增加未知学生的判断
283
284
285
  				jige_sum += jige;
  				difen_sum += difen;
  				num_sum += studentlist.size();
dec964f0   jack   1.修复bug
286
287
  				avg_sum += list.get(i).get("AVG_SCORE")
  						.toString().isEmpty()?0:Float.valueOf(list.get(i).get("AVG_SCORE")
782f81b0   jack   1.增加未知学生的判断
288
289
290
291
292
293
294
  						.toString());
  
  				data.put("you", you);
  				data.put("liang", liang);
  				data.put("jige", jige);
  				data.put("difen", difen);
  
f4a73594   jack   1.增加班级统计报表和导出
295
296
  				templist.add(data);
  			}
782f81b0   jack   1.增加未知学生的判断
297
298
299
300
301
302
303
304
305
306
307
308
309
310
  			if (list.size() > 0) {
  				PageData dataTemp = new PageData();
  				dataTemp.put("testpaper_id", "");
  				dataTemp.put("student_num", num_sum);
  				dataTemp.put("creat_time", "");
  				dataTemp.put("avg_score",
  						decimalFormat.format(avg_sum / list.size()));
  				dataTemp.put("class_id", "");
  				dataTemp.put("you", you_sum);
  				dataTemp.put("liang", liang_sum);
  				dataTemp.put("jige", jige_sum);
  				dataTemp.put("difen", difen_sum);
  				dataTemp.put("testpaperList", testpaperList);
  				templist.add(dataTemp);
d6389252   jack   1.增加年级卷测验统计
311
  			}
f4a73594   jack   1.增加班级统计报表和导出
312
  		}
782f81b0   jack   1.增加未知学生的判断
313
  
f4a73594   jack   1.增加班级统计报表和导出
314
  		saveData.put("list", templist);
4926e3fd   jack   1.修复bug
315
  		pd.put("TOTAL_SCORE", total_score);
f4a73594   jack   1.增加班级统计报表和导出
316
317
  		mv.setViewName("sunvote/paper/test_list1");
  		mv.addObject("varList", templist);
782f81b0   jack   1.增加未知学生的判断
318
  		mv.addObject("pd", pd);
f4a73594   jack   1.增加班级统计报表和导出
319
320
321
  		res.setData(saveData);
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
322
323
324
  
  	@RequestMapping(value = "/export1")
  	public ModelAndView export1() throws Exception {
f4a73594   jack   1.增加班级统计报表和导出
325
326
327
328
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		List<PageData> templist = new ArrayList<PageData>();
  		PageData saveData = new PageData();
1f0490aa   jack   1.考试情况报表样式
329
  		DecimalFormat decimalFormat = new DecimalFormat("0.00");
782f81b0   jack   1.增加未知学生的判断
330
  
f4a73594   jack   1.增加班级统计报表和导出
331
332
  		ResponseGson<PageData> res = new ResponseGson();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
333
  		if (pd.containsKey("PAPER_ID")) {
f4a73594   jack   1.增加班级统计报表和导出
334
  			List<PageData> list = testpaperService.listAll(pd);
1f0490aa   jack   1.考试情况报表样式
335
336
337
338
339
340
341
  			Integer you_sum = 0; // 优秀总人数
  			Integer liang_sum = 0; // 良好总人数
  			Integer jige_sum = 0; // 及格总人数
  			Integer difen_sum = 0; // 低分总人数
  			Integer num_sum = 0; // 年级总人数
  			Float avg_sum = (float) 0; // 平均分的和
  			String testpaperList = "";
f4a73594   jack   1.增加班级统计报表和导出
342
  			pd.put("testpaperlist", list);
782f81b0   jack   1.增加未知学生的判断
343
  			for (int i = 0; i < list.size(); i++) {
f4a73594   jack   1.增加班级统计报表和导出
344
  				PageData data = new PageData();
782f81b0   jack   1.增加未知学生的判断
345
  
f4a73594   jack   1.增加班级统计报表和导出
346
347
  				PageData pdtemp = new PageData();
  				pdtemp.put("CLASS_ID", list.get(i).get("SCLASS_ID").toString());
782f81b0   jack   1.增加未知学生的判断
348
349
  				List<PageData> studentlist = stundentService
  						.listAllClass(pdtemp);
1f0490aa   jack   1.考试情况报表样式
350
351
  				testpaperList += list.get(i).get("TESTPAPER_ID").toString()
  						+ ",";
f4a73594   jack   1.增加班级统计报表和导出
352
353
354
355
356
357
358
  				data.put("testpaper_id", list.get(i).get("TESTPAPER_ID"));
  				data.put("student_num", studentlist.size());
  				data.put("creat_time", list.get(i).get("CREATE_DATE"));
  				data.put("avg_score", list.get(i).get("AVG_SCORE"));
  				data.put("class_id", list.get(i).get("SCLASS_ID"));
  				pdtemp.put("TEST_ID", list.get(i).get("TESTPAPER_ID"));
  				List<PageData> l = studenttestService.listAll(pdtemp);
782f81b0   jack   1.增加未知学生的判断
359
  
f4a73594   jack   1.增加班级统计报表和导出
360
361
362
363
  				Integer you = 0;
  				Integer liang = 0;
  				Integer jige = 0;
  				Integer difen = 0;
782f81b0   jack   1.增加未知学生的判断
364
365
366
367
368
369
370
371
  				Float total = Float.valueOf(list.get(i).get("TOTAL_SCORE")
  						.toString());
  
  				for (int j = 0; j < l.size(); j++) {
  					Float score = Float.valueOf(l.get(j).get("SCORE")
  							.toString());
  					if (total != 0) {
  						if (score / total >= 0.8) {
f4a73594   jack   1.增加班级统计报表和导出
372
  							you++;
782f81b0   jack   1.增加未知学生的判断
373
  						} else if (score / total >= 0.7) {
f4a73594   jack   1.增加班级统计报表和导出
374
  							liang++;
782f81b0   jack   1.增加未知学生的判断
375
  						} else if (score / total >= 0.6) {
f4a73594   jack   1.增加班级统计报表和导出
376
  							jige++;
782f81b0   jack   1.增加未知学生的判断
377
  						} else if (score / total < 0.3) {
f4a73594   jack   1.增加班级统计报表和导出
378
379
380
  							difen++;
  						}
  					}
782f81b0   jack   1.增加未知学生的判断
381
  
f4a73594   jack   1.增加班级统计报表和导出
382
  				}
1f0490aa   jack   1.考试情况报表样式
383
384
385
386
387
388
389
390
  				you_sum += you;
  				liang_sum += liang;
  				jige_sum += jige;
  				difen_sum += difen;
  				num_sum += studentlist.size();
  				avg_sum += list.get(i).get("AVG_SCORE")
  						.toString().isEmpty()?0:Float.valueOf(list.get(i).get("AVG_SCORE")
  						.toString());
782f81b0   jack   1.增加未知学生的判断
391
392
393
394
395
  				data.put("you", you);
  				data.put("liang", liang);
  				data.put("jige", jige);
  				data.put("difen", difen);
  
f4a73594   jack   1.增加班级统计报表和导出
396
397
  				templist.add(data);
  			}
1f0490aa   jack   1.考试情况报表样式
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
  			
  			if (list.size() > 0) {
  				PageData dataTemp = new PageData();
  				dataTemp.put("testpaper_id", "");
  				dataTemp.put("student_num", num_sum);
  				dataTemp.put("creat_time", "");
  				dataTemp.put("avg_score",
  						decimalFormat.format(avg_sum / list.size()));
  				dataTemp.put("class_id", "");
  				dataTemp.put("you", you_sum);
  				dataTemp.put("liang", liang_sum);
  				dataTemp.put("jige", jige_sum);
  				dataTemp.put("difen", difen_sum);
  				dataTemp.put("testpaperList", testpaperList);
  				templist.add(dataTemp);
  			}
f4a73594   jack   1.增加班级统计报表和导出
414
415
  		}
  
782f81b0   jack   1.增加未知学生的判断
416
  		Map<String, Object> dataMap = new HashMap<String, Object>();
f4a73594   jack   1.增加班级统计报表和导出
417
  		List<String> titles = new ArrayList<String>();
782f81b0   jack   1.增加未知学生的判断
418
419
420
421
422
423
424
425
426
427
428
429
430
  		titles.add("序号"); // 1
  		titles.add("班级名称"); // 2
  		titles.add("考试时间"); // 3
  		titles.add("平均分"); // 4
  		titles.add("班级总人数"); // 5
  		titles.add("优秀人数"); // 6
  		titles.add("优秀率"); // 7
  		titles.add("良好人数"); // 8
  		titles.add("良好率"); // 9
  		titles.add("及格人数"); // 10
  		titles.add("及格率"); // 11
  		titles.add("低分人数"); // 12
  		titles.add("低分率"); // 13
f4a73594   jack   1.增加班级统计报表和导出
431
432
433
  		dataMap.put("titles", titles);
  		List<PageData> varOList = templist;
  		List<PageData> varList = new ArrayList<PageData>();
1f0490aa   jack   1.考试情况报表样式
434
  //		DecimalFormat decimalFormat = new DecimalFormat("0.00");
782f81b0   jack   1.增加未知学生的判断
435
  		for (int i = 0; i < varOList.size(); i++) {
f4a73594   jack   1.增加班级统计报表和导出
436
  			PageData vpd = new PageData();
1f0490aa   jack   1.考试情况报表样式
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
  			if(!varOList.get(i).getString("class_id").isEmpty()){
  				vpd.put("ID", varOList.get(i).getString("class_id"));
  				PageData c = sclassService.findById(vpd);
  				vpd.remove("ID");
  	
  				Integer you = Integer.valueOf(varOList.get(i).getString("you"));
  				Integer liang = Integer.valueOf(varOList.get(i).getString("liang"));
  				Integer jige = Integer.valueOf(varOList.get(i).getString("jige"));
  				Integer difen = Integer.valueOf(varOList.get(i).getString("difen"));
  				Integer student_num = Integer.valueOf(varOList.get(i).getString(
  						"student_num"));
  	
  				vpd.put("var1", i + 1); // 1
  				vpd.put("var2", c.getString("CLASS_NAME")); // 2
  				vpd.put("var3", varOList.get(i).getString("creat_time")); // 3
  				vpd.put("var4", varOList.get(i).getString("avg_score")); // 4
  				vpd.put("var5", student_num); // 5
  				vpd.put("var6", you); // 6
  				vpd.put("var7",
  						student_num == 0 ? 0 : decimalFormat.format(you * 100.0
  								/ student_num)
  								+ "%"); // 7
  				vpd.put("var8", liang); // 8
  				vpd.put("var9",
  						student_num == 0 ? 0 : decimalFormat.format(liang * 100.0
  								/ student_num)
  								+ "%"); // 9
  				vpd.put("var10", jige); // 10
  				vpd.put("var11",
  						student_num == 0 ? 0 : decimalFormat.format(jige * 100.0
  								/ student_num)
  								+ "%"); // 11
  				vpd.put("var12", difen); // 12
  				vpd.put("var13",
  						student_num == 0 ? 0 : decimalFormat.format(difen * 100.0
  								/ student_num)
  								+ "%"); // 13
  				varList.add(vpd);
  			}else{
  				Integer you = Integer.valueOf(varOList.get(i).getString("you"));
  				Integer liang = Integer.valueOf(varOList.get(i).getString("liang"));
  				Integer jige = Integer.valueOf(varOList.get(i).getString("jige"));
  				Integer difen = Integer.valueOf(varOList.get(i).getString("difen"));
  				Integer student_num = Integer.valueOf(varOList.get(i).getString(
  						"student_num"));
  				
  				vpd.put("var1", "/"); // 1
  				vpd.put("var2", "班级平均"); // 2
  				vpd.put("var3", "/"); // 3
  				vpd.put("var4", varOList.get(i).getString("avg_score")); // 4
  				vpd.put("var5", "/"); // 5
  				vpd.put("var6", "/"); // 6
  				vpd.put("var7",
  						student_num == 0 ? 0 : decimalFormat.format(you * 100.0
  								/ student_num)
  								+ "%"); // 7
  				vpd.put("var8", "/"); // 8
  				vpd.put("var9",
  						student_num == 0 ? 0 : decimalFormat.format(liang * 100.0
  								/ student_num)
  								+ "%"); // 9
  				vpd.put("var10", "/"); // 10
  				vpd.put("var11",
  						student_num == 0 ? 0 : decimalFormat.format(jige * 100.0
  								/ student_num)
  								+ "%"); // 11
  				vpd.put("var12", "/"); // 12
  				vpd.put("var13",
  						student_num == 0 ? 0 : decimalFormat.format(difen * 100.0
  								/ student_num)
  								+ "%"); // 13
  				varList.add(vpd);
  			}
f4a73594   jack   1.增加班级统计报表和导出
510
511
512
  		}
  		dataMap.put("varList", varList);
  		ObjectExcelView erv = new ObjectExcelView();
782f81b0   jack   1.增加未知学生的判断
513
  		mv = new ModelAndView(erv, dataMap);
f4a73594   jack   1.增加班级统计报表和导出
514
515
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
516
517
518
  
  	@RequestMapping(value = "/paperRep2")
  	public ModelAndView paperRep2() throws Exception {
f4a73594   jack   1.增加班级统计报表和导出
519
520
521
522
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		List<PageData> templist = new ArrayList<PageData>();
  		PageData saveData = new PageData();
782f81b0   jack   1.增加未知学生的判断
523
  
f4a73594   jack   1.增加班级统计报表和导出
524
525
  		ResponseGson<PageData> res = new ResponseGson();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
526
  		if (pd.containsKey("PAPER_ID")) {
f4a73594   jack   1.增加班级统计报表和导出
527
528
529
  			List<PageData> list = paperquestionService.listAll(pd);
  			List<PageData> test = new ArrayList<PageData>();
  			int onum[] = new int[list.size()];
782f81b0   jack   1.增加未知学生的判断
530
531
  
  			for (int i = 0; i < list.size(); i++) {
f4a73594   jack   1.增加班级统计报表和导出
532
533
  				PageData temp = new PageData();
  				String questionid = list.get(i).get("QUESTION_ID").toString();
782f81b0   jack   1.增加未知学生的判断
534
535
536
  
  				if (list.get(i).get("NO_NAME") == null
  						|| list.get(i).get("NO_NAME").toString().isEmpty()) {
f4a73594   jack   1.增加班级统计报表和导出
537
538
  					continue;
  				}
32d27bdc   jack   1.增加判断题和数字题,调试更改上传数据
539
  				Float que_score = list.get(i).getString("SCORE").isEmpty()?0:Float.valueOf(list.get(i).get("SCORE")
782f81b0   jack   1.增加未知学生的判断
540
  						.toString());
f4a73594   jack   1.增加班级统计报表和导出
541
542
  				temp.put("QUESTION_ID", questionid);
  				PageData question = questionService.findById(temp);
782f81b0   jack   1.增加未知学生的判断
543
  				temp.put("ANSWER", question.get("ANSWER").toString());
f4a73594   jack   1.增加班级统计报表和导出
544
545
  				temp.put("QUESTION_RANK", list.get(i).get("RANK").toString());
  				temp.put("QUESTION_SCORE", que_score);
782f81b0   jack   1.增加未知学生的判断
546
  
f4a73594   jack   1.增加班级统计报表和导出
547
548
  				PageData que = questionService.findById(temp);
  				Integer option_num = 0;
782f81b0   jack   1.增加未知学生的判断
549
550
551
552
  				if (!que.get("OPTION_NUM").toString().isEmpty()) {
  					option_num = Integer.valueOf(que.get("OPTION_NUM")
  							.toString());
  					onum[i] = option_num;
f4a73594   jack   1.增加班级统计报表和导出
553
  				}
d6389252   jack   1.增加年级卷测验统计
554
555
  				String tpList = pd.get("TESTPAPER_ID").toString();
  				String tpListArray[] = tpList.split(",");
782f81b0   jack   1.增加未知学生的判断
556
  
d6389252   jack   1.增加年级卷测验统计
557
  				temp.put("TEST_ID", tpListArray);
782f81b0   jack   1.增加未知学生的判断
558
559
560
561
  
  				List<PageData> queInfo = testpaperinfoService
  						.listTestPaperQuestionIDinfo(temp);
  				int answer[] = new int[option_num + 1];
f4a73594   jack   1.增加班级统计报表和导出
562
  				int right = 0;
0a0c0f6a   jack   1.bug修复
563
  				int lost = 0;
782f81b0   jack   1.增加未知学生的判断
564
565
  				for (int j = 0; j < queInfo.size(); j++) {
  					if (queInfo.get(j).get("ANSWER").toString().isEmpty()) {
0a0c0f6a   jack   1.bug修复
566
567
  						lost++;
  					}
782f81b0   jack   1.增加未知学生的判断
568
569
570
571
  					if (queInfo.get(j).get("RIGHT") != null
  							&& !queInfo.get(j).get("RIGHT").toString()
  									.isEmpty()) {
  						if (queInfo.get(j).get("RIGHT").toString().equals("1")) {
f4a73594   jack   1.增加班级统计报表和导出
572
573
574
  							right++;
  						}
  					}
782f81b0   jack   1.增加未知学生的判断
575
576
577
578
579
580
581
  					if (queInfo.get(j).get("ANSWER") != null
  							&& !queInfo.get(j).get("ANSWER").toString()
  									.isEmpty()) {
  						for (int o = 0; o < option_num; o++) {
  							String s = String.valueOf((char) (65 + o));
  							if (queInfo.get(j).get("ANSWER").toString()
  									.indexOf(s) > -1) {
f4a73594   jack   1.增加班级统计报表和导出
582
583
  								answer[o]++;
  							}
782f81b0   jack   1.增加未知学生的判断
584
585
  						}
  					} else {
f4a73594   jack   1.增加班级统计报表和导出
586
587
588
589
  						answer[option_num]++;
  					}
  				}
  				temp.put("RIGHTNUM", right);
782f81b0   jack   1.增加未知学生的判断
590
591
  				temp.put("ANSWERNUM", (queInfo.size() - lost));
  				temp.put("ANSWERNUM2", queInfo.size());
f4a73594   jack   1.增加班级统计报表和导出
592
593
594
595
  				temp.put("optin_info", answer);
  				templist.add(temp);
  			}
  			Arrays.sort(onum);
782f81b0   jack   1.增加未知学生的判断
596
597
598
599
600
  			int max = onum[onum.length - 1];
  			pd.put("MAX", max);
  		}
  
  		Collections.sort(templist, new Comparator<PageData>() {
f4a73594   jack   1.增加班级统计报表和导出
601
602
603
  
  			@Override
  			public int compare(PageData o1, PageData o2) {
782f81b0   jack   1.增加未知学生的判断
604
605
606
607
  				Integer o1GetScore = Integer.valueOf(o1
  						.getString("QUESTION_RANK"));
  				Integer o2GetScore = Integer.valueOf(o2
  						.getString("QUESTION_RANK"));
f4a73594   jack   1.增加班级统计报表和导出
608
609
  				return o1GetScore.compareTo(o2GetScore);
  			}
782f81b0   jack   1.增加未知学生的判断
610
  
f4a73594   jack   1.增加班级统计报表和导出
611
612
613
  		});
  		mv.setViewName("sunvote/paper/test_list2");
  		mv.addObject("varList", templist);
782f81b0   jack   1.增加未知学生的判断
614
  		mv.addObject("pd", pd);
f4a73594   jack   1.增加班级统计报表和导出
615
616
617
  		res.setData(saveData);
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
618
619
620
  
  	@RequestMapping(value = "/export2")
  	public ModelAndView export2() throws Exception {
f4a73594   jack   1.增加班级统计报表和导出
621
622
623
624
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		List<PageData> templist = new ArrayList<PageData>();
  		PageData saveData = new PageData();
782f81b0   jack   1.增加未知学生的判断
625
  
f4a73594   jack   1.增加班级统计报表和导出
626
627
  		ResponseGson<PageData> res = new ResponseGson();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
628
  		if (pd.containsKey("PAPER_ID")) {
f4a73594   jack   1.增加班级统计报表和导出
629
630
631
  			List<PageData> list = paperquestionService.listAll(pd);
  			List<PageData> test = new ArrayList<PageData>();
  			int onum[] = new int[list.size()];
782f81b0   jack   1.增加未知学生的判断
632
633
  
  			for (int i = 0; i < list.size(); i++) {
f4a73594   jack   1.增加班级统计报表和导出
634
635
  				PageData temp = new PageData();
  				String questionid = list.get(i).get("QUESTION_ID").toString();
782f81b0   jack   1.增加未知学生的判断
636
637
638
  
  				if (list.get(i).get("NO_NAME") == null
  						|| list.get(i).get("NO_NAME").toString().isEmpty()) {
f4a73594   jack   1.增加班级统计报表和导出
639
640
  					continue;
  				}
782f81b0   jack   1.增加未知学生的判断
641
642
  				Float que_score = Float.valueOf(list.get(i).get("SCORE")
  						.toString());
f4a73594   jack   1.增加班级统计报表和导出
643
644
  				temp.put("QUESTION_ID", questionid);
  				PageData question = questionService.findById(temp);
782f81b0   jack   1.增加未知学生的判断
645
  				temp.put("ANSWER", question.get("ANSWER").toString());
f4a73594   jack   1.增加班级统计报表和导出
646
647
  				temp.put("QUESTION_RANK", list.get(i).get("RANK").toString());
  				temp.put("QUESTION_SCORE", que_score);
782f81b0   jack   1.增加未知学生的判断
648
  
f4a73594   jack   1.增加班级统计报表和导出
649
650
  				PageData que = questionService.findById(temp);
  				Integer option_num = 0;
782f81b0   jack   1.增加未知学生的判断
651
652
653
654
  				if (!que.get("OPTION_NUM").toString().isEmpty()) {
  					option_num = Integer.valueOf(que.get("OPTION_NUM")
  							.toString());
  					onum[i] = option_num;
f4a73594   jack   1.增加班级统计报表和导出
655
  				}
782f81b0   jack   1.增加未知学生的判断
656
  
d6389252   jack   1.增加年级卷测验统计
657
658
  				String tpList = pd.get("TESTPAPER_ID").toString();
  				String tpListArray[] = tpList.split(",");
782f81b0   jack   1.增加未知学生的判断
659
  
d6389252   jack   1.增加年级卷测验统计
660
  				temp.put("TEST_ID", tpListArray);
782f81b0   jack   1.增加未知学生的判断
661
662
663
  				List<PageData> queInfo = testpaperinfoService
  						.listTestPaperQuestionIDinfo(temp);
  				int answer[] = new int[option_num + 1];
f4a73594   jack   1.增加班级统计报表和导出
664
  				int right = 0;
0a0c0f6a   jack   1.bug修复
665
  				int lost = 0;
782f81b0   jack   1.增加未知学生的判断
666
667
  				for (int j = 0; j < queInfo.size(); j++) {
  					if (queInfo.get(j).get("ANSWER").toString().isEmpty()) {
0a0c0f6a   jack   1.bug修复
668
669
  						lost++;
  					}
782f81b0   jack   1.增加未知学生的判断
670
671
672
673
  					if (queInfo.get(j).get("RIGHT") != null
  							&& !queInfo.get(j).get("RIGHT").toString()
  									.isEmpty()) {
  						if (queInfo.get(j).get("RIGHT").toString().equals("1")) {
f4a73594   jack   1.增加班级统计报表和导出
674
675
676
  							right++;
  						}
  					}
782f81b0   jack   1.增加未知学生的判断
677
678
679
680
681
682
683
  					if (queInfo.get(j).get("ANSWER") != null
  							&& !queInfo.get(j).get("ANSWER").toString()
  									.isEmpty()) {
  						for (int o = 0; o < option_num; o++) {
  							String s = String.valueOf((char) (65 + o));
  							if (queInfo.get(j).get("ANSWER").toString()
  									.equals(s)) {
f4a73594   jack   1.增加班级统计报表和导出
684
685
  								answer[o]++;
  							}
782f81b0   jack   1.增加未知学生的判断
686
687
  						}
  					} else {
f4a73594   jack   1.增加班级统计报表和导出
688
689
690
691
  						answer[option_num]++;
  					}
  				}
  				temp.put("RIGHTNUM", right);
782f81b0   jack   1.增加未知学生的判断
692
693
  				temp.put("ANSWERNUM", (queInfo.size() - lost));
  				temp.put("ANSWERNUM2", queInfo.size());
f4a73594   jack   1.增加班级统计报表和导出
694
695
696
697
  				temp.put("optin_info", JSONUtils.toJSONString(answer));
  				templist.add(temp);
  			}
  			Arrays.sort(onum);
782f81b0   jack   1.增加未知学生的判断
698
699
700
701
702
  			int max = onum[onum.length - 1];
  			pd.put("MAX", max);
  		}
  
  		Collections.sort(templist, new Comparator<PageData>() {
f4a73594   jack   1.增加班级统计报表和导出
703
704
705
  
  			@Override
  			public int compare(PageData o1, PageData o2) {
782f81b0   jack   1.增加未知学生的判断
706
707
708
709
  				Integer o1GetScore = Integer.valueOf(o1
  						.getString("QUESTION_RANK"));
  				Integer o2GetScore = Integer.valueOf(o2
  						.getString("QUESTION_RANK"));
f4a73594   jack   1.增加班级统计报表和导出
710
711
  				return o1GetScore.compareTo(o2GetScore);
  			}
782f81b0   jack   1.增加未知学生的判断
712
  
f4a73594   jack   1.增加班级统计报表和导出
713
  		});
f4a73594   jack   1.增加班级统计报表和导出
714
  
782f81b0   jack   1.增加未知学生的判断
715
716
717
718
  		// mv.addObject("varList", templist);
  		// mv.addObject("pd",pd);
  
  		Map<String, Object> dataMap = new HashMap<String, Object>();
f4a73594   jack   1.增加班级统计报表和导出
719
  		List<String> titles = new ArrayList<String>();
782f81b0   jack   1.增加未知学生的判断
720
721
722
723
724
725
726
  		titles.add("题号"); // 1
  		titles.add("答案"); // 2
  		titles.add("答题人数"); // 3
  		titles.add("正确人数"); // 4
  		titles.add("正确率"); // 5
  		titles.add("满分值"); // 6
  		titles.add("平均分"); // 7
f4a73594   jack   1.增加班级统计报表和导出
727
  		Integer max = Integer.valueOf(pd.getString("MAX"));
782f81b0   jack   1.增加未知学生的判断
728
729
730
  		for (int x = 0; x < max; x++) {
  			titles.add("选" + Myelfun.jstlInt2Char(x + 1) + "人数"); // 8
  			titles.add("选" + Myelfun.jstlInt2Char(x + 1) + "比例"); // 9
f4a73594   jack   1.增加班级统计报表和导出
731
  		}
782f81b0   jack   1.增加未知学生的判断
732
733
  		titles.add("漏选人数"); // 10
  		titles.add("漏选比例"); // 11
f4a73594   jack   1.增加班级统计报表和导出
734
735
736
  		dataMap.put("titles", titles);
  		List<PageData> varOList = templist;
  		List<PageData> varList = new ArrayList<PageData>();
782f81b0   jack   1.增加未知学生的判断
737
738
  		DecimalFormat decimalFormat = new DecimalFormat("0.00");
  		for (int i = 0; i < varOList.size(); i++) {
f4a73594   jack   1.增加班级统计报表和导出
739
  			PageData vpd = new PageData();
782f81b0   jack   1.增加未知学生的判断
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
  
  			vpd.put("var1", varOList.get(i).getString("QUESTION_RANK")); // 1
  			vpd.put("var2", varOList.get(i).getString("ANSWER")); // 2
  			vpd.put("var3", varOList.get(i).getString("ANSWERNUM")); // 3
  			vpd.put("var4", varOList.get(i).getString("RIGHTNUM")); // 4
  			vpd.put("var5",
  					decimalFormat.format(Double.valueOf(varOList.get(i)
  							.getString("RIGHTNUM"))
  							* 100
  							/ Double.valueOf(varOList.get(i).getString(
  									"ANSWERNUM")))
  							+ "%"); // 5
  			vpd.put("var6", varOList.get(i).getString("QUESTION_SCORE")); // 6
  			vpd.put("var7", decimalFormat.format(Double.valueOf(varOList.get(i)
  					.getString("RIGHTNUM"))
  					* Double.valueOf(varOList.get(i)
  							.getString("QUESTION_SCORE"))
  					/ Double.valueOf(varOList.get(i).getString("ANSWERNUM")))); // 7
f4a73594   jack   1.增加班级统计报表和导出
758
759
760
  			String s = varOList.get(i).get("optin_info").toString();
  			s = s.replace("[", "");
  			s = s.replace("]", "");
782f81b0   jack   1.增加未知学生的判断
761
762
  			List<String> optoin = Arrays.asList(s.split(","));
  			for (int y = 0; y < max; y++) {
f447a06e   jack   1.修复bug
763
  				Integer nn = 0;
782f81b0   jack   1.增加未知学生的判断
764
  				if ((optoin.size() - 1) > y) {
f447a06e   jack   1.修复bug
765
  					nn = Integer.valueOf(optoin.get(y));
782f81b0   jack   1.增加未知学生的判断
766
  				} else {
f447a06e   jack   1.修复bug
767
768
  					break;
  				}
782f81b0   jack   1.增加未知学生的判断
769
770
771
772
773
774
775
776
  				vpd.put("var" + (8 + 2 * y), nn); // 8
  				vpd.put("var" + (9 + 2 * y),
  						decimalFormat.format(nn
  								* 100
  								/ Double.valueOf(varOList.get(i).getString(
  										"ANSWERNUM")))
  								+ "%"); // 9
  
f4a73594   jack   1.增加班级统计报表和导出
777
  			}
782f81b0   jack   1.增加未知学生的判断
778
779
780
781
782
783
784
785
786
787
788
  
  			vpd.put("var" + (max * 2 + 8),
  					Integer.valueOf(optoin.get(optoin.size() - 1))); // 8
  			vpd.put("var" + (max * 2 + 9),
  					decimalFormat.format(Double.valueOf(optoin.get(optoin
  							.size() - 1))
  							* 100
  							/ Double.valueOf(varOList.get(i).getString(
  									"ANSWERNUM2")))
  							+ "%"); // 9
  
f4a73594   jack   1.增加班级统计报表和导出
789
790
791
792
  			varList.add(vpd);
  		}
  		dataMap.put("varList", varList);
  		ObjectExcelView erv = new ObjectExcelView();
782f81b0   jack   1.增加未知学生的判断
793
  		mv = new ModelAndView(erv, dataMap);
f4a73594   jack   1.增加班级统计报表和导出
794
795
796
  
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
797
  
58e024ae   jack   1.修改logo
798
799
  	/**
  	 * 按学生分析
782f81b0   jack   1.增加未知学生的判断
800
  	 * 
58e024ae   jack   1.修改logo
801
802
803
  	 * @return
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
804
805
  	@RequestMapping(value = "/paperRep3")
  	public ModelAndView paperRep3() throws Exception {
58e024ae   jack   1.修改logo
806
807
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
78353cf9   jack   1.增加老师端可以看到年级卷
808
  		pd=this.getPageData();
89ac0783   jack   1.添加年级卷分析功能
809
  		List<PageData> temp = new ArrayList<PageData>();
78353cf9   jack   1.增加老师端可以看到年级卷
810
  		List<PageData> sclass_list = new ArrayList<PageData>();
58e024ae   jack   1.修改logo
811
  		PageData saveData = new PageData();
782f81b0   jack   1.增加未知学生的判断
812
  
58e024ae   jack   1.修改logo
813
814
  		ResponseGson<PageData> res = new ResponseGson();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
815
816
  		if (pd.containsKey("PAPER_ID")) {
  
58e024ae   jack   1.修改logo
817
  			List<PageData> list = studenttestService.findTestInfoByPid(pd);
89ac0783   jack   1.添加年级卷分析功能
818
  			PageData paper = paperService.findById(pd);
782f81b0   jack   1.增加未知学生的判断
819
  			if (paper != null) {
89ac0783   jack   1.添加年级卷分析功能
820
821
822
  				pd.put("SCORE", paper.get("SCORE"));
  				pd.put("PAPER_NAME", paper.get("TITLE"));
  			}
58e024ae   jack   1.修改logo
823
  			List<String> sid = new ArrayList<String>();
89ac0783   jack   1.添加年级卷分析功能
824
825
  			Integer test_num = 0;
  			Integer lost_num = 0;
78353cf9   jack   1.增加老师端可以看到年级卷
826
  			List<String> classId = new ArrayList();
44243c35   jack   1.修改班级下拉bug
827
  			
782f81b0   jack   1.增加未知学生的判断
828
829
830
  			for (PageData item : list) {
  
  				PageData p = new PageData();
78353cf9   jack   1.增加老师端可以看到年级卷
831
832
  				
  				
782f81b0   jack   1.增加未知学生的判断
833
834
835
836
837
838
839
  				p.put("ID", item.getString("STUDENT_ID"));
  				PageData student = stundentService.findById(p);
  				if (student != null) {
  					Integer index = this.indexOfStrInList(sid,
  							item.getString("STUDENT_ID"));
  					if (index != -1) {
  
89ac0783   jack   1.添加年级卷分析功能
840
  						test_num++;
782f81b0   jack   1.增加未知学生的判断
841
842
  						List<PageData> test_list = (List<PageData>) temp.get(
  								index).get("TEST_LIST");
89ac0783   jack   1.添加年级卷分析功能
843
844
  						PageData test = new PageData();
  						test.put("CREATE_DATE", item.get("CREATE_DATE"));
782f81b0   jack   1.增加未知学生的判断
845
  						if (item.getString("LOST_TEST").isEmpty()) {
89ac0783   jack   1.添加年级卷分析功能
846
  							test.put("SCORE", item.get("SCORE"));
782f81b0   jack   1.增加未知学生的判断
847
  						} else {
89ac0783   jack   1.添加年级卷分析功能
848
  							test.put("SCORE", "--");
782f81b0   jack   1.增加未知学生的判断
849
850
851
852
  							temp.get(index).put(
  									"LOST_NUM",
  									Integer.valueOf(temp.get(index).getString(
  											"LOST_NUM")) + 1);
89ac0783   jack   1.添加年级卷分析功能
853
854
855
  						}
  						test.put("AVG_SCORE", item.get("AVG_SCORE"));
  						test_list.add(test);
782f81b0   jack   1.增加未知学生的判断
856
857
858
859
  						Float total = Float.valueOf(temp.get(index).getString(
  								"STUDENT_TOTAL"));
  						temp.get(index).put("STUDENT_TOTAL",
  								total + Float.valueOf(item.getString("SCORE")));
89ac0783   jack   1.添加年级卷分析功能
860
  						temp.get(index).put("TEST_LIST", test_list);
782f81b0   jack   1.增加未知学生的判断
861
862
863
864
865
866
867
868
869
870
871
872
  						temp.get(index).put(
  								"TEST_NUM",
  								test_list.size()
  										- Integer.valueOf(temp.get(index)
  												.getString("LOST_NUM")));
  
  					} else {
  						test_num = 1;
  						lost_num = 0;
  						PageData stu = new PageData();
  						stu.put("STUDENT_NAME", item.get("STUDENT_NAME"));
  						stu.put("CLASS_NAME", item.get("CLASS_NAME"));
78353cf9   jack   1.增加老师端可以看到年级卷
873
874
  						if(!classId.contains(item.getString("CLASS_ID"))){
  							classId.add(item.getString("CLASS_ID"));
44243c35   jack   1.修改班级下拉bug
875
  							PageData sclass = new PageData();
78353cf9   jack   1.增加老师端可以看到年级卷
876
877
878
879
880
  							sclass.put("CLASS_ID", item.get("CLASS_ID"));
  							sclass.put("CLASS_NAME", item.get("CLASS_NAME"));
  							sclass_list.add(sclass);
  						}
  						
782f81b0   jack   1.增加未知学生的判断
881
882
883
884
885
886
887
888
889
890
891
892
  						List<PageData> testList = new ArrayList<PageData>();
  						PageData test = new PageData();
  						test.put("CREATE_DATE", item.get("CREATE_DATE"));
  						if (item.getString("LOST_TEST").isEmpty()) {
  							test.put("SCORE", item.get("SCORE"));
  						} else {
  							test.put("SCORE", "--");
  							lost_num++;
  						}
  						test.put("AVG_SCORE", item.get("AVG_SCORE"));
  						testList.add(test);
  						stu.put("STUDENT_TOTAL", item.get("SCORE"));
001b21e2   jack   1.修改年级分析报表内容
893
894
  						stu.put("STUDENT_NUMBER", item.get("STUDENT_NUMBER"));
  						stu.put("STUDENT_PADID", item.get("STUDENT_PADID"));
782f81b0   jack   1.增加未知学生的判断
895
896
897
898
899
  						stu.put("TEST_LIST", testList);
  						stu.put("TEST_NUM", testList.size() - lost_num);
  						stu.put("LOST_NUM", lost_num);
  						sid.add(item.getString("STUDENT_ID"));
  						temp.add(stu);
78353cf9   jack   1.增加老师端可以看到年级卷
900
  						
89ac0783   jack   1.添加年级卷分析功能
901
  					}
58e024ae   jack   1.修改logo
902
  				}
58e024ae   jack   1.修改logo
903
904
  			}
  		}
782f81b0   jack   1.增加未知学生的判断
905
  		Collections.sort(temp, new Comparator<PageData>() {
89ac0783   jack   1.添加年级卷分析功能
906
907
908
  
  			@Override
  			public int compare(PageData o1, PageData o2) {
782f81b0   jack   1.增加未知学生的判断
909
910
911
912
913
914
915
  
  				Float o1GetScore = Float.valueOf(o1.getString("TEST_NUM")) == 0 ? 0
  						: Float.valueOf(o1.getString("STUDENT_TOTAL"))
  								/ Float.valueOf(o1.getString("TEST_NUM"));
  				Float o2GetScore = Float.valueOf(o2.getString("TEST_NUM")) == 0 ? 0
  						: Float.valueOf(o2.getString("STUDENT_TOTAL"))
  								/ Float.valueOf(o2.getString("TEST_NUM"));
931af053   孙向锦   添加二级排序
916
917
918
919
920
921
922
923
924
  				int result =  o2GetScore.compareTo(o1GetScore);
  				if(result == 0){
  					if(Float.valueOf(o1.getString("TEST_NUM")) -Float.valueOf(o2.getString("TEST_NUM")) == 0 ){
  						return o1.get("STUDENT_NUMBER").toString().compareTo(o2.get("STUDENT_NUMBER").toString());
  					}
  					return Float.valueOf(o1.getString("TEST_NUM")) -Float.valueOf(o2.getString("TEST_NUM")) > 0 ? -1 : 1;
  					
  				}
  				return result;
89ac0783   jack   1.添加年级卷分析功能
925
  			}
782f81b0   jack   1.增加未知学生的判断
926
  
89ac0783   jack   1.添加年级卷分析功能
927
  		});
78353cf9   jack   1.增加老师端可以看到年级卷
928
  		
58e024ae   jack   1.修改logo
929
  		mv.setViewName("sunvote/paper/test_list3");
78353cf9   jack   1.增加老师端可以看到年级卷
930
  		mv.addObject("sclass", sclass_list);
89ac0783   jack   1.添加年级卷分析功能
931
  		mv.addObject("varList", temp);
782f81b0   jack   1.增加未知学生的判断
932
  		mv.addObject("pd", pd);
58e024ae   jack   1.修改logo
933
934
935
  		res.setData(saveData);
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
936
937
938
  
  	@RequestMapping(value = "/export3")
  	public ModelAndView export3() throws Exception {
89ac0783   jack   1.添加年级卷分析功能
939
940
941
942
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		List<PageData> temp = new ArrayList<PageData>();
  		PageData saveData = new PageData();
782f81b0   jack   1.增加未知学生的判断
943
  
89ac0783   jack   1.添加年级卷分析功能
944
945
  		ResponseGson<PageData> res = new ResponseGson();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
946
947
  		if (pd.containsKey("PAPER_ID")) {
  
89ac0783   jack   1.添加年级卷分析功能
948
949
  			List<PageData> list = studenttestService.findTestInfoByPid(pd);
  			PageData paper = paperService.findById(pd);
782f81b0   jack   1.增加未知学生的判断
950
  			if (paper != null) {
89ac0783   jack   1.添加年级卷分析功能
951
952
953
954
955
956
  				pd.put("SCORE", paper.get("SCORE"));
  				pd.put("PAPER_NAME", paper.get("TITLE"));
  			}
  			List<String> sid = new ArrayList<String>();
  			Integer test_num = 0;
  			Integer lost_num = 0;
782f81b0   jack   1.增加未知学生的判断
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
  			for (PageData item : list) {
  				PageData p = new PageData();
  				p.put("ID", item.getString("STUDENT_ID"));
  				PageData student = stundentService.findById(p);
  				if (student != null) {
  				Integer index = this.indexOfStrInList(sid,
  						item.getString("STUDENT_ID"));
  				if (index != -1) {
  
  					test_num++;
  					List<PageData> test_list = (List<PageData>) temp.get(index)
  							.get("TEST_LIST");
  					PageData test = new PageData();
  					test.put("CREATE_DATE", item.get("CREATE_DATE"));
  					if (item.getString("LOST_TEST").isEmpty()) {
  						test.put("SCORE", item.get("SCORE"));
  					} else {
  						test.put("SCORE", "--");
  						temp.get(index).put(
  								"LOST_NUM",
  								Integer.valueOf(temp.get(index).getString(
  										"LOST_NUM")) + 1);
  					}
  					test.put("AVG_SCORE", item.get("AVG_SCORE"));
  					test_list.add(test);
  					Float total = Float.valueOf(temp.get(index).getString(
  							"STUDENT_TOTAL"));
  					temp.get(index).put("STUDENT_TOTAL",
  							total + Float.valueOf(item.getString("SCORE")));
  					temp.get(index).put("TEST_LIST", test_list);
  					temp.get(index).put(
  							"TEST_NUM",
  							test_list.size()
  									- Integer.valueOf(temp.get(index)
  											.getString("LOST_NUM")));
  
  				} else {
  					test_num = 1;
  					lost_num = 0;
89ac0783   jack   1.添加年级卷分析功能
996
997
998
999
1000
1001
  					PageData stu = new PageData();
  					stu.put("STUDENT_NAME", item.get("STUDENT_NAME"));
  					stu.put("CLASS_NAME", item.get("CLASS_NAME"));
  					List<PageData> testList = new ArrayList<PageData>();
  					PageData test = new PageData();
  					test.put("CREATE_DATE", item.get("CREATE_DATE"));
782f81b0   jack   1.增加未知学生的判断
1002
  					if (item.getString("LOST_TEST").isEmpty()) {
89ac0783   jack   1.添加年级卷分析功能
1003
  						test.put("SCORE", item.get("SCORE"));
782f81b0   jack   1.增加未知学生的判断
1004
  					} else {
89ac0783   jack   1.添加年级卷分析功能
1005
1006
1007
1008
1009
  						test.put("SCORE", "--");
  						lost_num++;
  					}
  					test.put("AVG_SCORE", item.get("AVG_SCORE"));
  					testList.add(test);
782f81b0   jack   1.增加未知学生的判断
1010
  					stu.put("STUDENT_TOTAL", item.get("SCORE"));
89ac0783   jack   1.添加年级卷分析功能
1011
  					stu.put("TEST_LIST", testList);
41772c65   jack   1.修改bug
1012
1013
  					stu.put("STUDENT_NUMBER", item.get("STUDENT_NUMBER"));
  					stu.put("STUDENT_PADID", item.get("STUDENT_PADID"));
782f81b0   jack   1.增加未知学生的判断
1014
  					stu.put("TEST_NUM", testList.size() - lost_num);
89ac0783   jack   1.添加年级卷分析功能
1015
1016
1017
1018
  					stu.put("LOST_NUM", lost_num);
  					sid.add(item.getString("STUDENT_ID"));
  					temp.add(stu);
  				}
782f81b0   jack   1.增加未知学生的判断
1019
  				}
89ac0783   jack   1.添加年级卷分析功能
1020
1021
  			}
  		}
782f81b0   jack   1.增加未知学生的判断
1022
  		Collections.sort(temp, new Comparator<PageData>() {
89ac0783   jack   1.添加年级卷分析功能
1023
1024
1025
  
  			@Override
  			public int compare(PageData o1, PageData o2) {
782f81b0   jack   1.增加未知学生的判断
1026
1027
1028
1029
1030
1031
1032
  
  				Float o1GetScore = Float.valueOf(o1.getString("TEST_NUM")) == 0 ? 0
  						: Float.valueOf(o1.getString("STUDENT_TOTAL"))
  								/ Float.valueOf(o1.getString("TEST_NUM"));
  				Float o2GetScore = Float.valueOf(o2.getString("TEST_NUM")) == 0 ? 0
  						: Float.valueOf(o2.getString("STUDENT_TOTAL"))
  								/ Float.valueOf(o2.getString("TEST_NUM"));
d9b2b420   孙向锦   提交数据 使用多线程
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
  				
  				int result = o2GetScore.compareTo(o1GetScore);
  				if(result == 0){
  					if(Float.valueOf(o1.getString("TEST_NUM")) -Float.valueOf(o2.getString("TEST_NUM")) == 0 ){
  						return o1.get("STUDENT_NUMBER").toString().compareTo(o2.get("STUDENT_NUMBER").toString());
  					}
  					return Float.valueOf(o1.getString("TEST_NUM")) -Float.valueOf(o2.getString("TEST_NUM")) > 0 ? -1 : 1;
  					
  				}
  				
  				return result;
89ac0783   jack   1.添加年级卷分析功能
1044
  			}
782f81b0   jack   1.增加未知学生的判断
1045
  
89ac0783   jack   1.添加年级卷分析功能
1046
1047
1048
  		});
  
  		mv.addObject("varList", temp);
782f81b0   jack   1.增加未知学生的判断
1049
1050
1051
  		mv.addObject("pd", pd);
  
  		Map<String, Object> dataMap = new HashMap<String, Object>();
89ac0783   jack   1.添加年级卷分析功能
1052
  		List<String> titles = new ArrayList<String>();
782f81b0   jack   1.增加未知学生的判断
1053
  		titles.add("学生姓名"); // 1
41772c65   jack   1.修改bug
1054
1055
1056
1057
1058
1059
  		titles.add("学号"); // 2
  		titles.add("键盘号"); // 3
  		titles.add("班级"); // 4
  		titles.add("综合排名"); // 5
  		//titles.add("个人平均得分"); // 4
  		//titles.add("个人平均得分率"); // 5
782f81b0   jack   1.增加未知学生的判断
1060
  		titles.add("个人得分"); // 6
41772c65   jack   1.修改bug
1061
1062
  		//titles.add("测验平均分"); // 7
  		titles.add("测验时间"); // 7
782f81b0   jack   1.增加未知学生的判断
1063
  
89ac0783   jack   1.添加年级卷分析功能
1064
1065
1066
  		dataMap.put("titles", titles);
  		List<PageData> varOList = temp;
  		List<PageData> varList = new ArrayList<PageData>();
782f81b0   jack   1.增加未知学生的判断
1067
1068
1069
  		DecimalFormat decimalFormat = new DecimalFormat("0.00");
  		
  		for (int i = 0; i < varOList.size(); i++) {
89ac0783   jack   1.添加年级卷分析功能
1070
  			PageData vpd = new PageData();
782f81b0   jack   1.增加未知学生的判断
1071
1072
  
  			vpd.put("var1", varOList.get(i).getString("STUDENT_NAME")); // 1
41772c65   jack   1.修改bug
1073
1074
1075
1076
  			vpd.put("var2", varOList.get(i).getString("STUDENT_NUMBER")); // 2
  			vpd.put("var3", varOList.get(i).getString("STUDENT_PADID")); // 3
  			vpd.put("var4", varOList.get(i).getString("CLASS_NAME")); // 4
  			vpd.put("var5", i + 1); // 5
782f81b0   jack   1.增加未知学生的判断
1077
1078
1079
  			List<PageData> test_list = (List<PageData>) varOList.get(i).get(
  					"TEST_LIST");
  
89ac0783   jack   1.添加年级卷分析功能
1080
  			List<String> score = new ArrayList<String>();
41772c65   jack   1.修改bug
1081
  			
89ac0783   jack   1.添加年级卷分析功能
1082
  			List<String> CREATE_DATE = new ArrayList<String>();
782f81b0   jack   1.增加未知学生的判断
1083
  			for (int x = 0; x < test_list.size(); x++) {
89ac0783   jack   1.添加年级卷分析功能
1084
  				score.add(test_list.get(x).getString("SCORE"));
89ac0783   jack   1.添加年级卷分析功能
1085
  				CREATE_DATE.add(test_list.get(x).getString("CREATE_DATE"));
782f81b0   jack   1.增加未知学生的判断
1086
  
89ac0783   jack   1.添加年级卷分析功能
1087
1088
  			}
  			vpd.put("var6", score);
41772c65   jack   1.修改bug
1089
  			vpd.put("var7", CREATE_DATE);
89ac0783   jack   1.添加年级卷分析功能
1090
  			varList.add(vpd);
782f81b0   jack   1.增加未知学生的判断
1091
  			
89ac0783   jack   1.添加年级卷分析功能
1092
1093
1094
  		}
  		dataMap.put("varList", varList);
  		ObjectExcelView2 erv = new ObjectExcelView2();
782f81b0   jack   1.增加未知学生的判断
1095
  		mv = new ModelAndView(erv, dataMap);
89ac0783   jack   1.添加年级卷分析功能
1096
1097
1098
  
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1099
1100
1101
1102
1103
1104
  
  	@RequestMapping(value = "/iteminfo")
  	public ModelAndView iteminfo() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "Paper详细信息");
  		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
  		// //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
338594c8   孙向锦   添加教师端页面
1105
1106
1107
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1108
1109
1110
  
  		if (pd.containsKey("PAPER_ID")) {
  			try {
338594c8   孙向锦   添加教师端页面
1111
1112
  				Paper paper = new Paper();
  				PageData ppd = paperService.findById(pd);
782f81b0   jack   1.增加未知学生的判断
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
  				if (ppd != null) {
  					paper.setTitle(ppd.getString("TITLE"));
  					paper.setExam_time(ppd.getString("EXAM_TIME"));
  					paper.setUser_id(ppd.getString("USER_ID"));
  					paper.setPaper_type(ppd.getString("PAPER_TYPE"));
  					paper.setSubject_id(ppd.getString("SUBJECT_ID"));
  					paper.setGrade_id(ppd.getString("GRADE_ID"));
  					paper.setScore(ppd.getString("SCORE"));
  					paper.setQuestions(new ArrayList<Question>());
  
  					List<PageData> questList = v1Service.getTestPaperInfo(pd);
  					for (PageData qpd : questList) {
  						Question question = new Question();
  						question.setAnswer(qpd.getString("ANSWER"));
  						question.setQuestion_id(qpd.getString("QUESTION_ID"));
  						question.setSubject_id(qpd.getString("SUBJECT_ID"));
  						question.setChapter_id(qpd.getString("CHAPTER_ID"));
  						question.setProblem_type_id(qpd
  								.getString("PROBLEM_TYPE_ID"));
  						question.setKnowledge_id(qpd.getString("KNOWLEDGE_ID"));
  						question.setContent(qpd.getString("CONTENT")
  								.replaceAll("<fill></fill>", "______"));
  						question.setOption_num(qpd.getString("OPTION_NUM"));
  						question.setOption_content(qpd
  								.getString("OPTION_CONTENT"));
  						question.setDifficulty(qpd.getString("DIFFICULTY"));
  						question.setAnalysis(qpd.getString("ANALYSIS"));
  						question.setQuestion_from(qpd
  								.getString("QUESTION_FROM"));
  						question.setSug_score(qpd.getString("SCORE"));
  						question.setSug_part_score(qpd.getString("PART_SCORE"));
  						question.setRank(qpd.getString("RANK"));
  						question.setNo_name(qpd.getString("NO_NAME"));
  						if ("-1".equals("" + qpd.getString("P_ID"))) {
  							PageData pidPd = new PageData();
  							pidPd.put("PID", question.getQuestion_id());
  							question.setQuestions(new ArrayList<Question>());
  							List<PageData> qs = v1Service
  									.getQuestionsByPID(pidPd);
  							for (PageData q : qs) {
  								Question qq = new Question();
  								qq.setAnswer(q.getString("ANSWER"));
  								qq.setQuestion_id(q.getString("QUESTION_ID"));
  								qq.setSubject_id(q.getString("SUBJECT_ID"));
  								qq.setChapter_id(q.getString("CHAPTER_ID"));
  								qq.setProblem_type_id(q
  										.getString("PROBLEM_TYPE_ID"));
  								qq.setKnowledge_id(q.getString("KNOWLEDGE_ID"));
  								qq.setContent(q.getString("CONTENT")
  										.replaceAll("<fill></fill>", "______"));
  								qq.setOption_num(q.getString("OPTION_NUM"));
  								qq.setOption_content(q
  										.getString("OPTION_CONTENT"));
  								qq.setDifficulty(q.getString("DIFFICULTY"));
  								qq.setAnalysis(q.getString("ANALYSIS"));
  								qq.setQuestion_from(q
  										.getString("QUESTION_FROM"));
  								qq.setSug_score(q.getString("SCORE"));
  								qq.setSug_part_score(q.getString("PART_SCORE"));
  								qq.setRank(q.getString("RANK"));
  								qq.setNo_name(q.getString("NO_NAME"));
  								question.getQuestions().add(qq);
  							}
  						}
  						if ("-1".equals(qpd.getString("P_ID"))
  								|| "0".equals(qpd.getString("P_ID"))) {
  							paper.getQuestions().add(question);
338594c8   孙向锦   添加教师端页面
1180
1181
  						}
  					}
782f81b0   jack   1.增加未知学生的判断
1182
1183
1184
  					pd.put("JSON", paper.toJson());
  					logger.info(paper.toJson());
  
338594c8   孙向锦   添加教师端页面
1185
  				}
782f81b0   jack   1.增加未知学生的判断
1186
  			} catch (Exception ex) {
338594c8   孙向锦   添加教师端页面
1187
1188
1189
  				ex.printStackTrace();
  			}
  		}
782f81b0   jack   1.增加未知学生的判断
1190
  		if (isChineseLanguageClient()) {
fd0087a8   孙向锦   添加英语语言
1191
  			mv.setViewName("sunvote/teacher/creat_question");
782f81b0   jack   1.增加未知学生的判断
1192
  		} else {
fd0087a8   孙向锦   添加英语语言
1193
1194
  			mv.setViewName("sunvote/teacher/en_creat_question");
  		}
338594c8   孙向锦   添加教师端页面
1195
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
1196
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
338594c8   孙向锦   添加教师端页面
1197
1198
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1199
1200
1201
1202
  
  	@RequestMapping(value = "/npaper")
  	public ModelAndView newpaper() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "Paper详细信息");
338594c8   孙向锦   添加教师端页面
1203
1204
1205
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1206
  		String paperType = pd.getString("PAPER_TYPE");
338594c8   孙向锦   添加教师端页面
1207
1208
1209
1210
  		Paper paper = new Paper();
  		paper.setTitle(pd.getString("NAME"));
  		paper.setExam_time(pd.getString("TIME"));
  		Session session = Jurisdiction.getSession();
782f81b0   jack   1.增加未知学生的判断
1211
  		User user = (User) session.getAttribute(Const.SESSION_USER);
338594c8   孙向锦   添加教师端页面
1212
  		paper.setUser_id(user.getUSER_ID());
782f81b0   jack   1.增加未知学生的判断
1213
1214
  		paper.setPaper_type(paperType == null || "".equals(paperType.trim()) ? "1"
  				: paperType);
eca4feb5   孙向锦   管理员功能完善
1215
  		String subjectId = pd.getString("SUBJECT_ID");
782f81b0   jack   1.增加未知学生的判断
1216
1217
  		paper.setSubject_id(subjectId == null || "".equals(subjectId.trim()) ? getSubjectId()
  				: subjectId);
eca4feb5   孙向锦   管理员功能完善
1218
  		String gradeId = pd.getString("GRADE_ID");
782f81b0   jack   1.增加未知学生的判断
1219
1220
1221
1222
1223
  		paper.setGrade_id(gradeId == null || "".equals(gradeId.trim()) ? getGradeID()
  				: gradeId);
  		String schoolId = pd.getString("SCHOOL_ID");
  		paper.setSchool_id(schoolId == null || "".equals(schoolId.trim()) ? getSchoolID()
  				: schoolId);
338594c8   孙向锦   添加教师端页面
1224
  		paper.setQuestions(new ArrayList<Question>());
782f81b0   jack   1.增加未知学生的判断
1225
  
338594c8   孙向锦   添加教师端页面
1226
1227
  		pd.put("JSON", paper.toJson());
  		logger.info(paper.toJson());
782f81b0   jack   1.增加未知学生的判断
1228
  
83b5ddeb   孙向锦   模板添加
1229
  		String TEMPLATE_ID = pd.getString("TEMPLATE_ID");
782f81b0   jack   1.增加未知学生的判断
1230
  		if (TEMPLATE_ID != null && !"".equals(TEMPLATE_ID)) {
83b5ddeb   孙向锦   模板添加
1231
1232
1233
1234
  			pd.put("PAGETEMPLATE_ID", TEMPLATE_ID);
  			PageData template = pagetemplateService.findById(pd);
  			mv.addObject("TEMPLEATE", template);
  		}
782f81b0   jack   1.增加未知学生的判断
1235
1236
  
  		if (isChineseLanguageClient()) {
fd0087a8   孙向锦   添加英语语言
1237
  			mv.setViewName("sunvote/teacher/creat_question");
782f81b0   jack   1.增加未知学生的判断
1238
  		} else {
fd0087a8   孙向锦   添加英语语言
1239
1240
  			mv.setViewName("sunvote/teacher/en_creat_question");
  		}
338594c8   孙向锦   添加教师端页面
1241
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
1242
  		if (paperType != null && "2".equals(paperType)) {
4b6a5239   孙向锦   管理员界面
1243
  			mv.addObject("JUMP_URL", "/main/admin");
782f81b0   jack   1.增加未知学生的判断
1244
  		} else {
4b6a5239   孙向锦   管理员界面
1245
1246
  			mv.addObject("JUMP_URL", "/main/teacher");
  		}
782f81b0   jack   1.增加未知学生的判断
1247
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
338594c8   孙向锦   添加教师端页面
1248
1249
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1250
1251
1252
1253
  
  	/**
  	 * 列表
  	 * 
338594c8   孙向锦   添加教师端页面
1254
1255
1256
  	 * @param page
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1257
1258
1259
1260
1261
  	@RequestMapping(value = "/list2")
  	public ModelAndView list2(Page page) throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "列表Paper");
  		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
  		// //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
338594c8   孙向锦   添加教师端页面
1262
1263
1264
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1265
1266
  		String keywords = pd.getString("keywords"); // 关键词检索条件
  		if (null != keywords && !"".equals(keywords)) {
338594c8   孙向锦   添加教师端页面
1267
1268
  			pd.put("keywords", keywords.trim());
  		}
a51b67cf   孙向锦   交互第一个版本
1269
1270
  		String userID = getUserID();
  		pd.put("USER_ID", userID);
782f81b0   jack   1.增加未知学生的判断
1271
  		pd.put("PAPER_TYPE", "1");
7bbf5236   jack   2.限制出题数为64
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
  		String last_start = pd.getString("LASTSTART");
  		String last_end = pd.getString("LASTEND");
  		if(!last_start.isEmpty()&&!last_end.isEmpty()){
  			DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); 
  			Date begin = fmt.parse(last_start); //开始时间
  			Date end = fmt.parse(last_end);   //结束时间
  			if(begin.compareTo(end)==1){
  				pd.put("LASTSTART", last_end);
  				pd.put("LASTEND", last_start);
  			}
  		}
c617106f   孙向锦   添加即时测功能
1283
  		page.setPd(pd);
78353cf9   jack   1.增加老师端可以看到年级卷
1284
  		List<PageData> varList = paperService.listAllBySidAndTid(pd); // 列出Paper列表
fd0087a8   孙向锦   添加英语语言
1285
  		page.setLangIsChina(isChineseLanguageClient());
782f81b0   jack   1.增加未知学生的判断
1286
  		if (isChineseLanguageClient()) {
fd0087a8   孙向锦   添加英语语言
1287
  			mv.setViewName("sunvote/paper/paper_list2");
782f81b0   jack   1.增加未知学生的判断
1288
  		} else {
fd0087a8   孙向锦   添加英语语言
1289
1290
  			mv.setViewName("sunvote/paper/en_paper_list2");
  		}
782f81b0   jack   1.增加未知学生的判断
1291
1292
  
  		for (PageData p : varList) {
c617106f   孙向锦   添加即时测功能
1293
  			String examTime = p.getString("EXAM_TIME");
579f3266   jack   1.studenttest增加增加...
1294
1295
1296
  			PageData temp = new PageData();
  			temp.put("PAPER_ID", p.getString("PAPER_ID"));
  			List<PageData> li = testpaperService.listAll(temp);
782f81b0   jack   1.增加未知学生的判断
1297
1298
  			if (examTime != null) {
  				try {
c617106f   孙向锦   添加即时测功能
1299
  					int et = Integer.parseInt(examTime);
782f81b0   jack   1.增加未知学生的判断
1300
1301
1302
1303
1304
1305
1306
  					String min = (et / 60) + "";
  					// if(min.length() < 2){
  					// min = "0" + min ;
  					// }
  					String sec = (et % 60) + "";
  					if (sec.length() < 2) {
  						sec = "0" + sec;
c617106f   孙向锦   添加即时测功能
1307
  					}
782f81b0   jack   1.增加未知学生的判断
1308
1309
1310
1311
  					if (et >= 60) {
  						examTime = min + "时" + sec + "分";
  					} else {
  						examTime = "0时" + sec + "分";
c617106f   孙向锦   添加即时测功能
1312
  					}
782f81b0   jack   1.增加未知学生的判断
1313
  				} catch (Exception e) {
c617106f   孙向锦   添加即时测功能
1314
1315
1316
  					e.printStackTrace();
  				}
  			}
782f81b0   jack   1.增加未知学生的判断
1317
  			if (examTime == null) {
c617106f   孙向锦   添加即时测功能
1318
1319
1320
  				examTime = "00:00";
  			}
  			p.put("EXAM_TIME", examTime);
579f3266   jack   1.studenttest增加增加...
1321
  			p.put("TEST_NUM", li.size());
c617106f   孙向锦   添加即时测功能
1322
  		}
782f81b0   jack   1.增加未知学生的判断
1323
  
c617106f   孙向锦   添加即时测功能
1324
1325
  		mv.addObject("varList", varList);
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
1326
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
c617106f   孙向锦   添加即时测功能
1327
1328
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1329
1330
1331
1332
  
  	/**
  	 * 列表
  	 * 
4b6a5239   孙向锦   管理员界面
1333
1334
1335
  	 * @param page
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1336
1337
  	@RequestMapping(value = "/list4")
  	public ModelAndView list4(Page page) throws Exception {
4b6a5239   孙向锦   管理员界面
1338
1339
1340
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1341
1342
  		String keywords = pd.getString("keywords"); // 关键词检索条件
  		if (null != keywords && !"".equals(keywords)) {
4b6a5239   孙向锦   管理员界面
1343
1344
  			pd.put("keywords", keywords.trim());
  		}
782f81b0   jack   1.增加未知学生的判断
1345
  		pd.put("PAPER_TYPE", "1");
7bbf5236   jack   2.限制出题数为64
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
  		String last_start = pd.getString("LASTSTART");
  		String last_end = pd.getString("LASTEND");
  		if(!last_start.isEmpty()&&!last_end.isEmpty()){
  			DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); 
  			Date begin = fmt.parse(last_start); //开始时间
  			Date end = fmt.parse(last_end);   //结束时间
  			if(begin.compareTo(end)==1){
  				pd.put("LASTSTART", last_end);
  				pd.put("LASTEND", last_start);
  			}
  		}
4b6a5239   孙向锦   管理员界面
1357
  		page.setPd(pd);
8f88069a   jack   1.英文翻译(4)
1358
  		page.setLangIsChina(isChineseLanguageClient());
782f81b0   jack   1.增加未知学生的判断
1359
1360
1361
1362
1363
  		List<PageData> varList = paperService.list(page); // 列出Paper列表
  		// pd.put("PAPER_TYPE","2");
  		// List<PageData> varList2 = paperService.list(page); //列出Paper列表
  		// varList.addAll(varList2);
  		if (isChineseLanguageClient()) {
54a5b6ad   jack   1.英文翻译
1364
  			mv.setViewName("sunvote/paper/paper_list4");
782f81b0   jack   1.增加未知学生的判断
1365
  		} else {
54a5b6ad   jack   1.英文翻译
1366
1367
  			mv.setViewName("sunvote/paper/en_paper_list4");
  		}
782f81b0   jack   1.增加未知学生的判断
1368
1369
  
  		for (PageData p : varList) {
4b6a5239   孙向锦   管理员界面
1370
  			String examTime = p.getString("EXAM_TIME");
4926e3fd   jack   1.修复bug
1371
1372
1373
  			PageData temp = new PageData();
  			temp.put("PAPER_ID", p.getString("PAPER_ID"));
  			List<PageData> li = testpaperService.listAll(temp);
782f81b0   jack   1.增加未知学生的判断
1374
1375
  			if (examTime != null) {
  				try {
4b6a5239   孙向锦   管理员界面
1376
  					int et = Integer.parseInt(examTime);
782f81b0   jack   1.增加未知学生的判断
1377
1378
1379
1380
1381
1382
1383
  					String min = (et / 60) + "";
  					// if(min.length() < 2){
  					// min = "0" + min ;
  					// }
  					String sec = (et % 60) + "";
  					if (sec.length() < 2) {
  						sec = "0" + sec;
4b6a5239   孙向锦   管理员界面
1384
  					}
782f81b0   jack   1.增加未知学生的判断
1385
1386
1387
1388
  					if (et >= 60) {
  						examTime = min + "时" + sec + "分";
  					} else {
  						examTime = "0时" + sec + "分";
4b6a5239   孙向锦   管理员界面
1389
  					}
782f81b0   jack   1.增加未知学生的判断
1390
  				} catch (Exception e) {
4b6a5239   孙向锦   管理员界面
1391
1392
1393
  					e.printStackTrace();
  				}
  			}
782f81b0   jack   1.增加未知学生的判断
1394
  			if (examTime == null) {
f4a73594   jack   1.增加班级统计报表和导出
1395
  				examTime = "0";
4b6a5239   孙向锦   管理员界面
1396
1397
  			}
  			p.put("EXAM_TIME", examTime);
4926e3fd   jack   1.修复bug
1398
  			p.put("TEST_NUM", li.size());
4b6a5239   孙向锦   管理员界面
1399
  		}
782f81b0   jack   1.增加未知学生的判断
1400
  
8cac9719   孙向锦   试卷题目过滤
1401
1402
  		PageData tpd = new PageData();
  		tpd.put("ID", getUserID());
837ae11d   孙向锦   添加班長管理
1403
  		PageData adminInfos = v1Service.getAdminInfo(tpd);
782f81b0   jack   1.增加未知学生的判断
1404
1405
1406
1407
1408
  		List<PageData> gradeInfos = schoolgradesubjectService
  				.listAllGrade(adminInfos);
  		List<PageData> subjectInfos = schoolgradesubjectService
  				.listAllSubject(adminInfos);
  
8cac9719   孙向锦   试卷题目过滤
1409
1410
  		mv.addObject("gradeInfos", gradeInfos);
  		mv.addObject("subjectInfos", subjectInfos);
782f81b0   jack   1.增加未知学生的判断
1411
  
4b6a5239   孙向锦   管理员界面
1412
1413
  		mv.addObject("varList", varList);
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
1414
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
4b6a5239   孙向锦   管理员界面
1415
1416
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1417
1418
1419
1420
  
  	/**
  	 * 列表
  	 * 
4b6a5239   孙向锦   管理员界面
1421
1422
1423
  	 * @param page
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1424
1425
  	@RequestMapping(value = "/list5")
  	public ModelAndView list5(Page page) throws Exception {
4b6a5239   孙向锦   管理员界面
1426
1427
1428
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1429
1430
  		String keywords = pd.getString("keywords"); // 关键词检索条件
  		if (null != keywords && !"".equals(keywords)) {
4b6a5239   孙向锦   管理员界面
1431
1432
  			pd.put("keywords", keywords.trim());
  		}
782f81b0   jack   1.增加未知学生的判断
1433
  		pd.put("PAPER_TYPE", "2");
4b6a5239   孙向锦   管理员界面
1434
  		pd.put("USER_ID", this.getUserID());
7bbf5236   jack   2.限制出题数为64
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
  		String last_start = pd.getString("LASTSTART");
  		String last_end = pd.getString("LASTEND");
  		if(!last_start.isEmpty()&&!last_end.isEmpty()){
  			DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); 
  			Date begin = fmt.parse(last_start); //开始时间
  			Date end = fmt.parse(last_end);   //结束时间
  			if(begin.compareTo(end)==1){
  				pd.put("LASTSTART", last_end);
  				pd.put("LASTEND", last_start);
  			}
  		}
4b6a5239   孙向锦   管理员界面
1446
  		page.setPd(pd);
54a5b6ad   jack   1.英文翻译
1447
  		page.setLangIsChina(isChineseLanguageClient());
782f81b0   jack   1.增加未知学生的判断
1448
1449
  		List<PageData> varList = paperService.list(page); // 列出Paper列表
  		if (isChineseLanguageClient()) {
54a5b6ad   jack   1.英文翻译
1450
  			mv.setViewName("sunvote/paper/paper_list5");
782f81b0   jack   1.增加未知学生的判断
1451
  		} else {
54a5b6ad   jack   1.英文翻译
1452
1453
  			mv.setViewName("sunvote/paper/en_paper_list5");
  		}
782f81b0   jack   1.增加未知学生的判断
1454
1455
  
  		for (PageData p : varList) {
4b6a5239   孙向锦   管理员界面
1456
  			String examTime = p.getString("EXAM_TIME");
4926e3fd   jack   1.修复bug
1457
1458
1459
  			PageData temp = new PageData();
  			temp.put("PAPER_ID", p.getString("PAPER_ID"));
  			List<PageData> li = testpaperService.listAll(temp);
782f81b0   jack   1.增加未知学生的判断
1460
1461
1462
  
  			if (examTime != null) {
  				try {
4b6a5239   孙向锦   管理员界面
1463
  					int et = Integer.parseInt(examTime);
782f81b0   jack   1.增加未知学生的判断
1464
1465
1466
1467
1468
1469
1470
  					String min = (et / 60) + "";
  					// if(min.length() < 2){
  					// min = "0" + min ;
  					// }
  					String sec = (et % 60) + "";
  					if (sec.length() < 2) {
  						sec = "0" + sec;
4b6a5239   孙向锦   管理员界面
1471
  					}
782f81b0   jack   1.增加未知学生的判断
1472
1473
1474
1475
  					if (et >= 60) {
  						examTime = min + "时" + sec + "分";
  					} else {
  						examTime = "0时" + sec + "分";
4b6a5239   孙向锦   管理员界面
1476
  					}
782f81b0   jack   1.增加未知学生的判断
1477
  				} catch (Exception e) {
4b6a5239   孙向锦   管理员界面
1478
1479
1480
  					e.printStackTrace();
  				}
  			}
782f81b0   jack   1.增加未知学生的判断
1481
  			if (examTime == null) {
f4a73594   jack   1.增加班级统计报表和导出
1482
  				examTime = "0";
4b6a5239   孙向锦   管理员界面
1483
1484
  			}
  			p.put("EXAM_TIME", examTime);
4926e3fd   jack   1.修复bug
1485
  			p.put("TEST_NUM", li.size());
4b6a5239   孙向锦   管理员界面
1486
  		}
782f81b0   jack   1.增加未知学生的判断
1487
  
4b6a5239   孙向锦   管理员界面
1488
1489
  		mv.addObject("varList", varList);
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
1490
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
4b6a5239   孙向锦   管理员界面
1491
1492
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1493
1494
1495
1496
  
  	/**
  	 * 列表
  	 * 
c617106f   孙向锦   添加即时测功能
1497
1498
1499
  	 * @param page
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1500
1501
1502
1503
1504
  	@RequestMapping(value = "/list3")
  	public ModelAndView list3(Page page) throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "列表Paper");
  		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
  		// //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
c617106f   孙向锦   添加即时测功能
1505
1506
1507
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1508
1509
  		String keywords = pd.getString("keywords"); // 关键词检索条件
  		if (null != keywords && !"".equals(keywords)) {
c617106f   孙向锦   添加即时测功能
1510
1511
1512
1513
  			pd.put("keywords", keywords.trim());
  		}
  		String userID = getUserID();
  		pd.put("USER_ID", userID);
782f81b0   jack   1.增加未知学生的判断
1514
  		pd.put("PAPER_TYPE", "101");
338594c8   孙向锦   添加教师端页面
1515
  		page.setPd(pd);
782f81b0   jack   1.增加未知学生的判断
1516
  		List<PageData> varList = paperService.list(page); // 列出Paper列表
338594c8   孙向锦   添加教师端页面
1517
  		mv.setViewName("sunvote/paper/paper_list2");
782f81b0   jack   1.增加未知学生的判断
1518
1519
  
  		for (PageData p : varList) {
338594c8   孙向锦   添加教师端页面
1520
  			String examTime = p.getString("EXAM_TIME");
782f81b0   jack   1.增加未知学生的判断
1521
1522
  			if (examTime != null) {
  				try {
338594c8   孙向锦   添加教师端页面
1523
  					int et = Integer.parseInt(examTime);
782f81b0   jack   1.增加未知学生的判断
1524
1525
1526
1527
1528
1529
1530
  					String min = (et / 60) + "";
  					// if(min.length() < 2){
  					// min = "0" + min ;
  					// }
  					String sec = (et % 60) + "";
  					if (sec.length() < 2) {
  						sec = "0" + sec;
338594c8   孙向锦   添加教师端页面
1531
  					}
782f81b0   jack   1.增加未知学生的判断
1532
1533
1534
1535
  					if (et > 60) {
  						examTime = min + "时" + sec + "分";
  					} else {
  						examTime = "0时" + sec + "分";
338594c8   孙向锦   添加教师端页面
1536
  					}
782f81b0   jack   1.增加未知学生的判断
1537
  				} catch (Exception e) {
338594c8   孙向锦   添加教师端页面
1538
1539
1540
  					e.printStackTrace();
  				}
  			}
782f81b0   jack   1.增加未知学生的判断
1541
  			if (examTime == null) {
f4a73594   jack   1.增加班级统计报表和导出
1542
  				examTime = "0";
338594c8   孙向锦   添加教师端页面
1543
1544
1545
  			}
  			p.put("EXAM_TIME", examTime);
  		}
782f81b0   jack   1.增加未知学生的判断
1546
  
338594c8   孙向锦   添加教师端页面
1547
1548
  		mv.addObject("varList", varList);
  		mv.addObject("pd", pd);
782f81b0   jack   1.增加未知学生的判断
1549
  		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
338594c8   孙向锦   添加教师端页面
1550
1551
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1552
1553
1554
1555
  
  	/**
  	 * 去新增页面
  	 * 
bed6e1fc   孙向锦   添加其他功能
1556
1557
1558
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1559
1560
  	@RequestMapping(value = "/goAdd")
  	public ModelAndView goAdd() throws Exception {
bed6e1fc   孙向锦   添加其他功能
1561
1562
1563
1564
1565
1566
1567
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
  		mv.setViewName("sunvote/paper/paper_edit");
  		mv.addObject("msg", "save");
  		mv.addObject("pd", pd);
  		return mv;
782f81b0   jack   1.增加未知学生的判断
1568
1569
1570
1571
1572
  	}
  
  	/**
  	 * 去新增页面
  	 * 
338594c8   孙向锦   添加教师端页面
1573
1574
1575
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1576
1577
  	@RequestMapping(value = "/goAddTest")
  	public ModelAndView goAddTest() throws Exception {
338594c8   孙向锦   添加教师端页面
1578
1579
1580
1581
1582
1583
1584
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
  		mv.setViewName("sunvote/paper/paper_edit2");
  		mv.addObject("msg", "newpaper");
  		mv.addObject("pd", pd);
  		return mv;
782f81b0   jack   1.增加未知学生的判断
1585
1586
1587
1588
1589
  	}
  
  	/**
  	 * 去修改页面
  	 * 
bed6e1fc   孙向锦   添加其他功能
1590
1591
1592
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1593
1594
  	@RequestMapping(value = "/goEdit")
  	public ModelAndView goEdit() throws Exception {
bed6e1fc   孙向锦   添加其他功能
1595
1596
1597
  		ModelAndView mv = this.getModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1598
  		pd = paperService.findById(pd); // 根据ID读取
bed6e1fc   孙向锦   添加其他功能
1599
1600
1601
1602
  		mv.setViewName("sunvote/paper/paper_edit");
  		mv.addObject("msg", "edit");
  		mv.addObject("pd", pd);
  		return mv;
782f81b0   jack   1.增加未知学生的判断
1603
1604
1605
1606
1607
  	}
  
  	/**
  	 * 批量删除
  	 * 
bed6e1fc   孙向锦   添加其他功能
1608
1609
1610
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1611
  	@RequestMapping(value = "/deleteAll")
bed6e1fc   孙向锦   添加其他功能
1612
  	@ResponseBody
782f81b0   jack   1.增加未知学生的判断
1613
1614
1615
1616
1617
1618
  	public Object deleteAll() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "批量删除Paper");
  		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;}
  		// //校验权限
  		PageData pd = new PageData();
  		Map<String, Object> map = new HashMap<String, Object>();
bed6e1fc   孙向锦   添加其他功能
1619
1620
1621
  		pd = this.getPageData();
  		List<PageData> pdList = new ArrayList<PageData>();
  		String DATA_IDS = pd.getString("DATA_IDS");
782f81b0   jack   1.增加未知学生的判断
1622
  		if (null != DATA_IDS && !"".equals(DATA_IDS)) {
bed6e1fc   孙向锦   添加其他功能
1623
1624
  			String ArrayDATA_IDS[] = DATA_IDS.split(",");
  			paperService.deleteAll(ArrayDATA_IDS);
338594c8   孙向锦   添加教师端页面
1625
  			paperquestionService.deleteAllPaper(ArrayDATA_IDS);
bed6e1fc   孙向锦   添加其他功能
1626
  			pd.put("msg", "ok");
782f81b0   jack   1.增加未知学生的判断
1627
  		} else {
bed6e1fc   孙向锦   添加其他功能
1628
1629
1630
1631
1632
1633
  			pd.put("msg", "no");
  		}
  		pdList.add(pd);
  		map.put("list", pdList);
  		return AppUtil.returnObject(pd, map);
  	}
782f81b0   jack   1.增加未知学生的判断
1634
1635
1636
1637
  
  	/**
  	 * 导出到excel
  	 * 
bed6e1fc   孙向锦   添加其他功能
1638
1639
1640
  	 * @param
  	 * @throws Exception
  	 */
782f81b0   jack   1.增加未知学生的判断
1641
1642
1643
1644
1645
1646
  	@RequestMapping(value = "/excel")
  	public ModelAndView exportExcel() throws Exception {
  		logBefore(logger, Jurisdiction.getUsername() + "导出Paper到excel");
  		if (!Jurisdiction.buttonJurisdiction(menuUrl, "cha")) {
  			return null;
  		}
bed6e1fc   孙向锦   添加其他功能
1647
1648
1649
  		ModelAndView mv = new ModelAndView();
  		PageData pd = new PageData();
  		pd = this.getPageData();
782f81b0   jack   1.增加未知学生的判断
1650
  		Map<String, Object> dataMap = new HashMap<String, Object>();
bed6e1fc   孙向锦   添加其他功能
1651
  		List<String> titles = new ArrayList<String>();
782f81b0   jack   1.增加未知学生的判断
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
  		titles.add("试卷标题"); // 1
  		titles.add("出卷老师"); // 2
  		titles.add("试卷类型"); // 3
  		titles.add("科目"); // 4
  		titles.add("年级"); // 5
  		titles.add("学校"); // 6
  		titles.add("创建时间"); // 7
  		titles.add("修改时间"); // 8
  		titles.add("建议考试时长"); // 9
  		titles.add("试卷状态"); // 10
  		titles.add("备注"); // 11
bed6e1fc   孙向锦   添加其他功能
1663
1664
1665
  		dataMap.put("titles", titles);
  		List<PageData> varOList = paperService.listAll(pd);
  		List<PageData> varList = new ArrayList<PageData>();
782f81b0   jack   1.增加未知学生的判断
1666
  		for (int i = 0; i < varOList.size(); i++) {
bed6e1fc   孙向锦   添加其他功能
1667
  			PageData vpd = new PageData();
782f81b0   jack   1.增加未知学生的判断
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
  			vpd.put("var1", varOList.get(i).getString("TITLE")); // 1
  			vpd.put("var2", varOList.get(i).getString("USER_ID")); // 2
  			vpd.put("var3", varOList.get(i).getString("PAPER_TYPE")); // 3
  			vpd.put("var4", varOList.get(i).getString("SUBJECT_ID")); // 4
  			vpd.put("var5", varOList.get(i).getString("GRADE_ID")); // 5
  			vpd.put("var6", varOList.get(i).getString("SCHOOL_ID")); // 6
  			vpd.put("var7", varOList.get(i).getString("CREATE_DATE")); // 7
  			vpd.put("var8", varOList.get(i).getString("MODIFY_DATE")); // 8
  			vpd.put("var9", varOList.get(i).getString("EXAM_TIME")); // 9
  			vpd.put("var10", varOList.get(i).getString("PAPER_STATE")); // 10
  			vpd.put("var11", varOList.get(i).getString("REMARK")); // 11
bed6e1fc   孙向锦   添加其他功能
1679
1680
1681
1682
  			varList.add(vpd);
  		}
  		dataMap.put("varList", varList);
  		ObjectExcelView erv = new ObjectExcelView();
782f81b0   jack   1.增加未知学生的判断
1683
  		mv = new ModelAndView(erv, dataMap);
bed6e1fc   孙向锦   添加其他功能
1684
1685
  		return mv;
  	}
782f81b0   jack   1.增加未知学生的判断
1686
  
bed6e1fc   孙向锦   添加其他功能
1687
  	@InitBinder
782f81b0   jack   1.增加未知学生的判断
1688
  	public void initBinder(WebDataBinder binder) {
bed6e1fc   孙向锦   添加其他功能
1689
  		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
782f81b0   jack   1.增加未知学生的判断
1690
1691
  		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,
  				true));
bed6e1fc   孙向锦   添加其他功能
1692
1693
  	}
  }