浏览代码

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

zouxuan 4 年之前
父节点
当前提交
61e1330437

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

@@ -388,4 +388,11 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     Integer getCooperationMusicGroupNum(@Param("cooperationOrganId") Integer cooperationOrganId, @Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取课程关联教务老师名称
+     * @param courseIds
+     * @return
+     */
+    List<Map<Long, String>> queryEduNameMapByCourseId(@Param("courseIds") List<Long> courseIds);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java

@@ -373,4 +373,11 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
      * @return java.util.List<java.util.Map<java.lang.Long,java.lang.String>>
      */
     List<Map<Long, String>> getPracticeGroupType(@Param("practiceIds") List<Long> practiceIds);
+
+    /**
+     * 获取课程关联教务老师名称
+     * @param courseIds
+     * @return
+     */
+    List<Map<Long, String>> queryEduNameMapByCourseId(@Param("courseIds") List<Long> courseIds);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -358,4 +358,11 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @return
      */
     List<VipGroup> getVipGroupByIds(@Param("ids") List<Long> ids);
+
+    /**
+     * 获取课程关联教务老师名称
+     * @param courseIds
+     * @return
+     */
+    List<Map<Long, String>> queryEduNameMapByCourseId(@Param("courseIds") List<Long> courseIds);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java

@@ -18,6 +18,8 @@ public class CourseScheduleEndDto extends CourseSchedule {
 
     private String teacherName;
 
+    private String educationTeacherName;
+
     private String subjectName;
 
     private String organName;
@@ -48,6 +50,14 @@ public class CourseScheduleEndDto extends CourseSchedule {
 
     private boolean beMerged;
 
+    public String getEducationTeacherName() {
+        return educationTeacherName;
+    }
+
+    public void setEducationTeacherName(String educationTeacherName) {
+        this.educationTeacherName = educationTeacherName;
+    }
+
     public boolean getBeMerged() {
         return beMerged;
     }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java

@@ -4,6 +4,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	ORDER(1, "订单列表"),
+	COURSE_SCHEDULE(3, "课表列表"),
 	ROUTE_ORDER(2, "财务管理");
 
 	private Integer code;

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -656,4 +656,6 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @return void
 	 */
 	void mergeCourseSplit(Long mainCourseId, Integer operatorId);
+
+	int endCountCourseSchedules(Map<String, Object> params);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.ManagerDownload;
 
+import java.io.FileNotFoundException;
 import java.util.Map;
 
 
@@ -22,4 +23,11 @@ public interface ExportService {
      * @throws Exception
      */
     void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception;
+
+    /**
+     * 课表列表导出
+     * @param params
+     * @param managerDownload
+     */
+    void superFindCourseSchedules(Map<String, Object> params, ManagerDownload managerDownload) throws FileNotFoundException;
 }

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -4755,7 +4755,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			//获取班级声部名称
             List<Map<Integer, String>> classGroupSubjectNameMaps = classGroupDao.findClassGroupSubjectNameMaps(courseScheduleIds);
             Map<Integer, String> classGroupSubjectNameMap = MapUtil.convertIntegerMap(classGroupSubjectNameMaps);
+			Map<Long, String> eduName = null;
+			if(queryInfo.getIsExport()){
+				List<Long> musicCourseIds = results.stream().filter(e -> e.getGroupType() == MUSIC).map(CourseScheduleEndDto::getId).collect(Collectors.toList());
+				eduName = new HashMap<>(courseScheduleIds.size());
+				if(musicCourseIds != null && musicCourseIds.size() > 0){
+					eduName.putAll(MapUtil.convertMybatisMap(musicGroupDao.queryEduNameMapByCourseId(musicCourseIds)));
+				}
+				List<Long> vipCourseIds = results.stream().filter(e -> e.getGroupType() == VIP).map(CourseScheduleEndDto::getId).collect(Collectors.toList());
+				if(vipCourseIds != null && vipCourseIds.size() > 0){
+					eduName.putAll(MapUtil.convertMybatisMap(vipGroupDao.queryEduNameMapByCourseId(vipCourseIds)));
+				}
+				List<Long> practiceCourseIds = results.stream().filter(e -> e.getGroupType() == PRACTICE).map(CourseScheduleEndDto::getId).collect(Collectors.toList());
+				if(practiceCourseIds != null && practiceCourseIds.size() > 0){
+					eduName.putAll(MapUtil.convertMybatisMap(practiceGroupDao.queryEduNameMapByCourseId(practiceCourseIds)));
+				}
+			}
 			for (CourseScheduleEndDto result : results) {
+				if(eduName != null){
+					result.setEducationTeacherName(eduName.get(result.getId()));
+				}
 				result.setTeacher(null);
 				result.setTeacherName(nameIdMap.get(result.getActualTeacherId()));
 				result.setSubjectName(classGroupSubjectNameMap.get(result.getId()));
@@ -5791,4 +5810,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			courseScheduleModifyLogDao.batchInsert(insertCourseScheduleModifyLogList);
 		}
     }
+
+	@Override
+	public int endCountCourseSchedules(Map<String, Object> params) {
+		return courseScheduleDao.endCountCourseSchedules(params);
+	}
 }

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

@@ -1,10 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.FeeFlagNumDto;
-import com.ym.mec.biz.dal.dto.PracticeCourseDto;
-import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
-import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
@@ -27,10 +24,7 @@ import org.springframework.boot.system.ApplicationHome;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -60,6 +54,8 @@ public class ExportServiceImpl implements ExportService {
     private CooperationOrganDao cooperationOrganDao;
     @Autowired
     private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
 
     @Override
     @Async
@@ -725,4 +721,43 @@ public class ExportServiceImpl implements ExportService {
             }
         }
     }
