Procházet zdrojové kódy

3.2.3 绑定评卷员

xiaofei před 2 roky
rodič
revize
4018c74963

+ 30 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -19,15 +19,15 @@ import com.qmth.teachcloud.common.bean.dto.stmms.PicConfig;
 import com.qmth.teachcloud.common.bean.dto.stmms.QuestionBaseDTO;
 import com.qmth.teachcloud.common.bean.dto.stmms.QuestionDTO;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.BasicAttachment;
-import com.qmth.teachcloud.common.entity.BasicCollege;
-import com.qmth.teachcloud.common.entity.SysOrg;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.*;
-import com.qmth.teachcloud.common.service.BasicAttachmentService;
-import com.qmth.teachcloud.common.service.SysOrgService;
-import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.entity.*;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.SyncFileTypeEnum;
+import com.qmth.teachcloud.common.enums.TaskResultEnum;
+import com.qmth.teachcloud.common.enums.TaskStatusEnum;
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.sync.CloudMarkingTaskUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -79,6 +79,12 @@ public class DataSyncServiceImpl implements DataSyncService {
     @Resource
     private BasicAttachmentService basicAttachmentService;
 
+    @Resource
+    private SysOrgService sysOrgService;
+
+    @Resource
+    private SysUserService sysUserService;
+
     @Resource
     private ExamPaperGroupService examPaperGroupService;
 
@@ -286,12 +292,19 @@ public class DataSyncServiceImpl implements DataSyncService {
             for (ExamPaperGroup examPaperGroup : examPaperGroups) {
                 List<ExamPaperGroupMarker> examPaperGroupMarkers = examPaperGroupMarkerService.listByGroupId(examPaperGroup.getId());
                 for (ExamPaperGroupMarker examPaperGroupMarker : examPaperGroupMarkers) {
+                    // 推送用户
+                    String orgCode = cloudMarkingTaskUtils.isCollegeMode(schoolId) ? sysOrgService.findCollegeByCourseCode(examPaperStructure.getCourseCode()).getCode() : null;
+                    SysUser markerUser = sysUserService.getById(examPaperGroupMarker.getMarkerId());
+                    SysConfigService sysConfigService = SpringContextHolder.getBean(SysConfigService.class);
+                    SysConfig sysConfig = sysConfigService.getByKey("sys.user.initPassword");
+                    cloudMarkingTaskUtils.syncUser(markerUser.getLoginName(), markerUser.getRealName(), sysConfig.getConfigValue(), SpecialPrivilegeEnum.MARKER.getValue(), markerUser.getEnable(), schoolId, orgCode);
+                    // 绑定评卷员
                     cloudMarkingTaskUtils.saveMarker(schoolId, examId, subjectCode, examPaperGroup.getGroupNumber(), examPaperGroupMarker.getLoginName());
                 }
             }
             structureStatus = ExamPaperStructureStatusEnum.FINISH;
             result = TaskResultEnum.SUCCESS;
-        } catch (ApiException e) {
+        } catch (Exception e) {
             result = TaskResultEnum.ERROR;
             errorMessage = errorMessage + e.getMessage();
         } finally {
@@ -463,11 +476,18 @@ public class DataSyncServiceImpl implements DataSyncService {
             if (StringUtils.isNotBlank(markLeader)) {
                 List<JSONObject> objectiveJsons = JSONObject.parseArray(markLeader, JSONObject.class);
                 for (JSONObject object : objectiveJsons) {
+                    // 推送用户
+                    String orgCode = cloudMarkingTaskUtils.isCollegeMode(schoolId) ? sysOrgService.findCollegeByCourseCode(examPaperStructure.getCourseCode()).getCode() : null;
+                    SysUser markerUser = sysUserService.getById(object.getLong("id"));
+                    SysConfigService sysConfigService = SpringContextHolder.getBean(SysConfigService.class);
+                    SysConfig sysConfig = sysConfigService.getByKey("sys.user.initPassword");
+                    cloudMarkingTaskUtils.syncUser(markerUser.getLoginName(), markerUser.getRealName(), sysConfig.getConfigValue(), SpecialPrivilegeEnum.MARKER.getValue(), markerUser.getEnable(), schoolId, orgCode);
+
                     cloudMarkingTaskUtils.saveMarkLeader(schoolId, subjectCode, object.getString("loginName"));
                 }
             }
             result = TaskResultEnum.SUCCESS;
-        } catch (ApiException e) {
+        } catch (Exception e) {
             result = TaskResultEnum.ERROR;
             errorMessage = e.getMessage();
         } finally {

+ 2 - 2
distributed-print-business/src/main/resources/db/3.2.3更新脚本-增量.sql

@@ -31,8 +31,8 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 UPDATE `sys_privilege` SET `related` = '395,435,792,793' WHERE (`id` = '394');
 UPDATE `sys_privilege` SET `related` = '395,435,792,793' WHERE (`id` = '397');
 
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('767', '绑定评卷员', 'Bind', 'LINK', '488', '9', 'AUTH', '768', '1', '0', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('768', '绑定评卷员', '/api/admin/exam/structure/bind_marker', 'URL', '488', '10', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('854', '绑定评卷员', 'Bind', 'LINK', '488', '9', 'AUTH', '855', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('855', '绑定评卷员', '/api/admin/exam/structure/bind_marker', 'URL', '488', '10', 'AUTH', '1', '1', '1');
 
 
 

+ 0 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPaperStructureController.java

@@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.marking.GroupInfo;
 import com.qmth.distributed.print.business.bean.result.EditResult;
-import com.qmth.distributed.print.business.entity.ExamPaperGroup;
-import com.qmth.distributed.print.business.entity.ExamPaperGroupMarker;
 import com.qmth.distributed.print.business.entity.ExamPaperStructure;
-import com.qmth.distributed.print.business.service.ExamPaperGroupMarkerService;
 import com.qmth.distributed.print.business.service.ExamPaperGroupService;
 import com.qmth.distributed.print.business.service.ExamPaperStructureService;
 import com.qmth.distributed.print.business.templete.execute.AsyncCloudMarkingTaskService;

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -170,5 +170,17 @@ public interface SysOrgService extends IService<SysOrg> {
      */
     void executeImportSysOrgLogic(MultipartFile file) throws Exception;
 
+    /**
+     * 查找顶级机构
+     * @param schoolId
+     * @return
+     */
     SysOrg findRootOrg(Long schoolId);
+
+    /**
+     * 根据课程代码,查询所属学院
+     * @param courseCode
+     * @return
+     */
+    SysOrg findCollegeByCourseCode(String courseCode);
 }

+ 24 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -11,6 +11,7 @@ import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.bean.result.RoleResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysRole;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -20,10 +21,7 @@ import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.mapper.SysOrgMapper;
-import com.qmth.teachcloud.common.service.CommonCacheService;
-import com.qmth.teachcloud.common.service.SysOrgService;
-import com.qmth.teachcloud.common.service.SysRoleService;
-import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -64,6 +62,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Resource
     private CommonCacheService commonCacheService;
 
+    @Resource
+    private BasicCourseService basicCourseService;
+
     @Override
     public List<OrgDto> listOrgTree(SpecialPrivilegeEnum specialPrivilegeEnum, boolean withoutPrintingRoom, String courseCode) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -568,6 +569,25 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return this.getOne(queryWrapper);
     }
 
+    @Override
+    public SysOrg findCollegeByCourseCode(String courseCode) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        // 顶级机构
+        SysOrg rootOrg = this.findRootOrg(schoolId);
+
+        BasicCourse basicCourse = basicCourseService.findByCourseCode(courseCode, schoolId);
+
+        List<SysOrg> sysOrgList = this.findByConnectByParentId(Long.valueOf(basicCourse.getTeachingRoomId()), false, false);
+        if (sysOrgList.isEmpty()) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("未找到课程[%s(%s)]所属机构及上级机构", basicCourse.getName(), basicCourse.getCode()));
+        }
+        SysOrg collegeOrg = sysOrgList.stream().filter(m -> m.getParentId().equals(rootOrg.getId())).findFirst().orElseGet(null);
+        if (collegeOrg == null) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("未找到课程[%s(%s)]所属学院", basicCourse.getName(), basicCourse.getCode()));
+        }
+        return collegeOrg;
+    }
+
     /**
      * 根据子机构id深度优先搜索其父机构们
      *