ting.yin пре 3 година
родитељ
комит
db5dfcba5c

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -201,4 +201,7 @@ public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent,
     @Query("select sum(s.sheetCount) from ExamStudent s where s.examId=?1 ")
     public long sumSheetCountByExamId(Integer examId);
 
+    @Query("select sum(s.sheetCount) from ExamStudent s where s.examId=?1 and s.subjectCode=?2 ")
+    public long sumSheetCountByExamIdAndSubjectCode(int examId, String subjectCode);
+
 }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java

@@ -104,6 +104,8 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
 
     private Integer inspectorId;
 
+    private Integer sheetCount;
+
     public ExamStudentSearchQuery() {
         super();
         this.statusSet = new HashSet<>();
@@ -485,4 +487,12 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
         this.examSiteNotIn = examSiteNotIn;
     }
 
+    public Integer getSheetCount() {
+        return sheetCount;
+    }
+
+    public void setSheetCount(Integer sheetCount) {
+        this.sheetCount = sheetCount;
+    }
+
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java

@@ -150,4 +150,6 @@ public interface ExamStudentService {
     public ExamStudent randomStudent(Integer examId, String code);
 
     public long countSheetCountByExamId(Integer examId);
+
+    public long countSheetCountByExamIdAndSubjectCode(int examId, String code);
 }

+ 8 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -688,6 +688,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 if (StringUtils.isNotBlank(query.getExamRoom())) {
                     predicates.add(cb.equal(root.get("examRoom"), query.getExamRoom()));
                 }
+                if (query.getSheetCount() != null) {
+                    predicates.add(cb.equal(root.get("sheetCount"), query.getSheetCount()));
+                }
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                         .size()]));
             }
@@ -1096,4 +1099,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     public long countSheetCountByExamId(Integer examId) {
         return studentDao.sumSheetCountByExamId(examId);
     }
+
+    @Override
+    public long countSheetCountByExamIdAndSubjectCode(int examId, String code) {
+        return studentDao.sumSheetCountByExamIdAndSubjectCode(examId, code);
+    }
 }

+ 45 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScanController.java

@@ -13,7 +13,9 @@ import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -21,9 +23,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import java.util.LinkedList;
 import java.util.List;
 
