فهرست منبع

管乐迷需求迭代

zouxuan 2 سال پیش
والد
کامیت
e474b00e24

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -523,4 +523,8 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     * @date 2022/12/7 14:00
     */
     List<Map<String, String>> queryMusicEduMap(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    List<Map<Integer, String>> queryUserEduMap(@Param("userIdList") List<Integer> userIdList);
+
+    List<Map<Integer, String>> queryUserCoopMap(@Param("userIdList") List<Integer> userIdList);
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentCourseConsumerDetailDto.java

@@ -25,6 +25,28 @@ public class StudentCourseConsumerDetailDto {
     @ApiModelProperty(value = "已排课时")
     private Integer courseNum;
 
+    @ApiModelProperty(value = "乐团主管")
+    private String eduNames;
+
+    @ApiModelProperty(value = "合作单位")
+    private String coopNames;
+
+    public String getEduNames() {
+        return eduNames;
+    }
+
+    public void setEduNames(String eduNames) {
+        this.eduNames = eduNames;
+    }
+
+    public String getCoopNames() {
+        return coopNames;
+    }
+
+    public void setCoopNames(String coopNames) {
+        this.coopNames = coopNames;
+    }
+
     public Integer getCourseNum() {
         return courseNum;
     }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseConsumerService.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.page.StudentCourseConsumerQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 
 import java.util.List;
+import java.util.Map;
 
 public interface StudentCourseConsumerService{
     //实际课耗列表
@@ -15,12 +16,16 @@ public interface StudentCourseConsumerService{
     //实际课耗学员详情列表
     PageInfo<StudentCourseConsumerDetailDto> queryCourseConsumerDetail(StudentCourseConsumerQueryInfo queryInfo);
 
+    List<StudentCourseConsumerDetailDto> findCourseConsumerDetail(Map<String, Object> params);
+
     //预计课耗列表
     List<StudentCourseConsumerDto> queryPreCourseConsumer(StudentCourseConsumerQueryInfo queryInfo);
 
     //预计课耗学员详情列表
     PageInfo<StudentCourseConsumerDetailDto> queryPreCourseConsumerDetail(StudentCourseConsumerQueryInfo queryInfo);
 
+    List<StudentCourseConsumerDetailDto> findPreCourseConsumerDetail(Map<String, Object> params);
+
     //课耗统计
     List<StudentCourseConsumerSumDto> queryCourseConsumerSum(StudentCourseConsumerQueryInfo queryInfo);
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1500,7 +1500,7 @@ public class ExportServiceImpl implements ExportService {
         int count = studentStatisticsDao.countCourseConsumerDetail(params);
         checkRows(count);
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_COURSE_CONSUMER_DETAIL,user.getId());
-        return this.asyncExport(() -> this.initExportInfo(studentStatisticsDao.queryCourseConsumerDetail(params), managerDownload,ExportEnum.EXPORT_COURSE_CONSUMER_DETAIL),
+        return this.asyncExport(() -> this.initExportInfo(studentCourseConsumerService.findCourseConsumerDetail(params), managerDownload,ExportEnum.EXPORT_COURSE_CONSUMER_DETAIL),
                 managerDownload.getName());
     }
     private HttpResponseResult exportPreCourseConsumer(Map<String, Object> info){
@@ -1523,7 +1523,7 @@ public class ExportServiceImpl implements ExportService {
         int count = studentStatisticsDao.countPreCourseConsumerDetail(params);
         checkRows(count);
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_PRE_COURSE_CONSUMER_DETAIL,user.getId());
-        return this.asyncExport(() -> this.initExportInfo(studentStatisticsDao.queryPreCourseConsumerDetail(params), managerDownload,ExportEnum.EXPORT_PRE_COURSE_CONSUMER_DETAIL),
+        return this.asyncExport(() -> this.initExportInfo(studentCourseConsumerService.findPreCourseConsumerDetail(params), managerDownload,ExportEnum.EXPORT_PRE_COURSE_CONSUMER_DETAIL),
                 managerDownload.getName());
     }
     private HttpResponseResult exportCourseConsumerSum(Map<String, Object> info){

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

@@ -1,12 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.StudentStatisticsDao;
 import com.ym.mec.biz.dal.dto.StudentCourseConsumerDetailDto;
 import com.ym.mec.biz.dal.dto.StudentCourseConsumerDto;
 import com.ym.mec.biz.dal.dto.StudentCourseConsumerSumDto;
 import com.ym.mec.biz.dal.page.StudentCourseConsumerQueryInfo;
 import com.ym.mec.biz.service.StudentCourseConsumerService;
-import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -16,12 +16,15 @@ import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class StudentCourseConsumerServiceImpl implements StudentCourseConsumerService {
 
     @Autowired
     private StudentStatisticsDao studentStatisticsDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
 
 
     @Override
@@ -50,6 +53,24 @@ public class StudentCourseConsumerServiceImpl implements StudentCourseConsumerSe
     }
 
     @Override
+    public List<StudentCourseConsumerDetailDto> findCourseConsumerDetail(Map<String, Object> params) {
+        List<StudentCourseConsumerDetailDto> dataList = studentStatisticsDao.queryCourseConsumerDetail(params);
+        if(CollectionUtils.isEmpty(dataList)){
+            return dataList;
+        }
+        List<Integer> userIdList = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+        //获取用户关联的乐团主管map
+        Map<Integer,String> eduMap = MapUtil.convertMybatisMap(musicGroupDao.queryUserEduMap(userIdList));
+        //获取用户关联的合作单位的map
+        Map<Integer,String> coopMap = MapUtil.convertMybatisMap(musicGroupDao.queryUserCoopMap(userIdList));
+        for (StudentCourseConsumerDetailDto dto : dataList) {
+            dto.setEduNames(eduMap.get(dto.getUserId()));
+            dto.setCoopNames(coopMap.get(dto.getUserId()));
+        }
+        return dataList;
+    }
+
+    @Override
     public List<StudentCourseConsumerDto> queryPreCourseConsumer(StudentCourseConsumerQueryInfo queryInfo) {
         return studentStatisticsDao.queryPreCourseConsumer(queryInfo);
     }
@@ -75,6 +96,24 @@ public class StudentCourseConsumerServiceImpl implements StudentCourseConsumerSe
     }
 
     @Override
+    public List<StudentCourseConsumerDetailDto> findPreCourseConsumerDetail(Map<String, Object> params) {
+        List<StudentCourseConsumerDetailDto> dataList = studentStatisticsDao.queryPreCourseConsumerDetail(params);
+        if(CollectionUtils.isEmpty(dataList)){
+            return dataList;
+        }
+        List<Integer> userIdList = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+        //获取用户关联的乐团主管map
+        Map<Integer,String> eduMap = MapUtil.convertMybatisMap(musicGroupDao.queryUserEduMap(userIdList));
+        //获取用户关联的合作单位的map
+        Map<Integer,String> coopMap = MapUtil.convertMybatisMap(musicGroupDao.queryUserCoopMap(userIdList));
+        for (StudentCourseConsumerDetailDto dto : dataList) {
+            dto.setEduNames(eduMap.get(dto.getUserId()));
+            dto.setCoopNames(coopMap.get(dto.getUserId()));
+        }
+        return dataList;
+    }
+
+    @Override
     public List<StudentCourseConsumerSumDto> queryCourseConsumerSum(StudentCourseConsumerQueryInfo queryInfo) {
         List<StudentCourseConsumerSumDto> consumerDtos = studentStatisticsDao.queryCourseConsumerSum(queryInfo);
         if(CollectionUtils.isEmpty(consumerDtos)){

+ 22 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -1232,4 +1232,26 @@
             #{id}
         </foreach>
     </select>
+    <select id="queryUserCoopMap" resultType="java.util.Map">
+        select sr.user_id_ 'key',GROUP_CONCAT(distinct co.name_) 'value' from student_registration sr
+        left join music_group mg ON mg.id_ = sr.music_group_id_
+        left join cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        where sr.music_group_status_ = 'NORMAL' AND mg.status_ IN ('PROGRESS','PAUSE')
+        AND sr.user_id_ IN
+        <foreach collection="userIdList" open="(" close=")" separator="," item="id">
+            #{id}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
+    <select id="queryUserEduMap" resultType="java.util.Map">
+        select sr.user_id_ 'key',GROUP_CONCAT(distinct su.real_name_) 'value' from student_registration sr
+        left join music_group mg ON mg.id_ = sr.music_group_id_
+        left join sys_user su ON su.id_ = mg.educational_teacher_id_
+        where sr.music_group_status_ = 'NORMAL' AND mg.status_ IN ('PROGRESS','PAUSE')
+        AND sr.user_id_ IN
+        <foreach collection="userIdList" open="(" close=")" separator="," item="id">
+            #{id}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
 </mapper>

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

@@ -482,6 +482,7 @@ public class ExportController extends BaseController {
     @PostMapping("export/classGroup")
     @PreAuthorize("@pcs.hasPermissions('export/classGroup')")
     public void exportClassGroup(HttpServletResponse response, ClassGroupQueryInfo queryInfo) throws IOException {
+        queryInfo = organizationService.onlyEducation(queryInfo);
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         queryInfo.setOrganIds(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));

+ 4 - 4
mec-web/src/main/resources/exportColumnMapper.ini

@@ -307,16 +307,16 @@ headColumns = ["分部", "在读人数", "大于等于5节", "4节","3节","2节
 fieldColumns = ["organName","normalNum","num5","num4","num3","num2","num1","num0"]
 
 [实际课耗学员详情导出]
-headColumns = ["分部", "学生姓名", "学生编号", "学生手机号","应耗课时","实耗课时"]
-fieldColumns = ["organName","username","userId","phone","preConsumerNum","consumerNum"]
+headColumns = ["分部", "乐团主管", "合作单位",  "学生姓名", "学生编号", "学生手机号","应耗课时","实耗课时"]
+fieldColumns = ["organName","eduNames","coopNames","username","userId","phone","preConsumerNum","consumerNum"]
 
 [预计课耗导出]
 headColumns = ["分部", "在读人数", "大于等于5节", "4节","3节","2节","1节","0节"]
 fieldColumns = ["organName","normalNum","num5","num4","num3","num2","num1","num0"]
 
 [预计课耗学员详情导出]
-headColumns = ["分部", "学生姓名", "学生编号", "学生手机号","应耗课时","已排课时"]
-fieldColumns = ["organName","username","userId","phone","preConsumerNum","courseNum"]
+headColumns = ["分部", "乐团主管", "合作单位", "学生姓名", "学生编号", "学生手机号","应耗课时","已排课时"]
+fieldColumns = ["organName","eduNames","coopNames","username","userId","phone","preConsumerNum","courseNum"]
 
 [课耗统计导出]
 headColumns = ["分部", "在读人数", "应有课耗", "实际课耗","课耗达标率","实际课耗大于等于5节", "4节","3节","2节","1节","0节","达标占比"]