浏览代码

add:老师默认课酬导出

yonge 5 年之前
父节点
当前提交
bedf19674f

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImUserModel;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -471,4 +472,6 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     int countStudent(Map<String, Object> params);
+    
+    List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(Integer organId);
 }

+ 236 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherDefaultSalaryDto.java

@@ -0,0 +1,236 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.math.BigDecimal;
+
+public class TeacherDefaultSalaryDto {
+
+	private Integer userId;
+	
+	private String realName;
+	
+	private String organName;
+	
+	private String jobNature;
+	
+	private String demissionStatus;
+	
+	private String status;
+	
+	private BigDecimal vip1 = new BigDecimal(0);
+	
+	private BigDecimal vip2 = new BigDecimal(0);
+	
+	private BigDecimal vip3 = new BigDecimal(0);
+	
+	private BigDecimal vip4 = new BigDecimal(0);
+	
+	private BigDecimal vip5 = new BigDecimal(0);
+	
+	private BigDecimal practiceSalary = new BigDecimal(0);
+	
+	private BigDecimal singleSalary = new BigDecimal(0);
+	
+	private BigDecimal mixSalary = new BigDecimal(0);
+	
+	private BigDecimal comprehensiveSalary = new BigDecimal(0);
+	
+	private BigDecimal traningSigleSalary = new BigDecimal(0);
+	
+	private BigDecimal traningMixSalary = new BigDecimal(0);
+	
+	private BigDecimal highSalary = new BigDecimal(0);
+	
+	private BigDecimal classroomSalary = new BigDecimal(0);
+	
+	private BigDecimal highOnline3Salary = new BigDecimal(0);
+	
+	private BigDecimal highOnline4Salary = new BigDecimal(0);
+	
+	private BigDecimal highOnline5Salary = new BigDecimal(0);
+	
+	private BigDecimal musicNetwork1Salary = new BigDecimal(0);
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public String getRealName() {
+		return realName;
+	}
+
+	public void setRealName(String realName) {
+		this.realName = realName;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
+	public String getJobNature() {
+		return jobNature;
+	}
+
+	public void setJobNature(String jobNature) {
+		this.jobNature = jobNature;
+	}
+
+	public String getDemissionStatus() {
+		return demissionStatus;
+	}
+
+	public void setDemissionStatus(String demissionStatus) {
+		this.demissionStatus = demissionStatus;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public BigDecimal getVip1() {
+		return vip1;
+	}
+
+	public void setVip1(BigDecimal vip1) {
+		this.vip1 = vip1;
+	}
+
+	public BigDecimal getVip2() {
+		return vip2;
+	}
+
+	public void setVip2(BigDecimal vip2) {
+		this.vip2 = vip2;
+	}
+
+	public BigDecimal getVip3() {
+		return vip3;
+	}
+
+	public void setVip3(BigDecimal vip3) {
+		this.vip3 = vip3;
+	}
+
+	public BigDecimal getVip4() {
+		return vip4;
+	}
+
+	public void setVip4(BigDecimal vip4) {
+		this.vip4 = vip4;
+	}
+
+	public BigDecimal getVip5() {
+		return vip5;
+	}
+
+	public void setVip5(BigDecimal vip5) {
+		this.vip5 = vip5;
+	}
+
+	public BigDecimal getPracticeSalary() {
+		return practiceSalary;
+	}
+
+	public void setPracticeSalary(BigDecimal practiceSalary) {
+		this.practiceSalary = practiceSalary;
+	}
+
+	public BigDecimal getSingleSalary() {
+		return singleSalary;
+	}
+
+	public void setSingleSalary(BigDecimal singleSalary) {
+		this.singleSalary = singleSalary;
+	}
+
+	public BigDecimal getMixSalary() {
+		return mixSalary;
+	}
+
+	public void setMixSalary(BigDecimal mixSalary) {
+		this.mixSalary = mixSalary;
+	}
+
+	public BigDecimal getComprehensiveSalary() {
+		return comprehensiveSalary;
+	}
+
+	public void setComprehensiveSalary(BigDecimal comprehensiveSalary) {
+		this.comprehensiveSalary = comprehensiveSalary;
+	}
+
+	public BigDecimal getTraningSigleSalary() {
+		return traningSigleSalary;
+	}
+
+	public void setTraningSigleSalary(BigDecimal traningSigleSalary) {
+		this.traningSigleSalary = traningSigleSalary;
+	}
+
+	public BigDecimal getTraningMixSalary() {
+		return traningMixSalary;
+	}
+
+	public void setTraningMixSalary(BigDecimal traningMixSalary) {
+		this.traningMixSalary = traningMixSalary;
+	}
+
+	public BigDecimal getHighSalary() {
+		return highSalary;
+	}
+
+	public void setHighSalary(BigDecimal highSalary) {
+		this.highSalary = highSalary;
+	}
+
+	public BigDecimal getClassroomSalary() {
+		return classroomSalary;
+	}
+
+	public void setClassroomSalary(BigDecimal classroomSalary) {
+		this.classroomSalary = classroomSalary;
+	}
+
+	public BigDecimal getHighOnline3Salary() {
+		return highOnline3Salary;
+	}
+
+	public void setHighOnline3Salary(BigDecimal highOnline3Salary) {
+		this.highOnline3Salary = highOnline3Salary;
+	}
+
+	public BigDecimal getHighOnline4Salary() {
+		return highOnline4Salary;
+	}
+
+	public void setHighOnline4Salary(BigDecimal highOnline4Salary) {
+		this.highOnline4Salary = highOnline4Salary;
+	}
+
+	public BigDecimal getHighOnline5Salary() {
+		return highOnline5Salary;
+	}
+
+	public void setHighOnline5Salary(BigDecimal highOnline5Salary) {
+		this.highOnline5Salary = highOnline5Salary;
+	}
+
+	public BigDecimal getMusicNetwork1Salary() {
+		return musicNetwork1Salary;
+	}
+
+	public void setMusicNetwork1Salary(BigDecimal musicNetwork1Salary) {
+		this.musicNetwork1Salary = musicNetwork1Salary;
+	}
+}

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -186,4 +186,11 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @return
      */
     PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo);
+    
+    /**
+     * 查询老师默认课酬
+     * @param organId
+     * @return
+     */
+    List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(Integer organId);
 }

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

