Selaa lähdekoodia

Merge branch '20220914' into saas

yonge 2 vuotta sitten
vanhempi
commit
c3bba8ad7a

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentInstrument.java

@@ -17,7 +17,7 @@ public class StudentInstrument extends BaseEntity {
      */
     @ApiModelProperty(value = "学生id")
     private Integer studentId;
-
+    
     /**
      * 分部id
      */
@@ -113,6 +113,9 @@ public class StudentInstrument extends BaseEntity {
 
     @ApiModelProperty(value = "分部")
     private String organName;
+    
+    @ApiModelProperty(value = "声部名称")
+    private String subjectName;
 
     public Long getId() {
         return id;
@@ -290,4 +293,13 @@ public class StudentInstrument extends BaseEntity {
     public void setChangeOrderId(Long changeOrderId) {
         this.changeOrderId = changeOrderId;
     }
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LiveBroadcastRoomMemberQueryInfo.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class LiveBroadcastRoomMemberQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "房间uid",required = true)
+	private String roomUid;
+
+	public String getRoomUid() {
+		return roomUid;
+	}
+
+	public void setRoomUid(String roomUid) {
+		this.roomUid = roomUid;
+	}
+}

+ 1 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentInstrumentQueryInfo.java

@@ -1,10 +1,8 @@
 package com.ym.mec.biz.dal.page;
 
-import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.math.BigDecimal;
-import java.util.Date;
+import com.ym.mec.common.page.QueryInfo;
 
 public class StudentInstrumentQueryInfo extends QueryInfo {
 

+ 23 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentQueryInfo.java

@@ -1,10 +1,10 @@
 package com.ym.mec.biz.dal.page;
 
-import com.ym.mec.common.page.QueryInfo;
-import io.swagger.annotations.ApiModelProperty;
-
+import java.util.Date;
 import java.util.List;
 
+import com.ym.mec.common.page.QueryInfo;
+
 /**
  * @Author Joburgess
  * @Date 2020/3/6
@@ -24,6 +24,10 @@ public class StudentQueryInfo extends QueryInfo {
     private String cloudStudyUseTime;
 
     private String cloudStudyRunningDays;
+    
+    private Date cloudTeacherTrainStartDate;
+    
+    private Date cloudTeacherTrainEndDate;
 
     public String getGroupType() {
         return groupType;
@@ -80,4 +84,20 @@ public class StudentQueryInfo extends QueryInfo {
     public void setCloudStudyRunningDays(String cloudStudyRunningDays) {
         this.cloudStudyRunningDays = cloudStudyRunningDays;
     }
+
+	public Date getCloudTeacherTrainStartDate() {
+		return cloudTeacherTrainStartDate;
+	}
+
+	public void setCloudTeacherTrainStartDate(Date cloudTeacherTrainStartDate) {
+		this.cloudTeacherTrainStartDate = cloudTeacherTrainStartDate;
+	}
+
+	public Date getCloudTeacherTrainEndDate() {
+		return cloudTeacherTrainEndDate;
+	}
+
+	public void setCloudTeacherTrainEndDate(Date cloudTeacherTrainEndDate) {
+		this.cloudTeacherTrainEndDate = cloudTeacherTrainEndDate;
+	}
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomMemberVo.java

@@ -16,6 +16,9 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
 
     @ApiModelProperty(value = "房间标题")
     private String roomTitle;
+    
+    @ApiModelProperty(value = "主讲人")
+    private String speakerName;
 
     @ApiModelProperty(value = "学生编号")
     private Integer studentId;
@@ -28,6 +31,12 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
 
     @ApiModelProperty(value = "声部名称")
     private String subName;
+    
+    @ApiModelProperty(value = "分部")
+    private String organName;
+    
+    @ApiModelProperty(value = "乐团")
+    private String musicGroupName;
 
     @ApiModelProperty(value = "进入房间时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -99,4 +108,28 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
     public void setRoomTitle(String roomTitle) {
         this.roomTitle = roomTitle;
     }
+
+	public String getSpeakerName() {
+		return speakerName;
+	}
+
+	public void setSpeakerName(String speakerName) {
+		this.speakerName = speakerName;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
+	public String getMusicGroupName() {
+		return musicGroupName;
+	}
+
+	public void setMusicGroupName(String musicGroupName) {
+		this.musicGroupName = musicGroupName;
+	}
 }

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMemberMapper.xml

@@ -27,17 +27,24 @@
     <select id="queryMemberPage" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
         select i.room_uid_ as roomUid,
         i.room_title_ as roomTitle,
+        tu.real_name_ speakerName,
         a.user_id_ as studentId,
         su.username_ as studentName,
         su.phone_ as phone,
         b.name_ as subName,
+        o.name_ organName,
+        GROUP_CONCAT(distinct mg.name_) musicGroupName,
         a.join_time_ as joinTime,
         a.total_time_ as totalViewTime
         from im_live_broadcast_room_member as a
         left join im_live_broadcast_room as i on a.room_uid_ = i.room_uid_
         left join sys_user as su on su.id_ = a.user_id_
         left join student st on su.id_ = st.user_id_
+		LEFT JOIN student_registration sr ON sr.user_id_ = a.user_id_
+		LEFT JOIN music_group mg ON  mg.id_ = sr.music_group_id_
         left join subject as b on st.subject_id_list_ = b.id_
+		left join `sys_user` tu on tu.`id_` = i.`speaker_id_` 
+		LEFT JOIN `organization` o on o.`id_` = su.`organ_id_` 
         where a.room_uid_ = #{param.roomUid}
         <if test="param.search != null ">
             AND (
@@ -45,6 +52,7 @@
             OR su.username_ LIKE CONCAT('%', #{param.search},'%')
             )
         </if>
+        group by a.user_id_
     </select>
 
 </mapper>

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/StudentInstrumentMapper.xml

@@ -164,9 +164,11 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="StudentInstrument" parameterType="map">
-        SELECT si.*,su.username_ studentName,su.phone_ phone,o.name_ organName FROM student_instrument si
+        SELECT si.*,su.username_ studentName,su.phone_ phone,o.name_ organName,sub.name_ subjectName FROM student_instrument si
         LEFT JOIN sys_user su ON su.id_ = si.student_id_
+        left join student stu on stu.user_id_ = si.student_id_
         LEFT JOIN organization o ON o.id_ = si.organ_id_
+        left join subject sub on find_in_set(sub.id_, stu.subject_id_list_)
         <include refid="queryPageSql"/>
         <include refid="global.limit"/>
     </select>
@@ -176,6 +178,7 @@
         SELECT COUNT(si.id_)
         FROM student_instrument si
         LEFT JOIN sys_user su ON su.id_ = si.student_id_
+        left join student stu on stu.user_id_ = si.student_id_
         <include refid="queryPageSql"/>
     </select>
 
@@ -203,6 +206,9 @@
             <if test="status != null">
                 AND si.status_ = #{status}
             </if>
+            <if test="subjectId != null">
+                AND find_in_set(#{subjectId}, stu.subject_id_list_)
+            </if>
             <if test="search != null">
                 AND (si.student_id_ = #{search} OR su.phone_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%'))
             </if>

+ 8 - 1
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1061,6 +1061,12 @@
             <if test="search!=null and search!=''">
                 AND (t.user_id_=#{search} OR su.username_ LIKE CONCAT('%', #{search}, '%'))
             </if>
+            <if test="cloudTeacherTrainStartDate != null">
+                AND date(smcr.create_time_) &gt;= #{cloudTeacherTrainStartDate}
+            </if>
+            <if test="cloudTeacherTrainEndDate != null">
+                AND date(smcr.create_time_) &lt;= #{cloudTeacherTrainEndDate}
+            </if>
         </where>
     </sql>
 
@@ -1119,7 +1125,7 @@
     </select>
     <select id="countCloudStudyStudentData" resultType="int">
         SELECT
-        COUNT( DISTINCT user_id_ )
+        ifnull(COUNT( DISTINCT t.user_id_ ),0)
         FROM
         ((
         SELECT
@@ -1142,6 +1148,7 @@
         AND cs.status_ = 'NOT_START'
         )) t
         LEFT JOIN sys_user su ON t.user_id_ = su.id_
+        LEFT JOIN sys_music_compare_record smcr ON t.user_id_ = smcr.user_id_
         <include refid="queryCloudStudyStudentDataCondition" />
     </select>
 

+ 46 - 3
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
@@ -17,10 +18,12 @@ import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,13 +33,11 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
 @RequestMapping
@@ -138,6 +139,9 @@ public class ExportController extends BaseController {
     private MusicGroupService musicGroupService;
     @Autowired
     private SysTenantConfigService sysTenantConfigService;
+    
+    @Autowired
+    private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
 
     @ApiOperation(value = "获取可导出字段")
     @RequestMapping("export/getFields")
@@ -2925,4 +2929,43 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "直播间人员列表导出")
+    @PostMapping("export/liveBroadcastRoomMember")
+    @PreAuthorize("@pcs.hasPermissions('export/liveBroadcastRoomMember')")
+    public void exportLiveBroadcastRoomMember(HttpServletResponse response, LiveBroadcastRoomMemberQueryInfo queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+        List<ImLiveBroadcastRoomMemberVo> rows = imLiveBroadcastRoomMemberService.queryRoomMember(params).getRows();
+        if (rows.size() < 1) {
+            throw new BizException("没有可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"直播间编号", "直播间标题", "主讲人", "学生编号", "学生姓名",
+                    "手机号", "声部", "所在分部", "所在乐团", "加入时间", "观看时长(分钟)"}, new String[]{
+                    "roomUid", "roomTitle", "speakerName", "studentId", "studentName", "phone", "subName",
+                    "organName", "musicGroupName", "joinTime"
+                    , "totalViewTime"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=liveroomMember-" + DateUtil.getDate(new Date()) + ".xls");
+
+            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();
+                }
+            }
+        }
+    }
 }