+
+    @Override
+    public void superFindCourseSchedules(Map<String, Object> params, ManagerDownload managerDownload) throws FileNotFoundException {
+        List<CourseScheduleEndDto> rows = courseScheduleDao.endFindCourseSchedules(params);
+        for (CourseScheduleEndDto row : rows) {
+            row.setIsComplaints(StringUtils.equals(row.getIsComplaints(), "1") ? "有" : "无");
+        }
+        String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath();
+        File file = new File(basePath + "/" + managerDownload.getName());
+        FileOutputStream fileOutputStream = new FileOutputStream(file);
+        OutputStream ouputStream = null;
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称","乐团主管", "课程编号", "开始时间", "结束时间",
+                    "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
+                    "教学点", "课程状态", "指导老师", "学员编号", "是否点名", "是否有考勤申诉", "预计上课人数"}, new String[]{
+                    "organName","educationTeacherName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
+                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg", "isComplaints", "studentNum"}, rows);
+            workbook.write(fileOutputStream);
+            fileOutputStream.getFD().sync();
+            fileOutputStream.close();
+
+            String folder = "download/" + UploadUtil.getFileFloder();
+            String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, folder, file);
+            //把记录插入下载表
+            managerDownload.setFileUrl(url);
+            managerDownload.setStatus(1);
+            managerDownloadDao.update(managerDownload);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (ouputStream != null) {
+                try {
+                    ouputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }

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

@@ -729,4 +729,14 @@
         ORDER BY mg.create_time_ DESC
         LIMIT 1
     </select>
+    <select id="queryEduNameMapByCourseId" resultType="java.util.Map">
+        SELECT cs.id_ 'key',su.real_name_ 'value' FROM course_schedule cs
+        LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
+        LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
+        WHERE cs.id_ IN
+        <foreach collection="courseIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        AND mg.educational_teacher_id_ IS NOT NULL
+    </select>
 </mapper>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -736,4 +736,15 @@
             #{id}
         </foreach>
     </select>
+
+    <select id="queryEduNameMapByCourseId" resultType="java.util.Map">
+        SELECT cs.id_ 'key',su.real_name_ 'value' FROM course_schedule cs
+        LEFT JOIN practice_group pg ON pg.id_ = cs.music_group_id_
+        LEFT JOIN sys_user su ON su.id_ = pg.educational_teacher_id_
+        WHERE cs.id_ IN
+        <foreach collection="courseIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        AND pg.educational_teacher_id_ IS NOT NULL
+    </select>
 </mapper>

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -1027,4 +1027,14 @@
             #{id}
         </foreach>
     </select>
+    <select id="queryEduNameMapByCourseId" resultType="java.util.Map">
+        SELECT cs.id_ 'key',su.real_name_ 'value' FROM course_schedule cs
+        LEFT JOIN vip_group vg ON vg.id_ = cs.music_group_id_
+        LEFT JOIN sys_user su ON su.id_ = vg.educational_teacher_id_
+        WHERE cs.id_ IN
+        <foreach collection="courseIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        AND vg.educational_teacher_id_ IS NOT NULL
+    </select>
 </mapper>

+ 22 - 37
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -10,10 +10,8 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.service.IdGeneratorService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
 import java.io.IOException;
 import java.io.OutputStream;
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -24,9 +22,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
-
 import javax.servlet.http.HttpServletResponse;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,7 +32,6 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.controller.BaseController;
@@ -66,10 +61,6 @@ public class ExportController extends BaseController {
     @Autowired
     private EmployeeDao employeeDao;
     @Autowired
-    private StudentPaymentOrderService studentPaymentOrderService;
-    @Autowired
-    private StudentRegistrationDao studentRegistrationDao;
-    @Autowired
     private VipGroupDao vipGroupDao;
     @Autowired
     private MusicGroupDao musicGroupDao;
@@ -124,8 +115,6 @@ public class ExportController extends BaseController {
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
-    private SellOrderDao sellOrderDao;
-    @Autowired
     private VipGroupActivityService vipGroupActivityService;
     @Autowired
     private GoodsService goodsService;
@@ -865,7 +854,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "终课表列表导出")
     @GetMapping("export/superFindCourseSchedules")
     @PreAuthorize("@pcs.hasPermissions('export/superFindCourseSchedules')")
-    public void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+    public Object superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         queryInfo.setIsExport(true);
@@ -884,33 +873,29 @@ public class ExportController extends BaseController {
                 throw new BizException("非法请求");
             }
         }
-        List<CourseScheduleEndDto> rows = scheduleService.endFindCourseSchedules(queryInfo).getRows();
-        for (CourseScheduleEndDto row : rows) {
-            row.setIsComplaints(StringUtils.equals(row.getIsComplaints(), "1") ? "有" : "无");
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        int count = scheduleService.endCountCourseSchedules(params);
+        if (count <= 0) {
+            return failed("没有可导出的数据");
         }
-        OutputStream ouputStream = null;
-        try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "课程编号", "开始时间", "结束时间",
-                    "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
-                    "教学点", "课程状态", "指导老师", "学员编号", "是否点名", "是否有考勤申诉", "预计上课人数"}, new String[]{
-                    "organName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
-                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg", "isComplaints", "studentNum"}, rows);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            ouputStream = response.getOutputStream();
-            workbook.write(ouputStream);
-            ouputStream.flush();
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (ouputStream != null) {
-                try {
-                    ouputStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
+
+        if (count > 50000) {
+            return failed("数据集太大,不能导出.最大数据集不能超过50000");
         }
+        Date nowDate = new Date();
+        String no = idGeneratorService.generatorId("download") + "";
+        String fileName = "课表列表-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
+        ManagerDownload managerDownload = new ManagerDownload();
+        managerDownload.setType(ExportTypeEnum.COURSE_SCHEDULE);
+        managerDownload.setUserId(sysUser.getId());
+        managerDownload.setName(fileName);
+        managerDownload.setFileUrl("");
+        managerDownload.setCreateTime(nowDate);
+        managerDownload.setUpdateTime(nowDate);
+        managerDownloadDao.insert(managerDownload);
+        exportService.superFindCourseSchedules(params, managerDownload);
+        return succeed(fileName+"导出申请已提交,请到【报表中心-下载列表查看】");
     }
 
 

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

@@ -146,7 +146,7 @@ public class TeacherAttendanceController extends BaseController {
 
     @ApiOperation(value = "撤销考勤申述")
     @PostMapping("/repealComplaints")
-    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/addComplaints')")
+    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/repealComplaints')")
     public Object repealComplaints(Long courseScheduleId,Integer userId){
         teacherAttendanceService.repealComplaints(courseScheduleId,userId);
         return succeed();