@@ -24,6 +24,7 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.idcard.IdcardValidator;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -581,4 +582,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		return pageInfo;
 	}
 
+	@Override
+	public List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(Integer organId) {
+		return teacherDao.queryTeacherDefaultSalary(organId);
+	}
+
 }

+ 62 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -55,6 +55,32 @@
         <result column="subject_name_" property="splitSubjectName"/>
         <result column="id_card_no_" property="idCardNo"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.TeacherDefaultSalaryDto" id="TeacherDefaultSalaryDto">
+        <result column="id_" property="userId"/>
+        <result column="real_name_" property="realName"/>
+        <result column="name_" property="organName"/>
+        <result column="job_nature" property="jobNature"/>
+        <result column="demisson_status" property="demissionStatus" />
+        <result column="status_" property="status"
+        <result column="vip1" property="vip1"/>
+        <result column="vip2" property="vip2"/>
+        <result column="vip3" property="vip3"/>
+        <result column="vip4" property="vip4"/>
+        <result column="vip5" property="vip5"/>
+        <result column="practice" property="practiceSalary"/>
+        <result column="single" property="singleSalary"/>
+        <result column="mix" property="mixSalary"/>
+        <result column="comprehensive" property="comprehensiveSalary"/>
+        <result column="training_single" property="traningSigleSalary"/>
+        <result column="training_mix" property="traningMixSalary"/>
+        <result column="high" property="highSalary"/>
+        <result column="classroom" property="classroomSalary"/>
+        <result column="high_online3" property="highOnline3Salary"/>
+        <result column="high_online4" property="highOnline4Salary"/>
+        <result column="high_online5" property="highOnline5Salary"/>
+        <result column="music_network1" property="musicNetwork1Salary"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Teacher">
@@ -1108,4 +1134,40 @@
         SELECT COUNT(s.user_id_) FROM student s
         WHERE s.teacher_id_ = #{search}
     </select>
