⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.asp

📁 物业管理和办公自动化系统
💻 ASP
字号:

<%
'************************************************************************************************
' 文件名: remind.asp
' Copyright(c) 2001-2002 上海阿尔卡特网络支援系统有限公司
'
'  创建人 : 周秋舫
'  日 期 : 2002-05-13
' 修改历史 :
'   ****年**月**日 ****** 修改内容:**************************************************
' 功能描述 : 任务提醒和例会提醒,检查t_task表和t_routinemeeting表中有提醒的部分,向相关人员发送消息,并重置下次提醒时间
'			DoTaskRemind						'' 任务提醒
'			DoRoutineMeetingRemind		'' 例会提醒
'			NextRemindTime					'' 根据提醒方式和本次提醒时间计算下次提醒时间
'  版 本 :
'************************************************************************************************
option explicit
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>
<!-- #include file="../include/db.inc" -->
<!-- #include file="../include/datahandle.inc" -->
<!-- #include file="../include/common.inc" -->
<!-- #include file="../include/message.inc" -->

<%
'call DoTaskRemind()
'call DoRoutineMeetingRemind()
call DoMeetingEffectRemind()


''' 以下为函数实现


''****************************************************************************************************************
'' 函数:DoTaskRemind
'' 功能:任务提醒,向相关人员发送任务提醒消息,并重置该任务的下次提醒时间
'' 输入:(无)
'' 输出:(无) 
''****************************************************************************************************************
sub DoTaskRemind()
	dim sSQL, rs
	dim sRemindMethod, sRemindTime, sNextRemindTime, sSubject, sContent, sDoFrom, sDoEnd, sExecutors
	dim sTaskSerial
	dim dtBaseTime	: dtBaseTime = now

	sSQL = "select * from t_task where remind_method is not null and remind_time < " & ToSQL(now, "Text")
	
	'' 获取需要提醒的任务信息
	dim conn	: 	set conn = New CDBConnection
	conn.Connect(dbLocal)
	set rs = conn.m_DBConn.Execute(sSQL)
	while not rs.eof
		sTaskSerial = rs("task_serial")
		sRemindMethod = rs("remind_method")
		sNextRemindTime = rs("remind_time")
		sSubject = rs("subject")
		sContent = rs("content")
		sDoFrom = FormatDT(rs("dofrom"), "yyyy-mm-dd hh:mm")
		sDoEnd = FormatDT(rs("doend"), "yyyy-mm-dd hh:mm")
		sExecutors = rs("executor")

		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		'' 获得下次提醒时间,如果下次提醒时间小于当前时间,则继续获取下次提醒时间
		''---------------------------------------------------------------------------------------------------------------------------
		while sNextRemindTime < dtBaseTime
			sNextRemindTime = NextRemindTime(sRemindMethod, sNextRemindTime)
		wend

		'' 更新下次提醒时间
		if left(sRemindMethod,2) = "01" then	'' 一次性提醒
			sSQL = "update t_task set remind_time = null where task_serial = " & ToSQL(sTaskSerial, "Number")
		else
			sSQL = "update t_task set remind_time = " & ToSQL(sNextRemindTime, "Text") & " where task_serial = " & ToSQL(sTaskSerial, "Number")
		end if
		response.write sSQL & "<br><br>"
		conn.m_DBConn.execute(sSQL)


		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		'' 发送提醒消息
		''---------------------------------------------------------------------------------------------------------------------------
		sContent = "系统提醒您在 " & sDoFrom & " ~ " & sDoEnd & " 需完成以下任务:" & vbLF & vbLF &_
						"任务名称:" & vbLF & "  " & sSubject & vbLF & vbLF & _
						"具体内容:" & vbLF & "  " & sContent
		'call CommonSendMsg(msg_type, parent_msg_id, subject, content, sender, receiver)
		call CommonSendMsg(MSG_TASK, "", "任务提醒:" & sSubject, sContent, "", sExecutors)

		rs.movenext
	wend
	rs.Close()
	conn.Disconnect()
end sub

''****************************************************************************************************************
'' 函数:DoRoutineMeetingRemind
'' 功能:例会提醒,目前例会只设每周提醒一次,向例会创建者发送提醒安排例会的消息,并重置该例会的下次提醒时间
''			下次提醒时间总为本次提醒时间加7天
'' 输入:(无)
'' 输出:(无) 
''****************************************************************************************************************
sub DoRoutineMeetingRemind()
	dim sSQL, rs
	dim sRemindMethod, sRemindTime, sNextRemindTime
	dim sMeetingSerial, sMeetingName, sMeetingDay, sMeetingTime
	dim sContent

	dim dtBaseTime	: dtBaseTime = now
	dim sReceiver	: sReceiver = GetOfficer		'' 只有办公室主任才能创建例会,因此只向办公室主任发送例会提醒消息

	sSQL = "select * from t_routinemeeting where remind_method is not null and remind_time < " & ToSQL(now, "Text")
'	response.write sSQL : response.end

	'' 获取需要提醒的任务信息
	dim conn	: 	set conn = New CDBConnection
	conn.Connect(dbLocal)
	set rs = conn.m_DBConn.Execute(sSQL)
	while not rs.eof
		sMeetingSerial = rs("meeting_serial")
		sRemindMethod = rs("remind_method")
		sNextRemindTime = rs("remind_time")

		sMeetingName = rs("meeting_name")
		sMeetingDay = rs("meeting_day")
		sMeetingTime = rs("meeting_time")
		
				
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		'' 获得下次提醒时间,如果下次提醒时间小于当前时间,则继续获取下次提醒时间
		''---------------------------------------------------------------------------------------------------------------------------
		while sNextRemindTime < dtBaseTime
			sNextRemindTime = NextRemindTime(sRemindMethod, sNextRemindTime)
		wend

		'' 更新下次提醒时间
		sSQL = "update t_routinemeeting set remind_time = " & ToSQL(sNextRemindTime, "Text") & " where meeting_serial = " & ToSQL(sMeetingSerial, "Number")
		''response.write sSQL & "<br><br>"
		conn.m_DBConn.execute(sSQL)

		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		'' 发送提醒消息
		''---------------------------------------------------------------------------------------------------------------------------
		dim wk	: wk = Array("零","一", "二", "三", "四", "五", "六", "日")
		sContent = "系统提醒您及时安排例会:" & vbLF & vbLF &_
						"例会名称:" & sMeetingName & vbLF & vbLF & _
						"例会时间:每周" & wk(sMeetingDay) & " " & sMeetingTime
		'call CommonSendMsg(msg_type, parent_msg_id, subject, content, sender, receiver)
		call CommonSendMsg(MSG_MEETING, "", "例会提醒:" & sMeetingName, sContent, "", sReceiver)

		rs.movenext
	wend
	rs.Close()
	conn.Disconnect()
end sub

''****************************************************************************************************************
'' 函数:DoMeetingEffectRemind
'' 功能:会议落实事项提醒,每天/每周/每月提醒一次,向落实事项相关人员发送提醒消息,并重置该落实事项的下次提醒时间
''			下次提醒时间总为本次提醒时间加1天,1周,1月
'' 输入:(无)
'' 输出:(无) 
''****************************************************************************************************************
sub DoMeetingEffectRemind()
	dim sSQL, rs
	dim sRemindMethod, sRemindTime, sNextRemindTime
	dim sMeetingEffectSerial, sMeetingName, sMeetingEffect, sHandleDeadline
	dim sMsgSubject, sMsgContent

	dim dtBaseTime	: dtBaseTime = now
	dim sReceiver	: sReceiver = GetEmpSerial

	sSQL = "select t1.serial, t1.effect_item, t2.meeting_name, t1.handle_deadline, t1.remind_method, t1.remind_time from t_meetingeffect t1" & _
				" left join t_meetingprepare t2 on t2.meeting_serial = t1.meeting_serial" & _
				" where remind_method is not null and remind_time < " & ToSQL(date, "Text") & _
				" and PATINDEX('%," & sReceiver & ",%', ',' + replace(associate,' ','') + ',') > 0"
	'response.write sSQL : response.end
	'response.write "<script language=""javascript"">alert('" & sSQL & "</script>" : response.end

	'' 获取需要提醒的落实事项信息
	dim conn	: 	set conn = New CDBConnection
	conn.Connect(dbLocal)
	set rs = conn.m_DBConn.Execute(sSQL)
	while not rs.eof
		sMeetingEffectSerial = rs("serial")
		sRemindMethod = rs("remind_method")
		sNextRemindTime = rs("remind_time")
		sHandleDeadline = rs("handle_deadline")

		sMeetingName = rs("meeting_name")
		sMeetingEffect = rs("effect_item")	
				
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		'' 获得下次提醒时间,如果下次提醒时间小于当前时间,则继续获取下次提醒时间
		''---------------------------------------------------------------------------------------------------------------------------
		while sNextRemindTime < dtBaseTime
			sNextRemindTime = NextRemindTime(sRemindMethod, sNextRemindTime)
		wend

		'' 更新下次提醒时间
		sSQL = "update t_meetingeffect set remind_time = " & ToSQL(sNextRemindTime, "Text") & " where serial = " & ToSQL(sMeetingEffectSerial, "Number")
		conn.m_DBConn.execute(sSQL)


		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		'' 发送提醒消息
		''---------------------------------------------------------------------------------------------------------------------------
		sMsgSubject = "请及时处理《" & sMeetingName & "》的落实事项"
		sMsgContent = "系统提醒您及时处理:《" & sMeetingName & "》的落实事项" & vbLF & vbLF &_
						"落实事项处理时限:" & sHandleDeadLine & vbLF & vbLF & _
						"落实事项内容:" & vbLF & sMeetingEffect & vbLF & vbLF
		call CommonSendMsg(MSG_MEETING, "", sMsgSubject, sMsgContent, "", sReceiver)
		
		rs.movenext
	wend
	rs.Close()
	conn.Disconnect()
end sub

''****************************************************************************************************************
'' 函数:NextRemindTime(sRemindMethod, dtBase)
'' 功能:根据提醒方式和本次提醒时间获取下次提醒时间
''			只有每天提醒(04)、每周提醒(08)、每月(16)提醒的提醒方式才有下次提醒时间,并且下次提醒时间分别是本次提醒时间加1天/1周/1月
'' 输入:sRemindMethod	提醒方式
''			dtBase				本次提醒时间
'' 输出:下次提醒时间
''****************************************************************************************************************
function NextRemindTime(sRemindMethod, dtBase)
	NextRemindTime = ""
	if Left(sRemindMethod,2) = "04" then			' 每天提醒一次
		NextRemindTime = DateAdd("d", 1, dtBase)
	elseif Left(sRemindMethod,2) = "08" then		' 每周提醒一次
		NextRemindTime = DateAdd("ww", 1, dtBase)
	elseif Left(sRemindMethod,2) = "16" then		' 每月提醒一次
		NextRemindTime = DateAdd("m", 1, dtBase)
	end if
end function
%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -