Преглед изворни кода

Merge remote-tracking branch 'origin/dev_v3.2.5' into dev_v3.2.5

wangliang пре 2 година
родитељ
комит
c80f5dd4b5

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ConditionMapper.java

@@ -32,4 +32,6 @@ public interface ConditionMapper {
     List<BasicCourse> listCourseForScore(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("basicCourses") List<BasicCourse> basicCourses, @Param("dpr") DataPermissionRule dpr);
 
     List<BasicClazz> listClazz(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
+
+    List<PrintPlanBrief> listPrintPlanForClient(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("examDetailStatus") String[] examDetailStatus);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ConditionService.java

@@ -23,7 +23,7 @@ public interface ConditionService {
 
     List<String> listPaperNumber(Long semesterId, Long examId, String courseCode, List<String> printPlanId);
 
-    List<PrintPlanBrief> listPrintPlan(Long semesterId, Long examId);
+    List<PrintPlanBrief> listPrintPlan(Long semesterId, Long examId, String source);
 
     List<BasicClazz> listClazz(Long semesterId, Long examId, String courseCode);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java

@@ -116,5 +116,5 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
 
     IPage<SyncExamTaskDto> listSyncExamTask(Long semesterId, Long examId, Long orgId, SyncCardTypeEnum cardType, ExamTaskSyncStatusEnum syncStatus, String courseCode, String paperNumber, Long startTime, Long endTime, Integer pageNumber, Integer pageSize);
 
-    String checkSyncMode(SyncDataParam syncDataParam);
+    void checkSyncMode(SyncDataParam syncDataParam);
 }

+ 15 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java

@@ -2,6 +2,8 @@ package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
+import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
+import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.mapper.ConditionMapper;
 import com.qmth.distributed.print.business.service.BasicExamService;
 import com.qmth.distributed.print.business.service.ConditionService;
@@ -54,9 +56,7 @@ public class ConditionServiceImpl implements ConditionService {
     @Override
     public List<BasicExam> listExam(Long semesterId, Boolean enable) {
         QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
-        if (semesterId != null) {
-            queryWrapper.lambda().eq(BasicExam::getSemesterId, semesterId);
-        }
+        queryWrapper.lambda().eq(BasicExam::getSemesterId, semesterId);
         if (enable != null) {
             queryWrapper.lambda().eq(BasicExam::getEnable, enable);
         }
@@ -122,20 +122,25 @@ public class ConditionServiceImpl implements ConditionService {
     }
 
     @Override
-    public List<PrintPlanBrief> listPrintPlan(Long semesterId, Long examId) {
+    public List<PrintPlanBrief> listPrintPlan(Long semesterId, Long examId, String source) {
         Long privilegeId = ServletUtil.getCurrentPrivilegeId();
         DataPermissionRule dpr = new DataPermissionRule();
         // 未找到权限菜单,默认为本人权限
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
-        // 如果byAssignUser为true时,不能通过层级关系查询
-        if (privilegeId == null) {
-            dpr.setRequestUserId(sysUser.getId());
-            dpr.setOrgIdSet(null);
+        if ("client".equals(source)) {
+            String[] examDetailStatus = new String[]{ExamDetailStatusEnum.NEW.name(), PrintPlanStatusEnum.READY.name()};
+            return conditionMapper.listPrintPlanForClient(semesterId, examId, examDetailStatus);
         } else {
-            dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
+            // 如果byAssignUser为true时,不能通过层级关系查询
+            if (privilegeId == null) {
+                dpr.setRequestUserId(sysUser.getId());
+                dpr.setOrgIdSet(null);
+            } else {
+                dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
+            }
+            return conditionMapper.listPrintPlan(semesterId, examId, dpr);
         }
-        return conditionMapper.listPrintPlan(semesterId, examId, dpr);
     }
 
     @Override

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -122,6 +122,12 @@ public class DataSyncServiceImpl implements DataSyncService {
             status = TaskStatusEnum.RUNNING;
             tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), null, status, null, null);
 
+            // 按学院code进行分组,并按学院进行循环同步
+            Map<String, List<SyncExamTaskDto>> byCollegeCodeMap = params.stream().collect(Collectors.groupingBy(SyncExamTaskDto::getCollegeCode));
+            for (Map.Entry<String, List<SyncExamTaskDto>> entry : byCollegeCodeMap.entrySet()) {
+
+            }
+
             //按课程做同步
             for (SyncExamTaskDto param : params) {
                 // 前置方法已经校验过各课程下是否有学院代码

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

@@ -448,7 +448,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
             throw ExceptionResultEnum.ERROR.exception("考试时间必填");
         }
 
-        // 校验同步数据的所属学院(机构)是否唯一
+        // 校验同步数据的所属学院(机构)是否为空
         checkSyncMode(syncDataParam);
 
         Long objectId = SystemConstant.getDbUuid();
@@ -518,23 +518,16 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     }
 
     @Override
-    public String checkSyncMode(SyncDataParam syncDataParam) {
+    public void checkSyncMode(SyncDataParam syncDataParam) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         if (cloudMarkingTaskUtils.isCollegeMode(schoolId)) {
             // 查询科目所属学院是否一致
-            Set<String> collegeSet = new HashSet<>();
             for (SyncExamTaskDto param : syncDataParam.getList()) {
-                if (param.getCollegeId() == null) {
+                if (param.getCollegeCode() == null) {
                     throw ExceptionResultEnum.ERROR.exception(String.format("未找到课程[%s(%s)]所属学院", param.getCourseName(), param.getCourseCode()));
                 }
-                collegeSet.add(param.getCollegeId());
             }
-            if (collegeSet.size() != 1) {
-                throw ExceptionResultEnum.ERROR.exception("所选课程存在不同的学院,无法一起推送");
-            }
-            return syncDataParam.getList().get(0).getCollegeCode();
         }
-        return null;
     }
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -874,7 +874,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         examDetailService.deleteExaminationData(printPlanId, null);
 
         // 卷袋号生成规则
-        SerialNumberParams serialNumberParams = new SerialNumberParams("packageCode-" + schoolId + "-" + examPrintPlan.getExamId(), "1", 6);
+        SerialNumberParams serialNumberParams = new SerialNumberParams("packageCode-" + schoolId, "1", 6);
         String key = serialNumberParams.getModel() + serialNumberParams.getPrefix();
         RedisAtomicLong counter = new RedisAtomicLong(key, Objects.requireNonNull(redisTemplate.getConnectionFactory()));
         Long value = counter.get();

+ 24 - 0
distributed-print-business/src/main/resources/mapper/ConditionMapper.xml

@@ -279,4 +279,28 @@
             </if>
         </where>
     </select>
+    <select id="listPrintPlanForClient"
+            resultType="com.qmth.distributed.print.business.bean.result.PrintPlanBrief">
+        SELECT
+            epp.id, epp.name, epp.status
+        FROM
+            exam_print_plan epp
+                JOIN
+            exam_detail ed ON epp.id = ed.print_plan_id
+                JOIN
+            basic_exam be ON epp.exam_id = be.id
+        <where>
+            and be.enable = true
+            <if test="semesterId != null">
+                and be.semester_id = #{semesterId}
+            </if>
+            <if test="examId != null">
+                and be.id = #{examId}
+            </if>
+            AND ed.status not IN
+            <foreach collection="examDetailStatus" item="item" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </where>
+    </select>
 </mapper>

+ 6 - 5
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -219,7 +219,7 @@
                 LEFT JOIN
             basic_exam be ON a.exam_id = be.id
         <where>
-            and a.school_id = #{schoolId}
+            and a.school_id = #{schoolId} and be.enable = true
             AND a.status != 'END'
             AND b.status not IN
             <foreach collection="examDetailStatus" item="item" index="index" open="(" separator="," close=")">
@@ -270,6 +270,7 @@
                 AND (b.print_house_id = #{orgId} or b.print_house_id is null)
             </if>
         </where>
+        order by a.id desc
     </select>
     <select id="clientTaskTotalData" resultType="com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto">
         SELECT
@@ -322,7 +323,7 @@
             LEFT JOIN
         basic_exam be ON a.exam_id = be.id
         <where>
-            and a.school_id = #{schoolId}
+            and a.school_id = #{schoolId} and be.enable = true
             AND a.status != 'END'
             AND b.status not IN
             <foreach collection="examDetailStatus" item="item" index="index" open="(" separator="," close=")">
@@ -426,9 +427,9 @@
             LEFT JOIN
             sys_user d ON a.create_id = d.id
                 LEFT JOIN
-            basic_exam be ON a.exam_id = be.exam_id
+            basic_exam be ON a.exam_id = be.id
         <where>
-            and a.school_id = #{schoolId}
+            and a.school_id = #{schoolId} and be.enable = true
             AND a.status != 'END'
             AND b.status not IN
             <foreach collection="examDetailStatus" item="item" index="index" open="(" separator="," close=")">
@@ -505,7 +506,7 @@
             LEFT JOIN
         basic_exam be ON a.exam_id = be.id
         <where>
-            and a.school_id = #{schoolId}
+            and a.school_id = #{schoolId} and be.enable = true
             AND a.status != 'END'
             AND b.status not IN
             <foreach collection="examDetailStatus" item="item" index="index" open="(" separator="," close=")">

+ 1 - 1
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -690,7 +690,7 @@
         LEFT JOIN
             sys_user g ON a.create_id = g.id
         <where>
-            and a.school_id = #{schoolId}
+            and a.school_id = #{schoolId} and be.enable = true
             and a.status = #{printPlanStatus}
             AND (d.status = 'SUBMIT' and (ffa.status = 'FINISH' or ffa.status is null))
             and LOCATE('PAPER', a.print_content) > 0

+ 3 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ConditionController.java

@@ -64,8 +64,9 @@ public class ConditionController {
     @RequestMapping(value = "/list_print_plan", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = BasicCollegeResult.class)})
     public Result listPrintPlan(@ApiParam(value = "学期ID") @RequestParam(required = false) Long semesterId,
-                                @ApiParam(value = "考试ID") @RequestParam(required = false) Long examId) {
-        return ResultUtil.ok(conditionService.listPrintPlan(semesterId, examId));
+                                @ApiParam(value = "考试ID") @RequestParam(required = false) Long examId,
+                                @ApiParam(value = "source") @RequestParam(required = false) String source) {
+        return ResultUtil.ok(conditionService.listPrintPlan(semesterId, examId, source));
     }
 
     @ApiOperation(value = "试卷编号")

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

@@ -38,7 +38,6 @@ public class ExamPrintPlanSyncController {
 
     /**
      * 查询需要同步的命题任务
-     *
      */
     @ApiOperation(value = "印刷计划推送管理-推送数据查询")
     @RequestMapping(value = "/list_sync", method = RequestMethod.POST)
@@ -57,7 +56,7 @@ public class ExamPrintPlanSyncController {
         if (semesterId == null) {
             throw ExceptionResultEnum.ERROR.exception("请选择学期");
         }
-        return ResultUtil.ok(examPrintPlanService.listSyncExamTask(semesterId, examId, orgId, cardType,syncStatus, courseCode, paperNumber, startTime, endTime, pageNumber, pageSize));
+        return ResultUtil.ok(examPrintPlanService.listSyncExamTask(semesterId, examId, orgId, cardType, syncStatus, courseCode, paperNumber, startTime, endTime, pageNumber, pageSize));
     }
 
     /**
@@ -72,8 +71,8 @@ public class ExamPrintPlanSyncController {
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.PUSH)
     public Result checkSyncMode(@RequestBody SyncDataParam syncDataParam) {
-        String orgCode = examPrintPlanService.checkSyncMode(syncDataParam);
-        return ResultUtil.ok(orgCode,"");
+        examPrintPlanService.checkSyncMode(syncDataParam);
+        return ResultUtil.ok(true, "");
     }
 
     /**