瀏覽代碼

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父節點
當前提交
56f2f8f882

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
+import com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
@@ -308,4 +309,11 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 */
 	int deleteByGroup(@Param("groupId") String groupId,
 					  @Param("groupType")GroupType groupType);
+
+	/**
+	 * 教师课酬列表
+	 * @param params
+	 * @return
+	 */
+    List<ExportTeacherSalaryDto> exportTeacherSalary(Map<String, Object> params);
 }

+ 246 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportTeacherSalaryDto.java

@@ -0,0 +1,246 @@
+package com.ym.mec.biz.dal.dto;
+
+public class ExportTeacherSalaryDto{
+
+    //课时编号
+    private Integer courseScheduleId;
+
+    //老师编号
+    private  Integer teacherId;
+
+    //老师姓名
+    private Integer teacherName;
+
+    //老师分部
+    private Integer teacherOrganName;
+
+    //工作类别
+    private String jobType;
+
+    //课程分部
+    private String courseScheduleOrganName;
+
+    //课程班名称(乐团名或者小课名)
+    private String groupName;
+
+    //乐团模式
+    private String changeType;
+
+    //活动名称
+    private String activeName;
+
+    //线上课/线下课	线上课单价	线下课单价	课程类别	课时时长	上课日期	上课时间	签到状态	签退状态	签到时间	签退时间
+    private String teachMode;
+
+    //课程单价
+    private String price;
+
+    private String courseScheduleType;
+
+    private int signCourseScheduleTime;
+
+    private String classDate;
+
+    private String courseScheduleStartTime;
+
+    private String courseScheduleEndTime;
+
+    private String signOutStatus;
+
+    private String signInStatus;
+
+    private String signInTime;
+
+    private String signOutTime;
+
+    //课时课酬	主辅	上课地点	应到学员
+    private String teacherRole;
+
+    private String address;
+
+    private int studentNum;
+
+    public String getCourseScheduleEndTime() {
+        return courseScheduleEndTime;
+    }
+
+    public void setCourseScheduleEndTime(String courseScheduleEndTime) {
+        this.courseScheduleEndTime = courseScheduleEndTime;
+    }
+
+    public Integer getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Integer courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(Integer teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Integer getTeacherOrganName() {
+        return teacherOrganName;
+    }
+
+    public void setTeacherOrganName(Integer teacherOrganName) {
+        this.teacherOrganName = teacherOrganName;
+    }
+
+    public String getJobType() {
+        return jobType;
+    }
+
+    public void setJobType(String jobType) {
+        this.jobType = jobType;
+    }
+
+    public String getCourseScheduleOrganName() {
+        return courseScheduleOrganName;
+    }
+
+    public void setCourseScheduleOrganName(String courseScheduleOrganName) {
+        this.courseScheduleOrganName = courseScheduleOrganName;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getChangeType() {
+        return changeType;
+    }
+
+    public void setChangeType(String changeType) {
+        this.changeType = changeType;
+    }
+
+    public String getActiveName() {
+        return activeName;
+    }
+
+    public void setActiveName(String activeName) {
+        this.activeName = activeName;
+    }
+
+    public String getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(String teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getCourseScheduleType() {
+        return courseScheduleType;
+    }
+
+    public void setCourseScheduleType(String courseScheduleType) {
+        this.courseScheduleType = courseScheduleType;
+    }
+
+    public int getSignCourseScheduleTime() {
+        return signCourseScheduleTime;
+    }
+
+    public void setSignCourseScheduleTime(int signCourseScheduleTime) {
+        this.signCourseScheduleTime = signCourseScheduleTime;
+    }
+
+    public String getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(String classDate) {
+        this.classDate = classDate;
+    }
+
+    public String getCourseScheduleStartTime() {
+        return courseScheduleStartTime;
+    }
+
+    public void setCourseScheduleStartTime(String courseScheduleStartTime) {
+        this.courseScheduleStartTime = courseScheduleStartTime;
+    }
+
+    public String getSignOutStatus() {
+        return signOutStatus;
+    }
+
+    public void setSignOutStatus(String signOutStatus) {
+        this.signOutStatus = signOutStatus;
+    }
+
+    public String getSignInStatus() {
+        return signInStatus;
+    }
+
+    public void setSignInStatus(String signInStatus) {
+        this.signInStatus = signInStatus;
+    }
+
+    public String getSignInTime() {
+        return signInTime;
+    }
+
+    public void setSignInTime(String signInTime) {
+        this.signInTime = signInTime;
+    }
+
+    public String getSignOutTime() {
+        return signOutTime;
+    }
+
+    public void setSignOutTime(String signOutTime) {
+        this.signOutTime = signOutTime;
+    }
+
+    public String getTeacherRole() {
+        return teacherRole;
+    }
+
+    public void setTeacherRole(String teacherRole) {
+        this.teacherRole = teacherRole;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public int getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(int studentNum) {
+        this.studentNum = studentNum;
+    }
+}

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExportTeacherSalaryQueryInfo.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class ExportTeacherSalaryQueryInfo extends QueryInfo {
+
+    private Boolean isExport = false;
+
+    public Boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(Boolean export) {
+        isExport = export;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -1,11 +1,13 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
 import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
+import com.ym.mec.biz.dal.page.ExportTeacherSalaryQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -71,4 +73,11 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @return void
      */
     void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer studentChangeNum, VipGroupStatusEnum vipGroupStatusEnum);
+
+    /**
+     * 老师课程课酬列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<ExportTeacherSalaryDto> exportTeacherSalary(ExportTeacherSalaryQueryInfo queryInfo);
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1,10 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
+import com.ym.mec.biz.dal.page.ExportTeacherSalaryQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
@@ -678,4 +680,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
         classGroupTeacherSalaryDao.update(classGroupTeacherSalary);
     }
+
+    @Override
+    public PageInfo<ExportTeacherSalaryDto> exportTeacherSalary(ExportTeacherSalaryQueryInfo queryInfo) {
+        //课时编号	老师编号	老师姓名	老师分部	工作类别	课程分部
+        //课程班名称(乐团名或者小课名)	乐团模式	活动名称	线上课/线下课	线上课单价
+        //线下课单价	上课形式	课程类别	课时时长	上课日期	上课时间	签到状态
+        //签退状态	签到时间	签退时间	课时课酬	主辅	上课地点	应到学员
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<ExportTeacherSalaryDto> exportTeacherSalaryDtos = courseScheduleTeacherSalaryDao.exportTeacherSalary(params);
+        //乐团课
+        //vip课
+        //陪练课
+        return null;
+    }
 }

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

@@ -1973,6 +1973,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             });
             musicGroupStudentFeeDao.batchUpdate(fees);
         }
+        musicGroup.setUpdateTime(date);
         musicGroupDao.update(musicGroup);
         //修改课程里面的教学点
         if (!musicGroup.getSchoolId().equals(musicGroup.getSchoolId())) {

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

@@ -88,7 +88,7 @@
 
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="AppVersionInfo" parameterType="map">
-		SELECT * FROM app_version_info ORDER BY id_
+		SELECT * FROM app_version_info ORDER BY id_ DESC
 		<include refid="global.limit" />
 	</select>
 

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

@@ -482,4 +482,54 @@
 		GROUP BY
 			user_id_
 	</select>
+	<resultMap id="ExportTeacherSalaryDtoMap" type="com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto">
+		<result property="signOutTime" column="signOutTime"/>
+		<result property="signInTime" column="signInTime"/>
+		<result property="teacherName" column="teacherName"/>
+		<result property="groupName" column="groupName"/>
+		<result property="studentNum" column="studentNum"/>
+		<result property="teacherId" column="teacherId"/>
+		<result property="activeName" column="activeName"/>
+		<result property="courseScheduleType" column="courseScheduleType"/>
+		<result property="signOutStatus" column="signOutStatus"/>
+		<result property="signInStatus" column="signInStatus"/>
+		<result property="teacherRole" column="teacherRole"/>
+		<result property="classDate" column="classDate"/>
+		<result property="teachMode" column="teachMode"/>
+		<result property="courseScheduleId" column="courseScheduleId"/>
+		<result property="jobType" column="jobType"/>
+		<result property="address" column="address"/>
+		<result property="price" column="price"/>
+		<result property="changeType" column="changeType"/>
+		<result property="courseScheduleOrganName" column="courseScheduleOrganName"/>
+		<result property="courseScheduleStartTime" column="courseScheduleStartTime"/>
+		<result property="courseScheduleEndTime" column="courseScheduleEndTime"/>
+		<result property="signCourseScheduleTime" column="signCourseScheduleTime"/>
+		<result property="teacherOrganName" column="teacherOrganName"/>
+ 	</resultMap>
+    <select id="exportTeacherSalary" resultType="com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto">
+		SELECT cs.`id_` courseScheduleId ,mg.name_ groupName,ct.name_ changeType,u.real_name_ teacherName,o.name_ teacherOrganName,
+		CASE WHEN t.job_nature_ = 'PART_TIME' THEN '兼职' WHEN t.job_nature_ = 'FULL_TIME' THEN '全职' ELSE '零时工' END jobType,
+		CASE WHEN cs.type_ = 'SINGLE' THEN '单技课' WHEN cs.type_ = 'MIX' THEN '合奏课' WHEN cs.type_ = 'HIGH' THEN '小班课'  WHEN cs.type_ = 'VIP' THEN 'vip课'
+		WHEN cs.type_ = 'DEMO' THEN '试听课'  WHEN cs.type_ = 'COMPREHENSIVE' THEN '综合课'  WHEN cs.type_ = 'PRACTICE' THEN '练习课'  WHEN cs.type_ = 'ENLIGHTENMENT' THEN '启蒙课'
+		WHEN cs.type_ = 'TRAINING_SINGLE' THEN '集训单技课'  WHEN cs.type_ = 'TRAINING_MIX' THEN '集训合奏课'  ELSE '课堂课' END courseScheduleType,
+		cs.class_date_ classDate,cs.start_class_time_ courseScheduleStartTime,cs.end_class_time_ courseScheduleEndTime,ts.expect_salary_ price,s.name_ address,
+		CASE WHEN ts.teacher_role_ = 'TEACHING' THEN '助教' ELSE '主教' END teacherRole,
+		CASE WHEN ta.sign_in_status_ = 0 THEN '异常' WHEN ta.sign_in_status_ = 1 THEN '正常' END signInStatus,
+		CASE WHEN ta.sign_out_status_=0 THEN '异常' WHEN ta.sign_out_status_ = 1 THEN '正常' END signOutStatus,
+		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(sp.id_) studentNum
+		FROM course_schedule_teacher_salary ts
+		LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
+		LEFT JOIN `teacher_attendance` ta ON ta.`teacher_id_` = ts.`user_id_` AND ta.`course_schedule_id_` = ts.`course_schedule_id_`
+		LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+		LEFT JOIN sys_user u ON ts.user_id_= u.id_
+		LEFT JOIN teacher t ON t.id_ = ts.user_id_
+		LEFT JOIN organization o ON o.id_ = t.organ_id_
+		LEFT JOIN school s ON s.id_ = cs.schoole_id_
+		LEFT JOIN course_schedule_student_payment sp ON sp.course_schedule_id_ = ts.course_schedule_id_
+		LEFT JOIN music_group mg ON (mg.id_ = ts.music_group_id_ AND ts.group_type_ = 'MUSIC')
+		LEFT JOIN charge_type ct ON ct.id_ = mg.charge_type_id_
+		WHERE cs.class_date_ BETWEEN '2020-01-01' AND '2020-01-31' AND (cs.`del_flag_` != 1 OR cs.`del_flag_` IS NULL ) AND cs.group_type_ = 'MUSIC'
+		GROUP BY ts.course_schedule_id_,ts.`user_id_`
+	</select>
 </mapper>

+ 6 - 0
mec-web/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java

@@ -10,6 +10,7 @@ import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,11 +31,13 @@ public class AppVersionInfoController extends BaseController {
 
 	@ApiOperation("分页查询")
 	@GetMapping(value = "/list")
+	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/list')")
 	public Object getList(QueryInfo queryInfo) {
 		return succeed(appVersionInfoService.queryPage(queryInfo));
 	}
 
 	@ApiOperation("根据app客户端查询对象")
+	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/queryByPlatform')")
 	@ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType = "path")
 	@GetMapping(value = "/queryByPlatform")
 	public Object queryByPlatform(String platform) {
@@ -48,6 +51,7 @@ public class AppVersionInfoController extends BaseController {
 	@ApiOperation("单查询")
 	@ApiImplicitParam(name = "id", value = "ID编号", required = true, dataType = "Integer", paramType = "path")
 	@GetMapping(value = "/query")
+	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/query')")
 	public Object query(Integer id) {
 
 		return succeed(appVersionInfoService.get(id));
@@ -55,6 +59,7 @@ public class AppVersionInfoController extends BaseController {
 
 	@ApiOperation("新增")
 	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/add')")
 	public Object add(AppVersionInfo appVersionInfo) {
 		Date date = new Date();
 		appVersionInfo.setCreateTime(date);
@@ -69,6 +74,7 @@ public class AppVersionInfoController extends BaseController {
 
 	@ApiOperation("更新")
 	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/update')")
 	public Object update(AppVersionInfo appVersionInfo) {
 		Date date = new Date();
 		appVersionInfo.setUpdateTime(date);

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

@@ -67,6 +67,35 @@ public class ExportController extends BaseController {
     @Autowired
     private SporadicChargeInfoService sporadicChargeInfoService;
 
+    @ApiOperation(value = "导出老师课酬")
+    @PostMapping("export/teacherSalary")
+    @PreAuthorize("@pcs.hasPermissions('export/teacherSalary')")
+    public void teacherSalary(HttpServletResponse response, ExportTeacherSalaryQueryInfo queryInfo) {
+        queryInfo.setRows(99999);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        queryInfo.setIsExport(true);
+        List<ExportTeacherSalaryDto> rows = courseScheduleTeacherSalaryService.exportTeacherSalary(queryInfo).getRows();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
+                    "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态"}, new String[]{
+                    "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
+                    "isActive.msg","hasCourse.msg","isMake.msg","hasPracticeCourse.msg","courseBalance","musicGroupName",
+                    "subjectName","musicGroupStatus","vipGroupName","vipGroupStatus"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
     @ApiOperation(value = "导出学员列表")
     @PostMapping("export/studentHasCourse")
     @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")