Parcourir la source

学校端支持查看学员练习情况

zouxuan il y a 1 an
Parent
commit
d8981a658a

+ 9 - 0
mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolStudentHomeworkController.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Api(tags = "学校学员课后作业")
 @RestController
@@ -87,6 +89,13 @@ public class SchoolStudentHomeworkController extends BaseController {
     @PostMapping("queryStudentLeave")
     public HttpResponseResult<PageInfo<CourseHomeworkWrapper.StudentLeaveResult>>
     queryStudentLeave(@RequestBody CourseHomeworkWrapper.StudentLeaveQuery queryInfo, @RequestHeader Integer coopId) {
+        if(StringUtils.isEmpty(queryInfo.getMusicGroupIds())){
+            List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
+            if (CollectionUtils.isEmpty(musicGroupIds)) {
+                return succeed(new PageInfo<>());
+            }
+            queryInfo.setMusicGroupIds(musicGroupIds.stream().collect(Collectors.joining(",")));
+        }
         return succeed(studentAttendanceService.queryStudentLeave(queryInfo));
     }
 

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -398,7 +398,7 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
 
     Integer getStudentNumByStatus(@Param("courseScheduleId") Long courseScheduleId, @Param("status") StudentAttendanceStatusEnum studentAttendanceStatusEnum);
 
-    int queryStudentLeave(@Param("params") Map<String, Object> params);
+    int countStudentLeave(@Param("params") Map<String, Object> params);
 
-    List<CourseHomeworkWrapper.StudentLeaveResult> countStudentLeave(@Param("params") Map<String, Object> params);
+    List<CourseHomeworkWrapper.StudentLeaveResult> queryStudentLeave(@Param("params") Map<String, Object> params);
 }

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java

@@ -75,14 +75,14 @@ public class CourseHomeworkWrapper {
         @ApiModelProperty(value = "班级id")
         private Integer classGroupId;
 
-        @ApiModelProperty(value = "开始时间",required = true)
-        private Date startTime;
+        @ApiModelProperty(value = "开始时间(年月日)",required = true)
+        private String startTime;
 
-        @ApiModelProperty(value = "结束时间",required = true)
-        private Date endTime;
+        @ApiModelProperty(value = "结束时间(年月日)",required = true)
+        private String endTime;
 
         @ApiModelProperty(value = "乐团id")
-        private String musicGroupId;
+        private String musicGroupIds;
     }
 
     @Data

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -822,11 +822,11 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         MapUtil.populateMap(params, queryInfo);
 
         List<CourseHomeworkWrapper.StudentLeaveResult> dataList = null;
-        int count = studentAttendanceDao.queryStudentLeave(params);
+        int count = studentAttendanceDao.countStudentLeave(params);
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
-            dataList = studentAttendanceDao.countStudentLeave(params);
+            dataList = studentAttendanceDao.queryStudentLeave(params);
         }
         if (count == 0) {
             dataList = new ArrayList<>();

+ 30 - 5
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -766,14 +766,39 @@
             <if test="status.name == 'TRUANT'"> or sa.id_ is null </if>
         )
     </select>
-    <select id="countStudentLeave"
+    <select id="queryStudentLeave"
             resultType="com.ym.mec.biz.dal.dto.CourseHomeworkWrapper$StudentLeaveResult">
-        select cs.class_date_ classDate,cs.start_class_time_ startClassTime,cs.end_class_time_ endClassTime,cg.name_ classGroupName,cs.type_ courseScheduleType,sa.remark_ remark,su.username_ username from student_attendance sa
+        select cs.class_date_ classDate,cs.start_class_time_ startClassTime,cs.end_class_time_ endClassTime,
+               cg.name_ classGroupName,cs.type_ courseScheduleType,sa.remark_ remark,su.username_ username from student_attendance sa
         left join course_schedule cs ON cs.id_ = sa.course_schedule_id_
         left join class_group cg ON cg.id_ = cs.class_group_id_
         left join sys_user su ON su.id_ = sa.user_id_
-        where sa.status_ = 'LEAVE'
-          AND sa.class_group_id_ = 1 AND sa.course_schedule_id_ = 1 AND cs.class_date_ = ''
-          AND (sa.user_id_ = 1 OR su.phone_ LIKE CONCAT('%',,'%') OR su.username_ LIKE CONCAT('%',,'%'))
+        <include refid="queryStudentLeaveCondition"/>
     </select>
+    <select id="countStudentLeave" resultType="java.lang.Integer">
+        select COUNT(sa.id_) from student_attendance sa
+         left join course_schedule cs ON cs.id_ = sa.course_schedule_id_
+         left join sys_user su ON su.id_ = sa.user_id_
+        <include refid="queryStudentLeaveCondition"/>
+    </select>
+    <sql id="queryStudentLeaveCondition">
+        <where>
+            sa.status_ = 'LEAVE'
+            <if test="classGroupId != null">
+                AND sa.class_group_id_ = #{classGroupId}
+            </if>
+            <if test="courseScheduleId != null">
+                AND sa.course_schedule_id_ = #{courseScheduleId}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND cs.class_date_ BETWEEN #{startTime} AND #{endTime}
+            </if>
+            <if test="musicGroupIds != null and musicGroupIds != ''">
+                AND FIND_IN_SET(cs.music_group_id_,#{musicGroupIds})
+            </if>
+            <if test="search != null and search != ''">
+                AND (sa.user_id_ = #{search} OR su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+        </where>
+    </sql>
 </mapper>