Selaa lähdekoodia

班级详情接口

肖玮 5 vuotta sitten
vanhempi
commit
4b8cf695ba

+ 10 - 1
mec-education/src/main/java/com/ym/mec/education/base/BaseResponse.java

@@ -1,5 +1,6 @@
 package com.ym.mec.education.base;
 
+import com.ym.mec.education.enums.ReturnCodeEnum;
 import javax.persistence.MappedSuperclass;
 import java.io.Serializable;
 
@@ -28,4 +29,12 @@ public class BaseResponse<T> extends Response implements Serializable {
     public String toString() {
         return "BaseResponse(super=" + super.toString() + ", dataInfo=" + this.getDataInfo() + ")";
     }
-}
+
+    public static BaseResponse success(Object dataInfo) {
+        BaseResponse baseResponse = new BaseResponse<>();
+        baseResponse.setReturnCode(ReturnCodeEnum.CODE_200.getCode());
+        baseResponse.setMessage(ReturnCodeEnum.CODE_200.getValue());
+        baseResponse.setDataInfo(dataInfo);
+        return baseResponse;
+    }
+}

+ 44 - 0
mec-education/src/main/java/com/ym/mec/education/controller/ClassGroupController.java

@@ -0,0 +1,44 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.BaseResponse;
+import com.ym.mec.education.enums.ReturnCodeEnum;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.service.IClassGroupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+/**
+ * @program: mec
+ * @description: 班级
+ * @author: xw
+ * @create: 2019-09-26 14:03
+ */
+@RestController
+@RequestMapping("api/ClassGroup")
+@Api(tags = "班级")
+@Slf4j
+public class ClassGroupController {
+
+    @Autowired
+    private IClassGroupService classGroupService;
+
+    @PostMapping("/info")
+    @ApiOperation("班级详情")
+    public BaseResponse getInfo(@RequestBody ClassGroupReq classGroupReq) {
+        if (Objects.nonNull(classGroupReq.getClassGroupId())) {
+            BaseResponse baseResponse = new BaseResponse();
+            baseResponse.setReturnCode(ReturnCodeEnum.CODE_206.getCode());
+            baseResponse.setMessage(ReturnCodeEnum.CODE_206.getValue());
+            return baseResponse;
+        }
+        return classGroupService.getInfo(classGroupReq);
+    }
+}

+ 11 - 10
mec-education/src/main/java/com/ym/mec/education/controller/StudentAttendanceController.java

@@ -1,8 +1,14 @@
 package com.ym.mec.education.controller;
 
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.StudentAttendanceReq;
 import com.ym.mec.education.service.IStudentAttendanceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -14,22 +20,17 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("api/studentAttendance")
+@Api(tags = "学生考勤")
 @Slf4j
 public class StudentAttendanceController {
 
     @Autowired
     private IStudentAttendanceService studentAttendanceService;
 
-    /*@PostMapping("/page")
+    @PostMapping("/page")
+    @ApiOperation("点名记录列表")
     public PageResponse page(@RequestBody StudentAttendanceReq studentAttendanceReq) {
-        Page<StudentAttendance> page = new Page(studentAttendanceReq.getPageNo(), studentAttendanceReq.getPageSize());
-        QueryWrapper<StudentAttendance> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(Objects.nonNull(studentAttendanceReq.getMusicGroupId()),
-                StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
-                .eq(Objects.nonNull(studentAttendanceReq.getClassGroupId()),
-                        StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId());
-        IPage<StudentAttendance> pageResult = studentAttendanceService.page(page, queryWrapper);
-        return PageResponse.success(pageResult);
-    }*/
+        return studentAttendanceService.getPage(studentAttendanceReq);
+    }
 
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/CourseScheduleMapper.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.CourseSchedule;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 
 /**
  * <p>

+ 19 - 0
mec-education/src/main/java/com/ym/mec/education/req/ClassGroupReq.java

@@ -0,0 +1,19 @@
+package com.ym.mec.education.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @program: mec
+ * @description: 班级入参
+ * @author: xw
+ * @create: 2019-09-26 14:12
+ */
+@Data
+@ApiModel(description = "班级入参")
+public class ClassGroupReq {
+
+    @ApiModelProperty(value = "班级id",required = true)
+    public Integer classGroupId;
+}

+ 15 - 0
mec-education/src/main/java/com/ym/mec/education/resp/ClassGroupResp.java

@@ -1,5 +1,7 @@
 package com.ym.mec.education.resp;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.ToString;
 
@@ -16,6 +18,7 @@ import java.util.List;
 
 @Data
 @ToString
