Browse Source

Merge branch 'master' of https://gitee.com/zouxuan/mec

zouxuan 5 years ago
parent
commit
5920bbe323

+ 11 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentCourseHomeworkController.java

@@ -2,6 +2,8 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.web.dal.entity.StudentCourseHomework;
+import com.ym.mec.web.dal.enums.YesOrNoEnum;
+import com.ym.mec.web.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.web.service.StudentCourseHomeworkService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -26,6 +28,7 @@ public class StudentCourseHomeworkController extends BaseController {
     @ApiOperation(value = "提交作业")
     @PostMapping(value = "/add",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public Object add(@RequestBody StudentCourseHomework studentCourseHomework){
+        studentCourseHomework.setStatus(YesOrNoEnum.YES);
         studentCourseHomeworkService.insert(studentCourseHomework);
         return succeed();
     }
@@ -33,14 +36,21 @@ public class StudentCourseHomeworkController extends BaseController {
     @ApiOperation(value = "重新提交")
     @PutMapping(value = "/update",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public Object update(@RequestBody StudentCourseHomework studentCourseHomework){
+        studentCourseHomework.setStatus(YesOrNoEnum.YES);
         studentCourseHomeworkService.update(studentCourseHomework);
         return succeed();
     }
 
     @ApiOperation(value = "获取学生作业界面详细信息")
-    @GetMapping(value = "/findCourseHomeworkStudentDetail/{courseScheduleID}",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    @GetMapping(value = "/findCourseHomeworkStudentDetail/{courseScheduleID}")
     public Object findCourseHomeworkStudentDetail(@PathVariable("courseScheduleID") Long courseScheduleID) throws IOException {
         return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID));
     }
 
+    @ApiOperation(value = "分页查询作业列表")
+    @PostMapping(value = "/queryPage",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object queryPage(@RequestBody CourseHomeworkQueryInfo queryInfo){
+        return succeed(studentCourseHomeworkService.queryPage(queryInfo));
+    }
+
 }

+ 17 - 0
mec-web/src/main/java/com/ym/mec/web/dal/dao/StudentCourseHomeworkDao.java

@@ -6,6 +6,8 @@ import com.ym.mec.web.dal.entity.StudentCourseHomework;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.util.List;
+
 public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHomework> {
 
     /**
@@ -23,5 +25,20 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
      */
     CourseHomeworkStudentDetailDto findCourseHomeworkStudentDetail(@Param("courseScheduleID") Long courseScheduleID,
                                                                    @Param("userID") Long userID);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/18
+     * 批量插入学生作业提交记录
+     */
+    int batchInsertStudentCourseHomeworkRecord(List<StudentCourseHomework> studentCourseHomeworks);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/18
+     * 构建初始学生作业提交记录
+     */
+    List<StudentCourseHomework> constructInitialStudentHomeworkRecords(@Param("courseScheduleID") Long courseScheduleID,
+                                                                       @Param("courseHomeworkID") Long courseHomeworkID);
 	
 }

+ 183 - 0
mec-web/src/main/java/com/ym/mec/web/dal/dto/CourseHomeworkListDto.java

@@ -0,0 +1,183 @@
+package com.ym.mec.web.dal.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.ym.mec.web.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/19
+ */
+public class CourseHomeworkListDto {
+
+    /**  */
+    private Long id;
+
+    /**  */
+    private Long courseScheduleId;
+
+    /** 作业内容 */
+    private String content;
+
+    /**  */
+    private java.util.Date createTime;
+
+    @ApiModelProperty(value = "截至日期",required = false)
+    private Date expiryDate;
+
+    /** 上课时间 */
+    @ApiModelProperty(value = "上课时间",required = false)
+    private java.util.Date startClassTime;
+
+    /**  */
+    private Integer musicGroupId;
+
+    @ApiModelProperty(value = "乐团名称",required = false)
+    private String musicGroupName;
+
+    /**  */
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "班级名称",required = false)
+    private String classGroupName;
+
+    @ApiModelProperty(value = "作业完成人数",required = false)
+    private Integer completedNum;
+
+    @ApiModelProperty(value = "预计完成人数",required = false)
+    private Integer expectNum;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @ApiModelProperty(value = "备注",required = false)
+    private String remark;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @ApiModelProperty(value = "提交状态",required = false)
+    private YesOrNoEnum status;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @ApiModelProperty(value = "是否已经回复",required = false)
+    private YesOrNoEnum isReplied;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getExpiryDate() {
+        return expiryDate;
+    }
+
+    public void setExpiryDate(Date expiryDate) {
+        this.expiryDate = expiryDate;
+    }
+
+    public Date getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(Date startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public Integer getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(Integer musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public Integer getCompletedNum() {
+        return completedNum;
+    }
+
+    public void setCompletedNum(Integer completedNum) {
+        this.completedNum = completedNum;
+    }
+
+    public Integer getExpectNum() {
+        return expectNum;
+    }
+
+    public void setExpectNum(Integer expectNum) {
+        this.expectNum = expectNum;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public YesOrNoEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(YesOrNoEnum status) {
+        this.status = status;
+    }
+
+    public YesOrNoEnum getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(YesOrNoEnum isReplied) {
+        this.isReplied = isReplied;
+    }
+}

+ 23 - 0
mec-web/src/main/java/com/ym/mec/web/dal/dto/CourseHomeworkStudentDetailDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.dal.dto;
 
+import com.ym.mec.web.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -37,6 +38,28 @@ public class CourseHomeworkStudentDetailDto {
     @ApiModelProperty(value = "学生作业评分",required = false)
     private Long score;
 
+    @ApiModelProperty(value = "提交状态",required = false)
+    private YesOrNoEnum status;
+
+    @ApiModelProperty(value = "是否已经回复",required = false)
+    private YesOrNoEnum isReplied;
+
+    public YesOrNoEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(YesOrNoEnum status) {
+        this.status = status;
+    }
+
+    public YesOrNoEnum getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(YesOrNoEnum isReplied) {
+        this.isReplied = isReplied;
+    }
+
     public String getMusicGroupName() {
         return musicGroupName;
     }

+ 13 - 0
mec-web/src/main/java/com/ym/mec/web/dal/entity/CourseHomework.java

@@ -3,6 +3,8 @@ package com.ym.mec.web.dal.entity;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.Date;
+
 /**
  * 对应数据库表(course_homework):
  */
@@ -25,6 +27,9 @@ public class CourseHomework {
 	
 	/**  */
 	private java.util.Date updateTime;
+
+	@ApiModelProperty(value = "截至日期",required = false)
+	private Date expiryDate;
 	
 	/**  */
 	private Integer musicGroupId;
@@ -38,6 +43,14 @@ public class CourseHomework {
 	@ApiModelProperty(value = "预计完成人数",required = false)
 	private Integer expectNum;
 
+	public Date getExpiryDate() {
+		return expiryDate;
+	}
+
+	public void setExpiryDate(Date expiryDate) {
+		this.expiryDate = expiryDate;
+	}
+
 	public Integer getCompletedNum() {
 		return completedNum;
 	}

+ 35 - 1
mec-web/src/main/java/com/ym/mec/web/dal/entity/StudentCourseHomework.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.dal.entity;
 
+import com.ym.mec.web.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -28,7 +29,40 @@ public class StudentCourseHomework {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	@ApiModelProperty(value = "备注",required = false)
+	private String remark;
+
+	@ApiModelProperty(value = "提交状态",required = false)
+	private YesOrNoEnum status;
+
+	@ApiModelProperty(value = "是否已经回复",required = false)
+	private YesOrNoEnum isReplied;
+
+	public YesOrNoEnum getIsReplied() {
+		return isReplied;
+	}
+
+	public void setIsReplied(YesOrNoEnum isReplied) {
+		this.isReplied = isReplied;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public YesOrNoEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(YesOrNoEnum status) {
+		this.status = status;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

+ 33 - 0
mec-web/src/main/java/com/ym/mec/web/dal/page/CourseHomeworkQueryInfo.java

@@ -14,6 +14,15 @@ public class CourseHomeworkQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "作业发布时间",required = false)
     private java.util.Date createTime;
 
+    @ApiModelProperty(value = "乐团ID",required = false)
+    private Long musicGroupId;
+
+    @ApiModelProperty(value = "班级ID",required = false)
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "用户ID",required = false)
+    private Long userId;
+
     public Date getCreateTime() {
         return createTime;
     }
@@ -21,4 +30,28 @@ public class CourseHomeworkQueryInfo extends QueryInfo {
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
+
+    public Long getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(Long musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Long getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Long classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
 }

+ 19 - 28
mec-web/src/main/java/com/ym/mec/web/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -1,24 +1,25 @@
 package com.ym.mec.web.service.impl;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.security.SecurityUtils;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.web.dal.dao.StudentCourseHomeworkDao;
 import com.ym.mec.web.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.web.dal.entity.CourseHomework;
 import com.ym.mec.web.dal.entity.StudentCourseHomework;
+import com.ym.mec.web.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.web.service.CourseHomeworkService;
 import com.ym.mec.web.service.StudentCourseHomeworkService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
 import java.io.IOException;
-import java.util.Map;
 
 @Service
 public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, StudentCourseHomework>  implements StudentCourseHomeworkService {
@@ -34,6 +35,9 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 	@Autowired
 	private ObjectMapper objectMapper;
 
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
 	private String url = "http://auth-server/queryUserInfo";
 
 	@Override
@@ -44,21 +48,8 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public long insert(StudentCourseHomework bean) {
-		HttpHeaders headers = new HttpHeaders();
-		headers.add("Authorization", "bearer " + SecurityUtils.getToken());
-		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-
-		HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(null, headers);
-
-		ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
-
-		Map map = null;
-		try {
-			map = objectMapper.readValue(resp.getBody(), Map.class);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		bean.setUserId(Long.valueOf(map.get("id").toString()));
+		SysUser user = sysUserFeignService.queryUserInfo();
+		bean.setUserId(Long.valueOf(user.getId()));
 		long insert = super.insert(bean);
 
 		CourseHomework courseHomework=new CourseHomework();
@@ -70,15 +61,15 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 
 	@Override
 	public CourseHomeworkStudentDetailDto findCourseHomeworkStudentDetail(Long courseScheduleID) throws IOException {
-		HttpHeaders headers = new HttpHeaders();
-		headers.add("Authorization", "bearer " + SecurityUtils.getToken());
-		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-
-		HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(null, headers);
-
-		ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
+		SysUser user = sysUserFeignService.queryUserInfo();
+		return studentCourseHomeworkDao.findCourseHomeworkStudentDetail(courseScheduleID,Long.valueOf(user.getId()));
+	}
 
-		Map map =  objectMapper.readValue(resp.getBody(), Map.class);
-		return studentCourseHomeworkDao.findCourseHomeworkStudentDetail(courseScheduleID,Long.valueOf(map.get("id").toString()));
+	@Override
+	public PageInfo<StudentCourseHomework> queryPage(QueryInfo queryInfo) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		CourseHomeworkQueryInfo courseHomeworkQueryInfo= (CourseHomeworkQueryInfo) queryInfo;
+		courseHomeworkQueryInfo.setUserId(Long.valueOf(user.getId()));
+		return super.queryPage(queryInfo);
 	}
 }

+ 14 - 13
mec-web/src/main/java/com/ym/mec/web/service/impl/TeacherAttendanceServiceImpl.java

@@ -1,17 +1,21 @@
 package com.ym.mec.web.service.impl;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.web.dal.dao.CourseScheduleDao;
 import com.ym.mec.web.dal.dao.StudentAttendanceDao;
+import com.ym.mec.web.dal.dao.StudentCourseHomeworkDao;
 import com.ym.mec.web.dal.dao.TeacherAttendanceDao;
 import com.ym.mec.web.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.web.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.web.dal.dto.TeacherSignOutDto;
 import com.ym.mec.web.dal.entity.CourseHomework;
 import com.ym.mec.web.dal.entity.CourseSchedule;
+import com.ym.mec.web.dal.entity.StudentCourseHomework;
 import com.ym.mec.web.dal.entity.TeacherAttendance;
 import com.ym.mec.web.dal.enums.CourseStatusEnum;
 import com.ym.mec.web.dal.enums.ParamEnum;
@@ -23,8 +27,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 @Service
@@ -38,6 +40,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	private CourseHomeworkService courseHomeworkService;
 	@Autowired
 	private StudentAttendanceDao studentAttendanceDao;
+	@Autowired
+	private StudentCourseHomeworkDao studentCourseHomeworkDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
@@ -47,23 +53,15 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto) {
+		SysUser user = sysUserFeignService.queryUserInfo();
 		TeacherAttendance teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
+		teacherAttendance.setTeacherId(Long.valueOf(user.getId()));
 		CourseSchedule courseSchedule=new CourseSchedule();
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherAttendance.getCourseScheduleId());
 		courseSchedule.setId(currentCourseDetail.getCourseScheduleId());
 		Date date = new Date();
 		if(teacherAttendance.getStatus()!= SignStatusEnum.YES_QUIT){
-			StringBuilder startClassDateTimeString=new StringBuilder(new SimpleDateFormat("yyyy-MM-dd").format(currentCourseDetail.getClassDate()));
-			startClassDateTimeString.append(" ");
-			startClassDateTimeString.append(new SimpleDateFormat("HH:mm:ss").format(currentCourseDetail.getStartClassTime()));
-			Date startClassTime = null;
-			try {
-				startClassTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
-						.parse(startClassDateTimeString.toString());
-			} catch (ParseException e) {
-				e.printStackTrace();
-			}
-			Long timeGap=(date.getTime()-startClassTime.getTime())/1000/60;
+			Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
 			if(timeGap<= ParamEnum.TEACHER_ATTENDANCE_TIME_GAP.getCode()){
 				teacherAttendance.setStatus(SignStatusEnum.SIGN);
 			}else{
@@ -86,6 +84,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			courseHomework.setClassGroupId(currentCourseDetail.getClassId().intValue());
 			courseHomework.setExpectNum(studentAttendanceDao.countNormalAttendanceStudentNums(teacherAttendance.getCourseScheduleId()));
 			courseHomeworkService.insert(courseHomework);
+			List<StudentCourseHomework> studentCourseHomeworks = studentCourseHomeworkDao.constructInitialStudentHomeworkRecords(teacherAttendance.getCourseScheduleId(),
+					courseHomework.getId());
+			studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
 		}
 	}
 

+ 47 - 4
mec-web/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -17,6 +17,25 @@
 		<result column="class_group_id_" property="classGroupId" />
 		<result column="completed_num_" property="completedNum" />
 		<result column="expect_num_" property="expectNum" />
+		<result column="next_class_date_" property="expiryDate" />
+	</resultMap>
+
+	<resultMap type="com.ym.mec.web.dal.dto.CourseHomeworkListDto" id="CourseHomeworkDto">
+		<result column="id_" property="id" />
+		<result column="course_schedule_id_" property="courseScheduleId" />
+		<result column="content_" property="content" />
+		<result column="create_time_" property="createTime" />
+		<result column="start_class_time_" property="startClassTime" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="music_group_name_" property="musicGroupName" />
+		<result column="class_group_id_" property="classGroupId" />
+		<result column="class_group_name_" property="classGroupName" />
+		<result column="completed_num_" property="completedNum" />
+		<result column="expect_num_" property="expectNum" />
+		<result column="next_class_date_" property="expiryDate" />
+		<result column="remark_" property="remark" />
+		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="is_replied_" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -84,16 +103,40 @@
 	<sql id="queryCondition">
 		<where>
 			<if test="createTime != null">
-				DATE_FORMAT(create_time_,"%Y%m%d") = DATE_FORMAT(#{createTime},"%Y%m%d")
+				DATE_FORMAT(ch.create_time_,"%Y%m%d") = DATE_FORMAT(#{createTime},"%Y%m%d")
+			</if>
+			<if test="musicGroupId != null">
+				and ch.music_group_id_ = #{musicGroupId}
+			</if>
+			<if test="classGroupId != null">
+				and ch.class_group_id_ = #{classGroupId}
+			</if>
+			<if test="userId != null">
+				and cs.actual_teacher_id_ = #{userId}
 			</if>
 		</where>
 	</sql>
 	
 	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="CourseHomework" parameterType="map">
-		SELECT * FROM course_homework
+	<select id="queryPage" resultMap="CourseHomeworkDto" parameterType="map">
+		SELECT
+			ch.*,
+			mg.name_ music_group_name_,
+			cg.name_ class_group_name_,
+			temp.next_class_date_
+		FROM course_homework ch
+		LEFT JOIN course_schedule cs ON ch.course_schedule_id_=cs.id_
+		LEFT JOIN music_group mg ON ch.music_group_id_=mg.id_
+		LEFT JOIN class_group cg ON ch.class_group_id_=cg.id_
+		LEFT JOIN (SELECT
+					class_group_id_,
+					MIN(CONCAT( class_date_, ' ', start_class_time_ )) next_class_date_
+					FROM
+					course_schedule
+					WHERE CONCAT( class_date_, ' ', start_class_time_ )>now()
+					GROUP BY class_group_id_) temp ON ch.class_group_id_=temp.class_group_id_
 		<include refid="queryCondition"/>
-		ORDER BY id_
+		ORDER BY ch.id_
 		<include refid="global.limit"/>
 	</select>
 	

+ 1 - 1
mec-web/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -149,7 +149,7 @@
         SELECT
             cs.id_ ,
             cs.class_date_,
-            cs.start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
             cs.end_class_time_,
             cs.status_ course_status_,
             cg.id_ class_id,

+ 102 - 7
mec-web/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -14,6 +14,9 @@
 		<result column="score_" property="score" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
+		<result column="remark_" property="remark" />
+		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="is_replied_" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
 
 	<resultMap type="com.ym.mec.web.dal.dto.CourseHomeworkStudentDetailDto" id="CourseHomeworkStudentDetailDto">
@@ -26,6 +29,8 @@
 		<result column="expect_num_" property="expectNum" />
 		<result column="attachments_" property="attachments" />
 		<result column="score_" property="score" />
+		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="is_replied_" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -45,12 +50,21 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO student_course_homework (id_,user_id_,course_homework_id_,attachments_,score_,create_time_,update_time_) VALUES(#{id},#{userId},#{courseHomeworkId},#{attachments},#{score},now(),now())
+		INSERT INTO student_course_homework (id_,user_id_,course_homework_id_,attachments_,score_,create_time_,update_time_,remark_,status_,is_replied_) VALUES(#{id},#{userId},#{courseHomeworkId},#{attachments},#{score},now(),now(),#{remark},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{isReplied,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
 	</insert>
-	
+
+	<insert id="batchInsertStudentCourseHomeworkRecord" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id_">
+		INSERT INTO student_course_homework (user_id_,course_homework_id_,attachments_,score_,create_time_,update_time_,remark_,status_,is_replied_)
+		VALUE
+		<foreach collection="list" item="homework" separator=",">
+			(#{homework.userId},#{homework.courseHomeworkId},#{homework.attachments},#{homework.score},now(),now(),#{homework.remark},#{homework.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{homework.isReplied,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+		</foreach>
+	</insert>
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.web.dal.entity.StudentCourseHomework">
-		UPDATE student_course_homework <set>
+		UPDATE student_course_homework
+		<set>
 			<if test="id != null">
 			id_ = #{id},
 			</if>
@@ -69,6 +83,15 @@
 			<if test="createTime != null">
 			create_time_ = #{createTime},
 			</if>
+			<if test="remark != null">
+				remark_ = #{remark},
+			</if>
+			<if test="status != null">
+				status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="isReplied != null">
+				is_replied_ = #{isReplied,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
 		</set> WHERE id_ = #{id}
 	</update>
 	
@@ -76,15 +99,73 @@
 	<delete id="delete" >
 		DELETE FROM student_course_homework WHERE id_ = #{id} 
 	</delete>
+
+	<resultMap type="com.ym.mec.web.dal.dto.CourseHomeworkListDto" id="CourseHomeworkDto">
+		<result column="id_" property="id" />
+		<result column="course_schedule_id_" property="courseScheduleId" />
+		<result column="content_" property="content" />
+		<result column="create_time_" property="createTime" />
+		<result column="start_class_time_" property="startClassTime" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="music_group_name_" property="musicGroupName" />
+		<result column="class_group_id_" property="classGroupId" />
+		<result column="class_group_name_" property="classGroupName" />
+		<result column="completed_num_" property="completedNum" />
+		<result column="expect_num_" property="expectNum" />
+		<result column="next_class_date_" property="expiryDate" />
+		<result column="remark_" property="remark" />
+		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="is_replied_" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+	</resultMap>
+
+	<sql id="queryCondition">
+		<where>
+			<if test="createTime != null">
+				DATE_FORMAT(ch.create_time_,"%Y%m%d") = DATE_FORMAT(#{createTime},"%Y%m%d")
+			</if>
+			<if test="musicGroupId != null">
+				and ch.music_group_id_ = #{musicGroupId}
+			</if>
+			<if test="classGroupId != null">
+				and ch.class_group_id_ = #{classGroupId}
+			</if>
+			<if test="userId != null">
+				and sch.user_id_ = #{userId}
+			</if>
+		</where>
+	</sql>
 	
 	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="StudentCourseHomework" parameterType="map">
-		SELECT * FROM student_course_homework ORDER BY id_ <include refid="global.limit"/>
+	<select id="queryPage" resultMap="CourseHomeworkDto" parameterType="map">
+		SELECT
+		ch.*,
+		mg.name_ music_group_name_,
+		cg.name_ class_group_name_,
+		temp.next_class_date_,
+		sch.remark_,
+		sch.status_,
+		sch.is_replied_
+		FROM student_course_homework sch
+		LEFT JOIN course_homework ch ON sch.course_homework_id_=ch.id_
+		LEFT JOIN course_schedule cs ON ch.course_schedule_id_=cs.id_
+		LEFT JOIN music_group mg ON ch.music_group_id_=mg.id_
+		LEFT JOIN class_group cg ON ch.class_group_id_=cg.id_
+		LEFT JOIN (SELECT
+		class_group_id_,
+		MIN(CONCAT( class_date_, ' ', start_class_time_ )) next_class_date_
+		FROM
+		course_schedule
+		WHERE CONCAT( class_date_, ' ', start_class_time_ )>now()
+		GROUP BY class_group_id_) temp ON ch.class_group_id_=temp.class_group_id_
+		<include refid="queryCondition"/>
+		ORDER BY ch.id_
+		<include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM student_course_homework
+		SELECT COUNT(*) FROM student_course_homework sch
+		<include refid="queryCondition"/>
 	</select>
 	<select id="findCourseHomeworkStudentDetail" resultMap="CourseHomeworkStudentDetailDto">
 		SELECT
@@ -96,7 +177,9 @@
 			ch.completed_num_,
 			ch.expect_num_,
 			sch.attachments_,
-			sch.score_
+			sch.score_,
+			sch.status_,
+			sch.is_replied_
 		FROM
 			course_homework ch
 		LEFT JOIN student_course_homework sch ON ch.id_=sch.course_homework_id_
@@ -104,4 +187,16 @@
 		LEFT JOIN class_group cg ON ch.class_group_id_=cg.id_
 		WHERE ch.course_schedule_id_=#{courseScheduleID} AND sch.user_id_=#{userID}
 	</select>
+	<select id="constructInitialStudentHomeworkRecords" resultMap="StudentCourseHomework">
+		SELECT
+			#{courseHomeworkID} course_homework_id_,
+			sa.user_id_,
+			0 status_,
+			0 is_replied_
+		FROM
+			student_attendance sa
+		WHERE
+			sa.course_schedule_id_ = #{courseScheduleID}
+			AND status_ = "NORMAL"
+	</select>
 </mapper>