tianze-pro/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseStudentSig...

272 lines
13 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.ibeetl.jlw.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.TeacherOpenCourseStudentSigninLogDao;
import com.ibeetl.jlw.dao.TeacherOpenCourseStudentSigninSettingDao;
import com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninSetting;
import com.ibeetl.jlw.entity.vo.SummaryBySigninSettingIdsVO;
import com.ibeetl.jlw.enums.StartStatusEnum;
import com.ibeetl.jlw.validator.TeacherOpenCourseStudentSigninSettingQueryValidator;
import com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninSettingQuery;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.SqlId;
import org.beetl.sql.core.engine.PageQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import static com.ibeetl.admin.core.util.BeanUtil.copyAllPropertiesSupportExtMap;
/**
* 学生签到设置 Service
* 当分布式ID开启后请勿使用insert(*,true)
*/
@Service
@Transactional
@Validated
@Slf4j
public class TeacherOpenCourseStudentSigninSettingService extends CoreBaseService<TeacherOpenCourseStudentSigninSetting> implements DeleteResourcesBy{
@Autowired private TeacherOpenCourseStudentSigninSettingDao teacherOpenCourseStudentSigninSettingDao;
@Autowired private TeacherOpenCourseStudentSigninLogDao teacherOpenCourseStudentSigninLogDao;
@Autowired private TeacherOpenCourseStudentSigninSettingQueryValidator settingQueryValidator;
public PageQuery<TeacherOpenCourseStudentSigninSetting>queryByCondition(PageQuery query){
PageQuery ret = teacherOpenCourseStudentSigninSettingDao.queryByCondition(query);
queryListAfter(ret.getList());
// setSummaryInfo(ret.getList());
return ret;
}
/**
* 根据签到ID设置汇总数据
* @param list
*/
private void setSummaryInfo(List<TeacherOpenCourseStudentSigninSetting> list) {
if (ObjectUtil.isNotEmpty(list)) {
String signinSettingIds = list.stream().map(item -> item.getTeacherOpenCourseStudentSigninSettingId().toString()).collect(Collectors.joining(","));
List<SummaryBySigninSettingIdsVO> vos = teacherOpenCourseStudentSigninLogDao.summaryBySigninSettingIds(signinSettingIds);
CopyOnWriteArrayList<SummaryBySigninSettingIdsVO> vosSync = new CopyOnWriteArrayList<>(vos);
for (SummaryBySigninSettingIdsVO vo : vosSync) {
Long settingId = vo.getTeacherOpenCourseStudentSigninSettingId();
for (TeacherOpenCourseStudentSigninSetting signinSetting : list) {
// 比对id进行值拷贝操作了
if (signinSetting.getTeacherOpenCourseStudentSigninSettingId().equals(settingId)) {
copyAllPropertiesSupportExtMap(vo, signinSetting);
vosSync.removeIf(item -> item.getTeacherOpenCourseStudentSigninSettingId().equals(settingId));
continue;
}
}
}
}
}
public PageQuery<TeacherOpenCourseStudentSigninSetting>queryByConditionQuery(PageQuery query){
PageQuery ret = teacherOpenCourseStudentSigninSettingDao.queryByConditionQuery(query);
queryListAfter(ret.getList());
return ret;
}
public void deleteByList(List list){
String ids = "";
ToolUtils.deleteNullList(list);
for(int i=0;null != list && i<list.size();i++){
ids += list.get(i).toString()+(i==list.size()-1?"":",");
}
if(StringUtils.isNotBlank(ids)){
teacherOpenCourseStudentSigninSettingDao.deleteByIds(ids);
}
}
public void deleteTeacherOpenCourseStudentSigninSetting(String ids){
try {
teacherOpenCourseStudentSigninSettingDao.deleteTeacherOpenCourseStudentSigninSettingByIds(ids);
} catch (Exception e) {
throw new PlatformException("批量删除学生签到设置失败", e);
}
}
public String addAll(TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
String msg = "";
List<TeacherOpenCourseStudentSigninSetting> teacherOpenCourseStudentSigninSettingList = new ArrayList<>();
try {
teacherOpenCourseStudentSigninSettingList = JSON.parseArray(teacherOpenCourseStudentSigninSettingQuery.getTeacherOpenCourseStudentSigninSettingJsonStr(), TeacherOpenCourseStudentSigninSetting.class);
} catch (Exception e) {
try {
teacherOpenCourseStudentSigninSettingList.add(JSONObject.parseObject(teacherOpenCourseStudentSigninSettingQuery.getTeacherOpenCourseStudentSigninSettingJsonStr(), TeacherOpenCourseStudentSigninSetting.class));
} catch (Exception e1) {}
}
ToolUtils.deleteNullList(teacherOpenCourseStudentSigninSettingList);
if(null != teacherOpenCourseStudentSigninSettingList && teacherOpenCourseStudentSigninSettingList.size()>0){
for(int i=0;i<teacherOpenCourseStudentSigninSettingList.size();i++){
TeacherOpenCourseStudentSigninSetting teacherOpenCourseStudentSigninSetting = teacherOpenCourseStudentSigninSettingList.get(i);
teacherOpenCourseStudentSigninSetting.setUserId(teacherOpenCourseStudentSigninSettingQuery.getUserId());
teacherOpenCourseStudentSigninSetting.setOrgId(teacherOpenCourseStudentSigninSettingQuery.getOrgId());
}
insertBatch(teacherOpenCourseStudentSigninSettingList);
}
return msg;
}
public JsonResult add(TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
String msg = "";
settingQueryValidator.validator(teacherOpenCourseStudentSigninSettingQuery);
TeacherOpenCourseStudentSigninSetting teacherOpenCourseStudentSigninSetting = teacherOpenCourseStudentSigninSettingQuery.pojo();
teacherOpenCourseStudentSigninSetting.setTeacherOpenCourseStudentSigninSettingAddTime(new Date());
// 默认是未开始的状态
teacherOpenCourseStudentSigninSetting.setTeacherOpenCourseStudentSigninSettingStartStatus(StartStatusEnum.READY);
teacherOpenCourseStudentSigninSettingDao.insert(teacherOpenCourseStudentSigninSetting);
teacherOpenCourseStudentSigninSettingQuery.setTeacherOpenCourseStudentSigninSettingId(teacherOpenCourseStudentSigninSetting.getTeacherOpenCourseStudentSigninSettingId());
JsonResult jsonResult = new JsonResult();
jsonResult.setData(teacherOpenCourseStudentSigninSetting.getTeacherOpenCourseStudentSigninSettingId());//自增的ID丢进去
jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
jsonResult.setMsg(msg);
return jsonResult;
}
public String edit(TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
String msg = "";
TeacherOpenCourseStudentSigninSetting teacherOpenCourseStudentSigninSetting = teacherOpenCourseStudentSigninSettingQuery.pojo();
teacherOpenCourseStudentSigninSettingDao.updateTemplateById(teacherOpenCourseStudentSigninSetting);
return msg;
}
public String updateGivenByIds(TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
String msg = "";
if(StringUtils.isNotBlank(teacherOpenCourseStudentSigninSettingQuery.get_given())){
boolean flag = teacherOpenCourseStudentSigninSettingDao.updateGivenByIds(teacherOpenCourseStudentSigninSettingQuery) > 0;
if(!flag){
msg = "更新指定参数失败";
}
}else{
msg = "指定参数为空";
}
return msg;
}
public List<TeacherOpenCourseStudentSigninSetting> getValues (Object paras){
return sqlManager.select(SqlId.of("jlw.teacherOpenCourseStudentSigninSetting.getTeacherOpenCourseStudentSigninSettingValues"), TeacherOpenCourseStudentSigninSetting.class, paras);
}
public List<TeacherOpenCourseStudentSigninSetting> getValuesByQuery (TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
return teacherOpenCourseStudentSigninSettingDao.getValuesByQuery(teacherOpenCourseStudentSigninSettingQuery);
}
public List<TeacherOpenCourseStudentSigninSetting> getValuesByQueryNotWithPermission (TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
return teacherOpenCourseStudentSigninSettingDao.getValuesByQueryNotWithPermission(teacherOpenCourseStudentSigninSettingQuery);
}
public void parser(Object obj) {
dictParser(obj);
}
public TeacherOpenCourseStudentSigninSetting getInfo (Long teacherOpenCourseStudentSigninSettingId){
TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery = new TeacherOpenCourseStudentSigninSettingQuery();
teacherOpenCourseStudentSigninSettingQuery.setTeacherOpenCourseStudentSigninSettingId(teacherOpenCourseStudentSigninSettingId);
teacherOpenCourseStudentSigninSettingQuery.setTeacherOpenCourseStudentSigninSettingStatusPlural("1,2");//需要根据实际情况来
List<TeacherOpenCourseStudentSigninSetting> list = teacherOpenCourseStudentSigninSettingDao.getValuesByQuery(teacherOpenCourseStudentSigninSettingQuery);
if(null != list && list.size()>0){
return list.get(0);
}else{
return null;
}
}
public TeacherOpenCourseStudentSigninSetting getInfo (TeacherOpenCourseStudentSigninSettingQuery teacherOpenCourseStudentSigninSettingQuery){
List<TeacherOpenCourseStudentSigninSetting> list = teacherOpenCourseStudentSigninSettingDao.getValuesByQuery(teacherOpenCourseStudentSigninSettingQuery);
if(null != list && list.size()>0){
return list.get(0);
}else{
return null;
}
}
/**
* 设置签到配置的状态 开始,结束
* @param id
* @param status
*/
public void updateStatus(@NotNull(message = "签到配置ID不能为空") Long id,
@NotNull(message = "签到状态不能为空!")
Integer status) {
TeacherOpenCourseStudentSigninSetting model = new TeacherOpenCourseStudentSigninSetting();
model.setTeacherOpenCourseStudentSigninSettingId(id);
switch (status) {
case 1: {
model.setTeacherOpenCourseStudentSigninSettingAddTime(new Date());
// 结束时间设置为空,代表只要大于开始时间,就一直可以进行签到
model.setTeacherOpenCourseStudentSigninSettingEndTime(null);
model.setTeacherOpenCourseStudentSigninSettingStartStatus(StartStatusEnum.ING);
TeacherOpenCourseStudentSigninSettingQuery settingQuery = new TeacherOpenCourseStudentSigninSettingQuery();
BeanUtil.copyProperties(model, settingQuery);
settingQuery.setTeacherOpenCourseStudentSigninSettingIdPlural(id.toString());
settingQuery.set_given(
"teacherOpenCourseStudentSigninSettingAddTime," +
"teacherOpenCourseStudentSigninSettingEndTime," +
"teacherOpenCourseStudentSigninSettingStartStatus");
updateGivenByIds(settingQuery);
} break;
case 2: {
// 结束时间,赋值
model.setTeacherOpenCourseStudentSigninSettingEndTime(new Date());
model.setTeacherOpenCourseStudentSigninSettingStartStatus(StartStatusEnum.END);
updateTemplate(model);
} break;
}
}
@Override
public void resetOperationByTeacherOpenCourseId(Long teacherOpenCourseId) {
log.info("可能需要实现重置操作!");
}
@Override
public void deleteTeacherOpenCourseAllRelatedByTeacherOpenCourseId(@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId) {
log.info("需要实现删除操作!");
}
/**
* 功能描述: <br>
* 签到配置的日期列表
*
* @param teacherOpenCourseId
* @return {@link List< String>}
* @Author: lx
* @Date: 2022/12/28 19:51
*/
public List<String> sessionDateList(Long teacherOpenCourseId) {
List<String> list = teacherOpenCourseStudentSigninSettingDao.createLambdaQuery().andEq(TeacherOpenCourseStudentSigninSetting::getTeacherOpenCourseId, teacherOpenCourseId)
.andEq(TeacherOpenCourseStudentSigninSetting::getTeacherOpenCourseStudentSigninSettingStatus, 1)
.select(String.class, "teacher_open_course_student_signin_setting_session_time");
return CollectionUtil.emptyIfNull(list).stream().sorted().collect(Collectors.toList());
}
}