Bläddra i källkod

Merge remote-tracking branch 'origin/children_day' into children_day

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayReserveDao.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayReserveService.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java
周箭河 4 år sedan
förälder
incheckning
cafe8133c0

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

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.dto.ChildrenDayMsgDto;
 import com.ym.mec.biz.dal.dto.ChildrenStatisticsDetailDto;
 import com.ym.mec.biz.dal.dto.ChildrenStatisticsDto;
 import com.ym.mec.biz.dal.entity.ChildrenDayReserve;
+import com.ym.mec.biz.dal.page.ChildrenReserveQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -62,6 +63,13 @@ public interface ChildrenDayReserveDao extends BaseDAO<Integer, ChildrenDayReser
     ChildrenStatisticsDto childrenStatistics(Map<String, Object> params);
 
     /**
+     * 导出详情
+     * @param queryInfo
+     * @return
+     */
+    List<ChildrenStatisticsDetailDto> exportStatisticsDetail(ChildrenReserveQueryInfo queryInfo);
+
+    /**
      * 获取发送的信息的用户
      *
      * @param msgDtos

+ 50 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ChildrenStatisticsDetailDto.java

@@ -3,6 +3,16 @@ package com.ym.mec.biz.dal.dto;
 import java.math.BigDecimal;
 
 public class ChildrenStatisticsDetailDto {
+    private String organName;
+
+    private String cooperationOrganName;
+
+    private String musicGroupName;
+
+    private String currentClass;
+
+    private String realName;
+
     private String username;
 
     private String phone;
@@ -23,6 +33,46 @@ public class ChildrenStatisticsDetailDto {
 
     private BigDecimal totalAmount = BigDecimal.ZERO;
 
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getCooperationOrganName() {
+        return cooperationOrganName;
+    }
+
+    public void setCooperationOrganName(String cooperationOrganName) {
+        this.cooperationOrganName = cooperationOrganName;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getCurrentClass() {
+        return currentClass;
+    }
+
+    public void setCurrentClass(String currentClass) {
+        this.currentClass = currentClass;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
     public String getSubjectName() {
         return subjectName;
     }

+ 12 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ChildrenReserveQueryInfo.java

@@ -15,46 +15,46 @@ public class ChildrenReserveQueryInfo extends QueryInfo {
     private Integer subjectId;
 
     //是否参加器乐
-    private Boolean gradeFlag;
+    private Integer gradeFlag;
 
     //是否参加乐理
-    private Boolean theoryFlag;
+    private Integer theoryFlag;
 
     //是否购买VIP
-    private Boolean vipFlag;
+    private Integer vipFlag;
 
     //是否购买乐理课
-    private Boolean theoryPriceFlag;
+    private Integer theoryPriceFlag;
 
-    public Boolean getGradeFlag() {
+    public Integer getGradeFlag() {
         return gradeFlag;
     }
 
-    public void setGradeFlag(Boolean gradeFlag) {
+    public void setGradeFlag(Integer gradeFlag) {
         this.gradeFlag = gradeFlag;
     }
 
-    public Boolean getTheoryFlag() {
+    public Integer getTheoryFlag() {
         return theoryFlag;
     }
 
-    public void setTheoryFlag(Boolean theoryFlag) {
+    public void setTheoryFlag(Integer theoryFlag) {
         this.theoryFlag = theoryFlag;
     }
 
-    public Boolean getVipFlag() {
+    public Integer getVipFlag() {
         return vipFlag;
     }
 
-    public void setVipFlag(Boolean vipFlag) {
+    public void setVipFlag(Integer vipFlag) {
         this.vipFlag = vipFlag;
     }
 
-    public Boolean getTheoryPriceFlag() {
+    public Integer getTheoryPriceFlag() {
         return theoryPriceFlag;
     }
 
-    public void setTheoryPriceFlag(Boolean theoryPriceFlag) {
+    public void setTheoryPriceFlag(Integer theoryPriceFlag) {
         this.theoryPriceFlag = theoryPriceFlag;
     }
 

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

@@ -68,6 +68,13 @@ public interface ChildrenDayReserveService extends BaseService<Integer, Children
     Boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
 
     /**
+     * 导出详情
+     * @param queryInfo
+     * @return
+     */
+    List<ChildrenStatisticsDetailDto> exportStatisticsDetail(ChildrenReserveQueryInfo queryInfo);
+
+    /**
      * 发送短信和推送
      *
      * @param msgDtos

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

@@ -435,6 +435,11 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
     }
 
     @Override
+    public List<ChildrenStatisticsDetailDto> exportStatisticsDetail(ChildrenReserveQueryInfo queryInfo) {
+        return childrenDayReserveDao.exportStatisticsDetail(queryInfo);
+    }
+
+    @Override
     public Boolean sendMsg(List<ChildrenDayMsgDto> msgDtos) {
         List<ChildrenStatisticsDetailDto> reserves = childrenDayReserveDao.getSendMsgList(msgDtos);
 

+ 40 - 8
mec-biz/src/main/resources/config/mybatis/ChildrenDayReserveMapper.xml

@@ -161,6 +161,11 @@
     </select>
 
     <resultMap id="ChildrenStatisticsDetailDtoMap" type="com.ym.mec.biz.dal.dto.ChildrenStatisticsDetailDto">
+        <result property="organName" column="organ_name_"/>
+        <result property="cooperationOrganName" column="cooperation_organ_name_"/>
+        <result property="musicGroupName" column="music_group_name_"/>
+        <result property="currentClass" column="current_class_"/>
+        <result property="realName" column="real_name_"/>
         <result property="username" column="username_"/>
         <result property="userId" column="user_id_"/>
         <result property="isReserve" column="is_reserve_"/>
@@ -191,6 +196,33 @@
         ORDER BY cdr.create_time_ DESC
         <include refid="global.limit"/>
     </select>
+    <select id="exportStatisticsDetail" resultMap="ChildrenStatisticsDetailDtoMap">
+        SELECT o.name_ organ_name_,co.name_ cooperation_organ_name_,mg.name_ music_group_name_,cdr.user_id_,
+               su.username_,su.phone_,s.name_ subject_name_,st.current_class_,sut.real_name_,cdr.is_reserve_,cdd.grade_level_,cdd.theory_level_,
+               CASE WHEN cdd.vip_1v1_price_ > 0 OR cdd.vip_1v2_price_ > 0 THEN 1 ELSE 0 END buy_vip_flag_,
+               CASE WHEN cdd.theory_course_price_ > 0 THEN 1 ELSE 0 END buy_theory_course_flag_,cdd.total_amount_
+        FROM children_day_reserve cdr
+                 LEFT JOIN children_day_degree_info cdd ON cdr.id_ = cdd.reserve_id_
+                 LEFT JOIN organization o ON o.id_ = cdr.organ_id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = cdr.cooperation_organ_id_
+                 LEFT JOIN music_group mg ON mg.id_ = cdr.music_group_id_
+                 LEFT JOIN student st ON st.user_id_ = cdr.user_id_
+                 LEFT JOIN sys_user sut ON sut.id_ = st.teacher_id_
+                 LEFT JOIN sys_user su ON su.id_ = cdr.user_id_
+                 LEFT JOIN `subject` s ON s.id_ = cdd.subject_id_
+        <where>
+            <if test="cooperationId != null">
+                AND cdr.cooperation_organ_id_ = #{cooperationId}
+            </if>
+            <if test="musicGroupId != null and musicGroupId != ''">
+                AND cdr.music_group_id_ = #{musicGroupId}
+            </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(cdr.organ_id_,#{organId})
+            </if>
+        </where>
+        ORDER BY cdr.organ_id_,cdr.create_time_ DESC
+    </select>
     <sql id="queryChildrenStatisticsDetailSql">
         <where>
             <if test="search != null and search != ''">
@@ -210,34 +242,34 @@
                 AND cdd.subject_id_ = #{subjectId}
             </if>
             <if test="gradeFlag != null">
-                <if test="gradeFlag == 'true'">
+                <if test="gradeFlag == 1">
                     AND cdd.grade_level_ IS NOT NULL
                 </if>
-                <if test="gradeFlag != 'false'">
+                <if test="gradeFlag == 0">
                     AND cdd.grade_level_ IS NULL
                 </if>
             </if>
             <if test="theoryFlag != null">
-                <if test="theoryFlag == 'true'">
+                <if test="theoryFlag == 1">
                     AND cdd.theory_level_ IS NOT NULL
                 </if>
-                <if test="theoryFlag != 'false'">
+                <if test="theoryFlag == 0">
                     AND cdd.theory_level_ IS NULL
                 </if>
             </if>
             <if test="vipFlag != null">
-                <if test="vipFlag == 'true'">
+                <if test="vipFlag == 1">
                     AND (cdd.vip_1v1_price_ > 0 OR cdd.vip_1v2_price_ > 0)
                 </if>
-                <if test="vipFlag != 'false'">
+                <if test="vipFlag == 0">
                     AND (cdd.vip_1v1_price_ &lt;= 0 OR cdd.vip_1v2_price_ &lt;= 0)
                 </if>
             </if>
             <if test="theoryPriceFlag != null">
-                <if test="theoryPriceFlag == 'true'">
+                <if test="theoryPriceFlag == 1">
                     AND cdd.theory_course_price_ > 0
                 </if>
-                <if test="theoryPriceFlag != 'false'">
+                <if test="theoryPriceFlag == 0">
                     AND cdd.theory_course_price_ &lt;= 0
                 </if>
             </if>

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

@@ -143,6 +143,58 @@ public class ExportController extends BaseController {
     private ChildrenDayReserveService childrenDayReserveService;
 
     @ApiOperation(value = "21年暑期考级活动统计页面详情导出")
+    @PostMapping("export/statisticsDetail")
+    @PreAuthorize("@pcs.hasPermissions('export/statisticsDetail')")
+    public void statisticsDetail(HttpServletResponse response, ChildrenReserveQueryInfo queryInfo) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            throw new BizException("用户所在分部异常");
+        }else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                throw new BizException("非法请求");
+            }
+        }
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        List<ChildrenStatisticsDetailDto> rows = childrenDayReserveService.exportStatisticsDetail(queryInfo);
+        if(rows.size() < 1){
+           throw new BizException("没有可导出数据");
+       }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "合作单位", "乐团","学员编号", "学员姓名", "手机号","声部","所在班级","指导老师", "是否预约", "器乐等级", "乐理等级", "是否购买VIP","是否购买乐理课"}, new String[]{
+                    "organName", "cooperationOrganName", "musicGroupName","userId", "username", "phone","subjectName",
+                    "currentClass", "realName", "isReserve == true ?'是':'否'","gradeLeave"
+                    ,"theoryLevel","buyVipFlag == true ?'是':'否'","buyTheoryCourseFlag == true ?'是':'否'"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=classGroup-" + 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();
+                }
+            }
+        }
+    }
+
+/*
+    @ApiOperation(value = "21年暑期考级活动统计页面详情导出")
     @PostMapping("export/statisticsDetailPage")
     @PreAuthorize("@pcs.hasPermissions('export/statisticsDetailPage')")
     public void statisticsDetailPage(HttpServletResponse response, ChildrenReserveQueryInfo queryInfo) throws IOException {
@@ -243,6 +295,7 @@ public class ExportController extends BaseController {
             }
         }
     }
+*/
 
     @ApiOperation(value = "学生个人账户余额导出")
     @PostMapping("export/userCashAccountDetail")