فهرست منبع

Merge remote-tracking branch 'origin/dev_v2.2.0' into dev_v2.2.0

wangliang 3 سال پیش
والد
کامیت
fcf2cb0d8a
17فایلهای تغییر یافته به همراه821 افزوده شده و 31 حذف شده
  1. 95 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/BasicStudentParams.java
  2. 29 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/DeleteBatchParams.java
  3. 127 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicStudentResult.java
  4. 43 18
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPrint.java
  5. 13 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicStudentMapper.java
  6. 29 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicStudentService.java
  7. 6 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPrintService.java
  8. 105 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicStudentServiceImpl.java
  9. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  10. 55 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java
  11. 14 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  12. 34 0
      distributed-print-business/src/main/resources/mapper/BasicStudentMapper.xml
  13. 26 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  14. 82 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicCourseParams.java
  15. 116 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicCourseResult.java
  16. 29 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCourseService.java
  17. 17 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

+ 95 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/BasicStudentParams.java

@@ -0,0 +1,95 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 基础学生参数
+ * @Author: CaoZixuan
+ * @Date: 2021-08-04
+ */
+public class BasicStudentParams {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学生id(修改时必填)")
+    private Long id;
+
+    @ApiModelProperty(value = "学生名称")
+    @NotNull(message = "请输入学生名称")
+    @Length(min = 1,message = "请输入学生名称")
+    private String studentName;
+
+    @ApiModelProperty(value = "学生学号")
+    @NotNull(message = "请输入学生学号")
+    @Length(min = 1,message = "请输入学生学号")
+    private String studentCode;
+
+    @ApiModelProperty(value = "手机号码")
+    @NotNull(message = "请输入手机号码")
+    @Length(min = 1,message = "请输入手机号码")
+    private String phoneNumber;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "校区主键")
+    @NotNull(message = "请选择校区")
+    @Range(min = 1L, message = "请选择校区")
+    private Long campusId;
+
+    @ApiModelProperty(value = "班级信息")
+    @NotNull(message = "请输入班级信息")
+    @Length(min = 1,message = "请输入班级信息")
+    private String clazz;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    public Long getCampusId() {
+        return campusId;
+    }
+
+    public void setCampusId(Long campusId) {
+        this.campusId = campusId;
+    }
+
+    public String getClazz() {
+        return clazz;
+    }
+
+    public void setClazz(String clazz) {
+        this.clazz = clazz;
+    }
+}

+ 29 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/DeleteBatchParams.java

@@ -0,0 +1,29 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * @Description: 批量删除参数接收类
+ * @Author: CaoZixuan
+ * @Date: 2021-08-04
+ */
+public class DeleteBatchParams {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "选择的要删除的id数组",required = true)
+    @NotEmpty(message = "必须勾选要删除的目标")
+    private List<Long> idList;
+
+    public List<Long> getIdList() {
+        return idList;
+    }
+
+    public void setIdList(List<Long> idList) {
+        this.idList = idList;
+    }
+}

+ 127 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicStudentResult.java

@@ -0,0 +1,127 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 基础学生信息查询结果类
+ * @Author: CaoZixuan
+ * @Date: 2021-08-04
+ */
+public class BasicStudentResult {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学生id")
+    private Long id;
+
+    @ApiModelProperty(value = "学生姓名")
+    private String studentName;
+
+    @ApiModelProperty(value = "学生学号")
+    private String studentCode;
+
+    @ApiModelProperty(value = "学生电话")
+    private String phoneNumber;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "校区id")
+    private Long campusId;
+
+    @ApiModelProperty(value = "校区名称")
+    private String campusName;
+
+    @ApiModelProperty(value = "班级信息")
+    private String clazz;
+
+    @ApiModelProperty(value = "是否被逻辑删除?")
+    private Boolean enable;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "创建时间")
+    private Long createTime;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "创建人id")
+    private Long createId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    public Long getCampusId() {
+        return campusId;
+    }
+
+    public void setCampusId(Long campusId) {
+        this.campusId = campusId;
+    }
+
+    public String getCampusName() {
+        return campusName;
+    }
+
+    public void setCampusName(String campusName) {
+        this.campusName = campusName;
+    }
+
+    public String getClazz() {
+        return clazz;
+    }
+
+    public void setClazz(String clazz) {
+        this.clazz = clazz;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+}

