Selaa lähdekoodia

试卷审批新需求

caozixuan 3 vuotta sitten
vanhempi
commit
0e2786595e

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ApprovalForm/BasicInfo.java

@@ -10,6 +10,12 @@ import io.swagger.annotations.ApiModelProperty;
  * @Date: 2021-09-06
  */
 public class BasicInfo {
+    @ApiModelProperty(value = "学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long collegeId;
+
+    @ApiModelProperty(value = "学院名称")
+    private String collegeName;
 
     @ApiModelProperty(value = "教研室id")
     @JsonSerialize(using = ToStringSerializer.class)
@@ -33,6 +39,22 @@ public class BasicInfo {
     @ApiModelProperty(value = "拟卷老师")
     private String teacherName;
 
+    public Long getCollegeId() {
+        return collegeId;
+    }
+
+    public void setCollegeId(Long collegeId) {
+        this.collegeId = collegeId;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
     public Long getTeachingRoomId() {
         return teachingRoomId;
     }

+ 21 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ApprovalForm/ExamRoomInfo.java

@@ -8,6 +8,11 @@ import io.swagger.annotations.ApiModelProperty;
  * @Date: 2021-09-06
  */
 public class ExamRoomInfo {
+    @ApiModelProperty(value = "卷袋编号")
+    private String packageCode;
+
+    @ApiModelProperty(value = "校区名称")
+    private String campusNames;
 
     @ApiModelProperty(value = "使用班级(考场)")
     private String clazzNames;
@@ -18,6 +23,22 @@ public class ExamRoomInfo {
     @ApiModelProperty(value = "总印份数(人数 + 备用)")
     private String printCount;
 
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public String getCampusNames() {
+        return campusNames;
+    }
+
+    public void setCampusNames(String campusNames) {
+        this.campusNames = campusNames;
+    }
+
     public String getClazzNames() {
         return clazzNames;
     }

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

@@ -160,6 +160,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     ExamTaskService examTaskService;
 
+    @Resource
+    BasicCampusService basicCampusService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -1722,6 +1725,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             throw ExceptionResultEnum.ERROR.exception("找不到教研室");
         }
         String teachingRoomName = teachingRoom.getName();
+
+        // 查询教研室所在学院
+        List<SysOrg> collegeList = sysOrgService.findParentsByOrgId(teachingRoom.getId())
+                .stream()
+                .filter(e -> OrgTypeEnum.COLLEGE.equals(e.getType()))
+                .collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(collegeList)){
+            throw ExceptionResultEnum.ERROR.exception("找不到学院");
+        }
+        SysOrg college = collegeList.get(0);
+
+
         // 流程id
         Long flowId = examTask.getFlowId();
 
@@ -1778,6 +1793,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // ---- 组装Dto
         ExamTaskApprovalFormDto examTaskApprovalFormDto = new ExamTaskApprovalFormDto();
         BasicInfo basicInfo = new BasicInfo();
+        basicInfo.setCollegeId(college.getId());
+        basicInfo.setCollegeName(college.getName());
         basicInfo.setTeachingRoomId(teachingRoomId);
         basicInfo.setTeachingRoomName(teachingRoomName);
         basicInfo.setPaperName(paperName);
@@ -1909,6 +1926,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 List<ExamPackageDetail> examPackageDetailCell = examPackageDetailDatasource.stream()
                         .filter(e -> examDetailId.equals(e.getExamDetailId()))
                         .collect(Collectors.toList());
+                List<String> packageCodeList = examPackageDetailCell.stream().map(ExamPackageDetail::getPackageCode).distinct().collect(Collectors.toList());
+                String packageCode = "";
+                if (packageCodeList.size() > 0){
+                    packageCode = packageCodeList.get(0);
+                }
+
 
                 List<BackupMethodEnum> backupMethodEnums = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupMethod).distinct().collect(Collectors.toList());
                 if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM) {
@@ -1951,7 +1974,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
                     // 组装examRoom
                     ExamRoomInfo examRoomInfo = new ExamRoomInfo();
+                    examRoomInfo.setPackageCode(packageCode);
                     examRoomInfo.setClazzNames(classNames);
+                    examRoomInfo.setCampusNames(basicCampusService.findCampusNamesByClazzIdList(clazzIds,","));
                     examRoomInfo.setStudentCount(studentCount);
                     examRoomInfo.setPrintCount(printCount);
                     examRoomInfoList.add(examRoomInfo);

+ 8 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCampusService.java

@@ -38,4 +38,12 @@ public interface BasicCampusService extends IService<BasicCampus> {
     Boolean removeBasicCampusById(Long id);
 
     Long getPrintHouseIdBySchoolIdAndCampusName(Long schoolId, String campusName);
+
+    /**
+     * 根据班级id集合查找对应的校区
+     * @param clazzIdList  班级id集合
+     * @param separator 校区连接符
+     * @return 连接符连好的校区
+     */
+    String findCampusNamesByClazzIdList(List<Long> clazzIdList,String separator);
 }

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

@@ -94,4 +94,11 @@ public interface SysOrgService extends IService<SysOrg> {
      * @return 符合条件的机构
      */
     List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum,Long orgId,boolean auth);
+
+    /**
+     * 根据机构id查询他的父亲们
+     * @param orgId 机构id
+     * @return 父亲们
+     */
+    List<SysOrg> findParentsByOrgId(Long orgId);
 }

+ 21 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCampusServiceImpl.java

@@ -16,10 +16,12 @@ import com.qmth.teachcloud.common.service.BasicClazzService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -119,4 +121,23 @@ public class BasicCampusServiceImpl extends ServiceImpl<BasicCampusMapper, Basic
         }
         return basicCampus.getPrintHouseId();
     }
