xiaof 3 anni fa
parent
commit
31c4270af0

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationImportDto.java

@@ -36,6 +36,10 @@ public class ExaminationImportDto {
     @ExcelDBFieldDesc(name = "课程名称",length = 50)
     private String courseName;
 
+    @ApiModelProperty(value = "校区")
+    @ExcelDBFieldDesc(name = "校区",length = 100)
+    private String campusName;
+
     @ApiModelProperty(value = "考点")
     @ExcelDBFieldDesc(name = "考点",length = 30)
     private String examPlace;
@@ -125,6 +129,14 @@ public class ExaminationImportDto {
         this.courseName = courseName;
     }
 
+    public String getCampusName() {
+        return campusName;
+    }
+
+    public void setCampusName(String campusName) {
+        this.campusName = campusName;
+    }
+
     public String getExamPlace() {
         return examPlace;
     }

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetail.java

@@ -109,6 +109,10 @@ public class ExamDetail extends BaseEntity implements Serializable {
     @TableField("normal")
     private Boolean normal;
 
+    @ApiModelProperty(value = "印刷室ID")
+    @TableField("print_house_id")
+    private Long printHouseId;
+
     public Long getSchoolId() {
         return schoolId;
     }
@@ -288,4 +292,12 @@ public class ExamDetail extends BaseEntity implements Serializable {
     public void setNormal(Boolean normal) {
         this.normal = normal;
     }
+
+    public Long getPrintHouseId() {
+        return printHouseId;
+    }
+
+    public void setPrintHouseId(Long printHouseId) {
+        this.printHouseId = printHouseId;
+    }
 }

+ 4 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java

@@ -17,11 +17,13 @@ public enum RequiredFieldsEnum {
     STUDENT_NAME("studentName","姓名"),
     COURSE_CODE("courseCode","课程代码"),
     COURSE_NAME("courseName","课程名称"),
+    PAPER_NUMBER("paperNumber","试卷编号"),
+    CAMPUS_NAME("campusName","校区"),
     EXAM_PLACE("examPlace","考点"),
     EXAM_ROOM("examRoom","考场"),
     EXAM_DATE("examDate","考试日期"),
-    EXAM_TIME("examTime","考试时间"),
-    PAPER_NUMBER("paperNumber","试卷编号");
+    EXAM_TIME("examTime","考试时间");
+
 
     private String code;
     private String desc;

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

@@ -31,7 +31,7 @@ public interface ExamTaskPrintService extends IService<ExamTaskPrint> {
 
     ExamDetail createTaskPrint(ExamTaskPrint examTaskPrint);
 
-    List<TaskPrintClassDto> listClass(String printPlanId, String courseCode, String paperNumber, Long examTaskPrintId);
+    List<TaskPrintClassDto> listClass(String printPlanId, String courseCode, String campusId, String paperNumber, Long examTaskPrintId);
 
     List<TaskPrintHouseDto> listHouse();
 

+ 19 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -21,14 +21,12 @@ import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
+import com.qmth.teachcloud.common.entity.BasicCampus;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
-import com.qmth.teachcloud.common.service.BasicAttachmentService;
-import com.qmth.teachcloud.common.service.CommonCacheService;
-import com.qmth.teachcloud.common.service.TBTaskService;
-import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -92,6 +90,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Resource
     TeachcloudCommonService teachcloudCommonService;
 
+    @Autowired
+    BasicCampusService basicCampusService;
+
     private final static Logger log = LoggerFactory.getLogger(ExamDetailServiceImpl.class);
 
     @Transactional(rollbackFor = Exception.class)
@@ -296,8 +297,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Override
     public List<String> findExamPlaceDatasource(String param, List<Long> printPlanIdList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         QueryWrapper<ExamDetail> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ExamDetail::getSchoolId, schoolId);
+        queryWrapper.lambda().eq(ExamDetail::getSchoolId, schoolId).in(ExamDetail::getOrgId, orgIds);
         if (StringUtils.isNotBlank(param)) {
             queryWrapper.lambda().like(ExamDetail::getExamPlace, SystemConstant.translateSpecificSign(param));
         }
@@ -424,17 +426,26 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             map.put("examRoom", e.getExamRoom());
             map.put("examStartTime", e.getExamStartTime());
             map.put("examEndTime", e.getExamEndTime());
+            map.put("campusName", e.getCampusName());
             return Stream.of(map);
         }).distinct().collect(Collectors.toList());
 
-//        System.out.println("examDetailKeyList = " + JSON.toJSONString(examDetailKeyList));
+        // 同一任务是否有多个校区
+        Map<String, List<Map<String, Object>>> stringListMap = examDetailKeyList.stream().collect(Collectors.groupingBy(m -> m.get("schoolId") + "#" + m.get("printPlanId") + "#" + m.get("printPlanName") + "#" + m.get("examPlace") + "#" + m.get("examRoom") + "#" + m.get("examStartTime") + "#" + m.get("examEndTime")));
+        for (Map.Entry<String, List<Map<String, Object>>> entry : stringListMap.entrySet()) {
+            if(entry.getValue().size() > 1){
+                throw ExceptionResultEnum.ERROR.exception("同一考场数据只能指派一个印刷室");
+            }
+        }
 
         List<ExamDetail> examDetailList = new ArrayList<>();
         for (Map<String, Object> map : examDetailKeyList) {
+            Long schoolId = Long.valueOf(String.valueOf(map.get("schoolId")));
             String examPlace = String.valueOf(map.get("examPlace"));
             String examRoom = String.valueOf(map.get("examRoom"));
             String examStartTime = String.valueOf(map.get("examStartTime"));
             String examEndTime = String.valueOf(map.get("examEndTime"));
+            String campusName = String.valueOf(map.get("campusName"));
 
             long totalSubjects = dataList.stream()
                     .filter(e -> e.getExamPlace().equals(examPlace) &&
@@ -445,7 +456,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             ExamDetail examDetail = new ExamDetail();
             examDetail.setId(SystemConstant.getDbUuid());
             examDetail.setPackageCode(convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit()));
-            examDetail.setSchoolId(Long.valueOf(String.valueOf(map.get("schoolId"))));
+            examDetail.setSchoolId(schoolId);
             examDetail.setOrgId(sysUser.getOrgId());
             examDetail.setPrintPlanId(Long.valueOf(String.valueOf(map.get("printPlanId"))));
             examDetail.setPrintPlanName(String.valueOf(map.get("printPlanName")));
@@ -457,6 +468,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examDetail.setExamEndTime(SystemConstant.convertIdToLong(examEndTime));
             examDetail.setExamDataSource(ExamDataSourceEnum.FILE_IMPORT);
             examDetail.setNormal(true);
+            examDetail.setPrintHouseId(basicCampusService.getPrintHouseIdBySchoolIdAndCampusName(schoolId, campusName));
             examDetail.setCreateId(userId);
             examDetail.setUpdateId(userId);
             examDetailList.add(examDetail);

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

@@ -1,7 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import cn.hutool.core.date.DateUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -24,7 +23,6 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
-import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.service.BasicUserCourseService;
 import com.qmth.teachcloud.common.service.TBTaskService;
@@ -97,7 +95,7 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
 
         List<Long> entityId = Arrays.asList(examTaskPrint.getExamDetailId());
         boolean isFinish = tbTaskService.countByPrintPlanIdAndEntityId(examTaskPrint.getSchoolId(), examTaskPrint.getPrintPlanId(), entityId);
-        if(!isFinish){
+        if (!isFinish) {
             throw ExceptionResultEnum.ERROR.exception("任务正在生成pdf,不能删除");
         }
 
@@ -200,6 +198,7 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
             examDetail.setExamEndTime(examTaskPrint.getExamEndTime());
             examDetail.setExamDataSource(ExamDataSourceEnum.EXAM_TASK);
             examDetail.setNormal(true);
+            examDetail.setPrintHouseId(Long.valueOf(examTaskPrint.getPrintHouseId()));
             examDetail.setCreateId(examTaskPrint.getCreateId());
             examDetail.setCreateTime(System.currentTimeMillis());
             examDetailService.save(examDetail);
@@ -269,7 +268,7 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
     }
 
     @Override
-    public List<TaskPrintClassDto> listClass(String printPlanId, String courseCode, String paperNumber, Long examTaskPrintId) {
+    public List<TaskPrintClassDto> listClass(String printPlanId, String courseCode, String campusId, String paperNumber, Long examTaskPrintId) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         List<BasicUserCourse> courseList = basicUserCourseService.listBySchoolIdAndCourseCode(schoolId, courseCode);
         Set<String> stringList = courseList.stream().map(m -> m.getClazz()).collect(Collectors.toSet());
@@ -313,10 +312,6 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
     public List<TaskPrintHouseDto> listHouse() {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         List<TaskPrintHouseDto> houseDtos = this.baseMapper.listTaskPrintHouse(schoolId, OrgTypeEnum.PRINTING_HOUSE.name());
-        // 校区没有指定校区,查询所有
-        if (CollectionUtils.isEmpty(houseDtos)) {
-            houseDtos = this.baseMapper.listTaskPrintHouseAll(schoolId, OrgTypeEnum.PRINTING_HOUSE.name());
-        }
         return houseDtos;
     }
 

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

@@ -648,9 +648,10 @@ public class ExamTaskController {
     @RequestMapping(value = "/list_task_print_class", method = RequestMethod.POST)
     public Result listTaskPrintClass(@RequestParam(value = "printPlanId") String printPlanId,
                                      @RequestParam(value = "courseCode") String courseCode,
+                                     @RequestParam(value = "campusId") String campusId,
                                      @RequestParam(value = "paperNumber") String paperNumber,
                                      @RequestParam(value = "examTaskPrintId", required = false) Long examTaskPrintId) {
-        return ResultUtil.ok(examTaskPrintService.listClass(printPlanId, courseCode, paperNumber, examTaskPrintId));
+        return ResultUtil.ok(examTaskPrintService.listClass(printPlanId, courseCode, campusId, paperNumber, examTaskPrintId));
     }
 
     /**

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

@@ -36,4 +36,6 @@ public interface BasicCampusService extends IService<BasicCampus> {
      * @return 是否成功
      */
     Boolean removeBasicCampusById(Long id);
+
+    Long getPrintHouseIdBySchoolIdAndCampusName(Long schoolId, String campusName);
 }

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

@@ -12,6 +12,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.mapper.BasicCampusMapper;
 import com.qmth.teachcloud.common.service.BasicCampusService;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.omg.CORBA.OBJ_ADAPTER;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -104,4 +105,18 @@ public class BasicCampusServiceImpl extends ServiceImpl<BasicCampusMapper, Basic
                 .eq(BasicCampus::getId,id);
         return this.update(updateWrapper);
     }
+
+    @Override
+    public Long getPrintHouseIdBySchoolIdAndCampusName(Long schoolId, String campusName) {
+        QueryWrapper<BasicCampus> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicCampus::getSchoolId, schoolId).eq(BasicCampus::getCampusName, campusName);
+        BasicCampus basicCampus = this.getOne(queryWrapper);
+        if(Objects.isNull(basicCampus)){
+            throw ExceptionResultEnum.ERROR.exception("校区不存在");
+        }
+        if(Objects.isNull(basicCampus.getPrintHouseId())){
+            throw ExceptionResultEnum.ERROR.exception("校区没有绑定印刷室");
+        }
+        return basicCampus.getPrintHouseId();
+    }
 }

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

@@ -19,6 +19,6 @@
         WHERE
             cam.school_id = #{schoolId}
           AND cam.enable = TRUE
-        ORDER BY cam.create_time DESC;
+        ORDER BY cam.create_time DESC
     </select>
 </mapper>