2023年10月30日 新增日志

This commit is contained in:
bai 2023-10-30 01:39:48 +08:00
parent a6ea6b72d1
commit de1ed8141d
16 changed files with 938 additions and 204 deletions

View File

@ -18,7 +18,9 @@ import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.kc.grab.exports.entity.TBks;
import org.jeecg.modules.kc.grab.exports.service.ITBksService;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshi;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiOperateLog;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiMonitorLogService;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiOperateLogService;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiService;
import org.springframework.beans.factory.annotation.Autowired;
@ -48,6 +50,10 @@ public class httpController extends JeecgController<TBks, ITBksService> {
@Autowired
private IKcZhihuijiaoshiOperateLogService kcZhihuijiaoshiOperateLogService;
@Autowired
private IKcZhihuijiaoshiMonitorLogService kcZhihuijiaoshiMonitorLogService;//操作与状态日志
@AutoLog(value = "对外部访问接口-通过IDS访问奥威亚接口")
@ApiOperation(value="T_BKS-抓取-通过id查询", notes="T_BKS-抓取-通过id查询")
@GetMapping(value = "/runAvyApiByIds")
@ -63,6 +69,19 @@ public class httpController extends JeecgController<TBks, ITBksService> {
list.forEach(x -> {
KcZhihuijiaoshiOperateLog operateLog = new KcZhihuijiaoshiOperateLog();
operateLog.setJxlId(x.getJxlId());//教学楼ID
operateLog.setJxlName(x.getJxlName());//教学楼名称
operateLog.setJsbh(x.getJsbh());//教室编号
operateLog.setJsmc(x.getJsmc());//教室名称
operateLog.setOperateType(type);//操作类型打开还是关闭
operateLog.setLogType(2);//日志类型
operateLog.setOperateResultType("0");//调用成功还是失败
KcZhihuijiaoshiMonitorLog mnitorLog = new KcZhihuijiaoshiMonitorLog();
mnitorLog.setJxlId(x.getJxlId());//教学楼ID
mnitorLog.setJxlName(x.getJxlName());//教学楼名称
mnitorLog.setJsbh(x.getJsbh());//教室编号
mnitorLog.setJsmc(x.getJsmc());//教室名称
//访问汇总结果
//http://${ip}/cgi-bin/plat.cgi?action=9&user=${user}&pwsd=${getMd5Str(pwd)}&command=1
String hex = Convert.toHex("live_setParam_enable=" + type, CharsetUtil.CHARSET_UTF_8);
@ -84,27 +103,25 @@ public class httpController extends JeecgController<TBks, ITBksService> {
rm.put("jsmc",x.getJsmc());
rm.put("url",buildUrl);
operateLog.setOperateUrl(buildUrl);//操作URL
operateLog.setJxlId(x.getJxlId());//教学楼ID
operateLog.setJxlName(x.getJxlName());//教学楼名称
operateLog.setJsbh(x.getJsbh());//教室编号
operateLog.setJsmc(x.getJsmc());//教室名称
operateLog.setOperateType(type);//操作类型打开还是关闭
operateLog.setLogType(2);//日志类型
operateLog.setOperateResultType("0");//调用成功还是失败
mnitorLog.setLogType(2);//默认调用成功失败
try{
String resText = HttpUtil.get(buildUrl);
log.info("奥威亚返回接口内容:" + resText);//live_setParam_ret=ok
rm.put("resText",resText);
operateLog.setOperateResult(resText);
mnitorLog.setLogType(2);//调用成功
// res.setResult(rm);
} catch (Exception e){
log.error(e.getMessage(),e);
rm.put("resText",e.getMessage());
operateLog.setOperateResultType("1");
operateLog.setOperateResult(e.getMessage());
mnitorLog.setLogType(3);//调用失败
// res.setResult(rm);
}finally {
kcZhihuijiaoshiOperateLogService.save(operateLog);
//保存操作详细日志
kcZhihuijiaoshiMonitorLogService.save(mnitorLog);
}
//解析决定最后返回结果
});
@ -131,6 +148,20 @@ public class httpController extends JeecgController<TBks, ITBksService> {
list.forEach(x -> {
KcZhihuijiaoshiOperateLog operateLog = new KcZhihuijiaoshiOperateLog();
operateLog.setJxlId(x.getJxlId());//教学楼ID
operateLog.setJxlName(x.getJxlName());//教学楼名称
operateLog.setJsbh(x.getJsbh());//教室编号
operateLog.setJsmc(x.getJsmc());//教室名称
operateLog.setOperateType(type);//操作类型打开还是关闭
operateLog.setLogType(2);//日志类型
operateLog.setOperateResultType("0");//调用成功还是失败
KcZhihuijiaoshiMonitorLog mnitorLog = new KcZhihuijiaoshiMonitorLog();
mnitorLog.setJxlId(x.getJxlId());//教学楼ID
mnitorLog.setJxlName(x.getJxlName());//教学楼名称
mnitorLog.setJsbh(x.getJsbh());//教室编号
mnitorLog.setJsmc(x.getJsmc());//教室名称
//访问汇总结果
//http://${ip}/cgi-bin/plat.cgi?action=9&user=${user}&pwsd=${getMd5Str(pwd)}&command=1
String hex = Convert.toHex("live_setParam_enable=" + type, CharsetUtil.CHARSET_UTF_8);
@ -152,27 +183,25 @@ public class httpController extends JeecgController<TBks, ITBksService> {
rm.put("jsmc",x.getJsmc());
rm.put("url",buildUrl);
operateLog.setOperateUrl(buildUrl);//操作URL
operateLog.setJxlId(x.getJxlId());//教学楼ID
operateLog.setJxlName(x.getJxlName());//教学楼名称
operateLog.setJsbh(x.getJsbh());//教室编号
operateLog.setJsmc(x.getJsmc());//教室名称
operateLog.setOperateType(type);//操作类型打开还是关闭
operateLog.setLogType(2);//日志类型
operateLog.setOperateResultType("0");//调用成功还是失败
mnitorLog.setLogType(2);//默认调用成功失败
try{
String resText = HttpUtil.get(buildUrl);
log.info("奥威亚返回接口内容:" + resText);//live_setParam_ret=ok
rm.put("resText",resText);
operateLog.setOperateResult(resText);
mnitorLog.setLogType(2);//调用成功
// res.setResult(rm);
} catch (Exception e){
log.error(e.getMessage(),e);
rm.put("resText",e.getMessage());
operateLog.setOperateResultType("1");
operateLog.setOperateResult(e.getMessage());
mnitorLog.setLogType(3);//调用失败
// res.setResult(rm);
}finally {
kcZhihuijiaoshiOperateLogService.save(operateLog);
//保存操作详细日志
kcZhihuijiaoshiMonitorLogService.save(mnitorLog);
}
//解析决定最后返回结果
});

View File

@ -6,29 +6,46 @@ import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.beust.jcommander.internal.Sets;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.modules.kc.grab.SynchronizationService.base.BaseSync;
import org.jeecg.modules.kc.jiaoshi.controller.KcZhihuijiaoshiController;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshi;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiOperateLog;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiStateLog;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiMonitorLogService;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiOperateLogService;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiService;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiStateLogService;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@Component
public class RefreshLiveServer extends BaseSync {
@Autowired
private IKcZhihuijiaoshiService kcZhihuijiaoshiService;
@Autowired
private IKcZhihuijiaoshiOperateLogService kcZhihuijiaoshiOperateLogService;
private KcZhihuijiaoshiController kcZhihuijiaoshiController;
@Autowired
private IKcZhihuijiaoshiOperateLogService kcZhihuijiaoshiOperateLogService;//真实操作日志
@Autowired
private IKcZhihuijiaoshiMonitorLogService kcZhihuijiaoshiMonitorLogService;//操作与状态日志
@Autowired
private IKcZhihuijiaoshiStateLogService kcZhihuijiaoshiStateLogService;//直播状态日志
/**
* 若参数变量名修改 QuartzJobController中也需对应修改
@ -41,50 +58,21 @@ public class RefreshLiveServer extends BaseSync {
end();
}
/**
* 有参定时任务实现
* @param param 执行参数
*/
public void run(Map<String, Object> param){
QueryWrapper<KcZhihuijiaoshi> qw = new QueryWrapper<KcZhihuijiaoshi>();
qw.eq("xm","教师近景");
List<KcZhihuijiaoshi> list = kcZhihuijiaoshiService.list(qw);
// Map<Integer,Boolean> liveOnMap = Maps.newHashMap();
Set<Integer> onList = Sets.newHashSet();
Set<Integer> outList = Sets.newHashSet();
list.forEach(x -> {
try{
String res = com.xkcoding.http.HttpUtil.get(x.getPullUrl());
// liveOnMap.put(x.getId(),true);
onList.add(x.getId());
log.info("返回内容:" + res);//live_setParam_ret=ok
} catch (Exception e){
//新版查询当前是否有课
KcZhihuijiaoshi jiaoshi = new KcZhihuijiaoshi();
jiaoshi.setXm("教师近景");
jiaoshi.setChangshang("奥威亚");
QueryWrapper<KcZhihuijiaoshi> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("xm","教师近景");
queryWrapper.eq("changshang","奥威亚");
IPage<KcZhihuijiaoshi> pageList = kcZhihuijiaoshiController.queryPageListN(jiaoshi, 1,-1,queryWrapper);
if(pageList != null){
List<KcZhihuijiaoshi> list = pageList.getRecords();
//正在上课的数据
List<KcZhihuijiaoshi> skzList = list.stream().filter(x -> x.getNowIsClass() != null && x.getNowIsClass()).collect(Collectors.toList());
skzList.forEach(x -> {
KcZhihuijiaoshiOperateLog operateLog = new KcZhihuijiaoshiOperateLog();
// liveOnMap.put(x.getId(),false);
outList.add(x.getId());
log.error(e.getMessage(),e);
//打开推送开关
//访问汇总结果
//http://${ip}/cgi-bin/plat.cgi?action=9&user=${user}&pwsd=${getMd5Str(pwd)}&command=1
String hex = Convert.toHex("live_setParam_enable=1", CharsetUtil.CHARSET_UTF_8);
String buildUrl = UrlBuilder.create()
.setScheme("http")
.setHost(x.getIp())
.addPath("/cgi-bin")
.addPath("/plat.cgi")
.addQuery("action", "9")
.addQuery("user", x.getUser())
.addQuery("pwsd", SecureUtil.md5(x.getMima()))
.addQuery("command", "1")
.addQuery("data", hex)
.build();
log.info("访问奥威亚接口地址"+buildUrl);
// Map<String,String> rm = Maps.newHashMap();
// rm.put("xm",x.getXm());
// rm.put("jsmc",x.getJsmc());
// rm.put("url",buildUrl);
operateLog.setOperateUrl(buildUrl);//操作URL
operateLog.setJxlId(x.getJxlId());//教学楼ID
operateLog.setJxlName(x.getJxlName());//教学楼名称
operateLog.setJsbh(x.getJsbh());//教室编号
@ -92,37 +80,121 @@ public class RefreshLiveServer extends BaseSync {
operateLog.setOperateType("1");//操作类型打开还是关闭
operateLog.setLogType(1);//日志类型
operateLog.setOperateResultType("0");//调用成功还是失败
try{
String resText = HttpUtil.get(buildUrl);
log.info("奥威亚返回接口内容:" + resText);//live_setParam_ret=ok
// rm.put("resText",resText);
operateLog.setOperateResult(resText);
// res.setResult(rm);
} catch (Exception e2){
log.error(e2.getMessage(),e2);
// rm.put("resText",e2.getMessage());
operateLog.setOperateResultType("1");
operateLog.setOperateResult(e2.getMessage());
// res.setResult(rm);
}finally {
kcZhihuijiaoshiOperateLogService.save(operateLog);
}
KcZhihuijiaoshiMonitorLog mnitorLog = new KcZhihuijiaoshiMonitorLog();
mnitorLog.setJxlId(x.getJxlId());//教学楼ID
mnitorLog.setJxlName(x.getJxlName());//教学楼名称
mnitorLog.setJsbh(x.getJsbh());//教室编号
mnitorLog.setJsmc(x.getJsmc());//教室名称
try {
String res = com.xkcoding.http.HttpUtil.get(x.getPullUrl());
log.info("返回内容:" + res);//live_setParam_ret=ok
//记录日志
mnitorLog.setLogType(1);//播放成功
} catch (Exception e){
//播放失败
//开启
log.error(e.getMessage(),e);
//打开推送开关
//访问汇总结果
//http://${ip}/cgi-bin/plat.cgi?action=9&user=${user}&pwsd=${getMd5Str(pwd)}&command=1
String hex = Convert.toHex("live_setParam_enable=1", CharsetUtil.CHARSET_UTF_8);
String buildUrl = UrlBuilder.create()
.setScheme("http")
.setHost(x.getIp())
.addPath("/cgi-bin")
.addPath("/plat.cgi")
.addQuery("action", "9")
.addQuery("user", x.getUser())
.addQuery("pwsd", SecureUtil.md5(x.getMima()))
.addQuery("command", "1")
.addQuery("data", hex)
.build();
log.info("访问奥威亚接口地址"+buildUrl);
operateLog.setOperateUrl(buildUrl);//操作URL
mnitorLog.setLogType(2);//默认调用成功失败
try{
String resText = HttpUtil.get(buildUrl);
log.info("奥威亚返回接口内容:" + resText);//live_setParam_ret=ok
operateLog.setOperateResult(resText);
mnitorLog.setLogType(2);//调用成功
} catch (Exception e2){
log.error(e2.getMessage(),e2);
operateLog.setOperateResultType("1");
operateLog.setOperateResult(e2.getMessage());
mnitorLog.setLogType(3);//调用失败
}finally {
kcZhihuijiaoshiOperateLogService.save(operateLog);
}
}finally {
//保存操作详细日志
kcZhihuijiaoshiMonitorLogService.save(mnitorLog);
}
});
}
}
/**
* 刷新日志
*/
public void refreshState(){
QueryWrapper<KcZhihuijiaoshi> qw = new QueryWrapper<KcZhihuijiaoshi>();
//qw.eq("xm","教师近景");
List<KcZhihuijiaoshi> list = kcZhihuijiaoshiService.list(qw);
//删除旧数据
kcZhihuijiaoshiStateLogService.remove(new QueryWrapper<>());
Map<String, KcZhihuijiaoshiStateLog> stateLogMap = Maps.newHashMap();
list.forEach(x -> {
KcZhihuijiaoshiStateLog stateLog = null;
if(stateLogMap.containsKey(x.getJsbh())){
stateLog = stateLogMap.get(x.getJsbh());
}else{
KcZhihuijiaoshiStateLog _stateLog = new KcZhihuijiaoshiStateLog();
_stateLog.setJxlId(x.getJxlId());//教学楼ID
_stateLog.setJxlName(x.getJxlName());//教学楼名称
_stateLog.setJsbh(x.getJsbh());//教室编号
_stateLog.setJsmc(x.getJsmc());//教室名称
stateLogMap.put(x.getJsbh(),_stateLog);
stateLog = _stateLog;
}
try{
String res = com.xkcoding.http.HttpUtil.get(x.getPullUrl());
log.info("返回内容:" + res);
switch (x.getXm()){
case "教师近景": stateLog.setLbzj("green");break;
case "教师全景": stateLog.setJsqj("green");break;
case "学生全景": stateLog.setXsqj("green");break;
case "PPT": stateLog.setPpt("green");break;
default:
}
} catch (Exception e){
//失败
switch (x.getXm()){
case "教师近景": stateLog.setLbzj("red");break;
case "教师全景": stateLog.setJsqj("red");break;
case "学生全景": stateLog.setXsqj("red");break;
case "PPT": stateLog.setPpt("red");break;
default:
}
}
});
// if(!onList.isEmpty()){
// UpdateWrapper<KcZhihuijiaoshi> onUw = new UpdateWrapper<>();
// onUw.set("sfyx",0);
// onUw.in("id",onList);
// kcZhihuijiaoshiService.update(onUw);
// }
//
// if(!outList.isEmpty()) {
// UpdateWrapper<KcZhihuijiaoshi> outUw = new UpdateWrapper<>();
// outUw.set("sfyx", 1);
// outUw.in("id", outList);
// kcZhihuijiaoshiService.update(outUw);
// }
//重新计算内容
stateLogMap.forEach((k,v) -> {
int num = (StringUtils.equals("green",v.getLbzj())?1:0) + (StringUtils.equals("green",v.getJsqj())?1:0) + (StringUtils.equals("green",v.getXsqj())?1:0) + (StringUtils.equals("green",v.getPpt())?1:0);
v.setGreenNum(num);
if(num == 4){
v.setType("green");
}else if(num == 0){
v.setType("red");
}else{
v.setType("yellow");
}
});
kcZhihuijiaoshiStateLogService.saveBatch(stateLogMap.values());
}
/**

View File

@ -21,6 +21,7 @@ import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.kc.grab.SynchronizationService.RefreshLiveServer;
import org.jeecg.modules.kc.jiaoshi.entity.KcJiaoxuelouInfo;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshi;
import org.jeecg.modules.kc.jiaoshi.service.IKcJiaoxuelouInfoService;
@ -31,6 +32,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiStateLogService;
import org.jeecg.modules.kc.kcJieci.entity.KcJieci;
import org.jeecg.modules.kc.kcJieci.service.IKcJieciService;
import org.jeecg.modules.kc.ktgl.entity.KcKetangbiao;
@ -45,6 +47,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@ -81,6 +84,13 @@ public class KcZhihuijiaoshiController extends JeecgController<KcZhihuijiaoshi,
@Autowired
private IKcJiaoxuelouInfoService kcJiaoxuelouInfoService;
@Lazy
@Autowired
private RefreshLiveServer refreshLiveServer;
@Autowired
private IKcZhihuijiaoshiStateLogService kcZhihuijiaoshiStateLogService;//直播状态日志
@Autowired
private DictUtils dictUtils;
@ -89,6 +99,126 @@ public class KcZhihuijiaoshiController extends JeecgController<KcZhihuijiaoshi,
private Integer ksTime;
private Integer jsTime;
}
public IPage<KcZhihuijiaoshi> queryPageListN(KcZhihuijiaoshi kcZhihuijiaoshi,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
QueryWrapper<KcZhihuijiaoshi> queryWrapper) {
Page<KcZhihuijiaoshi> page = new Page<KcZhihuijiaoshi>(pageNo, pageSize);
IPage<KcZhihuijiaoshi> pageList = kcZhihuijiaoshiService.page(page, queryWrapper);
//查询今天的课
DateTime starTime = DateTime.now();
String nowTimeStr = starTime.toString("HHmm");
int nowTimeNum = Integer.parseInt(nowTimeStr);
starTime = DateUtil.endOfDay(starTime);//校正为今天末尾
String nowStr = starTime.toString("yyyy-MM-dd");
QueryWrapper<KcKetangbiao> ktqw = new QueryWrapper<>();
ktqw.apply("skrq >= STR_TO_DATE('"+nowStr+"', '%Y-%m-%d')");
ktqw.apply("skrq < DATE_ADD(STR_TO_DATE('"+nowStr+"','%Y-%m-%d'),INTERVAL 1 DAY)");
List<KcKetangbiao> kcKetangbiaoList = kcKetangbiaoService.list(ktqw);
starTime = starTime.offset(DateField.DAY_OF_MONTH,1);//明天
String nowStr2 = starTime.toString("yyyy-MM-dd");
QueryWrapper<KcKetangbiao> nextDayKtqw = new QueryWrapper<>();
nextDayKtqw.eq("hh","01、02");//明天的只查0102这个节次的
nextDayKtqw.apply("skrq >= STR_TO_DATE('"+nowStr2+"', '%Y-%m-%d')");
nextDayKtqw.apply("skrq < DATE_ADD(STR_TO_DATE('"+nowStr2+"','%Y-%m-%d'),INTERVAL 1 DAY)");
List<KcKetangbiao> nextDayKcKetangbiaoList = kcKetangbiaoService.list(nextDayKtqw);
//查询全部的教学楼
//QueryWrapper<KcKetangbiao> jxlqw = new QueryWrapper<>();
List<KcJiaoxuelouInfo> jiaoxuelouInfoList = kcJiaoxuelouInfoService.list();
Map<String, KcJiaoxuelouInfo> jiaoxuelouInfoMap = jiaoxuelouInfoList.stream().collect(Collectors.toMap(KcJiaoxuelouInfo::getId,a -> a, (a,b) -> a));
//下一节次映射表
Map<String,String> nextJcMap = Maps.newHashMap();
nextJcMap.put("01、02","03、04");
nextJcMap.put("03、04","05、06");
nextJcMap.put("05、06","07、08");
nextJcMap.put("07、08","09、10");
nextJcMap.put("09、10","11、12");
nextJcMap.put("11、12","01、02");
//查询节次时间
QueryWrapper<KcJieci> jcqw = new QueryWrapper<>();
jcqw.like("jieci","");
List<KcJieci> kcJieciList= kcJieciService.list(jcqw);
Map<String, JieciIntTime> kcJieciMap = Maps.newHashMap();
Set<String> nextKcJieciSet = Sets.newHashSet();
kcJieciList.forEach(x -> {
JieciIntTime jieciIntTime = new JieciIntTime();
jieciIntTime.setKsTime(Integer.parseInt(x.getHhks())+30);//提前30分钟
jieciIntTime.setJsTime(Integer.parseInt(x.getHhjs()));
if(jieciIntTime.getKsTime() <= nowTimeNum && nowTimeNum <= jieciIntTime.getJsTime()){
//符合当前节
kcJieciMap.put(x.getJieci(), jieciIntTime);
}
//下一节次
});
//补充进下一节次里
kcJieciMap.forEach((k,v) -> {
if(nextJcMap.containsKey(k)){
String nextKey = nextJcMap.get(k);
//if(kcJieciMap.containsKey(nextKey)){
nextKcJieciSet.add(nextKey);//存下一节课占个可以就行
//}
}
});
//根据节次信息包装进Map
Set<String> kcKetangbiaoNowSet = Sets.newHashSet();
Set<String> kcKetangbiaoNextSet = Sets.newHashSet();
kcKetangbiaoList.forEach(x -> {
//匹配是否在上课范围内
if(kcJieciMap.containsKey(x.getHh())){
kcKetangbiaoNowSet.add(x.getJsbh());
}
//下一节不是0102的归类为明天的
if(nextKcJieciSet.contains(x.getHh()) && !StringUtils.equals(x.getHh(),"01、02")){
kcKetangbiaoNextSet.add(x.getJsbh());
}
});
if(kcJieciMap.isEmpty() || kcJieciMap.containsKey("11、12")){//当前没有节次当前匹配节次为最后一节使用明天的课程填充进去
nextDayKcKetangbiaoList.forEach(x -> {
if(StringUtils.equals(x.getHh(),"01、02")){
kcKetangbiaoNextSet.add(x.getJsbh());
}
});
}
//计算哪节在时间范围内
//装填到数据里
pageList.getRecords().forEach(x -> {
//jsbh 教室编号
//sksj 上课时间
//hh 节次
//kcJieciMap.containsKey(x.getHh)
//nowTimeNum
if(kcKetangbiaoNowSet.contains(x.getJsbh())){
x.setNowIsClass(true);
}
// x.setNowIsClass(true);//debug
if(kcKetangbiaoNextSet.contains(x.getJsbh())){
x.setNextIsClass(true);
}
if(jiaoxuelouInfoMap.containsKey(x.getJxlId())){
KcJiaoxuelouInfo info = jiaoxuelouInfoMap.get(x.getJxlId());
x.setJsNum(StringUtils.defaultString(info.getJsNum(),"0"));
}
});
return pageList;
}
/**
* 分页列表查询
*
@ -106,118 +236,7 @@ public class KcZhihuijiaoshiController extends JeecgController<KcZhihuijiaoshi,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<KcZhihuijiaoshi> queryWrapper = QueryGenerator.initQueryWrapper(kcZhihuijiaoshi, req.getParameterMap());
Page<KcZhihuijiaoshi> page = new Page<KcZhihuijiaoshi>(pageNo, pageSize);
IPage<KcZhihuijiaoshi> pageList = kcZhihuijiaoshiService.page(page, queryWrapper);
//查询今天的课
DateTime starTime = DateTime.now();
String nowTimeStr = starTime.toString("HHmm");
int nowTimeNum = Integer.parseInt(nowTimeStr);
starTime = DateUtil.endOfDay(starTime);//校正为今天末尾
String nowStr = starTime.toString("yyyy-MM-dd");
QueryWrapper<KcKetangbiao> ktqw = new QueryWrapper<>();
ktqw.apply("skrq >= STR_TO_DATE('"+nowStr+"', '%Y-%m-%d')");
ktqw.apply("skrq < DATE_ADD(STR_TO_DATE('"+nowStr+"','%Y-%m-%d'),INTERVAL 1 DAY)");
List<KcKetangbiao> kcKetangbiaoList = kcKetangbiaoService.list(ktqw);
starTime = starTime.offset(DateField.DAY_OF_MONTH,1);//明天
String nowStr2 = starTime.toString("yyyy-MM-dd");
QueryWrapper<KcKetangbiao> nextDayKtqw = new QueryWrapper<>();
nextDayKtqw.eq("hh","01、02");//明天的只查0102这个节次的
nextDayKtqw.apply("skrq >= STR_TO_DATE('"+nowStr2+"', '%Y-%m-%d')");
nextDayKtqw.apply("skrq < DATE_ADD(STR_TO_DATE('"+nowStr2+"','%Y-%m-%d'),INTERVAL 1 DAY)");
List<KcKetangbiao> nextDayKcKetangbiaoList = kcKetangbiaoService.list(nextDayKtqw);
//查询全部的教学楼
//QueryWrapper<KcKetangbiao> jxlqw = new QueryWrapper<>();
List<KcJiaoxuelouInfo> jiaoxuelouInfoList = kcJiaoxuelouInfoService.list();
Map<String, KcJiaoxuelouInfo> jiaoxuelouInfoMap = jiaoxuelouInfoList.stream().collect(Collectors.toMap(KcJiaoxuelouInfo::getId,a -> a, (a,b) -> a));
//下一节次映射表
Map<String,String> nextJcMap = Maps.newHashMap();
nextJcMap.put("01、02","03、04");
nextJcMap.put("03、04","05、06");
nextJcMap.put("05、06","07、08");
nextJcMap.put("07、08","09、10");
nextJcMap.put("09、10","11、12");
nextJcMap.put("11、12","01、02");
//查询节次时间
QueryWrapper<KcJieci> jcqw = new QueryWrapper<>();
jcqw.like("jieci","");
List<KcJieci> kcJieciList= kcJieciService.list(jcqw);
Map<String, JieciIntTime> kcJieciMap = Maps.newHashMap();
Set<String> nextKcJieciSet = Sets.newHashSet();
kcJieciList.forEach(x -> {
JieciIntTime jieciIntTime = new JieciIntTime();
jieciIntTime.setKsTime(Integer.parseInt(x.getHhks())+30);//提前30分钟
jieciIntTime.setJsTime(Integer.parseInt(x.getHhjs()));
if(jieciIntTime.getKsTime() <= nowTimeNum && nowTimeNum <= jieciIntTime.getJsTime()){
//符合当前节
kcJieciMap.put(x.getJieci(), jieciIntTime);
}
//下一节次
});
//补充进下一节次里
kcJieciMap.forEach((k,v) -> {
if(nextJcMap.containsKey(k)){
String nextKey = nextJcMap.get(k);
//if(kcJieciMap.containsKey(nextKey)){
nextKcJieciSet.add(nextKey);//存下一节课占个可以就行
//}
}
});
//根据节次信息包装进Map
Set<String> kcKetangbiaoNowSet = Sets.newHashSet();
Set<String> kcKetangbiaoNextSet = Sets.newHashSet();
kcKetangbiaoList.forEach(x -> {
//匹配是否在上课范围内
if(kcJieciMap.containsKey(x.getHh())){
kcKetangbiaoNowSet.add(x.getJsbh());
}
//下一节不是0102的归类为明天的
if(nextKcJieciSet.contains(x.getHh()) && !StringUtils.equals(x.getHh(),"01、02")){
kcKetangbiaoNextSet.add(x.getJsbh());
}
});
if(kcJieciMap.isEmpty() || kcJieciMap.containsKey("11、12")){//当前没有节次当前匹配节次为最后一节使用明天的课程填充进去
nextDayKcKetangbiaoList.forEach(x -> {
if(StringUtils.equals(x.getHh(),"01、02")){
kcKetangbiaoNextSet.add(x.getJsbh());
}
});
}
//计算哪节在时间范围内
//装填到数据里
pageList.getRecords().forEach(x -> {
//jsbh 教室编号
//sksj 上课时间
//hh 节次
//kcJieciMap.containsKey(x.getHh)
//nowTimeNum
if(kcKetangbiaoNowSet.contains(x.getJsbh())){
x.setNowIsClass(true);
}
if(kcKetangbiaoNextSet.contains(x.getJsbh())){
x.setNextIsClass(true);
}
if(jiaoxuelouInfoMap.containsKey(x.getJxlId())){
KcJiaoxuelouInfo info = jiaoxuelouInfoMap.get(x.getJxlId());
x.setJsNum(StringUtils.defaultString(info.getJsNum(),"0"));
}
});
IPage<KcZhihuijiaoshi> pageList = queryPageListN(kcZhihuijiaoshi,pageNo,pageSize,queryWrapper);
return Result.OK(pageList);
}
@ -377,5 +396,14 @@ public class KcZhihuijiaoshiController extends JeecgController<KcZhihuijiaoshi,
return Result.OK(quartzJob);
}
/**
* 刷新状态日志
* @return
*/
@GetMapping(value = "/refreshLogs")
public Result<?> refreshLogs(){
refreshLiveServer.refreshState();
return Result.OK(kcZhihuijiaoshiStateLogService.list());
}
}

View File

@ -0,0 +1,152 @@
package org.jeecg.modules.kc.jiaoshi.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiMonitorLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
@Slf4j
@Api(tags="状态日志")
@RestController
@RequestMapping("/jiaoshi/kcZhihuijiaoshiMonitorLog")
public class KcZhihuijiaoshiMonitorLogController extends JeecgController<KcZhihuijiaoshiMonitorLog, IKcZhihuijiaoshiMonitorLogService> {
@Autowired
private IKcZhihuijiaoshiMonitorLogService kcZhihuijiaoshiMonitorLogService;
/**
* 分页列表查询
*
* @param kcZhihuijiaoshiMonitorLog
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "状态日志-分页列表查询")
@ApiOperation(value="状态日志-分页列表查询", notes="状态日志-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(KcZhihuijiaoshiMonitorLog kcZhihuijiaoshiMonitorLog,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<KcZhihuijiaoshiMonitorLog> queryWrapper = QueryGenerator.initQueryWrapper(kcZhihuijiaoshiMonitorLog, req.getParameterMap());
Page<KcZhihuijiaoshiMonitorLog> page = new Page<KcZhihuijiaoshiMonitorLog>(pageNo, pageSize);
IPage<KcZhihuijiaoshiMonitorLog> pageList = kcZhihuijiaoshiMonitorLogService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param kcZhihuijiaoshiMonitorLog
* @return
*/
@AutoLog(value = "状态日志-添加")
@ApiOperation(value="状态日志-添加", notes="状态日志-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody KcZhihuijiaoshiMonitorLog kcZhihuijiaoshiMonitorLog) {
kcZhihuijiaoshiMonitorLogService.save(kcZhihuijiaoshiMonitorLog);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param kcZhihuijiaoshiMonitorLog
* @return
*/
@AutoLog(value = "状态日志-编辑")
@ApiOperation(value="状态日志-编辑", notes="状态日志-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<?> edit(@RequestBody KcZhihuijiaoshiMonitorLog kcZhihuijiaoshiMonitorLog) {
kcZhihuijiaoshiMonitorLogService.updateById(kcZhihuijiaoshiMonitorLog);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "状态日志-通过id删除")
@ApiOperation(value="状态日志-通过id删除", notes="状态日志-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
kcZhihuijiaoshiMonitorLogService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "状态日志-批量删除")
@ApiOperation(value="状态日志-批量删除", notes="状态日志-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.kcZhihuijiaoshiMonitorLogService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "状态日志-通过id查询")
@ApiOperation(value="状态日志-通过id查询", notes="状态日志-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
KcZhihuijiaoshiMonitorLog kcZhihuijiaoshiMonitorLog = kcZhihuijiaoshiMonitorLogService.getById(id);
return Result.OK(kcZhihuijiaoshiMonitorLog);
}
/**
* 导出excel
*
* @param request
* @param kcZhihuijiaoshiMonitorLog
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, KcZhihuijiaoshiMonitorLog kcZhihuijiaoshiMonitorLog) {
return super.exportXls(request, kcZhihuijiaoshiMonitorLog, KcZhihuijiaoshiMonitorLog.class, "状态日志");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, KcZhihuijiaoshiMonitorLog.class);
}
}

View File

@ -0,0 +1,167 @@
package org.jeecg.modules.kc.jiaoshi.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiStateLog;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiStateLogService;
import java.util.Date;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
@Slf4j
@Api(tags="状态日志")
@RestController
@RequestMapping("/jiaoshi/kcZhihuijiaoshiStateLog")
public class KcZhihuijiaoshiStateLogController extends JeecgController<KcZhihuijiaoshiStateLog, IKcZhihuijiaoshiStateLogService> {
@Autowired
private IKcZhihuijiaoshiStateLogService kcZhihuijiaoshiStateLogService;
/**
* 分页列表查询
*
* @param kcZhihuijiaoshiStateLog
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "状态日志-分页列表查询")
@ApiOperation(value="状态日志-分页列表查询", notes="状态日志-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(KcZhihuijiaoshiStateLog kcZhihuijiaoshiStateLog,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<KcZhihuijiaoshiStateLog> queryWrapper = QueryGenerator.initQueryWrapper(kcZhihuijiaoshiStateLog, req.getParameterMap());
Page<KcZhihuijiaoshiStateLog> page = new Page<KcZhihuijiaoshiStateLog>(pageNo, pageSize);
IPage<KcZhihuijiaoshiStateLog> pageList = kcZhihuijiaoshiStateLogService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param kcZhihuijiaoshiStateLog
* @return
*/
@AutoLog(value = "状态日志-添加")
@ApiOperation(value="状态日志-添加", notes="状态日志-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody KcZhihuijiaoshiStateLog kcZhihuijiaoshiStateLog) {
kcZhihuijiaoshiStateLogService.save(kcZhihuijiaoshiStateLog);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param kcZhihuijiaoshiStateLog
* @return
*/
@AutoLog(value = "状态日志-编辑")
@ApiOperation(value="状态日志-编辑", notes="状态日志-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<?> edit(@RequestBody KcZhihuijiaoshiStateLog kcZhihuijiaoshiStateLog) {
kcZhihuijiaoshiStateLogService.updateById(kcZhihuijiaoshiStateLog);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "状态日志-通过id删除")
@ApiOperation(value="状态日志-通过id删除", notes="状态日志-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
kcZhihuijiaoshiStateLogService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "状态日志-批量删除")
@ApiOperation(value="状态日志-批量删除", notes="状态日志-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.kcZhihuijiaoshiStateLogService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "状态日志-通过id查询")
@ApiOperation(value="状态日志-通过id查询", notes="状态日志-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
KcZhihuijiaoshiStateLog kcZhihuijiaoshiStateLog = kcZhihuijiaoshiStateLogService.getById(id);
return Result.OK(kcZhihuijiaoshiStateLog);
}
/**
* 导出excel
*
* @param request
* @param kcZhihuijiaoshiStateLog
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, KcZhihuijiaoshiStateLog kcZhihuijiaoshiStateLog) {
return super.exportXls(request, kcZhihuijiaoshiStateLog, KcZhihuijiaoshiStateLog.class, "状态日志");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, KcZhihuijiaoshiStateLog.class);
}
}

View File

@ -0,0 +1,78 @@
package org.jeecg.modules.kc.jiaoshi.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
@Data
@TableName("kc_zhihuijiaoshi_monitor_log")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="kc_zhihuijiaoshi_monitor_log对象", description="状态日志")
public class KcZhihuijiaoshiMonitorLog {
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**日志类型(1:播放正常 | 2:播放失败,拉起成功 | 3:播放失败,拉起失败)*/
@Excel(name = "日志类型(1:播放正常 | 2:播放失败,拉起成功 | 3:播放失败,拉起失败)", width = 15)
@ApiModelProperty(value = "日志类型(1:播放正常 | 2:播放失败,拉起成功 | 3:播放失败,拉起失败)")
private java.lang.Integer logType;
/**教学楼编号*/
@Excel(name = "教学楼编号", width = 15)
@ApiModelProperty(value = "教学楼编号")
private java.lang.String jxlId;
/**教学楼名称*/
@Excel(name = "教学楼名称", width = 15)
@ApiModelProperty(value = "教学楼名称")
private java.lang.String jxlName;
/**教室编号*/
@Excel(name = "教室编号", width = 15)
@ApiModelProperty(value = "教室编号")
private java.lang.String jsbh;
/**教室名称*/
@Excel(name = "教室名称", width = 15)
@ApiModelProperty(value = "教室名称")
private java.lang.String jsmc;
/**创建人*/
@Excel(name = "创建人", width = 15)
@ApiModelProperty(value = "创建人")
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private java.lang.String createBy;
/**创建时间*/
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@Excel(name = "更新人", width = 15)
@ApiModelProperty(value = "更新人")
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private java.lang.String updateBy;
/**更新时间*/
@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}

View File

@ -0,0 +1,98 @@
package org.jeecg.modules.kc.jiaoshi.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
@Data
@TableName("kc_zhihuijiaoshi_state_log")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="kc_zhihuijiaoshi_state_log对象", description="状态日志")
public class KcZhihuijiaoshiStateLog {
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**教学楼编号*/
@Excel(name = "教学楼编号", width = 15)
@ApiModelProperty(value = "教学楼编号")
private java.lang.String jxlId;
/**教学楼名称*/
@Excel(name = "教学楼名称", width = 15)
@ApiModelProperty(value = "教学楼名称")
private java.lang.String jxlName;
/**教室编号*/
@Excel(name = "教室编号", width = 15)
@ApiModelProperty(value = "教室编号")
private java.lang.String jsbh;
/**教室名称*/
@Excel(name = "教室名称", width = 15)
@ApiModelProperty(value = "教室名称")
private java.lang.String jsmc;
/**教师近景(录播主机*/
@Excel(name = "教师近景(录播主机", width = 15)
@ApiModelProperty(value = "教师近景(录播主机)")
private java.lang.String lbzj;
/**教师全景*/
@Excel(name = "教师全景", width = 15)
@ApiModelProperty(value = "教师全景")
private java.lang.String jsqj;
/**学生全景*/
@Excel(name = "学生全景", width = 15)
@ApiModelProperty(value = "学生全景")
private java.lang.String xsqj;
/**PPT*/
@Excel(name = "PPT", width = 15)
@ApiModelProperty(value = "PPT")
private java.lang.String ppt;
/**绿色的数量*/
@Excel(name = "绿色的数量", width = 15)
@ApiModelProperty(value = "绿色的数量")
private java.lang.Integer greenNum;
/**状态指示灯green: 直播正常, yellow: 部分异常,red: 设备异常)*/
@Excel(name = "状态指示灯green: 直播正常, yellow: 部分异常,red: 设备异常)", width = 15)
@ApiModelProperty(value = "状态指示灯green: 直播正常, yellow: 部分异常,red: 设备异常)")
private java.lang.String type;
/**创建人*/
@Excel(name = "创建人", width = 15)
@ApiModelProperty(value = "创建人")
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private java.lang.String createBy;
/**创建时间*/
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@Excel(name = "更新人", width = 15)
@ApiModelProperty(value = "更新人")
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private java.lang.String updateBy;
/**更新时间*/
@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.kc.jiaoshi.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
public interface KcZhihuijiaoshiMonitorLogMapper extends BaseMapper<KcZhihuijiaoshiMonitorLog> {
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.kc.jiaoshi.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiStateLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
public interface KcZhihuijiaoshiStateLogMapper extends BaseMapper<KcZhihuijiaoshiStateLog> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.kc.jiaoshi.mapper.KcZhihuijiaoshiMonitorLogMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.kc.jiaoshi.mapper.KcZhihuijiaoshiStateLogMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.kc.jiaoshi.service;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
public interface IKcZhihuijiaoshiMonitorLogService extends IService<KcZhihuijiaoshiMonitorLog> {
}

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.kc.jiaoshi.service;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiStateLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
public interface IKcZhihuijiaoshiStateLogService extends IService<KcZhihuijiaoshiStateLog> {
}

View File

@ -0,0 +1,19 @@
package org.jeecg.modules.kc.jiaoshi.service.impl;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
import org.jeecg.modules.kc.jiaoshi.mapper.KcZhihuijiaoshiMonitorLogMapper;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiMonitorLogService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
@Service
public class KcZhihuijiaoshiMonitorLogServiceImpl extends ServiceImpl<KcZhihuijiaoshiMonitorLogMapper, KcZhihuijiaoshiMonitorLog> implements IKcZhihuijiaoshiMonitorLogService {
}

View File

@ -0,0 +1,19 @@
package org.jeecg.modules.kc.jiaoshi.service.impl;
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiStateLog;
import org.jeecg.modules.kc.jiaoshi.mapper.KcZhihuijiaoshiStateLogMapper;
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiStateLogService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 状态日志
* @Author: jeecg-boot
* @Date: 2023-10-29
* @Version: V1.0
*/
@Service
public class KcZhihuijiaoshiStateLogServiceImpl extends ServiceImpl<KcZhihuijiaoshiStateLogMapper, KcZhihuijiaoshiStateLog> implements IKcZhihuijiaoshiStateLogService {
}

View File

@ -138,10 +138,10 @@
<artifactId>pegdown</artifactId>
<version>${pegdown.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.jeecgframework.boot</groupId>-->
<!-- <artifactId>jeecg-boot-base-core</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
</dependency>
</dependencies>