Forráskód Böngészése

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 éve
szülő
commit
d0b2fcb6b9

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleReviewDao.java

@@ -120,6 +120,7 @@ public interface CourseScheduleReviewDao extends BaseDAO<Integer, CourseSchedule
 
     /**
      * 线上课评价列表
+     *
      * @param params
      * @return
      */
@@ -127,8 +128,23 @@ public interface CourseScheduleReviewDao extends BaseDAO<Integer, CourseSchedule
 
     /**
      * 线上课评价统计
+     *
      * @param params
      * @return
      */
     Integer countOnlineCourseReviews(Map<String, Object> params);
+
+    /**
+     * vip课评价列表
+     * @param params
+     * @return
+     */
+    List<CourseReviewDto> getVipCourseReviewList(Map<String, Object> params);
+
+    /**
+     * vip课评价统计
+     * @param params
+     * @return
+     */
+    Integer countVipCourseReviews(Map<String, Object> params);
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java

@@ -107,5 +107,11 @@ public interface CourseReviewService extends BaseService<Integer, CourseSchedule
 	 */
 	CourseHomework addHomeWork(Integer courseScheduleId,String content, Date expiryDate);
 
+	/**
+	 * 获取网管课列表
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<CourseReviewDto> getVipCourseReviews(CourseReviewQueryInfo queryInfo);
 
 }

+ 33 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

@@ -282,8 +282,12 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         ReviewInfoDto reviewInfoDto = new ReviewInfoDto();
         reviewInfoDto.setCourseScheduleReview(courseScheduleReview);
         reviewInfoDto.setTeacherClassHeadInfo(teacherClassGroupInfo);
+        Long studentId = null;
+        if (courseScheduleReview.getStudentId() != null) {
+            studentId = courseScheduleReview.getStudentId().longValue();
+        }
         //学生评价
-        CourseScheduleComplaintsDto courseScheduleComplaint = courseScheduleComplaintsDao.findByUserIdAndCourseId(courseScheduleReview.getStudentId().longValue(), courseScheduleReview.getCourseScheduleId().longValue());
+        CourseScheduleComplaintsDto courseScheduleComplaint = courseScheduleComplaintsDao.findByUserIdAndCourseId(studentId, courseScheduleReview.getCourseScheduleId().longValue());
         if (courseScheduleComplaint != null) {
             List<CourseScheduleComplaintsDto> courseScheduleComplaints = new ArrayList<>();
             courseScheduleComplaints.add(courseScheduleComplaint);
@@ -603,4 +607,32 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
         return courseHomework;
     }
+
+    @Override
+    public PageInfo<CourseReviewDto> getVipCourseReviews(CourseReviewQueryInfo queryInfo) {
+        PageInfo<CourseReviewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<CourseReviewDto> dataList = null;
+        int count = courseScheduleReviewDao.countVipCourseReviews(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = courseScheduleReviewDao.getVipCourseReviewList(params);
+            if (dataList != null && dataList.size() > 0) {
+                Set<Integer> organIds = dataList.stream().map(CourseReviewDto::getOrganId).collect(Collectors.toSet());
+                Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+                dataList.forEach(e -> {
+                    e.setOrganName(organNames.get(e.getOrganId()));
+                });
+            }
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+
+    }
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -99,9 +99,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
 				// 创建缴费明细
 				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
-					if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
+					/*if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
 						continue;
-					}
+					}*/
 					musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 					musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
 					musicGroupPaymentCalenderDetail.setCreateTime(date);
@@ -227,9 +227,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				Set<Integer> studentIds = new HashSet<Integer>();
 				// 创建缴费明细
 				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
-					if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
+					/*if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
 						continue;
-					}
+					}*/
 					musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 					musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(mgpc.getId());
 					musicGroupPaymentCalenderDetail.setCreateTime(date);

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -84,7 +84,7 @@ public class StudentServeServiceImpl implements StudentServeService {
                 noClassStudentIds.add(studentCoursesEntry.getKey());
                 continue;
             }
