xiaofei 1 år sedan
förälder
incheckning
cd272e736b

+ 1 - 0
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -1943,6 +1943,7 @@ CREATE TABLE  IF NOT EXISTS `scan_log` (
       `type` VARCHAR(10) NOT NULL COMMENT '错误文件类型,崩溃异常文件:COLLAPSE,正常文件:NORMAL',
       `md5` VARCHAR(45) NOT NULL COMMENT '扫描端日志',
       `path` VARCHAR(45) NULL COMMENT '文件存储路径',
+      `login_name` VARCHAR(45) NULL COMMENT '扫描账号',
       `upload_time` BIGINT(20) NULL COMMENT '上传时间',
     PRIMARY KEY (`school_code`, `device_code`, `file_name`) USING BTREE
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

+ 4 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanLogController.java

@@ -47,8 +47,9 @@ public class ScanLogController {
                          @ApiParam(value = "设备编号", required = true) @RequestParam String deviceCode,
                          @ApiParam(value = "文件", required = true) @RequestParam MultipartFile file,
                          @ApiParam(value = "md5", required = true) @RequestParam String md5,
+                         @ApiParam(value = "扫描账号") @RequestParam(required = false) String loginName,
                          @ApiParam(value = "错误文件类型,崩溃异常文件:COLLAPSE,正常文件:NORMAL", required = true) @RequestParam String type) {
-        return ResultUtil.ok(scanLogService.uploadLogFile(schoolCode, deviceCode, file, md5, type));
+        return ResultUtil.ok(scanLogService.uploadLogFile(schoolCode, deviceCode, file, md5, loginName, type));
     }
 
     /**
@@ -58,8 +59,9 @@ public class ScanLogController {
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     @Aac(auth = false)
     public Result listGroupQuestions(@ApiParam(value = "学校代码", required = true) @RequestParam String schoolCode,
+                                     @ApiParam(value = "扫描账号") @RequestParam(required = false) String loginName,
                                      @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                      @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(scanLogService.listScanLog(schoolCode, pageNumber, pageSize));
+        return ResultUtil.ok(scanLogService.listScanLog(schoolCode, loginName, pageNumber, pageSize));
     }
 }

+ 11 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/ScanLog.java

@@ -44,6 +44,9 @@ public class ScanLog implements Serializable {
     @ApiModelProperty(value = "扫描端日志")
     private String md5;
 
+    @ApiModelProperty(value = "扫描账号")
+    private String loginName;
+
     @ApiModelProperty(value = "地址")
     @TableField(value = "path", updateStrategy = FieldStrategy.IGNORED)
     private String path;
@@ -104,6 +107,14 @@ public class ScanLog implements Serializable {
         this.md5 = md5;
     }
 
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
     public String getPath() {
         return path;
     }

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -99,7 +99,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     UpdateTimeVo omrEdit(Long userId, OmrEditDomain domain);
 
-    long countStudentCountByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType);
+    long countByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType);
 
     AbsentManualUpdateVo absentManualUpdate(Long examId, String coursePaperId, String studentCode, ScanStatus status);
 

+ 2 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanLogService.java

@@ -5,9 +5,6 @@ import com.qmth.teachcloud.mark.entity.ScanLog;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-
 /**
  * <p>
  * 服务类
@@ -18,7 +15,7 @@ import javax.validation.constraints.Min;
  */
 public interface ScanLogService extends IService<ScanLog> {
 
-    boolean uploadLogFile(String schoolCode, String deviceCode, MultipartFile file, String md5, String type);
+    boolean uploadLogFile(String schoolCode, String deviceCode, MultipartFile file, String md5, String loginName, String type);
 
-    IPage<ScanLog> listScanLog(String schoolCode, Integer pageNumber, Integer pageSize);
+    IPage<ScanLog> listScanLog(String schoolCode, String loginName, Integer pageNumber, Integer pageSize);
 }

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -265,7 +265,7 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
 
     @Override
     public void updateStudentCountByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType) {
-        long count = markStudentService.countStudentCountByExamIdAndPaperNumber(examId, paperNumber, paperType);
+        long count = markStudentService.countByExamIdAndPaperNumber(examId, paperNumber, paperType);
         UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(MarkPaper::getStudentCount, count)
                 .eq(MarkPaper::getExamId, examId)

+ 21 - 17
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -148,7 +148,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public void updateSubjectiveStatusAndScore(Long studentId, SubjectiveStatus status, Double score,
-            String scoreList) {
+                                               String scoreList) {
         UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(MarkStudent::getSubjectiveStatus, status).set(MarkStudent::getSubjectiveScore, score)
                 .set(MarkStudent::getSubjectiveScoreList, scoreList).eq(MarkStudent::getId, studentId);
@@ -157,7 +157,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, double score,
-            String scoreList) {
+                                               String scoreList) {
         UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(MarkStudent::getSubjectiveStatus, status).set(MarkStudent::getSubjectiveScore, score)
                 .set(MarkStudent::getSubjectiveScoreList, scoreList).eq(MarkStudent::getExamId, examId)
@@ -190,9 +190,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college,
-            String className, String teacher, Integer filter, Boolean absent, Boolean breach, Double startScore,
-            Double endScore, Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode,
-            String orderType, String orderField, Integer pageNumber, Integer pageSize) {
+                                                         String className, String teacher, Integer filter, Boolean absent, Boolean breach, Double startScore,
+                                                         Double endScore, Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode,
+                                                         String orderType, String orderField, Integer pageNumber, Integer pageSize) {
         if (startScore != null && endScore == null) {
             throw ExceptionResultEnum.ERROR.exception("请输入结束分数值");
         }
@@ -200,7 +200,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
         Double objectiveScoreLt = objectiveScoreRateLt == null ? null
                 : Double.parseDouble(new DecimalFormat("####.##")
-                        .format(markPaper.getObjectiveScore() * objectiveScoreRateLt / 100));
+                .format(markPaper.getObjectiveScore() * objectiveScoreRateLt / 100));
         IPage<StudentScoreDetailDto> studentScoreDetailDtoIPage = this.baseMapper.pageStudentScore(page, examId,
                 paperNumber, college, className, teacher, filter, absent, breach, startScore, endScore, subScore,
                 objectiveScoreLt, studentName, studentCode, orderType, orderField);
@@ -227,7 +227,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     private int getCount(Long examId, ScanStatus status, String courseCode, String coursePaperId,
-            MarkPaperStatus markPaperStatus, DataPermissionRule dpr) {
+                         MarkPaperStatus markPaperStatus, DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
         markStudent.setCourseCode(courseCode);
@@ -238,7 +238,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     private int getOmrAbsentCount(Long examId, Boolean checked, String courseCode, String coursePaperId,
-            MarkPaperStatus status, DataPermissionRule dpr) {
+                                  MarkPaperStatus status, DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
         markStudent.setCourseCode(courseCode);
@@ -250,7 +250,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     private int getIncompleteCount(Long examId, String courseCode, String coursePaperId, MarkPaperStatus status,
-            DataPermissionRule dpr) {
+                                   DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
         markStudent.setCourseCode(courseCode);
@@ -387,7 +387,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public MarkStudent findByExamIdAndCoursePaperIdAndStudentCode(Long examId, String coursePaperId,
-            String studentCode) {
+                                                                  String studentCode) {
         QueryWrapper<MarkStudent> wrapper = new QueryWrapper<>();
         LambdaQueryWrapper<MarkStudent> lw = wrapper.lambda();
         lw.eq(MarkStudent::getExamId, examId);
@@ -474,7 +474,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public int countUploadedByExamIdAndPaperNumber(Long examId, String paperNumber) {
         QueryWrapper<MarkStudent> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(MarkStudent::getExamId, examId).eq(MarkStudent::getPaperNumber, paperNumber)
-                .eq(MarkStudent::getUpload, true).eq(MarkStudent::getAbsent, false).eq(MarkStudent::getBreach, false);
+                .eq(MarkStudent::getUpload, true)
+                .eq(MarkStudent::getScanStatus, ScanStatus.SCANNED)
+                .eq(MarkStudent::getAbsent, false)
+                .eq(MarkStudent::getBreach, false)
+                .eq(MarkStudent::getOmrAbsent, false);
         return this.count(queryWrapper);
     }
 
@@ -551,7 +555,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Override
     @Transactional
     public void updateStudentAndPaper(@NotNull SysUser user, @NotNull Long id,
-            @NotNull List<ScanStudentPaper> studentPaperList) {
+                                      @NotNull List<ScanStudentPaper> studentPaperList) {
         if (CollectionUtils.isNotEmpty(studentPaperList)) {
             for (ScanStudentPaper studentPaper : studentPaperList) {
                 studentPaper.setStudentId(id);
@@ -738,7 +742,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public long countStudentCountByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType) {
+    public long countByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType) {
         QueryWrapper<MarkStudent> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(MarkStudent::getExamId, examId).eq(MarkStudent::getPaperNumber, paperNumber)
                 .eq(MarkStudent::getPaperType, paperType);
@@ -748,7 +752,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Transactional
     @Override
     public AbsentManualUpdateVo absentManualUpdate(Long examId, String coursePaperId, String studentCode,
-            ScanStatus status) {
+                                                   ScanStatus status) {
         MarkStudent student = findByExamIdAndCoursePaperIdAndStudentCode(examId, coursePaperId, studentCode);
         if (student == null) {
             throw new ParameterException("考生未找到");
@@ -785,7 +789,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public List<Long> findIdByExamIdAndPaperNumberAndSubjectiveStatus(Long examId, String paperNumber,
-            SubjectiveStatus unmark, SubjectiveStatus marked) {
+                                                                      SubjectiveStatus unmark, SubjectiveStatus marked) {
         return this.baseMapper.findIdByExamIdAndPaperNumberAndSubjectiveStatus(examId, paperNumber, unmark.name(),
                 marked.name());
     }
@@ -1172,7 +1176,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public int getAssignedCount(Long examId, Boolean checked, String courseCode, String coursePaperId,
-            MarkPaperStatus status, DataPermissionRule dpr) {
+                                MarkPaperStatus status, DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
         markStudent.setCourseCode(courseCode);
@@ -1193,7 +1197,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public List<MarkStudent> listScanCollegeByExamIdAndCourseCodeAndCoursePaperId(Long examId, String courseCode,
-            String coursePaperId, String status, DataPermissionRule dpr) {
+                                                                                  String coursePaperId, String status, DataPermissionRule dpr) {
         return this.baseMapper.listScanCollegeByExamIdAndCourseCodeAndCoursePaperId(examId, courseCode, coursePaperId,
                 status, dpr);
     }

+ 11 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanLogServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,7 +11,7 @@ import com.qmth.teachcloud.mark.entity.ScanLog;
 import com.qmth.teachcloud.mark.mapper.ScanLogMapper;
 import com.qmth.teachcloud.mark.service.MarkFileService;
 import com.qmth.teachcloud.mark.service.ScanLogService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -34,7 +35,7 @@ public class ScanLogServiceImpl extends MppServiceImpl<ScanLogMapper, ScanLog> i
     private FileUploadService fileUploadService;
 
     @Override
-    public boolean uploadLogFile(String schoolCode, String deviceCode, MultipartFile file, String md5, String type) {
+    public boolean uploadLogFile(String schoolCode, String deviceCode, MultipartFile file, String md5, String loginName, String type) {
         try {
             String fileName = file.getOriginalFilename();
             ScanLog scanLog = this.selectByMultiId(new ScanLog(schoolCode, deviceCode, fileName, type));
@@ -45,6 +46,7 @@ public class ScanLogServiceImpl extends MppServiceImpl<ScanLogMapper, ScanLog> i
                 scanLog.setFileName(fileName);
                 scanLog.setType(type);
             }
+            scanLog.setLoginName(loginName);
             scanLog.setMd5(FileUtil.md5File(file.getInputStream()));
             String path = markFileService.uploadScanLog(file.getInputStream(), md5, schoolCode, deviceCode, fileName);
             scanLog.setPath(path);
@@ -56,10 +58,15 @@ public class ScanLogServiceImpl extends MppServiceImpl<ScanLogMapper, ScanLog> i
     }
 
     @Override
-    public IPage<ScanLog> listScanLog(String schoolCode, Integer pageNumber, Integer pageSize) {
+    public IPage<ScanLog> listScanLog(String schoolCode, String loginName, Integer pageNumber, Integer pageSize) {
         Page<ScanLog> page = new Page<>(pageNumber, pageSize);
         QueryWrapper<ScanLog> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ScanLog::getSchoolCode, schoolCode).orderByDesc(ScanLog::getUploadTime);
+        LambdaQueryWrapper<ScanLog> lambdaQueryWrapper = queryWrapper.lambda();
+        lambdaQueryWrapper.eq(ScanLog::getSchoolCode, schoolCode);
+        if (StringUtils.isNotBlank(loginName)) {
+            lambdaQueryWrapper.likeRight(ScanLog::getLoginName, loginName);
+        }
+        lambdaQueryWrapper.orderByDesc(ScanLog::getUploadTime);
         Page<ScanLog> scanLogPage = this.page(page, queryWrapper);
         for (ScanLog record : scanLogPage.getRecords()) {
             record.setPathUrl(fileUploadService.filePreview(record.getPath()));