+@ApiModel(description = "班级出参")
 public class ClassGroupResp implements Serializable {
     private Integer id;
     private Integer musicGroupId;
@@ -59,4 +62,16 @@ public class ClassGroupResp implements Serializable {
 
     private List<String> secdTehNameList;
 
+    @ApiModelProperty(value = "授课老师",required = true)
+    private String teacher;
+
+    @ApiModelProperty(value = "授课老师",required = true)
+    private String assistant;
+
+    @ApiModelProperty(value = "课程进度",required = true)
+    private String courseProgress;
+
+    @ApiModelProperty(value = "班级名称",required = true)
+    private String classGroupName;
+
 }

+ 37 - 0
mec-education/src/main/java/com/ym/mec/education/resp/StudentAttendanceResq.java

@@ -0,0 +1,37 @@
+package com.ym.mec.education.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @program: mec
+ * @description: 考勤出参
+ * @author: xw
+ * @create: 2019-09-26 15:24
+ */
+@Data
+@ApiModel(description = "考勤出参")
+@Accessors(chain = true)
+public class StudentAttendanceResq implements Serializable {
+
+    @ApiModelProperty(value = "上课日期",required = true)
+    @DateTimeFormat(pattern = "MM月dd日")
+    private Date classDate;
+
+    @ApiModelProperty(value = "上课时间",required = true)
+    private String classTime;
+
+    @ApiModelProperty(value = "班级名称",required = true)
+    private String classGroupName;
+
+    @ApiModelProperty(value = "到课比",required = true)
+    private String attendanceRate;
+
+    @ApiModelProperty(value = "请假人数",required = true)
+    private Integer leaveNum;
+}

+ 4 - 0
mec-education/src/main/java/com/ym/mec/education/service/IClassGroupService.java

@@ -1,7 +1,10 @@
 package com.ym.mec.education.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.resp.ClassGroupResp;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.ym.mec.education.entity.ClassGroup;
  */
 public interface IClassGroupService extends IService<ClassGroup> {
 
+    BaseResponse<ClassGroupResp> getInfo(ClassGroupReq classGroupReq);
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/ICourseScheduleService.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.education.entity.CourseSchedule;
-import com.baomidou.mybatisplus.service.IService;
 
 /**
  * <p>

+ 4 - 0
mec-education/src/main/java/com/ym/mec/education/service/IStudentAttendanceService.java

@@ -1,7 +1,9 @@
 package com.ym.mec.education.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.StudentAttendance;
+import com.ym.mec.education.req.StudentAttendanceReq;
 
 /**
  * <p>
@@ -13,4 +15,6 @@ import com.ym.mec.education.entity.StudentAttendance;
  */
 public interface IStudentAttendanceService extends IService<StudentAttendance> {
 
+    PageResponse getPage(StudentAttendanceReq studentAttendanceReq);
+
 }

+ 44 - 0
mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupServiceImpl.java

@@ -1,10 +1,23 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.entity.ClassGroupTeacherMapper;
+import com.ym.mec.education.enums.ReturnCodeEnum;
 import com.ym.mec.education.mapper.ClassGroupMapper;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.resp.ClassGroupResp;
 import com.ym.mec.education.service.IClassGroupService;
+import com.ym.mec.education.service.IClassGroupTeacherMapperService;
+import com.ym.mec.education.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +30,35 @@ import org.springframework.stereotype.Service;
 @Service
 public class ClassGroupServiceImpl extends ServiceImpl<ClassGroupMapper, ClassGroup> implements IClassGroupService {
 
+    @Autowired
+    private IClassGroupTeacherMapperService classGroupTeacherMapperService;
+    @Autowired
+    private ISysUserService userService;
+
+    @Override
+    public BaseResponse<ClassGroupResp> getInfo(ClassGroupReq classGroupReq) {
+        BaseResponse<ClassGroupResp> baseResponse = new BaseResponse<>();
+        ClassGroup classGroup = getById(classGroupReq.getClassGroupId());
+        if (Objects.isNull(classGroup)) {
+            baseResponse.setReturnCode(ReturnCodeEnum.CODE_207.getCode());
+            baseResponse.setMessage(ReturnCodeEnum.CODE_207.getValue());
+            return baseResponse;
+        }
+        QueryWrapper<ClassGroupTeacherMapper> teacherMapperQueryWrapper = new QueryWrapper<>();
+        teacherMapperQueryWrapper.lambda().eq(true, ClassGroupTeacherMapper::getClassGroupId, classGroupReq.getClassGroupId());
+        ClassGroupResp classGroupResp = new ClassGroupResp();
+        List<ClassGroupTeacherMapper> teacherMapperList = classGroupTeacherMapperService.list(teacherMapperQueryWrapper);
+        if (!CollectionUtils.isEmpty(teacherMapperList)) {
+            teacherMapperList.stream().filter(item -> "TEACHING".equals(item.getTeacherRole())).findFirst().
+                    ifPresent(classGroupTeacherMapper -> classGroupResp.
+                            setTeacher(userService.getById(classGroupTeacherMapper.getUserId()).getUsername()));
+            teacherMapperList.stream().filter(item -> "BISHOP".equals(item.getTeacherRole())).findFirst().
+                    ifPresent(classGroupTeacherMapper -> classGroupResp.
+                            setAssistant(userService.getById(classGroupTeacherMapper.getUserId()).getUsername()));
+        }
+        classGroupResp.setStudentNum(classGroup.getStudentNum());
+        classGroupResp.setCourseProgress(classGroup.getCurrentClassTimes() + "/" + classGroup.getTotalClassTimes());
+        classGroupResp.setClassGroupName(classGroup.getName());
+        return BaseResponse.success(classGroupResp);
+    }
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/CourseScheduleServiceImpl.java

@@ -1,9 +1,9 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.education.entity.CourseSchedule;
 import com.ym.mec.education.mapper.CourseScheduleMapper;
 import com.ym.mec.education.service.ICourseScheduleService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**

+ 62 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/StudentAttendanceServiceImpl.java

@@ -1,10 +1,25 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.google.common.collect.Lists;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.entity.CourseSchedule;
 import com.ym.mec.education.entity.StudentAttendance;
 import com.ym.mec.education.mapper.StudentAttendanceMapper;
+import com.ym.mec.education.req.StudentAttendanceReq;
+import com.ym.mec.education.resp.StudentAttendanceResq;
+import com.ym.mec.education.service.IClassGroupService;
+import com.ym.mec.education.service.ICourseScheduleService;
 import com.ym.mec.education.service.IStudentAttendanceService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -14,7 +29,53 @@ import org.springframework.stereotype.Service;
  * @author lemeng
  * @since 2019-09-25
  */
-@Service
+@Service("iStudentAttendanceService")
 public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceMapper, StudentAttendance> implements IStudentAttendanceService {
 
+    @Autowired
+    private ICourseScheduleService courseScheduleService;
+    @Autowired
+    private IClassGroupService groupService;
+
+    @Override
+    public PageResponse getPage(StudentAttendanceReq studentAttendanceReq) {
+        Page<StudentAttendance> pageParam = new Page(studentAttendanceReq.getPageNo(), studentAttendanceReq.getPageSize());
+        QueryWrapper<StudentAttendance> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Objects.nonNull(studentAttendanceReq.getMusicGroupId()),
+                StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
+                .eq(Objects.nonNull(studentAttendanceReq.getClassGroupId()),
+                        StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId());
+        IPage<StudentAttendance> page = page(pageParam, queryWrapper);
+        IPage<StudentAttendanceResq> pageResult = new Page<>();
+        BeanUtils.copyProperties(page, pageResult);
+        List<StudentAttendanceResq> list = Lists.newArrayList();
+        QueryWrapper<StudentAttendance> leaveWrapper = new QueryWrapper<>();
+        QueryWrapper<StudentAttendance> normalWrapper = new QueryWrapper<>();
+        //总人数
+        Integer totalCount = count();
+        //请假
+        leaveWrapper.lambda().eq(true, StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
+                .eq(true, StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId())
+                .eq(true, StudentAttendance::getStatus, "LEAVE");
+        Integer leaveCount = count(leaveWrapper);
+        //正常
+        normalWrapper.lambda().eq(true, StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
+                .eq(true, StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId())
+                .eq(true, StudentAttendance::getStatus, "NORMAL");
+        Integer normalCount = count(normalWrapper);
+        page.getRecords().forEach(item ->{
+            StudentAttendanceResq studentAttendanceResq = new StudentAttendanceResq();
+            QueryWrapper<CourseSchedule> courseScheduleQueryWrapper = new QueryWrapper<>();
+            courseScheduleQueryWrapper.lambda().eq(true, CourseSchedule::getClassGroupId, studentAttendanceReq.getClassGroupId());
+            CourseSchedule courseSchedule = courseScheduleService.getOne(courseScheduleQueryWrapper);
+            ClassGroup classGroup = groupService.getById(studentAttendanceReq.getClassGroupId());
+            studentAttendanceResq.setClassDate(courseSchedule.getClassDate())
+                    .setClassTime(courseSchedule.getStartClassTime() + "-" + courseSchedule.getEndClassTime())
+                    .setClassGroupName(classGroup.getName())
+                    .setLeaveNum(leaveCount).setAttendanceRate(normalCount + "/" + totalCount);
+            list.add(studentAttendanceResq);
+        });
+        pageResult.setRecords(list);
+        return PageResponse.success(pageResult);
+    }
 }