+
+    @Override
+    public String findCampusNamesByClazzIdList(List<Long> clazzIdList, String separator) {
+        String campusNames = "";
+        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
+        List<Long> campusId = basicClazzService.list(new QueryWrapper<BasicClazz>().lambda()
+                .in(BasicClazz::getId,clazzIdList))
+                .stream()
+                .map(BasicClazz::getCampusId)
+                .distinct()
+                .collect(Collectors.toList());
+        if (!CollectionUtils.isEmpty(campusId)){
+            List<BasicCampus> basicCampusList = this.list(new QueryWrapper<BasicCampus>().lambda()
+                    .eq(BasicCampus::getSchoolId,schoolId)
+                    .in(BasicCampus::getId,campusId));
+            campusNames = basicCampusList.stream().map(BasicCampus::getCampusName).distinct().collect(Collectors.joining(separator));
+        }
+        return campusNames;
+    }
 }

+ 30 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -19,6 +19,7 @@ import com.qmth.teachcloud.common.mapper.SysOrgMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -321,4 +322,33 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         }
         return this.list(queryWrapper);
     }
+
+    @Override
+    public List<SysOrg> findParentsByOrgId(Long orgId) {
+        SysOrg sysOrg = this.getById(orgId);
+        Long parentId = sysOrg.getParentId();
+        return this.findTopDFS(null,parentId);
+    }
+
+    /**
+     * 根据子机构id深度优先搜索其父机构们
+     * @param sysOrgList 目标父机构们
+     * @param orgId 子机构id
+     * @return 父亲们
+     */
+    private List<SysOrg> findTopDFS(List<SysOrg> sysOrgList,Long orgId){
+        if (CollectionUtils.isEmpty(sysOrgList)){
+            sysOrgList = new ArrayList<>();
+        }
+        SysOrg sysOrg = this.getById(orgId);
+        if (Objects.isNull(sysOrg)){
+            throw ExceptionResultEnum.ERROR.exception("找不到机构");
+        }
+        sysOrgList.add(sysOrg);
+        Long parentId = sysOrg.getParentId();
+        if (SystemConstant.longNotNull(parentId)){
+            this.findTopDFS(sysOrgList,parentId);
+        }
+        return sysOrgList;
+    }
 }