2023年11月12日 新增导出
This commit is contained in:
parent
b237c037d6
commit
cef411f7de
|
@ -199,7 +199,7 @@ public class KcZhihuijiaoshiMonitorLogController extends JeecgController<KcZhihu
|
|||
/**
|
||||
* 导出word
|
||||
*
|
||||
* @param xqxnParam
|
||||
* @param kcZhihuijiaoshiMonitorLog
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
|
@ -214,7 +214,7 @@ public class KcZhihuijiaoshiMonitorLogController extends JeecgController<KcZhihu
|
|||
/**
|
||||
* 导出word
|
||||
*
|
||||
* @param xqxnParam
|
||||
* @param kcZhihuijiaoshiMonitorLog
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
|
|
|
@ -64,8 +64,6 @@ public class KcZhihuijiaoshiMonitorLog {
|
|||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private java.util.Date updateTime;
|
||||
@TableField(exist = false)
|
||||
private String endTime;
|
||||
//---------------------------导出--------------------------
|
||||
|
||||
|
||||
|
@ -79,6 +77,8 @@ public class KcZhihuijiaoshiMonitorLog {
|
|||
@Excel(name = "统计日期", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String startTime;
|
||||
@TableField(exist = false)
|
||||
private String endTime;
|
||||
/**教学楼名称*/
|
||||
@Excel(name = "教学楼名称", width = 15)
|
||||
@ApiModelProperty(value = "教学楼名称")
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package org.jeecg.modules.kc.jiaoshi.export;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.beust.jcommander.internal.Sets;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.Data;
|
||||
|
@ -27,9 +29,9 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
@ -43,6 +45,11 @@ import java.util.stream.Collectors;
|
|||
* </pre>
|
||||
*/
|
||||
public class Export extends BaseExport {
|
||||
|
||||
public Export(){
|
||||
super();
|
||||
initHhNameMap();
|
||||
}
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
|
@ -72,6 +79,112 @@ public class Export extends BaseExport {
|
|||
// return sysDictService.queryDictItemsByCode(dictCode);
|
||||
// }
|
||||
|
||||
//数量÷总数×100
|
||||
public BigDecimal getPercentage(BigDecimal zc, BigDecimal yc){
|
||||
BigDecimal all = zc.add(yc);
|
||||
return zc.divide(all, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
|
||||
}
|
||||
|
||||
//数量÷总数×100
|
||||
public BigDecimal getPercentageByAll(BigDecimal yc, BigDecimal all){
|
||||
if(yc.compareTo(new BigDecimal(0)) == 0){
|
||||
return new BigDecimal("0");
|
||||
}
|
||||
if(all.compareTo(new BigDecimal(0)) == 0){
|
||||
return new BigDecimal("0");
|
||||
}
|
||||
return yc.divide(all, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
|
||||
}
|
||||
|
||||
public Integer isNull(Integer num){
|
||||
if(num == null) return 0;
|
||||
return num;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public class TwoListClass {
|
||||
private String jxl;//教学楼
|
||||
private String jsmc;//教室名称
|
||||
private Integer kfkts = 0;//开放课堂数
|
||||
//private Float zcktl;//正常课堂率
|
||||
private Integer zckts = 0;//正常课堂数
|
||||
private Integer yckts = 0;//异常课堂数
|
||||
private String ycqksm;//异常情况说明
|
||||
|
||||
private List<String> ycHhList = Lists.newArrayList();//异常节次
|
||||
private List<String> ycKcmcList = Lists.newArrayList();//异常课程名称
|
||||
|
||||
private List<Integer> jccsList = Lists.newArrayList();//监测次数
|
||||
private List<Integer> yccsList = Lists.newArrayList();//异常次数
|
||||
private List<Integer> yclList = Lists.newArrayList();//异常率
|
||||
|
||||
public void addKfkts(Integer num){
|
||||
if(this.kfkts == null) this.kfkts = 0;
|
||||
if(num == null) return;
|
||||
this.kfkts += num;
|
||||
}
|
||||
public void addZckts(Integer num){
|
||||
if(this.zckts == null) this.zckts = 0;
|
||||
if(num == null) return;
|
||||
this.zckts += num;
|
||||
}
|
||||
public void addYckts(Integer num){
|
||||
if(this.yckts == null) this.yckts = 0;
|
||||
if(num == null) return;
|
||||
this.yckts += num;
|
||||
}
|
||||
|
||||
public BigDecimal getZcktl(){
|
||||
if(yckts != 0){
|
||||
return getPercentage(new BigDecimal(zckts),new BigDecimal(yckts));
|
||||
}else {
|
||||
return new BigDecimal("100");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public class OneListClass {
|
||||
private String jxlName;//教学楼名称
|
||||
private String hhName;//节次名称
|
||||
private Integer kfnum = 0;//开放数
|
||||
private Integer zcnum = 0;//正常
|
||||
private Integer ycnum = 0;//异常
|
||||
|
||||
public void addKfnum(Integer num){
|
||||
if(this.kfnum == null) this.kfnum = 0;
|
||||
if(num == null) return;
|
||||
this.kfnum += num;
|
||||
}
|
||||
public void addZcnum(Integer num){
|
||||
if(this.zcnum == null) this.zcnum = 0;
|
||||
if(num == null) return;
|
||||
this.zcnum += num;
|
||||
}
|
||||
public void addYcnum(Integer num){
|
||||
if(this.ycnum == null) this.ycnum = 0;
|
||||
if(num == null) return;
|
||||
this.ycnum += num;
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, String> hhNameMap = Maps.newHashMap();
|
||||
|
||||
public void initHhNameMap(){
|
||||
hhNameMap.put("01、02","第一大节");
|
||||
hhNameMap.put("03、04","第二大节");
|
||||
hhNameMap.put("05、06","第三大节");
|
||||
hhNameMap.put("07、08","第四大节");
|
||||
hhNameMap.put("09、10","第五大节");
|
||||
hhNameMap.put("11、12","第六大节");
|
||||
}
|
||||
|
||||
public String getHhName(String key){
|
||||
String value = hhNameMap.get(key);
|
||||
return StringUtils.defaultString(value,"");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 功能说明 : 拼接word导出
|
||||
|
@ -88,30 +201,319 @@ public class Export extends BaseExport {
|
|||
//********************************@A.单个内容替换***************************************************/
|
||||
//********************************取数据***********************************************************/
|
||||
Map<String, Object> result = Maps.newHashMap();
|
||||
//查询日志
|
||||
QueryWrapper<KcZhihuijiaoshiMonitorLog> mainQw = new QueryWrapper<>();
|
||||
mainQw.isNotNull("kt_id");
|
||||
mainQw.ge(StringUtils.isNotBlank(kcZhihuijiaoshiMonitorLog.getStartTime()),"create_time",kcZhihuijiaoshiMonitorLog.getStartTime());
|
||||
mainQw.le(StringUtils.isNotBlank(kcZhihuijiaoshiMonitorLog.getEndTime()),"create_time",kcZhihuijiaoshiMonitorLog.getEndTime());
|
||||
if(StringUtils.isNotBlank(kcZhihuijiaoshiMonitorLog.getJxlName())){
|
||||
mainQw.in("jxl_name", Arrays.asList(StringUtils.split(kcZhihuijiaoshiMonitorLog.getJxlName(),",")));
|
||||
}
|
||||
List<KcZhihuijiaoshiMonitorLog> mainLogList = kcZhihuijiaoshiMonitorLogService.list(mainQw);
|
||||
if(mainLogList.isEmpty()){
|
||||
String today= DateUtil.today();
|
||||
result.put("监测时间", today);
|
||||
result.put("监测教学楼", kcZhihuijiaoshiMonitorLog.getJxlName());
|
||||
result.put("教学楼数", "0");
|
||||
result.put("教室数", "0");
|
||||
result.put("大节数", "0");
|
||||
result.put("运行正常课堂", "0");
|
||||
result.put("运行异常课堂", "0");
|
||||
result.put("正常率", "0");
|
||||
wo.replaceTextPlus(result);
|
||||
wo.insert2Table(0, 2, true, Lists.newArrayList());
|
||||
wo.insert2Table(1, 1, true, Lists.newArrayList());
|
||||
}
|
||||
//折腾数据
|
||||
int jxls = 0;
|
||||
int jss = 0;
|
||||
int djs = 0;
|
||||
int zckts = 0;
|
||||
int yckts = 0;
|
||||
BigDecimal zcl = new BigDecimal(100);
|
||||
|
||||
Set<String> jxlsSet = Sets.newHashSet();
|
||||
Set<String> jssSet = Sets.newHashSet();
|
||||
Set<String> djsSet = Sets.newHashSet();
|
||||
// Set<String> zcktsSet = Sets.newHashSet();
|
||||
// Set<String> ycktsSet = Sets.newHashSet();
|
||||
//Set<String> zclSet = Sets.newHashSet();
|
||||
|
||||
Map<String,OneListClass> oneListMap = Maps.newHashMap();
|
||||
Map<String,TwoListClass> twoListMap = Maps.newHashMap();
|
||||
|
||||
for(KcZhihuijiaoshiMonitorLog monitorLog: mainLogList){
|
||||
//基础数据
|
||||
jxlsSet.add(monitorLog.getJxlName());
|
||||
jssSet.add(monitorLog.getJsmc());
|
||||
djsSet.add(monitorLog.getHh());
|
||||
if(monitorLog.getLogType() != null && monitorLog.getLogType() == 1){
|
||||
//zcktsSet.add();//日志类型(1:播放正常 | 2:播放失败,拉起成功 | 3:播放失败,拉起失败)
|
||||
zckts++;
|
||||
}else{
|
||||
yckts++;
|
||||
}
|
||||
|
||||
//第一个
|
||||
if(oneListMap.containsKey(monitorLog.getJxlName() + "-" + monitorLog.getHh())){
|
||||
OneListClass o = oneListMap.get(monitorLog.getJxlName() + "-" + monitorLog.getHh());
|
||||
o.addKfnum(1);
|
||||
if(monitorLog.getLogType() != null && monitorLog.getLogType() == 1){
|
||||
o.addZcnum(1);
|
||||
}else{
|
||||
o.addYcnum(1);
|
||||
}
|
||||
}else{
|
||||
OneListClass o = new OneListClass();
|
||||
o.setJxlName(monitorLog.getJxlName());
|
||||
o.setHhName(getHhName(monitorLog.getHh()));
|
||||
o.setKfnum(1);
|
||||
if(monitorLog.getLogType() != null && monitorLog.getLogType() == 1){
|
||||
o.setZcnum(1);
|
||||
}else{
|
||||
o.setYcnum(1);
|
||||
}
|
||||
oneListMap.put(monitorLog.getJxlName() + "-" + monitorLog.getHh(),o);
|
||||
}
|
||||
|
||||
//教学楼 教室名称 开放课堂数 正常课堂率 正常课堂数 异常课堂数 异常情况说明
|
||||
//第二集
|
||||
if(twoListMap.containsKey(monitorLog.getJxlName() + monitorLog.getJsmc())){
|
||||
//存在,累计数
|
||||
TwoListClass o = twoListMap.get(monitorLog.getJxlName() + monitorLog.getJsmc());
|
||||
o.addKfkts(1);
|
||||
if(monitorLog.getLogType() != null && monitorLog.getLogType() == 1){
|
||||
o.addZckts(1);
|
||||
}else{
|
||||
o.addYckts(1);
|
||||
|
||||
// String sm = "1.异常节次:"+getHhName(monitorLog.getHh())+" 异常课程:"+monitorLog.getKtName()+" 监测次数:"+" 异常次数:"+" 异常率:"+"";//1.异常节次: 异常课程: 监测次数: 异常次数: 异常率:
|
||||
// o.setYcqksm(sm);
|
||||
o.getYcHhList().add(getHhName(monitorLog.getHh()));
|
||||
o.getYcKcmcList().add(monitorLog.getKtName());//异常课程名称
|
||||
o.getJccsList().add(1);//监测次数
|
||||
o.getYccsList().add(1);//异常次数
|
||||
// o.getYclList().add();//异常率
|
||||
|
||||
}
|
||||
}else{
|
||||
TwoListClass o = new TwoListClass();
|
||||
o.setJxl(monitorLog.getJxlName());
|
||||
o.setJsmc(monitorLog.getJsmc());
|
||||
o.setKfkts(1);
|
||||
// o.setZcktl(0);
|
||||
o.setZckts(0);
|
||||
o.setYckts(0);
|
||||
//zcktl;//正常课堂率
|
||||
if(monitorLog.getLogType() != null && monitorLog.getLogType() == 1){
|
||||
o.setZckts(1);//正常课堂数
|
||||
}else{
|
||||
o.setYckts(1);//异常课堂数
|
||||
//ycqksm;//异常情况说明
|
||||
}
|
||||
twoListMap.put(monitorLog.getJxlName() + monitorLog.getJsmc(),o);
|
||||
}
|
||||
}
|
||||
|
||||
jxls = jxlsSet.size();
|
||||
jss = jssSet.size();
|
||||
djs = djsSet.size();
|
||||
|
||||
if(yckts != 0){
|
||||
zcl = getPercentage(new BigDecimal(zckts),new BigDecimal((yckts)));
|
||||
}
|
||||
|
||||
|
||||
//********************************取数据END*********************************************************/
|
||||
//********************************通用*************************************************************/
|
||||
String today= DateUtil.today();
|
||||
result.put("监测时间", today);//学院名称
|
||||
// result.put("监测教学楼",xqxnParam);//学期学年
|
||||
result.put("监测时间", today);
|
||||
result.put("监测教学楼", kcZhihuijiaoshiMonitorLog.getJxlName());
|
||||
result.put("教学楼数", String.valueOf(jxls));
|
||||
result.put("教室数", String.valueOf(jss));
|
||||
result.put("大节数", String.valueOf(djs));
|
||||
result.put("运行正常课堂", String.valueOf(zckts));
|
||||
result.put("运行异常课堂", String.valueOf(yckts));
|
||||
result.put("正常率", String.valueOf(zcl.floatValue()));
|
||||
|
||||
//********************************表头END**********************************************************/
|
||||
wo.replaceTextPlus(result);
|
||||
//********************************@A.单个内容替换END**************************************************/
|
||||
final int[] index = { 2 };
|
||||
// final int[] index = { 2 };
|
||||
List<List<String>> mainList = Lists.newArrayList();
|
||||
|
||||
List<String> list = Lists.newArrayList();
|
||||
list.add("楼1");
|
||||
list.add("11");
|
||||
list.add("22");
|
||||
mainList.add(list);
|
||||
Map<String,Map<String,OneListClass>> oneListMapMap = Maps.newHashMap();
|
||||
|
||||
for (String key: oneListMap.keySet()){
|
||||
OneListClass o = oneListMap.get(key);
|
||||
if(oneListMapMap.containsKey(o.getJxlName())){
|
||||
Map<String,OneListClass> m = oneListMapMap.get(o.getJxlName());
|
||||
m.put(o.getHhName(),o);
|
||||
}else{
|
||||
Map<String,OneListClass> m = Maps.newHashMap();
|
||||
m.put(o.getHhName(),o);
|
||||
oneListMapMap.put(o.getJxlName(),m);
|
||||
}
|
||||
}
|
||||
for (String key: oneListMapMap.keySet()){
|
||||
Map<String,OneListClass> m = oneListMapMap.get(key);
|
||||
OneListClass all = new OneListClass();
|
||||
OneListClass one = new OneListClass();
|
||||
OneListClass two = new OneListClass();
|
||||
OneListClass three = new OneListClass();
|
||||
OneListClass four = new OneListClass();
|
||||
OneListClass five = new OneListClass();
|
||||
OneListClass six = new OneListClass();
|
||||
|
||||
for (String mkey: m.keySet()){
|
||||
OneListClass o = m.get(mkey);
|
||||
switch (o.getHhName()){
|
||||
case "第一大节": {
|
||||
all.setJxlName(o.getJxlName());
|
||||
all.addKfnum(o.getKfnum());
|
||||
all.addZcnum(o.getZcnum());
|
||||
all.addYcnum(o.getYcnum());
|
||||
one.setKfnum(isNull(o.getKfnum()));
|
||||
one.setZcnum(isNull(o.getZcnum()));
|
||||
one.setYcnum(isNull(o.getYcnum()));
|
||||
break;
|
||||
}
|
||||
case "第二大节": {
|
||||
all.setJxlName(o.getJxlName());
|
||||
all.addKfnum(o.getKfnum());
|
||||
all.addZcnum(o.getZcnum());
|
||||
all.addYcnum(o.getYcnum());
|
||||
two.setKfnum(isNull(o.getKfnum()));
|
||||
two.setZcnum(isNull(o.getZcnum()));
|
||||
two.setYcnum(isNull(o.getYcnum()));
|
||||
break;
|
||||
}
|
||||
case "第三大节": {
|
||||
all.setJxlName(o.getJxlName());
|
||||
all.addKfnum(o.getKfnum());
|
||||
all.addZcnum(o.getZcnum());
|
||||
all.addYcnum(o.getYcnum());
|
||||
three.setKfnum(isNull(o.getKfnum()));
|
||||
three.setZcnum(isNull(o.getZcnum()));
|
||||
three.setYcnum(isNull(o.getYcnum()));
|
||||
break;
|
||||
}
|
||||
case "第四大节": {
|
||||
all.setJxlName(o.getJxlName());
|
||||
all.addKfnum(o.getKfnum());
|
||||
all.addZcnum(o.getZcnum());
|
||||
all.addYcnum(o.getYcnum());
|
||||
four.setKfnum(isNull(o.getKfnum()));
|
||||
four.setZcnum(isNull(o.getZcnum()));
|
||||
four.setYcnum(isNull(o.getYcnum()));
|
||||
break;
|
||||
}
|
||||
case "第五大节": {
|
||||
all.setJxlName(o.getJxlName());
|
||||
all.addKfnum(o.getKfnum());
|
||||
all.addZcnum(o.getZcnum());
|
||||
all.addYcnum(o.getYcnum());
|
||||
five.setKfnum(isNull(o.getKfnum()));
|
||||
five.setZcnum(isNull(o.getZcnum()));
|
||||
five.setYcnum(isNull(o.getYcnum()));
|
||||
break;
|
||||
}
|
||||
case "第六大节": {
|
||||
all.setJxlName(o.getJxlName());
|
||||
all.addKfnum(o.getKfnum());
|
||||
all.addZcnum(o.getZcnum());
|
||||
all.addYcnum(o.getYcnum());
|
||||
six.setKfnum(isNull(o.getKfnum()));
|
||||
six.setZcnum(isNull(o.getZcnum()));
|
||||
six.setYcnum(isNull(o.getYcnum()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
List<String> list = Lists.newArrayList();
|
||||
list.add(all.getJxlName());
|
||||
if(all.getYcnum() != 0){
|
||||
BigDecimal num = getPercentage(new BigDecimal(all.getZcnum()), new BigDecimal(all.getYcnum()));
|
||||
list.add(num.toString());
|
||||
}else{
|
||||
list.add("100");
|
||||
}
|
||||
list.add(String.valueOf(all.getKfnum()));
|
||||
list.add(String.valueOf(all.getZcnum()));
|
||||
list.add(String.valueOf(all.getYcnum()));
|
||||
|
||||
list.add(String.valueOf(one.getZcnum()));
|
||||
list.add(String.valueOf(one.getYcnum()));
|
||||
|
||||
list.add(String.valueOf(two.getZcnum()));
|
||||
list.add(String.valueOf(two.getYcnum()));
|
||||
|
||||
list.add(String.valueOf(three.getZcnum()));
|
||||
list.add(String.valueOf(three.getYcnum()));
|
||||
|
||||
list.add(String.valueOf(four.getZcnum()));
|
||||
list.add(String.valueOf(four.getYcnum()));
|
||||
|
||||
list.add(String.valueOf(five.getZcnum()));
|
||||
list.add(String.valueOf(five.getYcnum()));
|
||||
|
||||
list.add(String.valueOf(six.getZcnum()));
|
||||
list.add(String.valueOf(six.getYcnum()));
|
||||
mainList.add(list);
|
||||
}
|
||||
|
||||
|
||||
wo.insert2Table(0, 2, true, mainList);
|
||||
// index[0] += mainList.size() + 2;
|
||||
mainList.clear();
|
||||
|
||||
|
||||
for (String key: twoListMap.keySet()){
|
||||
TwoListClass o = twoListMap.get(key);
|
||||
List<String> list = Lists.newArrayList();
|
||||
//教学楼 教室名称 开放课堂数 正常课堂率 正常课堂数 异常课堂数 异常情况说明
|
||||
list.add(o.getJxl());
|
||||
list.add(o.getJsmc());
|
||||
list.add(StringUtils.defaultString(String.valueOf(o.getKfkts()),"0"));
|
||||
list.add(StringUtils.defaultString(String.valueOf(o.getZcktl().toString()),"0"));
|
||||
list.add(StringUtils.defaultString(String.valueOf(o.getZckts()),"0"));
|
||||
list.add(StringUtils.defaultString(String.valueOf(o.getYckts()),"0"));
|
||||
//1.异常节次: 异常课程: 监测次数: 异常次数: 异常率:
|
||||
Integer jccs = 0;
|
||||
|
||||
for (Integer x: o.getJccsList()){
|
||||
if(x == null) x = 0;
|
||||
jccs += x;
|
||||
}
|
||||
Integer yccs = 0;
|
||||
// for (Integer x: o.getYccsList()){
|
||||
// if(x == null) x = 0;
|
||||
// yccs += x;
|
||||
// }
|
||||
yccs = o.getYckts();
|
||||
String ycl = getPercentageByAll(new BigDecimal(yccs),new BigDecimal(o.getKfkts())).toString();
|
||||
|
||||
String sm = "1.异常节次:"+ArrayUtil.join(o.getYcHhList().toArray(new String[]{}),",")+" 异常课程:"+ArrayUtil.join(o.getYcKcmcList().toArray(new String[]{}),",")+" 监测次数:"+jccs+" 异常次数:"+yccs+" 异常率:"+ycl;
|
||||
//list.add(o.getYcqksm());
|
||||
list.add(sm);
|
||||
mainList.add(list);
|
||||
}
|
||||
|
||||
// List<String> list = Lists.newArrayList();
|
||||
// list.add("楼1");
|
||||
// list.add("11");
|
||||
// list.add("22");
|
||||
// mainList.add(list);
|
||||
|
||||
//WordOperator.fillNullCall(mainList,mainList);
|
||||
//从固定位置开始添加(1为第二个表格,第二个1为固定位置)
|
||||
wo.insert2Table(0, index[0], true, mainList);
|
||||
index[0] += mainList.size() + 2;
|
||||
// wo.insert2Table(0, index[0], true, mainList);
|
||||
wo.insert2Table(1, 1, true, mainList);
|
||||
// index[0] += mainList.size() + 2;
|
||||
mainList.clear();
|
||||
|
||||
|
||||
//第二列表 最后一行拼接 1.异常节次: 异常课程: 监测次数: 异常次数: 异常率
|
||||
return wo;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
一、总体情况
|
||||
监测时间:{监测时间}
|
||||
监测教学楼:{监测教学楼}
|
||||
在监测时间段内,开课前15分钟开始,每间隔15分钟对线上开放课堂进行直播状态监测。本监测时间段内共{教学楼数}个教学楼{教室数}间教室提供线上开放课堂{}大节,运行正常课堂{运行正常课堂}大节,{运行异常课堂}大节课堂监测异常,线上开放课堂运行正常率为{正常率}%。
|
||||
在监测时间段内,开课前15分钟开始,每间隔15分钟对线上开放课堂进行直播状态监测。本监测时间段内共{教学楼数}个教学楼{教室数}间教室提供线上开放课堂{大节数}大节,运行正常课堂{运行正常课堂}大节,{运行异常课堂}大节课堂监测异常,线上开放课堂运行正常率为{正常率}%。
|
||||
线上开放课堂运行情况一览表
|
||||
教学楼
|
||||
合计
|
||||
|
@ -46,23 +46,6 @@ Z
|
|||
Z
|
||||
Z
|
||||
Z
|
||||
合计
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
{}
|
||||
|
||||
|
||||
|
||||
|
@ -80,7 +63,5 @@ Z
|
|||
z
|
||||
z
|
||||
z
|
||||
1.异常节次: 异常课程: 监测次数: 异常次数: 异常率
|
||||
|
||||
|
||||
z
|
||||
|
Loading…
Reference in New Issue