@@ -63,11 +69,14 @@ public class ScanController extends BaseExamController {
         query = subjectService.findByQuery(query);
         for (ExamSubject subject : query.getResult()) {
             ScanInfoVO vo = new ScanInfoVO();
-            vo.setName(subject.getCode() + "-" + subject.getName() + (StringUtils.isNotBlank(subject.getRemark()) ?
-                    ("-" + StringUtils.trimToEmpty(subject.getRemark())) :
-                    ""));
+            vo.setName(subject.getCode()
+                    + "-"
+                    + subject.getName()
+                    + (StringUtils.isNotBlank(subject.getRemark()) ? ("-" + StringUtils.trimToEmpty(subject.getRemark()))
+                            : ""));
             vo.setTotalCount(studentService.countByExamIdAndSubjectCode(examId, subject.getCode()));
             vo.setScanCount(studentService.countByExamIdAndSubjectCode(examId, subject.getCode(), true));
+            vo.setScanSheetCount(studentService.countSheetCountByExamIdAndSubjectCode(examId, subject.getCode()));
             list.add(vo);
         }
 
@@ -144,4 +153,37 @@ public class ScanController extends BaseExamController {
         view.addObject("fileServer", fileService.getFileServer());
         return view;
     }
+
+    @Logging(menu = "扫描进度导出", type = LogType.EXPORT)
+    @RequestMapping(value = "/export", method = RequestMethod.POST)
+    public String export(ExamSubjectSearchQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        List<ScanInfoVO> list = new LinkedList<ScanInfoVO>();
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        query = subjectService.findByQuery(query);
+        for (ExamSubject subject : query.getResult()) {
+            ScanInfoVO vo = new ScanInfoVO();
+            vo.setName(subject.getCode()
+                    + "-"
+                    + subject.getName()
+                    + (StringUtils.isNotBlank(subject.getRemark()) ? ("-" + StringUtils.trimToEmpty(subject.getRemark()))
+                            : ""));
+            vo.setTotalCount(studentService.countByExamIdAndSubjectCode(examId, subject.getCode()));
+            vo.setScanCount(studentService.countByExamIdAndSubjectCode(examId, subject.getCode(), true));
+            vo.setScanSheetCount(studentService.countSheetCountByExamIdAndSubjectCode(examId, subject.getCode()));
+            list.add(vo);
+        }
+        try {
+            String fileName = "扫描进度.xlsx";
+            new ExportExcel("扫描进度", ScanInfoVO.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            e.printStackTrace();
+            addMessage(redirectAttributes, "导出扫描进度失败!" + e.getMessage());
+            return "redirect:/admin/exam/scan/subject";
+        }
+    }
 }

+ 17 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/vo/ScanInfoVO.java

@@ -1,13 +1,21 @@
 package cn.com.qmth.stmms.admin.vo;
 
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 public class ScanInfoVO {
 
+    @ExcelField(title = "名称", align = 2, sort = 10)
     private String name;
 
+    @ExcelField(title = "考生人数", align = 2, sort = 20)
     private long totalCount;
 
+    @ExcelField(title = "已扫人数", align = 2, sort = 40)
     private long scanCount;
 
+    @ExcelField(title = "已扫张数", align = 2, sort = 30)
+    private long scanSheetCount;
+
     public String getName() {
         return name;
     }
@@ -31,4 +39,13 @@ public class ScanInfoVO {
     public void setScanCount(long scanCount) {
         this.scanCount = scanCount;
     }
+
+    public long getScanSheetCount() {
+        return scanSheetCount;
+    }
+
+    public void setScanSheetCount(long scanSheetCount) {
+        this.scanSheetCount = scanSheetCount;
+    }
+
 }

+ 15 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scanInfo.jsp

@@ -57,13 +57,22 @@
 		</c:if>
 		&nbsp;
 		<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-			
+		<c:if test="${type=='subject'}">
+		&nbsp;
+			<input id="btnExport" class="btn btn-primary" type="button" value="导出" onclick="goExport()"/>
+		</c:if>
+	</form>
+	<form id="exportForm" action="${ctx}/admin/exam/scan/export" method="post" class="breadcrumb form-search hide">
+		<input type="text" name="code" value="${query.code}" maxlength="10" class="input-mini"/>
+		<input type="text" name="category" value="${query.category}" maxlength="20" class="input-small"/>
+        <input type="text" name="level" value="${query.level}" maxlength="64" class="input-mini"/>
 	</form>
 	<table id="contentTable" class="table table-striped table-bordered table-condensed">
 		<thead>
 			<tr>
 				<th>名称</th>
 				<th>考生总数</th>
+				<th>已扫张数</th>
 				<th>已扫人数</th>
 				<th>进度</th>
 			</tr>
@@ -73,6 +82,7 @@
 			<tr>
 				<td>${info.name}</td>
 				<td>${info.totalCount}</td>
+				<td>${info.scanSheetCount}</td>
 				<td>${info.scanCount}</td>
 				<td>
 					<c:if test="${info.totalCount==0}">
@@ -100,6 +110,10 @@ function goSearch(){
 	$("#searchForm").submit();
 	return false;
 }
+function goExport(){
+	$("#exportForm").submit();
+	return false;
+}
 </script>	
 </body>
 </html>

+ 5 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentList.jsp

@@ -114,6 +114,8 @@
         <input type="text" name="examSite" value="${query.examSite}" maxlength="64" class="input-mini"/>
         <label>考场</label>
         <input type="text" name="examRoom" value="${query.examRoom}" maxlength="64" class="input-mini"/>
+        <label>扫描张数</label>
+        <input type="number" name="sheetCount" value="${query.sheetCount}" maxlength="64" class="input-mini"/>
         <br><br>
         &nbsp;<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         <c:if test="${web_user.schoolAdmin==true}">
@@ -156,6 +158,7 @@
         <input type="text" name="teacher" value="${query.teacher}" maxlength="64" class="input-mini"/>
         <input type="text" name="examSite" value="${query.examSite}" maxlength="64" class="input-mini"/>
         <input type="text" name="examRoom" value="${query.examRoom}" maxlength="64" class="input-mini"/>
+        <input type="number" name="sheetCount" value="${query.sheetCount}" maxlength="64" class="input-mini"/>
 </form>
 <tags:message content="${message}"/>
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
@@ -170,6 +173,7 @@
         <th>层次</th>
         <th>专业类型</th>
         <th>扫描识别</th>
+        <th>扫描张数</th>
         <th>人工指定</th>
         <th>批次编号</th>
         <th>签到表编号</th>
@@ -215,6 +219,7 @@
                 </c:if>
             
             </td>
+            <td>${student.sheetCount}</td>
             <td>
                 <c:if test="${student.breach==true}">
                     <c:if test="${web_user.schoolAdmin==true}">