Преглед на файлове

Merge remote-tracking branch 'origin/master'

周箭河 преди 5 години
родител
ревизия
5f0310b96c

+ 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(@Param("organId") 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;
+	}
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -151,6 +151,8 @@ public class MusicGroup {
 	private OwnershipType ownershipType;
 	
 	private FeeType feeType;
+	
+	private Boolean delFlag;
 
 	private String subjectName;
 
@@ -492,6 +494,14 @@ public class MusicGroup {
 		this.feeType = feeType;
 	}
 
+	public Boolean getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(Boolean delFlag) {
+		this.delFlag = delFlag;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -76,6 +76,13 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param musicGroupId 乐团编号
 	 */
 	boolean cancelMusicGroup(String musicGroupId);
+	
+	/**
+	 * 删除乐团
+	 * @param musicGroupId 乐团编号
+	 * @return
+	 */
+	boolean deleteMusicGroup(String musicGroupId);
 
 	/**
 	 * 暂停乐团

+ 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);
 }

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

@@ -25,6 +25,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -1256,6 +1257,30 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
+	public boolean deleteMusicGroup(String musicGroupId) {
+
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        
+        if(musicGroup == null){
+        	throw new BizException("乐团不存在");
+        }
+        
+        if(musicGroup.getDelFlag() == true){
+        	throw new BizException("乐团已删除");
+        }
+        
+        if (musicGroup.getStatus() != MusicGroupStatusEnum.CANCELED) {
+            throw new BizException("乐团当前状态是{},不能删除", musicGroup.getStatus().getMsg());
+        }
+        
+        musicGroup.setUpdateTime(new Date());
+        musicGroup.setDelFlag(true);
+        musicGroupDao.update(musicGroup);
+        
+		return true;
+	}
+
+	@Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean pauseMusicGroup(String musicGroupId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();

+ 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);
+	}
+
 }

+ 7 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -35,6 +35,7 @@
         <result column="ownership_type_" property="ownershipType"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="fee_type_" property="feeType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -67,7 +68,7 @@
          bill_start_date_, improvent_classes_num_, enroll_classes_, payment_expire_date_, is_extra_class_,
          settlement_type_, cooperation_organ_id_, enlightenment_course_time_,
          parent_meeting_time_, img_, director_user_id_, is_classroom_lessons_, memo_, expect_start_group_date_,
-         ownership_type_, repair_user_id_, fee_type_)
+         ownership_type_, repair_user_id_, fee_type_,del_flag)
         VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{teamTeacherId}, #{educationalTeacherId},
                 #{chargeTypeId}, #{courseForm}, now(), now(),
                 #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{billStartDate},
@@ -77,7 +78,7 @@
                 #{cooperationOrganId}, #{enlightenmentCourseTime}, #{parentMeetingTime}, #{img}, #{directorUserId},
                 #{isClassroomLessons}, #{memo}, #{expectStartGroupDate},
                 #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{repairUserId},
-                #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+                #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{delFlag})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -163,6 +164,9 @@
             <if test="memo != null">
                 memo_ = #{memo},
             </if>
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -183,6 +187,7 @@
 
     <sql id="musicGroupQueryPageSql">
         <where>
+        	del_flag_ = 0
             <if test="organId != null">
                 AND FIND_IN_SET(organ_id_,#{organId})
             </if>

+ 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>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -143,6 +143,9 @@
 			<if test="enable != null and enable == false">
 				AND (NOW() >= end_time_ OR NOW() &lt;= start_time_)
 			</if>
+			<if test="search != null and search != ''">
+				AND (vga.id_=#{search} OR vga.name_ LIKE CONCAT('%', #{search}, '%'))
+			</if>
 		</where>
 	</sql>
 

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

@@ -95,6 +95,9 @@ public class ExportController extends BaseController {
     @Autowired
     private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
 
+    @Autowired
+    private TeacherService teacherService;
+
     @ApiOperation(value = "导出教师考勤列表")
     @PostMapping("export/queryTeacherAttendances")
     @PreAuthorize("@pcs.hasPermissions('export/queryTeacherAttendances')")
@@ -1972,4 +1975,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();
+				}
+			}
+		}
+	}
 }

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -222,6 +222,15 @@ public class MusicGroupController extends BaseController {
 		return succeed();
 	}
 
+	@ApiOperation(value = "删除乐团")
+	@PostMapping("/deleteMusicGroup")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/deleteMusicGroup')")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String") })
+	public Object deleteMusicGroup(String musicGroupId) {
+		musicGroupService.deleteMusicGroup(musicGroupId);
+		return succeed();
+	}
+
 	@ApiOperation(value = "暂停乐团")
 	@PostMapping("/pauseMusicGroup")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/pauseMusicGroup')")