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

📄 proc_newtask.sql

📁 物业管理和办公自动化系统
💻 SQL
字号:
---------------------------------------------
-- 存储过程(创建新任务,并给相关人员分配该任务,并发送任务分配消息)
-- 返回值   0: 成功;
--        -1: T_Task 表插入记录不成功
--        -2: T_PersonalTask 表插入记录不成功
---------------------------------------------
CREATE PROCEDURE proc_NewTask(@subject varchar(512), @content varchar(7000), @creator int, @DoFrom datetime, @DoEnd datetime, @Executor varchar(1024), @urgency int, @RemindMethod varchar(8), @RemindTime varchar(20))
As
Set NOCOUNT ON
-- define variables
declare @task_serial	int		-- 插入 T_Task 表生成的任务号
declare @emplist	varchar(256)	-- 员工列表
declare @emp_serial	int		-- 员工序列号
declare @pos		int		-- 位置变量
declare @rtn_code	int		-- 返回值
declare @dtRemind	datetime	-- 下次提醒时间
declare @sMsgSubject varchar(512), @sMsgContent varchar(8000), @sCreatorName varchar(20)
declare @nRows	int		-- 返回记录数

select @dtRemind = @RemindTime
select @rtn_code = 0
select @emplist = @Executor
----------------------------------------------------------------------------------------
-- 先向任务表 T_Task 中插入一条记录 ( Create_Date 使用缺省值 GetDate() )
----------------------------------------------------------------------------------------
Begin Tran
insert into T_Task(Subject, Content, Creator, DoFrom, DoEnd, Executor, Urgency, Remind_Method, Remind_Time)
    values( @Subject, @Content, @Creator, @DoFrom, @DoEnd, @Executor, @Urgency, @RemindMethod, @RemindTime)
IF @@ROWCOUNT = 0
    begin
	select @rtn_code = -1 
	GOTO BeforeReturn
    end
select @task_serial = IDENT_CURRENT('T_Task')
select @pos = 0
while LEN(@emplist) > 0
    begin
	select @pos = PATINDEX('%,%', @emplist)
	if @pos > 0								-- 表示找到了一个逗号
	   begin	
		select @emp_serial = SUBSTRING(@emplist, 1, @pos - 1)		-- 取出逗号前的字串
		select @emplist = RIGHT(@emplist, LEN(@emplist) - @pos)		-- 取得新的emplist
		select @emplist = LTRIM(RTRIM(@emplist))			-- 去掉前导和末尾的空格
	   end
	else
	   begin
		select @emp_serial = @emplist					-- emplist中只有最后一个emp_serial
		select @emplist = ''						-- emplist置为空字串,即跳出循环
	   end
	--print @pos
	---------------------------------------------------------------------------------------------------------
	-- 如果 emp_serial 有效,则在 T_PersonalTask 中插入一条记录
	---------------------------------------------------------------------------------------------------------
	select @nRows = count(*) from T_Employee where serial = @emp_serial
	if @nRows > 0
	      begin
		insert into T_PersonalTask(task_serial, emp_serial) values(@task_serial, @emp_serial)
	      end
    end
-- 通知相关人员
select @emplist = @Executor
select @sCreatorName = IsNULL(Name,'') from T_Employee where serial = @Creator
if ( @@ROWCOUNT = 0 or @sCreatorName = '' )
	select @sCreatorName = @Creator
select @sMsgSubject = '新任务:' + @Subject
select @sMsgContent = @sCreatorName + '给您新分配了一个任务《' + @Subject + '》,任务内容如下:' + @Content

EXECUTE proc_NewMessage @MessageType=104, @Subject=@sMsgSubject, @Content=@sMsgContent, @Sender=@Creator, @Receiver=@emplist, @parent=0

Commit Tran
BeforeReturn:
	SET NOCOUNT OFF
	select @rtn_code as 'rtn_code'
GO

⌨️ 快捷键说明

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