搭建asp会议签到系统
第一章 账密登录
第二章 生成会议签到二维码
第三章 会议签到
第四章 会议统计
前言
前文已说如何登录、生成会议二维码以及签到,本篇将继续说明如何进行签到信息统计。
这一章技术最简单但也是最终效果展示:围绕meetcheck做一些SQL操作。
提示:以下是本篇文章正文内容,下面案例可供参考
一、前端list view展示
员工扫码签到后,会议管理页面展示出席/缺席信息。
从产品角度来讲,展示缺席信息更为合理。
<SelectedItemTemplate>
<tr style="">
<!--代码有点长这里仅展示关键部分-->
<td>
<asp:Label Text='<%# Eval("姓名") %>' runat="server" ID="姓名Label" />
</td>
<td>
<asp:Label Text='<%# Eval("部门") %>' runat="server" ID="部门Label" />
</td>
<td>
<asp:Label Text='<%# Eval("更新时间") %>' runat="server" ID="更新时间Label" />
</td>
<td>
<asp:Label Text='<%# Eval("类型") %>' runat="server" ID="类型Label" />
</td>
<td>
<asp:Label Text='<%# Eval("事由") %>' runat="server" ID="事由Label" />
</td>
</tr>
</SelectedItemTemplate>
<asp:SqlDataSource runat="server" ID="SqlDataSource2" ConnectionString='<%$ ConnectionStrings:DC6 %>'
SelectCommand="PROC_MEETOUT" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="meetsub" PropertyName="SelectedValue"
Name="MEETID" Type="String" DefaultValue=" "></asp:ControlParameter>
</SelectParameters>
</asp:SqlDataSource>
这里写了个存储过程PROC_MEETOUT,代码如下
CREATE PROC [dbo].[PROC_MEETOUT]
@MEETID nvarchar(50)
AS
declare @StrFilter nvarchar(4000)
declare @sql nvarchar(4000)
select @StrFilter = ' WHERE (STU=''3'' OR STU=''5'') AND 1=1 '
if @MEETID <> ''
SET @StrFilter =@StrFilter +' AND A.MEETID='''+@MEETID+''''
SET @sql='SELECT C.lastname 姓名,D.departmentname 部门,A.CHECKDT 更新时间,STUNA 类型,REASON 事由 FROM meetcheck A LEFT JOIN Meet B ON A.MEETID=B.MeeID LEFT JOIN HrmResource C ON A.USERID=C.workcode LEFT JOIN HrmDepartment D on C.departmentid = D.id LEFT JOIN MEETSTU ON STU=STUID'+@StrFilter
select @StrFilter = ' ORDER BY A.CHECKDT '
SET @sql=@sql+@StrFilter
execute(@sql)
set nocount off
效果图:
二、后端帆软报表展示
报表做了好多个,会议维度、部门维度、员工维度等。
这里展示会议维度,以及其下面的几个关键SQL
//参会员工汇总(排除不在参会名单内的签到情况)
SELECT B.lastname,B.workcode,ISNULL(C.STU,9) STU,A.* FROM FWOA.ecology.dbo.VW_HYCHRY A LEFT JOIN FWOA.ecology.dbo.HrmResource B ON A.memberid=B.id
LEFT JOIN (SELECT USERID,MEETID,STU,CHECKDT FROM meetcheck) C ON B.workcode=C.USERID AND A.meetingid=C.MEETID WHERE A.meetingid ='${MeetID}' AND SUBCOMPANYID1=1 ORDER BY case when ISNULL(C.STU,9)=1 or ISNULL(C.STU,9)=4 then 1 when ISNULL(C.STU,9)=2 then 2 when ISNULL(C.STU,9)=3 then 3 when ISNULL(C.STU,9)=5 then 4 else 9 end,CHECKDT
迟到统计
//注意签到时间晚于会议开始时间1分钟后算迟到
SELECT meetcheck.*,C.LASTNAME FROM meetcheck LEFT JOIN FWOA.ecology.dbo.HrmResource C ON USERID=C.workcode WHERE MEETID='${MeetID}' AND ((DATEDIFF(N,MEETBDT,CHECKDT)>1 AND LEN(IP)>1) OR STU='2') AND EXISTS (SELECT B.lastname,B.workcode,A.* FROM FWOA.ecology.dbo.VW_HYCHRY A LEFT JOIN FWOA.ecology.dbo.HrmResource B ON A.memberid=B.id WHERE USERID=B.workcode AND A.MEETINGID=MEETID)
三、例外收获
可以通过一个人的参会率和填写理由情况,侧面小概率判断该员工是否稳定