+    
+    <select id="queryTeacherDefaultSalary" resultMap="TeacherDefaultSalaryDto">
+    	SELECT t.`id_` ,su.`real_name_` ,o.`name_` ,
+		case when t.`job_nature_` = 'PART_TIME' then '兼职' when  t.`job_nature_` = 'FULL_TIME' then '全职' else '临时工' end job_nature,
+		case when t.`demission_date_` IS NULL then '在职' else '离职' end 在职状态 demisson_status, 
+		case when su.`lock_flag_` = 1 then '冻结' WHEN su.`lock_flag_` = 9 then '锁定' else '正常' end status_,
+		max(case when gc.`name_` = '1V1' then gs.`offline_classes_salary_` else 0 end) vip1,
+		max(case when gc.`name_` = '1V2' then gs.`offline_classes_salary_` else 0 end) vip2,
+		max(case when gc.`name_` = '1V3' then gs.`offline_classes_salary_` else 0 end) vip3,
+		max(case when gc.`name_` = '1V4' then gs.`offline_classes_salary_` else 0 end) vip4,
+		max(case when gc.`name_` = '1V5' then gs.`offline_classes_salary_` else 0 end) vip5,
+		max(pgs.main_teacher_salary_) practice,
+		MAX(case when mgs.course_schedule_type_ = 'SINGLE' then mgs.main_teacher_90min_salary_ ELSE 0 END) single,
+		MAX(case when mgs.course_schedule_type_ = 'MIX' then mgs.main_teacher_90min_salary_ ELSE 0 END) mix,
+		MAX(case when mgs.course_schedule_type_ = 'COMPREHENSIVE' then mgs.main_teacher_90min_salary_ ELSE 0 END) comprehensive,
+		MAX(case when mgs.course_schedule_type_ = 'TRAINING_SINGLE' then mgs.main_teacher_90min_salary_ ELSE 0 END) training_single,
+		MAX(case when mgs.course_schedule_type_ = 'TRAINING_MIX' then mgs.main_teacher_90min_salary_ ELSE 0 END) training_mix,
+		MAX(case when mgs.course_schedule_type_ = 'HIGH' then mgs.main_teacher_90min_salary_ ELSE 0 END) high,
+		MAX(case when mgs.course_schedule_type_ = 'CLASSROOM' then mgs.main_teacher_90min_salary_ ELSE 0 END) classroom,
+		MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."3"'),DECIMAL) END) high_online3,
+		MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."4"'),DECIMAL) END) high_online4,
+		MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."5"'),DECIMAL) END) high_online5,
+		MAX(case when mgs.course_schedule_type_ = 'MUSIC_NETWORK' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."1"'),DECIMAL) END) music_network1
+		FROM `teacher` t LEFT JOIN `sys_user` su on t.`id_` = su.`id_` 
+		LEFT JOIN `organization` o on o.`id_` = t.`organ_id_` 
+		LEFT JOIN `teacher_default_vip_group_salary` gs on gs.`user_id_` = t.`id_`
+		LEFT JOIN `vip_group_category` gc on gc.`id_` = gs.`vip_group_category_id_`
+		LEFT JOIN teacher_default_practice_group_salary pgs ON pgs.user_id_ = t.id_
+		LEFT JOIN teacher_default_music_group_salary mgs ON mgs.user_id_ = t.id_
+		<where>
+			<if test="organId != null">
+                AND t.organ_id_ = #{organId}
+            </if>
+		</where>
+		GROUP BY t.`id_` 
+    </select>
 </mapper>

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

@@ -92,6 +92,9 @@ public class ExportController extends BaseController {
 
     @Autowired
     private CooperationOrganService cooperationOrganService;
+    
+    @Autowired
+    private TeacherService teacherService;
 
     @ApiOperation(value = "导出教师考勤列表")
     @PostMapping("export/queryTeacherAttendances")
@@ -1798,4 +1801,49 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+
+    @ApiOperation(value = "老师默认课酬导出")
+    @RequestMapping("export/teacherDefaultSalary")
+    @PreAuthorize("@pcs.hasPermissions('export/teacherDefaultSalary')")
+	public void exportTeacherDefaultSalary(Integer organId, HttpServletResponse response) throws IOException {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			throw new IOException("用户信息获取失败");
+		}
+		List<TeacherDefaultSalaryDto> pageList = teacherService.queryTeacherDefaultSalary(organId);
+		if (pageList.size() <= 0) {
+			response.setStatus(200);
+			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 {
+
+			String[] header = { "老师编号", "姓名", "分部", "工作类型", "在职状态", "老师状态", "1v1", "1v2", "1v3", "1v4", "1v5", "网管课", "单技课", "合奏课", "综合课", "集训单技课", "集训合奏课",
+					"基础技能课", "课堂课", "线上基础技能课1v3", "线上基础技能课1v4", "线上基础技能课1v5", "乐团网管课1v1" };
+			String[] body = { "userId", "realName", "organName", "jobNature", "demissionStatus", "status", "vip1", "vip2", "vip3", "vip4", "vip5",
+					"practiceSalary", "singleSalary", "mixSalary", "comprehensiveSalary", "traningSigleSalary", "traningMixSalary", "highSalary",
+					"classroomSalary", "highOnline3Salary", "highOnline4Salary", "highOnline5Salary", "musicNetwork1Salary" };
+			HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList);
+			response.setContentType("application/octet-stream");
+			response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + 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();
+				}
+			}
+		}
+	}
 }