Browse Source

3.3.3 update

xiaofei 1 năm trước cách đây
mục cha
commit
2a3c33ce33

+ 8 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskAssignPaperTypeServiceImpl.java

@@ -14,7 +14,7 @@ import javax.annotation.Resource;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author xf
@@ -32,8 +32,14 @@ public class ExamTaskAssignPaperTypeServiceImpl extends MppServiceImpl<ExamTaskA
     @Override
     public ExamTaskAssignPaperType extractPaperType(TBTaskPdf tbTaskPdf, ExamDetailCourse examDetailCourse) {
         ExamDetail examDetail = examDetailService.getById(tbTaskPdf.getId());
+        if (examDetail.getExamStartTime() == null) {
+            examDetail.setExamStartTime(-1l);
+        }
+        if (examDetail.getExamEndTime() == null) {
+            examDetail.setExamEndTime(-1l);
+        }
         ExamTaskAssignPaperType examTaskAssignPaperType = this.selectByMultiId(new ExamTaskAssignPaperType(tbTaskPdf.getExamId(), examDetailCourse.getPaperNumber(), examDetail.getExamStartTime(), examDetail.getExamEndTime()));
-        if(examTaskAssignPaperType == null){
+        if (examTaskAssignPaperType == null) {
             String paperType = createPdfNewUtil.getPaperType(examDetail.getPrintPlanId(), examDetail.getExamId(), examDetailCourse.getPaperNumber());
             examTaskAssignPaperType = new ExamTaskAssignPaperType(tbTaskPdf.getExamId(), examDetailCourse.getPaperNumber(), examDetail.getExamStartTime(), examDetail.getExamEndTime(), paperType, AssignModeEnum.AUTO);
             this.saveOrUpdateByMultiId(examTaskAssignPaperType);

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1482,11 +1482,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 if (!CollectionUtils.isEmpty(errorClassIds)) {
                     // 选择学生时,不校验
                     boolean containsPrivilege = teachcloudCommonService.containsPrivilege(sysUser.getId(), "button", "SelectStudent");
-                    if (!containsPrivilege) {
+                    if (!containsPrivilege || ExamCategoryEnum.REBUILD.equals(basicExam.getCategory())) {
                         Map<String, List<String>> finalMap = new HashMap<>();
                         StringJoiner stringJoiner = new StringJoiner(",");
-                        List<BasicClazz> basicClazzList = basicClazzService.listByIds(errorClassIds);
-                        for (BasicClazz basicClazz : basicClazzList) {
+                        List<BasicTeachClazz> basicClazzList = basicTeachClazzService.listByIds(errorClassIds);
+                        for (BasicTeachClazz basicClazz : basicClazzList) {
                             String key = usedClassIdsMap.get(basicClazz.getId().toString());
                             List<String> value;
                             if (finalMap.containsKey(key)) {

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

@@ -41,9 +41,6 @@ public class ExamCardController {
     @Resource
     private ExamCardService examCardService;
 
-    @Resource
-    private BasicPrintConfigService basicPrintConfigService;
-
     //====================================通卡接口(start)===================================
 
     /**
@@ -81,7 +78,7 @@ public class ExamCardController {
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save_generic", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/修改了一条题卡数据")
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/修改操作,题卡ID:{{params.id}}、题卡标题:{{params.title}}")
     public Result save(@RequestBody GenericExamCardParams params) throws Exception {
         Map<String, String> map = examCardService.saveGeneric(params);
         return ResultUtil.ok(map);
@@ -95,6 +92,7 @@ public class ExamCardController {
      */
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/delete_generic", method = RequestMethod.POST)
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除操作,题卡ID:{{id}}")
     public Result save(@RequestParam(value = "id") Long id) {
         return ResultUtil.ok(examCardService.deleteGeneric(id));
     }

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java

@@ -199,7 +199,7 @@ public class ExamTaskApplyController {
      */
     @ApiOperation(value = "入库申请-新建任务-保存")
     @RequestMapping(value = "/submit_task_apply", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.ADD)
+    @OperationLogDetail(operationType = OperationTypeEnum.ADD, detail = "入库申请新增了一条命题数据")
     public Result submitTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) throws IOException {
         Map<String, Object> map = examTaskService.submitTaskApply(examTaskApplyTemp);
         ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);

+ 4 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -115,7 +115,7 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "命题任务管理-更改/指派命题老师")
     @RequestMapping(value = "/assign_user", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE)
+    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "更改/指派命题老师操作,命题任务ID:{{examTask.id}}、命题老师ID:{{examTask.userId}}")
     public Result assignUser(@RequestBody ExamTask examTask) {
         examTask = examTaskService.assignUser(examTask);
         if (Objects.nonNull(examTask.getFlowId())) {
@@ -129,7 +129,7 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "命题任务管理-启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE)
+    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "启用/禁用命题任务操作,命题任务ID:{{examTask.id}}、启用/禁用:{{examTask.enable}}")
     public Result enable(@RequestBody ExamTask examTask) {
         return ResultUtil.ok(examTaskService.enable(examTask));
     }
@@ -139,7 +139,7 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "命题任务管理-新建命题任务")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.ADD)
+    @OperationLogDetail(operationType = OperationTypeEnum.ADD, detail = "新建命题任务操作,命题任务ID:{{examTask.id}}、课程代码:{{examTask.courseCode}}")
     public Result save(@RequestBody ExamTask examTask) {
         examTaskService.saveExamTaskNew(examTask);
         if (Objects.nonNull(examTask.getFlowId())) {
@@ -153,7 +153,7 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "命题任务管理-删除")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.DELETE)
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除命题任务操作,命题任务ID:{{id}}")
     public Result delete(@RequestParam Long id) {
         examTaskService.delete(id);
         return ResultUtil.ok(true);

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java

@@ -117,7 +117,7 @@ public class SysUserController {
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/修改操作,用户ID:{{userSaveParams.id}},姓名:{{userSaveParams.name}},用户名/工号:{{userSaveParams.loginName}}")
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/修改操作,用户ID:{{userSaveParams.id}},姓名:{{userSaveParams.realName}},用户名/工号:{{userSaveParams.loginName}}")
     public Result save(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody UserSaveParams userSaveParams, BindingResult bindingResult) throws IllegalAccessException {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkGroupController.java

@@ -67,7 +67,7 @@ public class MarkGroupController extends BaseController {
      */
     @ApiOperation(value = "修改")
     @RequestMapping(value = "/update", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "修改分组操作,考试ID:{{markGroupSingleDto.examId}}、试卷编号:{{markGroupSingleDto.paperNumber}}")
+    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "修改分组操作,考试ID:{{markGroupSingleDto.examId}}、试卷编号:{{markGroupSingleDto.paperNumber}}、分组号:{{markGroupSingleDto.groupInfo.groupNumber}}")
     public Result update(@RequestBody MarkGroupSingleDto markGroupSingleDto) {
         validMarkPaperForMark(markGroupSingleDto.getExamId(), markGroupSingleDto.getPaperNumber());
         return ResultUtil.ok(markGroupService.updateGroup(markGroupSingleDto));

+ 32 - 7
teachcloud-common/src/main/java/com/qmth/teachcloud/common/aspect/LogAspect.java

@@ -13,6 +13,7 @@ import com.qmth.teachcloud.common.enums.PrivilegeEnum;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
 import com.qmth.teachcloud.common.service.BasicOperationLogService;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
+import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
@@ -223,13 +224,37 @@ public class LogAspect {
                         s = s.replaceAll("\\{\\{", "").replace("}}", "");
                         if (s.contains(".")) {
                             String[] fs = s.split("\\.");
-                            if (k.equals(fs[0])) {
-                                Field[] fields = getAllFields(v);
-                                Field field = Arrays.stream(fields).filter(f -> f.getName().equals(fs[1])).findFirst().orElse(null);
-                                if (field != null) {
-                                    // 捕捉到编辑对象的id
-                                    field.setAccessible(true);
-                                    Object obj = field.get(v);
+                            if (fs.length == 2) {
+                                if (k.equals(fs[0])) {
+                                    Field[] fields = getAllFields(v);
+                                    Field field = Arrays.stream(fields).filter(f -> f.getName().equals(fs[1])).findFirst().orElse(null);
+                                    Object obj = "";
+                                    if (field != null) {
+                                        // 捕捉到编辑对象的id
+                                        field.setAccessible(true);
+                                        obj = field.get(v);
+                                    }
+                                    detail = detail.replace("{{" + s + "}}", JSON.toJSONString(obj));
+                                }
+                            } else if (fs.length == 3) {
+                                if (k.equals(fs[0])) {
+                                    Field[] fields = getAllFields(v);
+                                    Field field = Arrays.stream(fields).filter(f -> f.getName().equals(fs[1])).findFirst().orElse(null);
+                                    Object obj = "";
+                                    if (field != null) {
+                                        // 捕捉到编辑对象的id
+                                        field.setAccessible(true);
+                                        Object obj1 = field.get(v);
+                                        if (obj1 != null) {
+                                            Field[] fields1 = getAllFields(obj1);
+                                            Field field1 = Arrays.stream(fields1).filter(f -> f.getName().equals(fs[2])).findFirst().orElse(null);
+                                            if (field1 != null) {
+                                                // 捕捉到编辑对象的id
+                                                field1.setAccessible(true);
+                                                obj = field1.get(obj1);
+                                            }
+                                        }
+                                    }
                                     detail = detail.replace("{{" + s + "}}", JSON.toJSONString(obj));
                                 }
                             }

+ 11 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicOperationLogResult.java

@@ -48,6 +48,9 @@ public class BasicOperationLogResult implements Serializable {
     @ApiModelProperty("请求参数")
     private String args;
 
+    @ApiModelProperty("请求结果")
+    private String runStatus;
+
     public Long getId() {
         return id;
     }
@@ -135,4 +138,12 @@ public class BasicOperationLogResult implements Serializable {
     public void setArgs(String args) {
         this.args = args;
     }
+
+    public String getRunStatus() {
+        return runStatus;
+    }
+
+    public void setRunStatus(String runStatus) {
+        this.runStatus = runStatus;
+    }
 }

+ 9 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/kit/TikuUtils.java

@@ -72,6 +72,9 @@ public class TikuUtils {
             map.put("pageSize", validParam(pageSize, 10, false, "分页参数"));
 
             String result = HttpUtil.post(postUrl, map, createSign(schoolId, timestamp, url), timestamp);
+            if (StringUtils.isBlank(result)) {
+                throw ExceptionResultEnum.ERROR.exception("无法连接到题库,请确认题库服务配置正确,如有疑问,请联系管理员");
+            }
             JSONObject jsonObject = JSONObject.parseObject(result);
             if (jsonObject.containsKey("content")) {
                 Page<TikuPaperInfo> page = new Page(pageNumber, pageSize);
@@ -80,7 +83,11 @@ public class TikuUtils {
                 page.setPages(jsonObject.getLong("totalPages"));
                 return page;
             } else {
-                throw ExceptionResultEnum.ERROR.exception("查询试卷列表失败");
+                if (jsonObject.containsKey("message")) {
+                    throw ExceptionResultEnum.ERROR.exception(jsonObject.getString("message"));
+                } else {
+                    throw ExceptionResultEnum.ERROR.exception("查询试卷列表失败");
+                }
             }
         } catch (IOException e) {
             log.error(SystemConstant.LOG_ERROR, e);
@@ -198,7 +205,7 @@ public class TikuUtils {
      */
     private void validUrl(String... urls) {
         if (StringUtils.isAnyBlank(urls)) {
-            throw ExceptionResultEnum.ERROR.exception("独立题库同步接口未正确配置");
+            throw ExceptionResultEnum.ERROR.exception("未开通题库模块,请联系管理员");
         }
     }
 }

+ 1 - 0
teachcloud-common/src/main/resources/mapper/BasicOperationLogMapper.xml

@@ -13,6 +13,7 @@
             bol.ip,
             bol.operation_type AS operationType,
             bol.create_time AS createTime,
+            bol.run_status runStatus,
             sp.name privilegeName,
             bol.args
         FROM

+ 6 - 6
teachcloud-task/src/main/resources/application.properties

@@ -13,14 +13,14 @@ spring.application.name=teachcloud-task
 #\u6570\u636E\u6E90\u914D\u7F6E
 db.host=localhost
 db.port=3306
-db.name=teachcloud-v3.3.1
+db.name=teachcloud-3.3.3
 db.username=root
-db.password=123456789
+db.password=12345678
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
 com.qmth.redis.port=6379
-com.qmth.redis.db=4
+com.qmth.redis.db=6
 #com.qmth.redis.password=
 
 #mysql\u914D\u7F6E
@@ -58,9 +58,9 @@ spring.activiti.history-level=audit
 #com.qmth.fss.private.config=../static/
 #com.qmth.fss.private.server=/static/
 
-com.qmth.fss.public.config=/Users/king/Downloads/file-temp
+com.qmth.fss.public.config=/Users/xiaofei/qmth/temporary/zxzk/file-temp
 com.qmth.fss.public.server=/file-temp/
-com.qmth.fss.private.config=/Users/king/Downloads/pdf-temp
+com.qmth.fss.private.config=/Users/xiaofei/qmth/temporary/zxzk/pdf-temp
 com.qmth.fss.private.server=/pdf-temp/
 
 #\u7CFB\u7EDF\u914D\u7F6E
@@ -75,7 +75,7 @@ spring.jackson.time-zone=GMT+8
 
 #\u65E5\u5FD7\u914D\u7F6E
 com.qmth.logging.root-level=info
-com.qmth.logging.file-path=/Users/king/Downloads/distributed-task.log
+com.qmth.logging.file-path=/Users/xiaofei/qmth/temporary/zxzk/log/distributed-task.log
 
 #============================================================================
 # \u914D\u7F6EJobStore