Răsfoiți Sursa

课程管理查询

caozixuan 3 ani în urmă
părinte
comite
b9b5450809

+ 3 - 2
distributed-print-business/src/main/resources/mapper/BasicStudentMapper.xml

@@ -23,17 +23,18 @@
         <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},'%'))
+                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
+                AND stu.org_id IN
                 <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
                     #{item}
                 </foreach>
             </if>
         </where>
+        ORDER BY stu.create_time DESC
     </select>
 </mapper>

+ 9 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicCourseParams.java

@@ -6,7 +6,9 @@ import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Length;
 import org.hibernate.validator.constraints.Range;
 
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * @Description: 基础课程参数
@@ -35,10 +37,9 @@ public class BasicCourseParams {
     @Range(min = 1L, message = "请选择所属教研室")
     private Long teachingRoomId;
 
-    @ApiModelProperty(value = "授课班级")
-    @NotNull(message = "请输入班级名称")
-    @Length(min = 1,message = "请输入班级名称")
-    private String clazz;
+    @ApiModelProperty(value = "授课班级集合")
+    @NotEmpty(message = "请输入班级名称")
+    private List<String> clazzList;
 
     public Long getId() {
         return id;
@@ -72,11 +73,11 @@ public class BasicCourseParams {
         this.teachingRoomId = teachingRoomId;
     }
 
-    public String getClazz() {
-        return clazz;
+    public List<String> getClazzList() {
+        return clazzList;
     }
 
-    public void setClazz(String clazz) {
-        this.clazz = clazz;
+    public void setClazzList(List<String> clazzList) {
+        this.clazzList = clazzList;
     }
 }

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicCourse.java

@@ -41,6 +41,10 @@ public class BasicCourse extends BaseEntity implements Serializable {
      */
     private String name;
 
+    @ApiModelProperty(value = "是否可用")
+    @TableField("enable")
+    private Boolean enable;
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -76,4 +80,12 @@ public class BasicCourse extends BaseEntity implements Serializable {
     public void setName(String name) {
         this.name = name;
     }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
 }

+ 21 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicCourseMapper.java

@@ -4,10 +4,12 @@ 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.teachcloud.common.bean.dto.CourseInfoDto;
+import com.qmth.teachcloud.common.bean.result.BasicCourseResult;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -24,4 +26,23 @@ public interface BasicCourseMapper extends BaseMapper<BasicCourse> {
     IPage<BasicCourse> listPage(Page<BasicCourse> page, @Param("schoolId") Long schoolId, @Param("code") String code, @Param("name") String name);
 
     List<CourseInfoDto> findByUserLoginNameAndRealName(@Param("loginName")String loginName, @Param("realName") String realName);
+
+    /**
+     * 查询课程字典
+     * @param iPage 分页参数
+     * @param courseName 课程名称(模糊查询)
+     * @param startCreateTime 课程创建时间(起始值)
+     * @param endCreateTime 课程创建时间(终止值)
+     * @param schoolId 学校id
+     * @param orgIds 权限机构组
+     * @return 结果
+     */
+    IPage<BasicCourseResult> findBasicCoursePage(@Param("iPage") Page<BasicCourseResult> iPage,
+                                                 @Param("courseName") String courseName,
+                                                 @Param("startCreateTime") Long startCreateTime,
+                                                 @Param("endCreateTime") Long endCreateTime,
+                                                 @Param("schoolId") Long schoolId,
+                                                 @Param("orgIds") Set<Long> orgIds);
+
+
 }

+ 3 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCourseService.java

@@ -1,5 +1,6 @@
 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;
@@ -51,14 +52,14 @@ public interface BasicCourseService extends IService<BasicCourse> {
 
     /**
      * 查询课程信息-分页查询
-     * @param courseName 课程名称
+     * @param courseName 课程名称(模糊查询)
      * @param startCreateTime 课程创建时间(起始)
      * @param endCreateTime 课程创建时间(终止)
      * @param pageNumber 分页页码
      * @param pageSize 分页容量
      * @return 查询结果
      */
-    BasicCourseResult basicStudentPage(String courseName,Long startCreateTime,Long endCreateTime, int pageNumber, int pageSize);
+    IPage<BasicCourseResult> basicStudentPage(String courseName, Long startCreateTime, Long endCreateTime, int pageNumber, int pageSize);
 
     /**
      * 新增/编辑 课程基础信息

+ 54 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

@@ -9,9 +9,15 @@ 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.entity.SysOrg;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.OrgCenterTypeEnum;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.mapper.BasicCourseMapper;
 import com.qmth.teachcloud.common.service.BasicCourseService;
+import com.qmth.teachcloud.common.service.SysOrgService;
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 
 /**
  * <p>
@@ -35,6 +42,10 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
 
     @Resource
     private BasicCourseMapper basicCourseMapper;
+    @Resource
+    private TeachcloudCommonService teachcloudCommonService;
+    @Resource
+    private SysOrgService sysOrgService;
 
 
 
@@ -87,7 +98,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void createCourse(Long schoolId, String courseCode, String courseName) {
-        // 向'basic_course'表新增数据
+        // 向'basic_course'表新增数据 - 教研分析用
         List<BasicCourse> basicCourseList = this.list(new QueryWrapper<BasicCourse>().lambda()
                 .eq(BasicCourse::getSchoolId,schoolId).eq(BasicCourse::getCode,courseCode));
         if (basicCourseList.size() > 0){
@@ -102,15 +113,55 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     }
 
     @Override
-    public BasicCourseResult basicStudentPage(String courseName, Long startCreateTime, Long endCreateTime, int pageNumber, int pageSize) {
-        return null;
+    public IPage<BasicCourseResult> basicStudentPage(String courseName, Long startCreateTime, Long endCreateTime, int pageNumber, int pageSize) {
+        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
+        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
+        courseName = SystemConstant.translateSpecificSign(courseName);
+        return basicCourseMapper.findBasicCoursePage(new Page<>(pageNumber,pageSize),courseName,startCreateTime,endCreateTime,schoolId,orgIds);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Long saveBasicCourse(BasicCourseParams basicCourseParams) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Long schoolId = sysUser.getSchoolId();
+        Long id = basicCourseParams.getId();
+        String courseName = basicCourseParams.getCourseName();
+        // 校验课程编号
+        String courseCode = basicCourseParams.getCourseCode();
+        BasicCourse checkCode = this.getOne(new QueryWrapper<BasicCourse>().lambda()
+                .eq(BasicCourse::getCode,courseCode)
+                .eq(BasicCourse::getSchoolId,schoolId)
+                .eq(BasicCourse::getEnable,true));
+        if (Objects.nonNull(checkCode)){
+            if (!checkCode.getId().equals(id)){
+                throw ExceptionResultEnum.ERROR.exception("课程编号【" + courseCode +"】重复");
+            }
+        }
+        // 校验教研室id
+        Long teachingRoomId = basicCourseParams.getTeachingRoomId();
+        if (Objects.isNull(sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
+                .eq(SysOrg::getId,teachingRoomId)
+                .eq(SysOrg::getEnable,true)
+                .eq(SysOrg::getType, OrgTypeEnum.TEACHING_ROOM)))){
+            throw ExceptionResultEnum.ERROR.exception("所选教研室不存在");
+        }
+        List<String> clazzList = basicCourseParams.getClazzList();
+
+        //基础数据组装
+        BasicCourse basicCourse = new BasicCourse();
+
+
+        if (!SystemConstant.longNotNull(id)){
+            // 没有id -》新增
+        }else {
+            // 有id -》 更新
+        }
+
         return null;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean removeBasicCourseBatch(List<Long> idList) {
         return null;

+ 43 - 0
teachcloud-common/src/main/resources/mapper/BasicCourseMapper.xml

@@ -57,5 +57,48 @@
             su.login_name = #{loginName}
           AND real_name = #{realName};
     </select>
+    <select id="findBasicCoursePage" resultType="com.qmth.teachcloud.common.bean.result.BasicCourseResult">
+        SELECT
+            bc.id,
+            MAX(bc.code) AS courseCode,
+            MAX(bc.name) AS courseName,
+            MAX(teaching_room_id) AS teachingRoomId,
+            MAX(org.name) AS teachingRoomName,
+            GROUP_CONCAT(buc.clazz
+                         SEPARATOR ',') AS clazz,
+            MAX(bc.create_id) AS createId,
+            MAX(bc.create_time) AS createTime
+        FROM
+            basic_course bc
+                INNER JOIN
+            basic_user_course buc ON bc.id = buc.course_id
+                LEFT JOIN
+            sys_org org ON bc.teaching_room_id = org.id
+                AND org.type = 'TEACHING_ROOM'
+                AND org.enable = TRUE
+        <where>
+            AND bc.enable = TRUE
+            <if test="courseName != null and courseName.length > 0">
+                AND bc.name LIKE CONCAT('%',#{courseName},'%')
+            </if>
+            <if test="startCreateTime != null and startCreateTime > 0">
+                AND bc.create_time >= #{startCreateTime}
+            </if>
+            <if test="endCreateTime != null and endCreateTime > 0">
+                AND #{endCreateTime} >= bc.create_time
+            </if>
+            <if test="schoolId != null and schoolId > 0">
+                and bc.school_id = #{schoolId}
+            </if>
+            <if test="orgIds != null and orgIds.size > 0">
+                AND bc.org_id IN
+                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY bc.id
+        ORDER BY createTime DESC
+    </select>
 
 </mapper>