-            if(studentServeDto.getCourseStartTime().after(nextMonday)){
+            if(!nextMonday.before(studentServeDto.getCourseStartTime())){
                 dontServeInCurrentWeekStudentIds.add(studentCoursesEntry.getKey());
                 continue;
             }

+ 20 - 12
mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml

@@ -5,7 +5,7 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao">
-	
+
 	<resultMap type="com.ym.mec.biz.dal.entity.CourseScheduleComplaints" id="CourseScheduleComplaints">
 		<result column="id_" property="id" />
 		<result column="user_id_" property="userId" />
@@ -20,27 +20,27 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="score_" property="score" />
 	</resultMap>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="CourseScheduleComplaints" >
-		SELECT * FROM course_schedule_complaints WHERE id_ = #{id} 
+		SELECT * FROM course_schedule_complaints WHERE id_ = #{id}
 	</select>
-	
+
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="CourseScheduleComplaints">
 		SELECT * FROM course_schedule_complaints ORDER BY id_
 	</select>
-	
+
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleComplaints" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		<selectKey resultClass="int" keyProperty="id" >
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
 		</selectKey>
 		-->
 		INSERT INTO course_schedule_complaints (id_,user_id_,course_schedule_id_,reason_,status_,wf_process_id_,wf_order_id_,create_time_,update_time_,teacher_liability_ratio_,student_liability_ratio_,score_) VALUES(#{id},#{userId},#{courseScheduleId},#{reason},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{wfProcessId},#{wfOrderId},now(),now(),#{teacherLiabilityRatio},#{studentLiabilityRatio},#{score})
 	</insert>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleComplaints">
 		UPDATE course_schedule_complaints
@@ -80,10 +80,10 @@
 			</if>
 		</set> WHERE id_ = #{id}
 	</update>
-	
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
-		DELETE FROM course_schedule_complaints WHERE id_ = #{id} 
+		DELETE FROM course_schedule_complaints WHERE id_ = #{id}
 	</delete>
     <delete id="delByCourseScheduleId">
 		DELETE FROM course_schedule_complaints WHERE course_schedule_id_ = #{courseScheduleId}
@@ -99,7 +99,7 @@
 	<select id="queryPage" resultMap="CourseScheduleComplaints" parameterType="map">
 		SELECT * FROM course_schedule_complaints WHERE score_ &lt;= 2 ORDER BY id_ <include refid="global.limit"/>
 	</select>
-	
+
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM course_schedule_complaints
@@ -131,7 +131,15 @@
 	<select id="findByUserIdAndCourseId" resultMap="CourseScheduleComplaintsDtoMap">
 		SELECT su.username_,csc.reason_,csc.score_,su.avatar_ FROM course_schedule_complaints csc
 		LEFT JOIN sys_user su on csc.user_id_ = su.id_
-		WHERE user_id_=#{userId} AND course_schedule_id_=#{courseScheduleId} LIMIT 1
+		<where>
+			<if test="userId != null">
+				user_id_=#{userId}
+			</if>
+			<if test="courseScheduleId != null">
+				AND course_schedule_id_=#{courseScheduleId}
+			</if>
+		</where>
+		LIMIT 1
 	</select>
 
 	<select id="findByCourseIdAndUserId" resultMap="CourseScheduleComplaints">

+ 80 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml

@@ -132,6 +132,7 @@
     <resultMap id="CourseReviewDto" type="com.ym.mec.biz.dal.dto.CourseReviewDto">
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="subject_id_" jdbcType="INTEGER" property="subjectId"/>
+        <result column="subject_name_" jdbcType="INTEGER" property="subjectName"/>
         <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
         <result column="class_date_" jdbcType="DATE" property="classDate"/>
         <result column="course_name_" jdbcType="VARCHAR" property="courseName"/>
@@ -474,4 +475,83 @@
             </if>
         </where>
     </sql>
+
+    <select id="getVipCourseReviewList" resultMap="CourseReviewDto">
+        SELECT cs.id_,cs.actual_teacher_id_ teacher_id ,cs.class_date_, (SELECT group_concat(name_) FROM subject sb WHERE FIND_IN_SET(id_,cg.subject_id_list_)) AS
+        subject_name_ ,vg.organ_id_,cs.name_
+        course_name_,su.real_name_ teacher_name_,edsu.real_name_
+        edu_teacher_name_,csr.id_ review_id_,csr.hand_homework_,csr.course_review_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
+        csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,
+        CASE WHEN ch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_
+        FROM course_schedule cs
+        LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_ AND cs.group_type_='VIP'
+        LEFT JOIN class_group cg ON cg.music_group_id_=vg.id_ AND cg.group_type_ = 'VIP'
+        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
+        LEFT JOIN sys_user edsu ON vg.educational_teacher_id_ = edsu.id_
+        LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
+        LEFT JOIN course_homework ch on ch.course_schedule_id_ = cs.id_
+        <include refid="vipGroupReviewsQueryCondition"/>
+        ORDER BY cs.class_date_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="countVipCourseReviews" resultType="java.lang.Integer">
+        SELECT count(*) FROM course_schedule cs
+        LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_ AND cs.group_type_='VIP'
+        LEFT JOIN class_group cg ON cg.music_group_id_=vg.id_ AND cg.group_type_ = 'VIP'
+        LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
+        LEFT JOIN course_homework ch on ch.course_schedule_id_ = cs.id_
+        <include refid="vipGroupReviewsQueryCondition"/>
+    </select>
+
+    <sql id="vipGroupReviewsQueryCondition">
+        <where>
+            AND vg.id_ > 0 AND cs.group_type_='VIP' AND cs.status_='OVER' AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL)
+            <if test="search!=null and search!=''">
+                AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
+            </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(vg.organ_id_,#{organId})
+            </if>
+            <if test="teacherId != null">
+                AND cs.actual_teacher_id_=#{teacherId}
+            </if>
+            <if test="eduTeacherId != null">
+                AND vg.educational_teacher_id_=#{eduTeacherId}
+            </if>
+            <if test='hasReview !=null and hasReview=="1"'>
+                AND csr.id_ > 0
+            </if>
+            <if test='hasReview !=null and hasReview=="0"'>
+                AND csr.id_ IS NULL
+            </if>
+            <if test='hasHandHomework !=null and hasHandHomework=="1"'>
+                AND csr.hand_homework_ = 1
+            </if>
+            <if test='hasHandHomework !=null and hasHandHomework=="0"'>
+                AND csr.hand_homework_ IS NULL
+            </if>
+            <if test="assignHomework != null and assignHomework == 1">
+                AND ch.id_>0
+            </if>
+            <if test="assignHomework != null and assignHomework ==0">
+                AND ch.id_ IS NULL
+            </if>
+            <if test='hasLiaison !=null and hasLiaison=="1"'>
+                AND csr.has_liaison_ = 1
+            </if>
+            <if test='hasLiaison !=null and hasLiaison=="0"'>
+                AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
+            </if>
+            <if test="courseReview != null">
+                AND csr.course_review_=#{courseReview}
+            </if>
+            <if test="startTime !=null">
+                <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
+            </if>
+            <if test="endTime !=null">
+                <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
+            </if>
+        </where>
+    </sql>
 </mapper>

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -895,6 +895,7 @@
 			AND csts.settlement_time_ IS NOT NULL
 			AND csts.user_id_ = #{teacherId}
 			AND DATE_FORMAT( cs.class_date_, '%Y' ) = #{year}
+			AND DATE_FORMAT(cs.class_date_, '%Y-%m')&lt;DATE_FORMAT(NOW(), '%Y-%m')
 		GROUP BY DATE_FORMAT( cs.class_date_, '%Y-%m' )
 	</select>
 	<select id="findTeacherSalaryIdsWithMonth" resultType="java.lang.Long">

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -395,10 +395,11 @@
             s.teacher_id_,
             cs.group_type_,
             cs.teach_mode_,
-            CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) course_start_time_
+            IF(CONCAT( cs.class_date_, ' ', cs.end_class_time_ )<NOW() AND sa.id_ IS NULL, NULL, cs.class_date_) course_start_time_
         FROM
             student s
             LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = s.user_id_
+	        LEFT JOIN student_attendance sa ON cssp.course_schedule_id_=sa.course_schedule_id_ AND sa.user_id_=cssp.user_id_
             LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
             AND cs.group_type_ IN ('VIP', 'PRACTICE')
             AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > #{monday}

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java

@@ -82,7 +82,7 @@ public class CourseReviewController extends BaseController {
         return succeed(courseReviewService.getStuAndTeaReview(courseId));
     }
 
-    @ApiOperation(value = "网管课课程评论管理")
+    @ApiOperation(value = "VIP课课程评论管理")
     @GetMapping("getVipGroup")
     @PreAuthorize("@pcs.hasPermissions('courseReview/getVipGroup')")
     public Object getVipGroup(CourseReviewQueryInfo queryInfo) {
@@ -103,7 +103,7 @@ public class CourseReviewController extends BaseController {
                 }
             }
         }
