@@ -37,6 +37,15 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
{ | { | ||||
return View(); | return View(); | ||||
} | } | ||||
/// <summary> | |||||
/// 表单页 | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
public ActionResult Statistics() | |||||
{ | |||||
return View(); | |||||
} | |||||
#endregion | #endregion | ||||
#region 获取数据 | #region 获取数据 | ||||
@@ -78,6 +87,28 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
}; | }; | ||||
return Success(jsonData); | return Success(jsonData); | ||||
} | } | ||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// </summary> | |||||
/// <param name="pagination">分页参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
[AjaxOnly] | |||||
public ActionResult GetStatistics(string pagination, string queryJson) | |||||
{ | |||||
Pagination paginationobj = pagination.ToObject<Pagination>(); | |||||
var data = healthPunchStuIBLL.GetStatistics(paginationobj, queryJson); | |||||
var jsonData = new | |||||
{ | |||||
rows = data, | |||||
total = paginationobj.total, | |||||
page = paginationobj.page, | |||||
records = paginationobj.records | |||||
}; | |||||
return Success(jsonData); | |||||
} | |||||
#endregion | #endregion | ||||
#region 提交数据 | #region 提交数据 | ||||
@@ -0,0 +1,61 @@ | |||||
@{ | |||||
ViewBag.Title = "健康打卡时段"; | |||||
Layout = "~/Views/Shared/_Index.cshtml"; | |||||
} | |||||
<div class="lr-layout "> | |||||
<div class="lr-layout-center"> | |||||
<div class="lr-layout-wrap lr-layout-wrap-notitle "> | |||||
<div class="lr-layout-tool"> | |||||
<div class="lr-layout-tool-left"> | |||||
<div class="lr-layout-tool-item"> | |||||
<div id="datesearch"></div> | |||||
</div> | |||||
<div class="lr-layout-tool-item"> | |||||
<div id="multiple_condition_query"> | |||||
<div class="lr-query-formcontent"> | |||||
<div class="col-xs-12 lr-form-item"> | |||||
<div class="lr-form-item-title">院校</div> | |||||
<div id="F_School"></div> | |||||
</div> | |||||
<div class="col-xs-12 lr-form-item"> | |||||
<div class="lr-form-item-title">专业</div> | |||||
<div id="MajorNo"></div> | |||||
</div> | |||||
<div class="col-xs-6 lr-form-item"> | |||||
<div class="lr-form-item-title">班级</div> | |||||
<div id="ClassNo"></div> | |||||
</div> | |||||
<div class="col-xs-6 lr-form-item"> | |||||
<div class="lr-form-item-title">学工号</div> | |||||
<input id="StuNo" type="text" class="form-control" /> | |||||
</div> | |||||
<div class="col-xs-6 lr-form-item"> | |||||
<div class="lr-form-item-title">姓名</div> | |||||
<input id="StuName" type="text" class="form-control" /> | |||||
</div> | |||||
<div class="col-xs-6 lr-form-item"> | |||||
<div class="lr-form-item-title">打卡状态</div> | |||||
<div id="IsStatus"></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="lr-layout-tool-right"> | |||||
<div class=" btn-group btn-group-sm"> | |||||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||||
</div> | |||||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||||
@*<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a> | |||||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 编辑</a> | |||||
<a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a> | |||||
<a id="lr_lock" class="btn btn-default"><i class="fa fa-plus"></i> 禁/启用</a> | |||||
<a id="lr_unlock" class="btn btn-default"><i class="fa fa-plus"></i> 禁用</a>*@ | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="lr-layout-body" id="gridtable"></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
@Html.AppendJsFile("/Areas/EducationalAdministration/Views/HealthPunchStu/Statistics.js") |
@@ -0,0 +1,178 @@ | |||||
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn) | |||||
* Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
* 创建人:超级管理员 | |||||
* 日 期:2022-06-17 09:17 | |||||
* 描 述:健康打卡时段 | |||||
*/ | |||||
var refreshGirdData; | |||||
var bootstrap = function ($, learun) { | |||||
"use strict"; | |||||
var startTime; | |||||
var endTime; | |||||
var page = { | |||||
init: function () { | |||||
page.initGird(); | |||||
page.bind(); | |||||
}, | |||||
bind: function () { | |||||
// 时间搜索框 | |||||
$('#datesearch').lrdate({ | |||||
dfdata: [ | |||||
{ name: '今天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00') }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, | |||||
{ name: '近7天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'd', -6) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, | |||||
{ name: '近1个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -1) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, | |||||
{ name: '近3个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -3) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } } | |||||
], | |||||
// 月 | |||||
mShow: false, | |||||
premShow: false, | |||||
// 季度 | |||||
jShow: false, | |||||
prejShow: false, | |||||
// 年 | |||||
ysShow: false, | |||||
yxShow: false, | |||||
preyShow: false, | |||||
yShow: false, | |||||
// 默认 | |||||
dfvalue: '1', | |||||
selectfn: function (begin, end) { | |||||
startTime = begin; | |||||
endTime = end; | |||||
page.search(); | |||||
} | |||||
}); | |||||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||||
page.search(queryJson); | |||||
}, 220, 400); | |||||
$('#F_School').lrDataSourceSelect({ code: 'company', value: 'f_companyid', text: 'f_fullname' }); | |||||
$('#IsStatus').lrselect({ | |||||
data: [{ text: "已打卡", value: "0" }, { text: "缺卡", value: "1" }, { text: "未打卡", value: "2" }], | |||||
text: "text", | |||||
value: "value" | |||||
}) | |||||
$('#MajorNo').lrselect({ | |||||
allowSearch: true, | |||||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=CdMajorInfo', | |||||
value: "majorno", | |||||
text: "majorname", | |||||
param: { strWhere: "1=1 AND CheckMark=1 order by majorno asc" }, | |||||
select: function (item) { | |||||
if (item) { | |||||
$('#ClassNo').lrselectRefresh({ | |||||
allowSearch: true, | |||||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||||
param: { strWhere: "majorno='" + item.majorno + "' AND CheckMark=1 order by classno asc" } | |||||
}); | |||||
} else { | |||||
$('#ClassNo').lrselectRefresh({ | |||||
allowSearch: true, | |||||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||||
param: { strWhere: "1=1 AND CheckMark=1 order by classno asc" } | |||||
}); | |||||
} | |||||
} | |||||
}); | |||||
$('#ClassNo').lrselect({ | |||||
allowSearch: true, | |||||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||||
param: { strWhere: "1=1 AND CheckMark=1" }, | |||||
value: "classno", | |||||
text: "classname" | |||||
}); | |||||
// 刷新 | |||||
$('#lr_refresh').on('click', function () { | |||||
location.reload(); | |||||
}); | |||||
}, | |||||
// 初始化列表 | |||||
initGird: function () { | |||||
$('#gridtable').jfGrid({ | |||||
url: top.$.rootUrl + '/EducationalAdministration/HealthPunchStu/GetStatistics', | |||||
headData: [ | |||||
{ | |||||
label: "院校", name: "F_School", width: 130, align: "left", | |||||
formatterAsync: function (callback, value, row, op, $cell) { | |||||
learun.clientdata.getAsync('custmerData', { | |||||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'company', | |||||
key: value, | |||||
keyId: 'f_companyid', | |||||
callback: function (_data) { | |||||
callback(_data['f_fullname']); | |||||
} | |||||
}); | |||||
} | |||||
}, | |||||
{ | |||||
label: "专业", name: "MajorNo", width: 130, align: "left", | |||||
formatterAsync: function (callback, value, row, op, $cell) { | |||||
learun.clientdata.getAsync('custmerData', { | |||||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdMajorInfo', | |||||
key: value, | |||||
keyId: 'majorno', | |||||
callback: function (_data) { | |||||
callback(_data['majorname']); | |||||
} | |||||
}); | |||||
} | |||||
}, | |||||
{ | |||||
label: "班级", name: "ClassNo", width: 90, align: "left", | |||||
formatterAsync: function (callback, value, row, op, $cell) { | |||||
learun.clientdata.getAsync('custmerData', { | |||||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'bjsj', | |||||
key: value, | |||||
keyId: 'classno', | |||||
callback: function (_data) { | |||||
callback(_data['classname']); | |||||
} | |||||
}); | |||||
} | |||||
}, | |||||
{ label: "学工号", name: "StuNo", width: 90, align: "left" }, | |||||
{ label: "学生姓名", name: "StuName", width: 150, align: "left" }, | |||||
{ label: "联系方式", name: "Phone", width: 100, align: "left" }, | |||||
{ | |||||
label: "日期", name: "DKDate", width: 90, align: "left", | |||||
formatter: function (cellvalue) { | |||||
return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||||
} | |||||
}, | |||||
{ label: "早打卡地址", name: "Address1", width: 200, align: "left" }, | |||||
{ label: "午打卡地址", name: "Address2", width: 200, align: "left" }, | |||||
{ label: "晚打卡地址", name: "Address3", width: 200, align: "left" }, | |||||
{ label: "早体温", name: "Temperature1", width: 80, align: "left" }, | |||||
{ label: "午体温", name: "Temperature2", width: 80, align: "left" }, | |||||
{ label: "晚体温", name: "Temperature3", width: 80, align: "left" }, | |||||
{ | |||||
label: "打卡状态", name: "Num", width: 100, align: "left", | |||||
formatter: function (cellvalue) { | |||||
if (cellvalue == 0) { | |||||
return '<span class=\"label label-danger\">缺卡</span>'; | |||||
} else if (cellvalue < "3") { | |||||
return '<span class=\"label label-warning\">未打卡</span>'; | |||||
} else if (cellvalue == "3") { | |||||
return "<span class=\"label label-success\">已打卡</span>"; | |||||
} | |||||
} | |||||
}, | |||||
], | |||||
mainId: 'ID', | |||||
isPage: true, | |||||
sidx: 'createtime desc', | |||||
}); | |||||
page.search(); | |||||
}, | |||||
search: function (param) { | |||||
param = param || {}; | |||||
param.StartTime = startTime; | |||||
param.EndTime = endTime; | |||||
$('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); | |||||
} | |||||
}; | |||||
refreshGirdData = function () { | |||||
$('#gridtable').jfGridSet('reload'); | |||||
}; | |||||
page.init(); | |||||
} |
@@ -1028,6 +1028,7 @@ | |||||
<Content Include="Areas\EducationalAdministration\Views\FillinFrom\FormIndex.js" /> | <Content Include="Areas\EducationalAdministration\Views\FillinFrom\FormIndex.js" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\FillinFrom\FormPeople.js" /> | <Content Include="Areas\EducationalAdministration\Views\FillinFrom\FormPeople.js" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\FillinFrom\Index.js" /> | <Content Include="Areas\EducationalAdministration\Views\FillinFrom\Index.js" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\HealthPunchStu\Statistics.js" /> | |||||
<Content Include="Areas\EducationalAdministration\Views\JournalSend\FormOfDC.js" /> | <Content Include="Areas\EducationalAdministration\Views\JournalSend\FormOfDC.js" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\JournalSend\IndexOfDC.js" /> | <Content Include="Areas\EducationalAdministration\Views\JournalSend\IndexOfDC.js" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\LeaveSchoolA\Form.js" /> | <Content Include="Areas\EducationalAdministration\Views\LeaveSchoolA\Form.js" /> | ||||
@@ -7862,6 +7863,7 @@ | |||||
<Content Include="Areas\EducationalAdministration\Views\Exam_ExamPlan\FormTime.cshtml" /> | <Content Include="Areas\EducationalAdministration\Views\Exam_ExamPlan\FormTime.cshtml" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\OpenLessonPlanOfElective\IndexElective.cshtml" /> | <Content Include="Areas\EducationalAdministration\Views\OpenLessonPlanOfElective\IndexElective.cshtml" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\OpenLessonPlanOfElective\FormOfElective.cshtml" /> | <Content Include="Areas\EducationalAdministration\Views\OpenLessonPlanOfElective\FormOfElective.cshtml" /> | ||||
<Content Include="Areas\EducationalAdministration\Views\HealthPunchStu\Statistics.cshtml" /> | |||||
<None Include="Properties\PublishProfiles\CustomProfile.pubxml" /> | <None Include="Properties\PublishProfiles\CustomProfile.pubxml" /> | ||||
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" /> | <None Include="Properties\PublishProfiles\FolderProfile.pubxml" /> | ||||
<Content Include="Views\Login\Default-beifen.cshtml" /> | <Content Include="Views\Login\Default-beifen.cshtml" /> | ||||
@@ -67,6 +67,30 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// 统计数据 | |||||
/// </summary> | |||||
/// <param name="pagination">分页参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<HealthPunchStuEntity> GetStatistics(Pagination pagination, string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
return healthPunchStuService.GetStatistics(pagination, queryJson); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | #endregion | ||||
#region 提交数据 | #region 提交数据 | ||||
@@ -11,7 +11,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
/// 日 期:2022-06-17 11:00 | /// 日 期:2022-06-17 11:00 | ||||
/// 描 述:体温上报 | /// 描 述:体温上报 | ||||
/// </summary> | /// </summary> | ||||
public class HealthPunchStuEntity | |||||
public class HealthPunchStuEntity | |||||
{ | { | ||||
#region 实体成员 | #region 实体成员 | ||||
/// <summary> | /// <summary> | ||||
@@ -139,6 +139,22 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
} | } | ||||
#endregion | #endregion | ||||
#region 扩展字段 | #region 扩展字段 | ||||
[NotMapped] | |||||
public string Address1 { get; set; } | |||||
[NotMapped] | |||||
public string Address2 { get; set; } | |||||
[NotMapped] | |||||
public string Address3 { get; set; } | |||||
[NotMapped] | |||||
public string Temperature1 { get; set; } | |||||
[NotMapped] | |||||
public string Temperature2 { get; set; } | |||||
[NotMapped] | |||||
public string Temperature3 { get; set; } | |||||
[NotMapped] | |||||
public string Num { get; set; } | |||||
#endregion | #endregion | ||||
} | } | ||||
} | } | ||||
@@ -27,6 +27,13 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
/// <param name="keyValue">主键</param> | /// <param name="keyValue">主键</param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
HealthPunchStuEntity GetHealthPunchStuEntity(string keyValue); | HealthPunchStuEntity GetHealthPunchStuEntity(string keyValue); | ||||
/// <summary> | |||||
/// 统计数据 | |||||
/// </summary> | |||||
/// <param name="pagination"></param> | |||||
/// <param name="queryJson"></param> | |||||
/// <returns></returns> | |||||
IEnumerable<HealthPunchStuEntity> GetStatistics(Pagination pagination, string queryJson); | |||||
#endregion | #endregion | ||||
#region 提交数据 | #region 提交数据 | ||||
@@ -76,6 +76,86 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// </summary> | |||||
/// <param name="pagination">查询参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<HealthPunchStuEntity> GetStatistics(Pagination pagination, string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
var strSql = new StringBuilder(); | |||||
var queryParam = queryJson.ToJObject(); | |||||
// 虚拟参数 | |||||
string sql1 = " "; | |||||
string sql2 = " "; | |||||
string sql3 = " "; | |||||
if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty()) | |||||
{ | |||||
sql1 = " and Createtime >= '" + queryParam["StartTime"].ToDate() | |||||
+ "' and Createtime <= '" + queryParam["EndTime"].ToDate() + "' "; | |||||
} | |||||
if (!queryParam["F_School"].IsEmpty()) | |||||
{ | |||||
sql2 = " and F_School ='" + queryParam["F_School"].ToString() + "' "; | |||||
} | |||||
if (!queryParam["MajorNo"].IsEmpty()) | |||||
{ | |||||
sql2 += "and MajorNo ='" + queryParam["MajorNo"].ToString() + "'"; | |||||
} | |||||
if (!queryParam["ClassNo"].IsEmpty()) | |||||
{ | |||||
sql2 += "and ClassNo ='" + queryParam["ClassNo"].ToString() + "'"; | |||||
} | |||||
if (!queryParam["StuNo"].IsEmpty()) | |||||
{ | |||||
sql2 += "and StuNo like '%" + queryParam["StuNo"].ToString() + "%'"; | |||||
} | |||||
if (!queryParam["StuName"].IsEmpty()) | |||||
{ | |||||
sql2 += "and StuName like '%" + queryParam["StuName"].ToString() + "%'"; | |||||
} | |||||
if (!queryParam["IsStatus"].IsEmpty()) | |||||
{ | |||||
sql3 = " and t.num >= '" + queryParam["IsStatus"].ToString() + "' "; | |||||
} | |||||
strSql.Append(@"select * from ( | |||||
select zb.*,aa.address as Address1,aa.Temperature as Temperature1 ,bb.address as Address2,bb.Temperature as Temperature2,cc.address as Address3 ,cc.Temperature | |||||
as Temperature3,dd.Num from (select F_School,MajorNo,ClassNo,StuNo,StuName,DKDate,Phone from HealthPunchStu | |||||
where 1=1 " + sql1 + sql2 + " "); | |||||
strSql.Append(@" Group by F_School,MajorNo,ClassNo,StuNo,StuName,DKDate,Phone )zb | |||||
left join (select * from HealthPunchStu where 1=1 " + sql1 + " )"); | |||||
strSql.Append(@" AA on AA.F_School=zb.F_School and AA.MajorNo=zb.MajorNo | |||||
and AA.ClassNo=zb.ClassNo and AA.StuNo=zb.Stuno and AA.StuName=zb.StuName | |||||
and AA.Phone=zb.Phone and AA.dkDate=zb.Dkdate and AA.dkType=1 | |||||
left join (select * from HealthPunchStu where 1=1 " + sql1 + " )"); | |||||
strSql.Append(@" BB on BB.F_School=zb.F_School and BB.MajorNo=zb.MajorNo | |||||
and BB.ClassNo=zb.ClassNo and BB.StuNo=zb.Stuno and BB.StuName=zb.StuName | |||||
and BB.Phone=zb.Phone and BB.dkDate=zb.Dkdate and BB.dkType=2 | |||||
left join (select * from HealthPunchStu where 1=1 " + sql1 + " )"); | |||||
strSql.Append(@" CC on CC.F_School=zb.F_School and CC.MajorNo=zb.MajorNo | |||||
and CC.ClassNo=zb.ClassNo and CC.StuNo=zb.Stuno and CC.StuName=zb.StuName | |||||
and CC.Phone=zb.Phone and CC.dkDate=zb.Dkdate and CC.dkType=3 | |||||
left join (select Stuno ,Count(*) as num from HealthPunchStu group by Stuno ) dd on dd.StuNo=zb.Stuno | |||||
)t where 1=1 " + sql3 + " "); | |||||
return this.BaseRepository("CollegeMIS").FindList<HealthPunchStuEntity>(strSql.ToString()); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | #endregion | ||||
#region 提交数据 | #region 提交数据 | ||||