签到统计

beetlsql3-dev
Mlxa0324 2 years ago
parent 135d7c4e50
commit 67cc3b416d

@ -38,14 +38,6 @@ public class TeacherOpenCourseStudentSigninSetting extends BaseEntity{
//班级ID集合
private String schoolClassIds ;
public String getSchoolClassIdsText() {
return schoolClassIdsText;
}
public void setSchoolClassIdsText(String schoolClassIdsText) {
this.schoolClassIdsText = schoolClassIdsText;
}
@FetchSql(
"@if(strUtil.equalsIgnoreCase(schoolClassIds, 'ALL')) { \n" +
"select '所有班级' \n" +
@ -59,6 +51,20 @@ public class TeacherOpenCourseStudentSigninSetting extends BaseEntity{
"@}\n" )
private String schoolClassIdsText;
// 如果是全部的班级,则查询该课程关联的全部班级
// 否则 取schoolClassIds 字段。
@FetchSql(
"@if(strUtil.equalsIgnoreCase(schoolClassIds, 'ALL')) { \n" +
"select group_concat(distinct(school_class_id)) \n" +
" from teacher_open_course_merge_school_class t \n" +
" where t.teacher_open_course_id = #teacherOpenCourseId# \n" +
" and t.teacher_open_course_merge_school_class_status = 1 \n" +
" group by t.teacher_open_course_id \n" +
"@} else { \n" +
" select #schoolClassIds# " +
"@}\n" )
private String schoolClassIdsRender;
// 所有班级标识
public static String ALL_SCHOOL_CLASS_IDS_SIGN = "ALL";
@ -92,7 +98,40 @@ public class TeacherOpenCourseStudentSigninSetting extends BaseEntity{
@Dict(type="global_status")
private Integer teacherOpenCourseStudentSigninSettingStatus ;
// 这个开课ID下的签到场次总数量
@FetchSql("select count(1) from teacher_open_course_student_signin_setting " +
"where teacher_open_course_id = #teacherOpenCourseId# and teacher_open_course_student_signin_setting_status = 1 ")
private Integer signinSettingCount;
// 签到总人数
@FetchSql("select count(1) " +
"from teacher_open_course_student_signin_log t " +
"left join teacher_open_course_student_signin_setting ta on ta.teacher_open_course_student_signin_setting_id = t.teacher_open_course_student_signin_setting_id " +
"where t.teacher_open_course_id = #teacherOpenCourseId# ")
private Integer signinTotalCount;
// 学生总人数
@FetchSql("select count(1) from student t where find_in_set(t.class_id, #schoolClassIdsIfAll#) ")
private Integer signinStudentTotalCount;
// 缺勤 schoolClassIds
@FetchSql("select if((count(tc.student_id) - #signinTotalCount#) < 0, 0, count(tc.student_id) - #signinTotalCount#) " +
"from teacher_open_course_student_signin_log t " +
"left join teacher_open_course_student_signin_setting ta on ta.teacher_open_course_student_signin_setting_id = t.teacher_open_course_student_signin_setting_id " +
"left join school_class tb on find_in_set(tb.class_id, ta.school_class_ids) " +
"left join student tc on tc.class_id = tb.class_id " +
"where t.teacher_open_course_id = #teacherOpenCourseId# ")
private Integer unsigninCount;
// 合计到课率 100为单位
@FetchSql("select round(#signinTotalCount# / (if((#signinStudentTotalCount#) = 0, 1, (#signinStudentTotalCount#))) * 100, 1)")
private float signinTotalRate;
//组织ID
private Long orgId ;
@ -264,4 +303,60 @@ public class TeacherOpenCourseStudentSigninSetting extends BaseEntity{
public void setTeacherOpenCourseStudentSigninSettingSessionTime(Date teacherOpenCourseStudentSigninSettingSessionTime) {
this.teacherOpenCourseStudentSigninSettingSessionTime = teacherOpenCourseStudentSigninSettingSessionTime;
}
public Integer getSigninSettingCount() {
return signinSettingCount;
}
public void setSigninSettingCount(Integer signinSettingCount) {
this.signinSettingCount = signinSettingCount;
}
public Integer getSigninTotalCount() {
return signinTotalCount;
}
public void setSigninTotalCount(Integer signinTotalCount) {
this.signinTotalCount = signinTotalCount;
}
public Integer getUnsigninCount() {
return unsigninCount;
}
public void setUnsigninCount(Integer unsigninCount) {
this.unsigninCount = unsigninCount;
}
public float getSigninTotalRate() {
return signinTotalRate;
}
public void setSigninTotalRate(float signinTotalRate) {
this.signinTotalRate = signinTotalRate;
}
public String getSchoolClassIdsRender() {
return schoolClassIdsRender;
}
public void setSchoolClassIdsRender(String schoolClassIdsRender) {
this.schoolClassIdsRender = schoolClassIdsRender;
}
public Integer getSigninStudentTotalCount() {
return signinStudentTotalCount;
}
public void setSigninStudentTotalCount(Integer signinStudentTotalCount) {
this.signinStudentTotalCount = signinStudentTotalCount;
}
public String getSchoolClassIdsText() {
return schoolClassIdsText;
}
public void setSchoolClassIdsText(String schoolClassIdsText) {
this.schoolClassIdsText = schoolClassIdsText;
}
}

@ -166,8 +166,8 @@ public class TeacherOpenCourseStudentSigninSettingService extends CoreBaseServic
* @param id
* @param status
*/
public void editStatus(@NotNull(message = "签到配置ID不能为空") Long id,
@NotNull(message = "签到状态不能为空!")
public void updateStatus(@NotNull(message = "签到配置ID不能为空") Long id,
@NotNull(message = "签到状态不能为空!")
@Pattern(regexp = "[12]",message = "状态只接收两个值1开始 2结束")
Integer status) {
TeacherOpenCourseStudentSigninSetting model = new TeacherOpenCourseStudentSigninSetting();

@ -202,11 +202,11 @@ public class TeacherOpenCourseStudentSigninSettingController{
* @param status 1 2
* @return
*/
@PostMapping(MODEL + "/editStatus.json")
@PostMapping(MODEL + "/updateStatus.json")
@Function("teacherOpenCourseStudentSigninSetting.edit")
@ResponseBody
public JsonResult editStatus(Long id, Integer status) {
teacherOpenCourseStudentSigninSettingService.editStatus(id, status);
public JsonResult updateStatus(Long id, Integer status) {
teacherOpenCourseStudentSigninSettingService.updateStatus(id, status);
return JsonResult.success();
}

@ -132,6 +132,7 @@ layui.define(['form', 'laydate', 'table'], function (exports) {
}, initTableTool: table.on('tool(resourcesApplicationCourseTable)', function (obj) {
var data = obj.data;
if (obj.event === 'edit') {
// 实际是修改课程的数据,为了懒省事
var url = "/jlw/resourcesApplicationCourse/add.do?courseInfoId=" + data.courseInfoId;
Common.openDlg(url, "");
} else if (obj.event === "del") {

@ -38,8 +38,7 @@ layui.define([ 'form', 'laydate', 'table' ], function(exports) {
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseStudentSigninSettingId'])?false:sx_['teacherOpenCourseStudentSigninSettingId'],
width : 60,
width : 60,
},
{
field : 'teacherOpenCourseStudentSigninSettingSessionTime',
@ -112,9 +111,11 @@ layui.define([ 'form', 'laydate', 'table' ], function(exports) {
hide:$.isEmpty(sx_['teacherOpenCourseStudentSigninSettingStartStatusText'])?false:sx_['teacherOpenCourseStudentSigninSettingStartStatusText'],
},
{
field : 'operation_',title : '操作',align:"center", templet: function (d) {
var htm = '<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button>';
htm += '<button type="button" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button>';
field : 'operation_',title : '操作',align:"center", width : 220, templet: function (d) {
var htm = '';
htm += '<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="startSignin">开始签到</button>';
htm += '<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="endSignin">结束签到</button>';
htm += '<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">详情</button>';
return htm;
}
}
@ -192,6 +193,40 @@ layui.define([ 'form', 'laydate', 'table' ], function(exports) {
});
});
}
// 开始签到
else if(obj.event == 'startSignin') {
layer.confirm('开始签到?', function (index) {
var ret = Common.postAjax(
"/jlw/teacherOpenCourseStudentSigninSetting/updateStatus.json",
{ status: 1, id: data.teacherOpenCourseStudentSigninSettingId });
layer.msg(ret.code == 0?"开始签到成功!":ret.msg, {
offset: ['50%'],
icon: ret.code == 0?1:2,
time: 1500 //2秒关闭如果不配置默认是3秒
},function (){
if(ret.code == 0){
Lib.tableRefresh();
}
});
});
}
// 结束签到
else if(obj.event == 'endSignin') {
layer.confirm('结束签到?', function (index) {
var ret = Common.postAjax(
"/jlw/teacherOpenCourseStudentSigninSetting/updateStatus.json",
{ status: 2, id: data.teacherOpenCourseStudentSigninSettingId });
layer.msg(ret.code == 0?"已结束签到!":ret.msg, {
offset: ['50%'],
icon: ret.code == 0?1:2,
time: 1500 //2秒关闭如果不配置默认是3秒
},function (){
if(ret.code == 0){
Lib.tableRefresh();
}
});
});
}
})
}
exports('index',view);

@ -11,7 +11,7 @@
<layui:accessButton function="teacherOpenCourseScheduleSession.query" id="searchFormSearch" action="search"><i class="layui-icon">&#xe615;</i>搜索</layui:accessButton>
<!--# }-->
<layui:accessButton function="teacherOpenCourseScheduleSession.add" action="add">添加</layui:accessButton>
<layui:accessButton function="teacherOpenCourseScheduleSession.edit" action="edit">修改</layui:accessButton>
<!-- <layui:accessButton function="teacherOpenCourseScheduleSession.edit" action="edit">修改</layui:accessButton>-->
<layui:accessButton function="teacherOpenCourseScheduleSession.del" action="del">删除</layui:accessButton>
<!--# if(!isEmpty(search)) {-->
<layui:accessButton function="teacherOpenCourseScheduleSession.query" action="refresh"><i class="layui-icon">&#xe669;</i>刷新</layui:accessButton>

Loading…
Cancel
Save