+ 43 - 18
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPrint.java

@@ -8,6 +8,8 @@ import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -49,8 +51,8 @@ public class ExamTaskPrint extends BaseEntity implements Serializable {
     @TableField("exam_end_time")
     private Long examEndTime;
 
-    @TableField("package_code")
-    private String packageCode;
+    @TableField("package_seq")
+    private String packageSeq;
 
     @TableField("exam_place")
     private String examPlace;
@@ -58,8 +60,8 @@ public class ExamTaskPrint extends BaseEntity implements Serializable {
     @TableField("exam_room")
     private String examRoom;
 
-    @TableField("invigilatro_teacher")
-    private String invigilatroTeacher;
+    @TableField("invigilator_teacher")
+    private String invigilatorTeacher;
 
     @TableField("class_id")
     private String classId;
@@ -70,8 +72,15 @@ public class ExamTaskPrint extends BaseEntity implements Serializable {
     @TableField(value = "student_count")
     private Integer studentCount;
 
-    @TableField(value = "print_house")
-    private String printHouse;
+    @TableField(value = "print_house_id")
+    private String printHouseId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("exam_detail_id")
+    private Long examDetailId;
+
+    @TableField(exist = false)
+    private List<Map> extendFields;
 
     public static long getSerialVersionUID() {
         return serialVersionUID;
@@ -141,12 +150,12 @@ public class ExamTaskPrint extends BaseEntity implements Serializable {
         this.examEndTime = examEndTime;
     }
 
-    public String getPackageCode() {
-        return packageCode;
+    public String getPackageSeq() {
+        return packageSeq;
     }
 
-    public void setPackageCode(String packageCode) {
-        this.packageCode = packageCode;
+    public void setPackageSeq(String packageSeq) {
+        this.packageSeq = packageSeq;
     }
 
     public String getExamPlace() {
@@ -165,12 +174,12 @@ public class ExamTaskPrint extends BaseEntity implements Serializable {
         this.examRoom = examRoom;
     }
 
-    public String getInvigilatroTeacher() {
-        return invigilatroTeacher;
+    public String getInvigilatorTeacher() {
+        return invigilatorTeacher;
     }
 
-    public void setInvigilatroTeacher(String invigilatroTeacher) {
-        this.invigilatroTeacher = invigilatroTeacher;
+    public void setInvigilatorTeacher(String invigilatorTeacher) {
+        this.invigilatorTeacher = invigilatorTeacher;
     }
 
     public String getClassId() {
@@ -197,11 +206,27 @@ public class ExamTaskPrint extends BaseEntity implements Serializable {
         this.studentCount = studentCount;
     }
 
-    public String getPrintHouse() {
-        return printHouse;
+    public String getPrintHouseId() {
+        return printHouseId;
+    }
+
+    public void setPrintHouseId(String printHouseId) {
+        this.printHouseId = printHouseId;
+    }
+
+    public Long getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(Long examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public List<Map> getExtendFields() {
+        return extendFields;
     }
 
-    public void setPrintHouse(String printHouse) {
-        this.printHouse = printHouse;
+    public void setExtendFields(List<Map> extendFields) {
+        this.extendFields = extendFields;
     }
 }

+ 13 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicStudentMapper.java

@@ -1,7 +1,16 @@
 package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.result.BasicStudentResult;
+import com.qmth.distributed.print.business.bean.result.PrintPlanResult;
 import com.qmth.distributed.print.business.entity.BasicStudent;
+import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
+import org.apache.ibatis.annotations.Param;
+
+import javax.swing.plaf.basic.BasicSplitPaneDivider;
+import java.util.Set;
 
 /**
  * <p>
@@ -13,4 +22,8 @@ import com.qmth.distributed.print.business.entity.BasicStudent;
  */
 public interface BasicStudentMapper extends BaseMapper<BasicStudent> {
 
+    IPage<BasicStudentResult> findBasicStudentPage(@Param("iPage") Page<BasicStudentResult> iPage,
+                                                @Param("queryParams") String queryParams,
+                                                @Param("schoolId") Long schoolId,
+                                                @Param("orgIds") Set<Long> orgIds);
 }

+ 29 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicStudentService.java

@@ -1,8 +1,14 @@
 package com.qmth.distributed.print.business.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.params.BasicStudentParams;
+import com.qmth.distributed.print.business.bean.result.BasicStudentResult;
 import com.qmth.distributed.print.business.entity.BasicStudent;
 
+import java.util.List;
+
 /**
  * <p>
  * 学校id 服务类
@@ -13,4 +19,27 @@ import com.qmth.distributed.print.business.entity.BasicStudent;
  */
 public interface BasicStudentService extends IService<BasicStudent> {
 
+    IPage<BasicStudent> listPage(Page<BasicStudent> page, String classId);
+    /**
+     * 学生基础信息分页查询
+     * @param queryParams 查询参数(学生学号或姓名)
+     * @param pageNumber 分页页码
+     * @param pageSize 分页容量
+     * @return 分页结果
+     */
+    IPage<BasicStudentResult> basicStudentPage(String queryParams,int pageNumber,int pageSize);
+
+    /**
+     * 新增/编辑 学生基础信息
+     * @param basicStudentParams 基础学生信息参数
+     * @return 新增或编辑的校区id
+     */
+    Long saveBasicStudent(BasicStudentParams basicStudentParams);
+
+    /**
+     * 批量删除学生基本信息(逻辑)
+     * @param idList 要删除的学生主键集合
+     * @return 是否删除成功
+     */
+    Boolean removeBasicStudentBatch(List<Long> idList);
 }

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

@@ -1,7 +1,9 @@
 package com.qmth.distributed.print.business.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.params.TaskPrintParams;
+import com.qmth.distributed.print.business.entity.BasicStudent;
 import com.qmth.distributed.print.business.entity.ExamTaskPrint;
 
 import java.util.List;
@@ -16,4 +18,8 @@ import java.util.List;
  */
 public interface ExamTaskPrintService extends IService<ExamTaskPrint> {
     List<ExamTaskPrint> createTaskPrint(TaskPrintParams taskPrintParams);
+
+    IPage<BasicStudent> listStudentByClass(String classId, Integer pageNumber, Integer pageSize);
+
+    void remove(Long examTaskPrintId);
 }

+ 105 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicStudentServiceImpl.java

@@ -1,10 +1,29 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.bean.params.BasicStudentParams;
+import com.qmth.distributed.print.business.bean.result.BasicStudentResult;
 import com.qmth.distributed.print.business.entity.BasicStudent;
 import com.qmth.distributed.print.business.mapper.BasicStudentMapper;
+import com.qmth.distributed.print.business.service.BasicCampusService;
 import com.qmth.distributed.print.business.service.BasicStudentService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 
 /**
  * <p>
@@ -16,5 +35,91 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, BasicStudent> implements BasicStudentService {
+    @Resource
+    private BasicStudentMapper basicStudentMapper;
+    @Resource
+    private TeachcloudCommonService teachcloudCommonService;
+    @Resource
+    private BasicCampusService basicCampusService;
+
+    @Override
+    public IPage<BasicStudentResult> basicStudentPage(String queryParams, int pageNumber, int pageSize) {
+        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
+        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
+        queryParams = SystemConstant.translateSpecificSign(queryParams);
+        return basicStudentMapper.findBasicStudentPage(new Page<>(pageNumber,pageSize),queryParams,schoolId,orgIds);
+    }
+
+    @Override
+    public IPage<BasicStudent> listPage(Page<BasicStudent> page, String classId) {
+        List<String> classIds = Arrays.asList(classId.split(","));
+        QueryWrapper<BasicStudent> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().in(BasicStudent::getClazz, classIds).orderByAsc(BasicStudent::getClazz, BasicStudent::getStudentCode);
+        return this.baseMapper.selectPage(page, queryWrapper);
+    }
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Long saveBasicStudent(BasicStudentParams basicStudentParams) {
+        // 权限参数
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Long schoolId = sysUser.getSchoolId();
+        Long id = basicStudentParams.getId();
+        // 普通参数
+        String studentName = basicStudentParams.getStudentName();
+        String studentCode = basicStudentParams.getStudentCode();
+        String phoneNumber = basicStudentParams.getPhoneNumber();
+        Long campusId = basicStudentParams.getCampusId();
+        if (Objects.isNull(basicCampusService.getById(campusId))){
+            throw ExceptionResultEnum.ERROR.exception("所选校区不存在");
+        }
+        String clazz = basicStudentParams.getClazz();
+
+        // 检验学号在学校的唯一性
+        BasicStudent check = this.getOne(new QueryWrapper<BasicStudent>().lambda()
+                .eq(BasicStudent::getSchoolId,schoolId)
+                .eq(BasicStudent::getStudentCode,studentCode)
+                .eq(BasicStudent::getEnable,true));
+        if (Objects.nonNull(check)){
+            if (!check.getId().equals(id)){
+                throw ExceptionResultEnum.ERROR.exception("学生编号【" + studentCode + "】重复");
+            }
+        }
+
+        // 组装基础参数
+        BasicStudent basicStudent = new BasicStudent();
+        basicStudent.setStudentCode(studentCode);
+        basicStudent.setStudentName(studentName);
+        basicStudent.setPhoneNumber(phoneNumber);
+        basicStudent.setCampusId(campusId);
+        basicStudent.setClazz(clazz);
+        basicStudent.setOrgId(sysUser.getOrgId());
+        basicStudent.setSchoolId(schoolId);
+
+        // 保存
+        if (Objects.isNull(id)){
+            // id为空 -> 新增
+            // 获取分布式id
+            id = SystemConstant.getDbUuid();
+            basicStudent.setId(id);
+            basicStudent.setCreateId(sysUser.getId());
+            this.save(basicStudent);
+        }else {
+            // id不为空 -> 更新
+            basicStudent.setId(id);
+            basicStudent.setUpdateId(sysUser.getId());
+            this.updateById(basicStudent);
+        }
+        return id;
+    }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean removeBasicStudentBatch(List<Long> idList) {
+        if (idList.size() == 0){
+            throw ExceptionResultEnum.ERROR.exception("请选择要删除的目标");
+        }
+        UpdateWrapper<BasicStudent> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(BasicStudent::getEnable,false).in(BasicStudent::getId,idList);
+        return this.update(updateWrapper);
+    }
 }

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

@@ -427,7 +427,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             return Stream.of(map);
         }).distinct().collect(Collectors.toList());
 
-        System.out.println("examDetailKeyList = " + JSON.toJSONString(examDetailKeyList));
+//        System.out.println("examDetailKeyList = " + JSON.toJSONString(examDetailKeyList));
 
         List<ExamDetail> examDetailList = new ArrayList<>();
         for (Map<String, Object> map : examDetailKeyList) {

+ 55 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java

@@ -1,13 +1,22 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.params.TaskPrintParams;
+import com.qmth.distributed.print.business.entity.BasicStudent;
+import com.qmth.distributed.print.business.entity.ExamDetailCourse;
+import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.entity.ExamTaskPrint;
 import com.qmth.distributed.print.business.mapper.ExamTaskPrintMapper;
-import com.qmth.distributed.print.business.service.ExamTaskPrintService;
+import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -18,6 +27,18 @@ import java.util.stream.Collectors;
 @Service
 public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, ExamTaskPrint> implements ExamTaskPrintService {
 
+    @Autowired
+    private BasicStudentService basicStudentService;
+
+    @Autowired
+    private ExamDetailService examDetailService;
+
+    @Autowired
+    private ExamDetailCourseService examDetailCourseService;
+
+    @Autowired
+    private ExamStudentService examStudentService;
+
     @Override
     public List<ExamTaskPrint> createTaskPrint(TaskPrintParams taskPrintParams) {
         Long schoolId = (Long) ServletUtil.getRequestHeaderSchoolId();
@@ -39,4 +60,37 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
         this.saveBatch(list);
         return list;
     }
+
+    @Override
+    public IPage<BasicStudent> listStudentByClass(String classId, Integer pageNumber, Integer pageSize) {
+        Page<BasicStudent> page = new Page<>(pageNumber, pageSize);
+        IPage<BasicStudent> studentIPage = basicStudentService.listPage(page, classId);
+        return studentIPage;
+    }
+
+    @Transactional
+    @Override
+    public void remove(Long examTaskPrintId) {
+        // todo xf删除逻辑校验
+        ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
+        QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
+        examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, examTaskPrint.getExamDetailId());
+        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.list(examDetailCourseQueryWrapper);
+        for (ExamDetailCourse examDetailCours : examDetailCourses) {
+            // 删除考务数据-考生
+            UpdateWrapper<ExamStudent> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCours.getId());
+            examStudentService.remove(updateWrapper);
+
+            // 删除考务数据-课程
+            examDetailCourseService.removeById(examDetailCours.getId());
+        }
+
+        // 删除考务数据-考点
+        examDetailService.removeById(examTaskPrint.getExamDetailId());
+        // 删除exam_task_print
+        this.removeById(examTaskPrintId);
+
+
+    }
 }

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

@@ -138,6 +138,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Autowired
     BasicStudentService basicStudentService;
 
+    @Autowired
+    ExamTaskPrintService examTaskPrintService;
+
     /**
      * 创建pdf前置条件
      *
@@ -1069,10 +1072,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             return null;
         }
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-        Long printPlanId = list.stream().map(m -> m.getPrintPlanId()).findFirst().get();
+        Long printPlanId = tbTask.getPrintPlanId();
         Long schoolId = (Long) ServletUtil.getRequestHeaderSchoolId();
         if (!tbTaskService.countByPrintPlanIdAndEntityId(schoolId, printPlanId, null)) {
-            throw ExceptionResultEnum.ERROR.exception("当前印刷计划正在生成pdf,无法导入考务数据");
+            throw ExceptionResultEnum.ERROR.exception("当前印刷计划正在生成pdf,无法生成考务数据");
         }
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
         if (examPrintPlan == null) {
@@ -1080,14 +1083,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         }
         PrintPlanStatusEnum printPlanStatus = examPrintPlan.getStatus();
         if (PrintPlanStatusEnum.NEW != printPlanStatus && PrintPlanStatusEnum.READY != printPlanStatus) {
-            throw ExceptionResultEnum.ERROR.exception(printPlanStatus + "状态下的印刷计划不允许重新提交");
+            throw ExceptionResultEnum.ERROR.exception(printPlanStatus.getDesc() + "状态下的印刷计划不允许重新生成考务数据");
         }
 
-        String printPlanName = examPrintPlan.getName();
-        // 该学校有效考务数据
-        List<FieldsDto> fieldsDtoList = examDetailService.findExaminationFields(schoolId);
-        if (fieldsDtoList.size() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("该学校没有设置考务数据");
+        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
+        if (Objects.isNull(basicExamRule)) {
+            throw ExceptionResultEnum.EXAM_RULE_IS_NULL.exception();
         }
 
         // 删除印刷计划下的考务数据
@@ -1118,6 +1119,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 examDetailService.save(examDetail);
                 examDetailIdList.add(examDetail.getId());
 
+                UpdateWrapper<ExamTaskPrint> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.lambda().set(ExamTaskPrint::getExamDetailId, examDetail.getId()).eq(ExamTaskPrint::getId, examTaskPrint.getId());
+                examTaskPrintService.update(updateWrapper);
+
                 ExamDetailCourse examDetailCourse = new ExamDetailCourse();
                 examDetailCourse.setId(SystemConstant.getDbUuid());
                 examDetailCourse.setSchoolId(schoolId);
@@ -1145,7 +1150,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     examStudent.setStudentCode(basicStudent.getStudentCode());
                     // 准考证号(年月+000001)
                     examStudent.setTicketNumber(createTempNumber(ticketNumberParams));
-//                    examStudent.setExtendFields(JSON.toJSONString(extendFieldsDtoList));
+                    examStudent.setExtendFields(JSON.toJSONString(examTaskPrint.getExtendFields()));
                     examStudent.setSiteNumber(String.valueOf(atomicInteger.getAndIncrement()));
                     examStudent.setCreateId(examTaskPrint.getCreateId());
                     examStudent.setUpdateId(examTaskPrint.getCreateId());
@@ -1156,7 +1161,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 redisTemplate.opsForValue().set(key, value);
                 throw new RuntimeException(e);
             }
-
         }
 
         // 更改印刷计划状态

+ 34 - 0
distributed-print-business/src/main/resources/mapper/BasicStudentMapper.xml

@@ -2,4 +2,38 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.distributed.print.business.mapper.BasicStudentMapper">
 
+    <select id="findBasicStudentPage"
+            resultType="com.qmth.distributed.print.business.bean.result.BasicStudentResult">
+        SELECT
+            stu.id,
+            student_name AS studentName,
+            student_code AS studentCode,
+            phone_number AS phhoneNumber,
+            campus_id AS campusId,
+            cam.campus_name AS campusName,
+            clazz,
+            stu.enable,
+            stu.create_id AS createId,
+            stu.create_time AS createTime
+        FROM
+            basic_student stu
+                LEFT JOIN
+            basic_campus cam ON stu.campus_id = cam.id
+                AND cam.enable = TRUE
+        <where>
+            and stu.enable = true
+            <if test="queryParams != null and queryParams.length > 0">
+                (and student_name like concat('%',#{queryParams},'%') or student_code like concat('%',#{queryParams},'%'))
+            </if>
+            <if test="schoolId != null and schoolId > 0">
+                and stu.school_id = #{schoolId}
+            </if>
+            <if test="orgIds != null and orgIds.size > 0">
+                AND d.org_id IN
+                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -565,5 +565,31 @@ public class ExamTaskController {
         return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
 
+    /**
+     * 查看考生
+     * @param classId
+     * @return
+     */
+    @ApiOperation(value = "卷库查询-发布印刷任务-查看考生")
+    @RequestMapping(value = "/list_task_print_student", method = RequestMethod.POST)
+    public Result listTaskPrintStudent(@RequestParam(value = "classId") String classId,
+                                       @RequestParam Integer pageNumber,
+                                       @RequestParam Integer pageSize) {
+        IPage<BasicStudent> students = examTaskPrintService.listStudentByClass(classId, pageNumber, pageSize);
+        return ResultUtil.ok(students);
+    }
+
+    /**
+     * 查看考生
+     * @param examTaskPrintId
+     * @return
+     */
+    @ApiOperation(value = "卷库查询-发布印刷任务-删除")
+    @RequestMapping(value = "/remove_task_print", method = RequestMethod.POST)
+    public Result listTaskPrintStudent(@RequestParam(value = "examTaskPrintId") Long examTaskPrintId) {
+        examTaskPrintService.remove(examTaskPrintId);
+        return ResultUtil.ok(true, "");
+    }
+
 }
 

+ 82 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicCourseParams.java

@@ -0,0 +1,82 @@
+package com.qmth.teachcloud.common.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 基础课程参数
+ * @Author: CaoZixuan
+ * @Date: 2021-08-04
+ */
+public class BasicCourseParams {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程id(编辑时必填)")
+    private Long id;
+
+    @ApiModelProperty(value = "课程名称")
+    @NotNull(message = "请输入课程名称")
+    @Length(min = 1,message = "请输入课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "课程编号(系统默认生成全校唯一,允许编辑,提交时校验)")
+    @NotNull(message = "请输入课程编号")
+    @Length(min = 1,message = "请输入课程编号")
+    private String courseCode;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "所属教研室id")
+    @NotNull(message = "请选择所属教研室")
+    @Range(min = 1L, message = "请选择所属教研室")
+    private Long teachingRoomId;
+
+    @ApiModelProperty(value = "授课班级")
+    @NotNull(message = "请输入班级名称")
+    @Length(min = 1,message = "请输入班级名称")
+    private String clazz;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getTeachingRoomId() {
+        return teachingRoomId;
+    }
+
+    public void setTeachingRoomId(Long teachingRoomId) {
+        this.teachingRoomId = teachingRoomId;
+    }
+
+    public String getClazz() {
+        return clazz;
+    }
+
+    public void setClazz(String clazz) {
+        this.clazz = clazz;
+    }
+}

+ 116 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicCourseResult.java

@@ -0,0 +1,116 @@
+package com.qmth.teachcloud.common.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 课程查询结果
+ * @Author: CaoZixuan
+ * @Date: 2021-08-04
+ */
+public class BasicCourseResult {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程id")
+    private Long id;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "课程编码")
+    private String courseCode;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "所属教研室id")
+    private Long teachingRoomId;
+
+    @ApiModelProperty(value = "所属教研室名称")
+    private String teachingRoomName;
+
+    @ApiModelProperty(value = "班级")
+    private String clazz;
+
+    @ApiModelProperty(value = "是否被逻辑删除")
+    private Boolean enable;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "创建时间")
+    private Long createTime;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "创建人id")
+    private Long createId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getTeachingRoomId() {
+        return teachingRoomId;
+    }
+
+    public void setTeachingRoomId(Long teachingRoomId) {
+        this.teachingRoomId = teachingRoomId;
+    }
+
+    public String getTeachingRoomName() {
+        return teachingRoomName;
+    }
+
+    public void setTeachingRoomName(String teachingRoomName) {
+        this.teachingRoomName = teachingRoomName;
+    }
+
+    public String getClazz() {
+        return clazz;
+    }
+
+    public void setClazz(String clazz) {
+        this.clazz = clazz;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+}

+ 29 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCourseService.java

@@ -1,8 +1,9 @@
 package com.qmth.teachcloud.common.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.CourseInfoDto;
+import com.qmth.teachcloud.common.bean.params.BasicCourseParams;
+import com.qmth.teachcloud.common.bean.result.BasicCourseResult;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 
 import java.util.List;
@@ -45,4 +46,31 @@ public interface BasicCourseService extends IService<BasicCourse> {
      * @param courseName 课程名称
      */
     void createCourse(Long schoolId,String courseCode,String courseName);
+
+    // dev_2.2.0
+
+    /**
+     * 查询课程信息-分页查询
+     * @param courseName 课程名称
+     * @param startCreateTime 课程创建时间(起始)
+     * @param endCreateTime 课程创建时间(终止)
+     * @param pageNumber 分页页码
+     * @param pageSize 分页容量
+     * @return 查询结果
+     */
+    BasicCourseResult basicStudentPage(String courseName,Long startCreateTime,Long endCreateTime, int pageNumber, int pageSize);
+
+    /**
+     * 新增/编辑 课程基础信息
+     * @param basicCourseParams 基础课程信息参数
+     * @return 新增或编辑的课程id
+     */
+    Long saveBasicCourse(BasicCourseParams basicCourseParams);
+
+    /**
+     * 批量删除课程基本信息(逻辑)
+     * @param idList 要删除的课程主键集合
+     * @return 是否删除成功
+     */
+    Boolean removeBasicCourseBatch(List<Long> idList);
 }

+ 17 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.dto.CourseInfoDto;
+import com.qmth.teachcloud.common.bean.params.BasicCourseParams;
+import com.qmth.teachcloud.common.bean.result.BasicCourseResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -98,4 +100,19 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
         basicCourse.setSchoolId(schoolId);
         this.save(basicCourse);
     }
+
+    @Override
+    public BasicCourseResult basicStudentPage(String courseName, Long startCreateTime, Long endCreateTime, int pageNumber, int pageSize) {
+        return null;
+    }
+
+    @Override
+    public Long saveBasicCourse(BasicCourseParams basicCourseParams) {
+        return null;
+    }
+
+    @Override
+    public Boolean removeBasicCourseBatch(List<Long> idList) {
+        return null;
+    }
 }