Merge remote-tracking branch 'origin/beetlsql3-dev' into beetlsql3-dev

beetlsql3-dev
xuliangtong 2 years ago
commit 68246dfb87

@ -0,0 +1,20 @@
package com.ibeetl.admin.core.annotation;
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ibeetl.admin.core.conf.JasonConfig;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = JasonConfig.BigDecimalSerializer.class)
@JsonDeserialize(using = JasonConfig.BigDecimalDeSerializer.class)
public @interface BigDecimalFormat {
String value() default "#####0.00";
}

@ -1,24 +1,29 @@
package com.ibeetl.admin.core.conf;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ibeetl.admin.core.annotation.BigDecimalFormat;
import com.ibeetl.admin.core.web.JsonResult;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.engine.PageQuery;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Map;
import java.util.Objects;
@Configuration
public class JasonConfig {
@ -84,4 +89,43 @@ public class JasonConfig {
}
}
@JsonComponent
public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements ContextualSerializer {
private String format = "#####0.00";
@Override
public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString(new DecimalFormat(format).format(bigDecimal));
}
@Override
public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {
if(beanProperty !=null ){
if(Objects.equals(beanProperty.getType().getRawClass(),BigDecimal.class)){
BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class));
if(bigDecimalFormat == null){
bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class);
}
BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer();
if(bigDecimalFormat != null){
bigDecimalSerializer.format = bigDecimalFormat.value();
}
return bigDecimalSerializer;
}
return serializerProvider.findValueSerializer(beanProperty.getType(),beanProperty);
}
return serializerProvider.findNullValueSerializer(beanProperty);
}
}
@JsonComponent
public class BigDecimalDeSerializer extends JsonDeserializer<BigDecimal> {
@Override
public BigDecimal deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return new BigDecimal(jsonParser.getText().replaceAll(",",""));
}
}
}

@ -1,6 +1,7 @@
package com.ibeetl.jlw.dao;
import com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninLog;
import com.ibeetl.jlw.entity.vo.TeacherOpenCourseStudentSigninLogSummaryVO;
import com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninLogQuery;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.mapper.BaseMapper;
@ -26,4 +27,10 @@ public interface TeacherOpenCourseStudentSigninLogDao extends BaseMapper<Teacher
List<TeacherOpenCourseStudentSigninLog> getValuesByQueryNotWithPermission(TeacherOpenCourseStudentSigninLogQuery teacherOpenCourseStudentSigninLogQuery);
List<Map<String, Object>> getExcelValues(TeacherOpenCourseStudentSigninLogQuery teacherOpenCourseStudentSigninLogQuery);
/**
*
* @param teacherOpenCourseId
*/
TeacherOpenCourseStudentSigninLogSummaryVO summary(Long teacherOpenCourseId);
}

@ -0,0 +1,37 @@
package com.ibeetl.jlw.entity.vo;
import com.ibeetl.admin.core.annotation.BigDecimalFormat;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>
* -DTO
* </p>
*
* @author mlx
* @date 2022/10/11
* @modified
*/
@Data
public class TeacherOpenCourseStudentSigninLogSummaryVO {
// 合计签到次数
private Long totalSigninCount;
// 合计签到人数
private Long totalSigninNumber;
// 合计缺勤
private Long totalUnSigninNumber;
// 合计到课率 最大单位100
@BigDecimalFormat
private BigDecimal TotalAttendanceRate;
}

@ -27,6 +27,7 @@ import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogManualMergeDTO
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO;
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO.ManualClass;
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninSettingManualDTO;
import com.ibeetl.jlw.entity.vo.TeacherOpenCourseStudentSigninLogSummaryVO;
import com.ibeetl.jlw.enums.StartStatusEnum;
import com.ibeetl.jlw.validator.TeacherOpenCourseStudentSigninLogSigninDTOValidator;
import com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninLogQuery;
@ -609,4 +610,13 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
insertBatch(signinLogList);
}
/**
*
* @param teacherOpenCourseId
*/
public TeacherOpenCourseStudentSigninLogSummaryVO summary(@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId) {
return teacherOpenCourseStudentSigninLogDao.summary(teacherOpenCourseId);
}
}

@ -191,6 +191,17 @@ public class TeacherOpenCourseHandsOnSimulationTasksController{
return JsonResult.success();
}
/**
*
* -
*
* TODO
*
* @param teacherOpenCourseHandsOnSimulationTasksQuery
* @param result
* @param coreUser
* @return
*/
@PostMapping(MODEL + "/add.do")
public JsonResult addTeacherOpenCourseHandsOnSimulationTasks(@Validated(ValidateConfig.ADD.class) TeacherOpenCourseHandsOnSimulationTasksQuery teacherOpenCourseHandsOnSimulationTasksQuery, BindingResult result,@SCoreUser CoreUser coreUser){
if(result.hasErrors()){

@ -111,6 +111,21 @@ public class TeacherOpenCourseStudentSigninLogController{
}
}
/**
* -
* @param teacherOpenCourseId ID
* @param coreUser
* @return
*/
@PostMapping(API + "/summary.do")
public JsonResult summary(Long teacherOpenCourseId, @SCoreUser CoreUser coreUser) {
if(null == coreUser){
return JsonResult.failMessage("请登录后再操作");
}else{
return JsonResult.success(teacherOpenCourseStudentSigninLogService.summary(teacherOpenCourseId));
}
}
/* 后台页面 */

@ -584,4 +584,22 @@ getExcelValues
and find_in_set(t.user_id,#userIdPlural#)
@}
)
)t
)t
summary
===
* 签到汇总
SELECT
COUNT( DISTINCT t.teacher_open_course_student_signin_setting_id ) AS total_signin_count,
SUM( CASE t.teacher_open_course_student_signin_log_tag WHEN 10 THEN 1 ELSE 0 END ) AS total_signin_number,
SUM( CASE t.teacher_open_course_student_signin_log_tag WHEN 20 THEN 1 ELSE 0 END ) AS total_un_signin_number,
SUM( CASE t.teacher_open_course_student_signin_log_tag WHEN 10 THEN 1 ELSE 0 END ) / count( 1 ) * 100 AS total_attendance_rate
FROM teacher_open_course_student_signin_log t
where 1=1
@if(!isEmpty(teacherOpenCourseId)){
and t.teacher_open_course_id =#teacherOpenCourseId#
@}
t.teacher_open_course_schedule_session_snap_status = 1
Loading…
Cancel
Save