Procházet zdrojové kódy

新增导出日志

yin před 13 hodinami
rodič
revize
c475b70b1b

+ 84 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/OperationLogDTO.java

@@ -0,0 +1,84 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import cn.com.qmth.stmms.biz.exam.model.OperationLog;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+import cn.com.qmth.stmms.common.utils.DateUtils;
+
+public class OperationLogDTO {
+    @ExcelField(title = "登录名", align = 2, sort = 10)
+    private String loginName;
+
+    @ExcelField(title = "用户类型", align = 2, sort = 20)
+    private String userType;
+
+    @ExcelField(title = "类型", align = 2, sort = 30)
+    private String type;
+
+    @ExcelField(title = "登录ip", align = 2, sort = 40)
+    private String ip;
+
+    @ExcelField(title = "功能", align = 2, sort = 50)
+    private String menu;
+
+
+    @ExcelField(title = "操作时间", align = 2, sort = 60)
+    private String time;
+
+    public OperationLogDTO(OperationLog log){
+        this.ip = log.getIpAddress();
+        this.menu = log.getMenu();
+        this.time = DateUtils.formatDateTime(log.getCreateTime());
+        this.type = log.getType().getName();
+        this.loginName = log.getLoginName();
+        this.userType =log.isMarker()?"评卷员":"管理员";
+    }
+
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public String getUserType() {
+        return userType;
+    }
+
+    public void setUserType(String userType) {
+        this.userType = userType;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getIp() {
+        return ip;
+    }
+
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+
+    public String getMenu() {
+        return menu;
+    }
+
+    public void setMenu(String menu) {
+        this.menu = menu;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+}

+ 3 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ArbitrateController.java

@@ -6,6 +6,8 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletResponse;
 
+import cn.com.qmth.stmms.common.annotation.Logging;
+import cn.com.qmth.stmms.common.enums.LogType;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -116,6 +118,7 @@ public class ArbitrateController extends BaseApiController {
     }
 
     @ApiOperation(value = "导出")
+    @Logging(menu = "导出仲裁数据", type = LogType.EXPORT)
     @RequestMapping(value = "export", method = RequestMethod.POST)
     public void exportFile(ArbitrateHistorySearchQuery query, HttpServletResponse response) {
         String fileName = "仲裁数据.xlsx";

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/InspectImportController.java

@@ -196,6 +196,7 @@ public class InspectImportController extends BaseApiController {
     }
 
     @ApiOperation(value = "导出错误日志")
+    @Logging(menu = "导出导入复核错误日志", type = LogType.EXPORT)
     @ResponseBody
     @RequestMapping(value = "export", method = RequestMethod.POST)
     public void export(HttpServletResponse response) {
@@ -217,6 +218,7 @@ public class InspectImportController extends BaseApiController {
     }
 
     @ApiOperation(value = "导出标记卷")
+    @Logging(menu = "导出复核标记卷", type = LogType.EXPORT)
     @ResponseBody
     @RequestMapping(value = "export-tag", method = RequestMethod.POST)
     public void exportTag(HttpServletResponse response) {

+ 3 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/InspectedController.java

@@ -218,6 +218,7 @@ public class InspectedController extends BaseApiController {
 
     @ApiOperation(value = "成绩复核进度导出")
     @RequestMapping(value = "info/export", method = RequestMethod.POST)
+    @Logging(menu = "成绩复核进度导出", type = LogType.EXPORT)
     @ResponseBody
     public void infoExport(ExamSubjectSearchQuery query, HttpServletResponse response) {
         String fileName = "成绩复核进度数据.xlsx";
@@ -491,6 +492,7 @@ public class InspectedController extends BaseApiController {
 
     @ApiOperation(value = "全卷复核导出")
     @RequestMapping(value = "list/export", method = RequestMethod.POST)
+    @Logging(menu = "成绩复核导出", type = LogType.EXPORT)
     @ResponseBody
     public void exportListFile(HttpServletResponse response, InspectQuery query) {
         int examId = getSessionExamId();
@@ -548,6 +550,7 @@ public class InspectedController extends BaseApiController {
 
     @ApiOperation(value = "复核工作量导出")
     @RequestMapping(value = "work/export", method = RequestMethod.POST)
+    @Logging(menu = "复核工作量导出", type = LogType.EXPORT)
     @ResponseBody
     public void exportWorkFile(HttpServletRequest request, HttpServletResponse response,
             RedirectAttributes redirectAttributes) {

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/LibraryController.java

@@ -439,6 +439,7 @@ public class LibraryController extends BaseApiController {
     }
 
     @ApiOperation(value = "导出")
+    @Logging(menu = "导出任务数据", type = LogType.EXPORT)
     @RequestMapping(value = "export", method = RequestMethod.POST)
     public void exportFile(MarkLibrarySearchQuery query, HttpServletResponse response) {
         String fileName = "任务数据.xlsx";

+ 3 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkQualityController.java

@@ -132,6 +132,7 @@ public class MarkQualityController extends BaseApiController {
     }
 
     @ApiOperation(value = "按科目导出")
+    @Logging(menu = "导出科目质量监控", type = LogType.EXPORT)
     @RequestMapping(value = "list/subject/export", method = RequestMethod.POST)
     public void exportSubjectFile(SubjectQualitySearchQuery query, HttpServletResponse response) {
         String fileName = "科目质量监控数据";
@@ -226,6 +227,7 @@ public class MarkQualityController extends BaseApiController {
     }
 
     @ApiOperation(value = "按分组导出")
+    @Logging(menu = "导出分组质量监控", type = LogType.EXPORT)
     @RequestMapping(value = "list/group/export", method = RequestMethod.POST)
     public void exportGroupFile(SubjectQualitySearchQuery query, HttpServletResponse response) {
         String fileName = "分组质量监控数据";
@@ -279,6 +281,7 @@ public class MarkQualityController extends BaseApiController {
     }
 
     @ApiOperation(value = "按评卷员导出")
+    @Logging(menu = "导出评卷员质量监控", type = LogType.EXPORT)
     @RequestMapping(value = "list/marker/export", method = RequestMethod.POST)
     public void exportMarkerFile(MarkerSearchQuery query, HttpServletResponse response) {
         String fileName = "评卷员质量监控数据";

+ 42 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/OperationLogController.java

@@ -1,9 +1,21 @@
 package cn.com.qmth.stmms.api.controller.admin;
 
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
+import cn.com.qmth.stmms.admin.dto.OperationLogDTO;
+import cn.com.qmth.stmms.admin.dto.ProblemHistoryDTO;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
+import cn.com.qmth.stmms.biz.mark.model.ProblemType;
+import cn.com.qmth.stmms.biz.mark.query.ProblemHistorySearchQuery;
+import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.common.annotation.Logging;
+import cn.com.qmth.stmms.common.enums.HistoryStatus;
+import cn.com.qmth.stmms.common.utils.DateUtils;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import com.qmth.boot.core.exception.StatusException;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +37,8 @@ import cn.com.qmth.stmms.common.enums.LogType;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import javax.servlet.http.HttpServletResponse;
+
 @Api(tags = "操作日志")
 @Controller("adminOperationLogController")
 @RequestMapping("/api/admin/operation/log")
@@ -56,4 +70,30 @@ public class OperationLogController extends BaseApiController {
         return Arrays.asList(LogType.values());
     }
 
+    @ApiOperation(value = "导出日志")
+    @Logging(menu = "导出日志", type = LogType.EXPORT)
+    @RequestMapping(value = "/export", method = RequestMethod.POST)
+    @ResponseBody
+    public void exportFile(OperationLogSearchQuery query, HttpServletResponse response) {
+        try {
+            String fileName = "日志数据.xlsx";
+            ApiUser user = getApiUser();
+            int examId = getSessionExamId();
+            query.setExamId(examId);
+            query.setSchoolId(user.getUser().getSchoolId());
+            query.orderByCreateTime();
+            query = logService.findByQuery(query);
+            List<OperationLogDTO> list = new ArrayList<>();
+            for (OperationLog log : query.getResult()) {
+                OperationLogDTO vo = new OperationLogDTO(log);
+                list.add(vo);
+            }
+            new ExportExcel("日志数据", OperationLogDTO.class).setDataList(list).write(response, fileName).dispose();
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            e.printStackTrace();
+            throw new StatusException("导出日志数据失败!"+e.getMessage());
+        }
+    }
+
 }

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ProblemHistoryController.java

@@ -178,7 +178,7 @@ public class ProblemHistoryController extends BaseApiController {
     }
 
     @ApiOperation(value = "导出问题卷")
-    @Logging(menu = "导出问题卷", type = LogType.UPDATE)
+    @Logging(menu = "导出问题卷", type = LogType.EXPORT)
     @RequestMapping(value = "/export", method = RequestMethod.POST)
     @ResponseBody
     public void exportFile(ProblemHistorySearchQuery query,HttpServletResponse response) {

+ 3 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/RejectController.java

@@ -110,6 +110,7 @@ public class RejectController extends BaseApiController {
     }
 
     @ApiOperation(value = "打回统计按科目导出")
+    @Logging(menu = "打回统计按科目导出", type = LogType.EXPORT)
     @RequestMapping(value = "list/subject/export", method = RequestMethod.POST)
     public void exportSubjectFile(SubjectQualitySearchQuery query, HttpServletResponse response) {
         String fileName = "打回统计数据";
@@ -185,7 +186,7 @@ public class RejectController extends BaseApiController {
     }
 
     @ApiOperation(value = "打回统计按分组导出")
-    @Logging(menu = "打回统计按分组到处", type = LogType.EXPORT)
+    @Logging(menu = "打回统计按分组导出", type = LogType.EXPORT)
     @RequestMapping(value = "list/group/export", method = RequestMethod.POST)
     public void exportGroupFile(SubjectQualitySearchQuery query, HttpServletResponse response) {
         String fileName = "分组质量监控数据";
@@ -219,7 +220,7 @@ public class RejectController extends BaseApiController {
     }
 
     @ApiOperation(value = "打回历史导出")
-    @Logging(menu = "打回历史到处", type = LogType.EXPORT)
+    @Logging(menu = "打回历史导出", type = LogType.EXPORT)
     @RequestMapping(value = "list/history/export", method = RequestMethod.POST)
     public void exportHistoryFile(RejectHistorySearchQuery query, HttpServletResponse response) {
         String fileName = "打回历史数据";

+ 4 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ReportController.java

@@ -573,9 +573,12 @@ public class ReportController extends BaseApiController {
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        if (StringUtils.isBlank(query.getSubjectCode()) || StringUtils.isBlank(query.getTeacherName())) {
+        if (StringUtils.isBlank(query.getSubjectCode())){
             throw new StatusException("请先选择科目");
         }
+        if(StringUtils.isBlank(query.getTeacherName())) {
+            throw new StatusException("请先选择教师");
+        }
         List<ReportSubjectTeacherClass> list = reportSubjectTeacherClassService.findByQuery(query);
         for (ReportSubjectTeacherClass r : list) {
             r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ScanController.java

@@ -206,7 +206,7 @@ public class ScanController extends BaseApiController {
     }
 
     @ApiOperation(value = "扫描进度-按考点导出")
-    @Logging(menu = "扫描进度导出", type = LogType.EXPORT)
+    @Logging(menu = "扫描进度-按考点导出", type = LogType.EXPORT)
     @RequestMapping(value = "/examSite/export", method = RequestMethod.POST)
     public void examSiteExport(ExamStudentSearchQuery query, HttpServletRequest request, HttpServletResponse response) {
         int examId = getSessionExamId(request);

+ 5 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ScoreVerifyController.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletResponse;
 
+import cn.com.qmth.stmms.common.annotation.Logging;
+import cn.com.qmth.stmms.common.enums.LogType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -98,6 +100,7 @@ public class ScoreVerifyController extends BaseApiController {
     }
 
     @ApiOperation(value = "导出标记卷")
+    @Logging(menu = "导出成绩校验标记卷", type = LogType.EXPORT)
     @RequestMapping(value = "export-flagged", method = RequestMethod.POST)
     @ResponseBody
     public void exportFile(HttpServletResponse response) {
@@ -115,7 +118,8 @@ public class ScoreVerifyController extends BaseApiController {
         }
     }
 
-    @ApiOperation(value = "导出标全部")
+    @ApiOperation(value = "导出成绩校验全部")
+    @Logging(menu = "导出成绩校验全部", type = LogType.EXPORT)
     @RequestMapping(value = "export-all", method = RequestMethod.POST)
     @ResponseBody
     public void exportAllFile(HttpServletResponse response) {

+ 2 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/UserController.java

@@ -381,7 +381,7 @@ public class UserController extends BaseApiController {
     }
 
     @ApiOperation(value = "按考试导出用户")
-    @Logging(menu = "导出用户", type = LogType.EXPORT)
+    @Logging(menu = "按考试导出用户", type = LogType.EXPORT)
     @RequestMapping(value = "/exportExam", method = RequestMethod.POST)
     public void exportExam(UserSearchQuery query, HttpServletRequest request, HttpServletResponse response) {
         try {
@@ -474,7 +474,7 @@ public class UserController extends BaseApiController {
     }
 
     @ApiOperation(value = "按考试导出科目分表用户")
-    @Logging(menu = "导出用户", type = LogType.EXPORT)
+    @Logging(menu = "按科目导出用户", type = LogType.EXPORT)
     @RequestMapping(value = "/exportSubject", method = RequestMethod.POST)
     public void exportSubject(UserSearchQuery query, HttpServletRequest request, HttpServletResponse response) {
         int examId = getSessionExamId(request);