-        return succeed(courseReviewService.findPracticeGroupReviews(queryInfo));
+        return succeed(courseReviewService.getVipCourseReviews(queryInfo));
     }
 
 }

+ 87 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1449,4 +1449,91 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "vip评论列表导出")
+    @RequestMapping("export/vipCourseReviews")
+    @PreAuthorize("@pcs.hasPermissions('export/vipCourseReviews')")
+    public void vipCourseReviews(CourseReviewQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }
+        queryInfo.setIsExport(1);
+        queryInfo.setRows(99999);
+        PageInfo<CourseReviewDto> practiceGroupReviews = courseReviewService.getVipCourseReviews(queryInfo);
+        if (practiceGroupReviews.getTotal() <= 0) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            for (CourseReviewDto row : practiceGroupReviews.getRows()) {
+                row.setClassDateStr(DateUtil.dateToString(row.getClassDate(), "yyyy-MM-dd"));
+                if (row.getHandHomework() != null && row.getHandHomework() > 0) {
+                    row.setHandHomeworkStr("是");
+                } else {
+                    row.setHandHomeworkStr("否");
+                }
+                if (row.getHasLiaison() != null && row.getHasLiaison().equals("1")) {
+                    row.setHasLiaison("是");
+                } else {
+                    row.setHasLiaison("否");
+                }
+                if (row.getCreateTime() != null) {
+                    row.setCreateTimeStr(DateUtil.dateToString(row.getCreateTime(), "yyyy-MM-dd"));
+                }
+                if (row.getPronunciation() != null) {
+                    row.setPronunciationStr(row.getPronunciation() + "星");
+                }
+                if (row.getTempo() != null) {
+                    row.setTempoStr(row.getTempo() + "星");
+                }
+                if (row.getMusicTheory() != null) {
+                    row.setMusicTheoryStr(row.getMusicTheory() + "星");
+                }
+                if (row.getHomeWorkReplied() != null && row.getHomeWorkReplied().equals("1")) {
+                    row.setHomeWorkReplied("已回复");
+                } else if (row.getHandHomework() != null && row.getHandHomework() > 0) {
+                    row.setHomeWorkReplied("未回复");
+                } else {
+                    row.setHomeWorkReplied(null);
+                }
+                if (row.getAttendanceId() != null) {
+                    row.setAttendanceStr("是");
+                } else {
+                    row.setAttendanceStr("否");
+                }
+                if(new Integer(1).equals(row.getAssignHomework())){
+                    row.setAssignHomeworkStr("是");
+                }else{
+                    row.setAssignHomeworkStr("否");
+                }
+            }
+
+            String[] header = {"分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置作业)", "是否布置作业", "是否提交作业", "教务老师", "教务评价"};
+            String[] body = {"organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr", "handHomeworkStr", "eduTeacherName", "courseReview"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
 }