|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
|
|
|
2
|
+/****** Object: StoredProcedure [dbo].[DealWorkOrder1] Script Date: 11/23/2018 14:15:37 ******/
|
|
|
3
|
+IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DealWorkOrder1]') AND type in (N'P', N'PC'))
|
|
|
4
|
+DROP PROCEDURE [dbo].[DealWorkOrder1]
|
|
|
5
|
+GO
|
|
|
6
|
+
|
|
|
7
|
+
|
|
|
8
|
+/****** Object: StoredProcedure [dbo].[DealWorkOrder1] Script Date: 11/23/2018 14:15:37 ******/
|
|
|
9
|
+SET ANSI_NULLS ON
|
|
|
10
|
+GO
|
|
|
11
|
+
|
|
|
12
|
+SET QUOTED_IDENTIFIER ON
|
|
|
13
|
+GO
|
|
|
14
|
+
|
|
|
15
|
+
|
|
|
16
|
+CREATE PROCEDURE [dbo].[DealWorkOrder1]
|
|
|
17
|
+(
|
|
|
18
|
+ @orderid VARCHAR(50),--工单编号
|
|
|
19
|
+ @isend INT,--是否结束
|
|
|
20
|
+ @cont NVARCHAR(MAX),--处理内容
|
|
|
21
|
+ @jsbm INT,--接收部门ID
|
|
|
22
|
+ @jsgh VARCHAR(50),--接收人工号(多个用,隔开)
|
|
|
23
|
+ @clgh VARCHAR(MAX),--处理人工号
|
|
|
24
|
+ @IsAudit int,--0未审核,1无效,2有效
|
|
|
25
|
+ @InfoTypeID int,--信息分类ID
|
|
|
26
|
+ @InfoType VARCHAR(50),--信息分类
|
|
|
27
|
+ @UnitID int,--交办单位ID
|
|
|
28
|
+ @Unit varchar(50) --交办单位
|
|
|
29
|
+)
|
|
|
30
|
+AS
|
|
|
31
|
+BEGIN TRAN clgd
|
|
|
32
|
+BEGIN TRY
|
|
|
33
|
+ DECLARE @tran_error INT=0--错误
|
|
|
34
|
+
|
|
|
35
|
+ DECLARE @gd_id VARCHAR(50)--工单ID
|
|
|
36
|
+ DECLARE @gd_type INT--工单类型
|
|
|
37
|
+ DECLARE @gd_state INT--工单状态
|
|
|
38
|
+ DECLARE @gd_user VARCHAR(50)--工单创建人工号
|
|
|
39
|
+ DECLARE @gd_time DECIMAL--工单用时时间
|
|
|
40
|
+ DECLARE @gd_limt DECIMAL--工单超时时间
|
|
|
41
|
+ DECLARE @gd_iscs INT=0--工单是否超时
|
|
|
42
|
+ DECLARE @mx_id VARCHAR(50)--工单明细ID
|
|
|
43
|
+ DECLARE @mx_state INT--工单明细状态
|
|
|
44
|
+ DECLARE @mx_user VARCHAR(50)--工单明细创建人工号
|
|
|
45
|
+ DECLARE @mx_sureuser VARCHAR(50)--工单明细接单人工号
|
|
|
46
|
+ DECLARE @mx_time DECIMAL--工单明细创建时间
|
|
|
47
|
+ DECLARE @mx_limt DECIMAL--工单明细超时时间
|
|
|
48
|
+ DECLARE @mx_iscs INT=0--工单明细是否超时
|
|
|
49
|
+
|
|
|
50
|
+ DECLARE @limttime DECIMAL--明细限制时间
|
|
|
51
|
+
|
|
|
52
|
+ BEGIN
|
|
|
53
|
+ SELECT @gd_id=ISNULL(ID, 0),@gd_type=ISNULL(Type, 0),@gd_state=State,@gd_user=CreateUser,@gd_limt=LimitTime,@gd_time=convert(decimal(18,2),DATEDIFF(minute, CreateTime, GETDATE())/60.00) FROM T_Wo_WorkOrder WHERE WorkOrderID=@orderid AND IsDel=0
|
|
|
54
|
+ SELECT @limttime=ItemTime FROM T_Wo_WorkOrderTimeOut WHERE Type=@gd_type
|
|
|
55
|
+ IF @gd_id<>0 and @gd_state=1--存在此工单并且处理中
|
|
|
56
|
+ BEGIN
|
|
|
57
|
+ IF ISNULL(@gd_limt, 0)<>0 AND @gd_limt>@gd_limt--超时
|
|
|
58
|
+ BEGIN
|
|
|
59
|
+ SET @gd_iscs=1
|
|
|
60
|
+ END
|
|
|
61
|
+
|
|
|
62
|
+ --获取最新的流程明细
|
|
|
63
|
+ SELECT @mx_id=ISNULL(mx.ID, 0),@mx_state=State,@mx_user=CreateUser,@mx_sureuser=SureUser,@mx_limt=LimitTime,@mx_time= convert(decimal(18,2),DATEDIFF(minute, CreateTime, GETDATE())/60.00)
|
|
|
64
|
+ FROM( SELECT TOP 1 * FROM T_Wo_WorkOrderItem WHERE WorkOrderID=@orderid AND IsDel=0 AND Type=1 ORDER BY CreateTime DESC) mx
|
|
|
65
|
+ IF @mx_id<>0 and @mx_state=1 and @mx_sureuser=@clgh--当前明细是否接单状态并且是否当前人接单
|
|
|
66
|
+ BEGIN
|
|
|
67
|
+ IF ISNULL(@mx_limt, 0)<>0 AND @mx_time>@mx_limt--超时
|
|
|
68
|
+ BEGIN
|
|
|
69
|
+ SET @mx_iscs=1
|
|
|
70
|
+ END
|
|
|
71
|
+
|
|
|
72
|
+ IF @isend=0--转派
|
|
|
73
|
+ BEGIN
|
|
|
74
|
+ --更新流程
|
|
|
75
|
+ UPDATE T_Wo_WorkOrderItem SET Detail=@cont,State=2,DealUser=@clgh,DealTime=GETDATE(),IsTimeOut=@mx_iscs WHERE ID=@mx_id
|
|
|
76
|
+ --新增流程并指派
|
|
|
77
|
+ INSERT INTO T_Wo_WorkOrderItem(WorkOrderID,Type,ToDept,ToUser,SureUser,SureTime,LimitTime,IsLast,IsStart,IsTimeOut,State,CreateUser,CreateTime,IsDel) VALUES
|
|
|
78
|
+ (@orderid,1,@jsbm,@jsgh,@jsgh,GETDATE(),@limttime,0,1,0,1,@clgh,GETDATE(),0)
|
|
|
79
|
+ END
|
|
|
80
|
+ ELSE IF @isend=1--结单
|
|
|
81
|
+ BEGIN
|
|
|
82
|
+ --更新流程
|
|
|
83
|
+ UPDATE T_Wo_WorkOrderItem SET Detail=@cont,State=2,DealUser=@clgh,DealTime=GETDATE(),IsTimeOut=@mx_iscs,IsLast=1 WHERE ID=@mx_id
|
|
|
84
|
+ --更新工单状态
|
|
|
85
|
+ UPDATE T_Wo_WorkOrder SET State=2,clcontent=@cont,LastDealUser=@clgh,LastDealTime=GETDATE(),IsTimeOut=@gd_iscs
|
|
|
86
|
+ ,IsAudit=@IsAudit,InfoType=@InfoType,InfoTypeID=@InfoTypeID ,Unit=@Unit,UnitID=@UnitID
|
|
|
87
|
+ WHERE ID=@gd_id
|
|
|
88
|
+ END
|
|
|
89
|
+ END
|
|
|
90
|
+ ELSE IF @mx_id<>0 and @mx_state=1 and @gd_user=@clgh and @isend=1--创建人结单
|
|
|
91
|
+ BEGIN
|
|
|
92
|
+ --更新流程
|
|
|
93
|
+ UPDATE T_Wo_WorkOrderItem SET Detail=@cont,State=2,DealUser=@clgh,DealTime=GETDATE(),IsTimeOut=@mx_iscs,IsLast=1 WHERE ID=@mx_id
|
|
|
94
|
+ --更新工单状态
|
|
|
95
|
+ UPDATE T_Wo_WorkOrder SET State=2,LastDealUser=@clgh,LastDealTime=GETDATE(),IsTimeOut=@gd_iscs
|
|
|
96
|
+ ,IsAudit=@IsAudit,InfoType=@InfoType,InfoTypeID=@InfoTypeID ,Unit=@Unit,UnitID=@UnitID
|
|
|
97
|
+ WHERE ID=@gd_id
|
|
|
98
|
+ END
|
|
|
99
|
+ END
|
|
|
100
|
+ ELSE IF @gd_id<>0 and @gd_state=0--存在此工单并且未指派
|
|
|
101
|
+ BEGIN
|
|
|
102
|
+ IF @isend=0--转派
|
|
|
103
|
+ BEGIN
|
|
|
104
|
+ --新增流程并指派
|
|
|
105
|
+ INSERT INTO T_Wo_WorkOrderItem(WorkOrderID,Type,ToDept,ToUser,SureUser,SureTime,LimitTime,IsLast,IsStart,IsTimeOut,State,CreateUser,CreateTime,IsDel) VALUES
|
|
|
106
|
+ (@orderid,1,@jsbm,@jsgh,@jsgh,GETDATE(),@limttime,0,1,0,1,@clgh,GETDATE(),0)
|
|
|
107
|
+ --更新工单状态
|
|
|
108
|
+ UPDATE T_Wo_WorkOrder SET State=1,Answer=@cont,AppointTime=GETDATE()
|
|
|
109
|
+ ,IsAudit=@IsAudit,InfoType=@InfoType,InfoTypeID=@InfoTypeID ,Unit=@Unit,UnitID=@UnitID
|
|
|
110
|
+ WHERE ID=@gd_id
|
|
|
111
|
+ END
|
|
|
112
|
+ ELSE IF @isend=1--结单
|
|
|
113
|
+ BEGIN
|
|
|
114
|
+ --新增流程
|
|
|
115
|
+ INSERT INTO T_Wo_WorkOrderItem(WorkOrderID,Type,Detail,SureUser,SureTime,LimitTime,IsLast,IsStart,IsTimeOut,State,CreateUser,CreateTime,IsDel) VALUES
|
|
|
116
|
+ (@orderid,1,@cont,@jsgh,GETDATE(),@limttime,1,0,0,2,@clgh,GETDATE(),0)
|
|
|
117
|
+ --更新工单状态
|
|
|
118
|
+ UPDATE T_Wo_WorkOrder SET State=2,Answer=@cont,clcontent=@cont,LastDealUser=@clgh,LastDealTime=GETDATE(),IsTimeOut=@gd_iscs
|
|
|
119
|
+ ,IsAudit=@IsAudit,InfoType=@InfoType,InfoTypeID=@InfoTypeID ,Unit=@Unit,UnitID=@UnitID
|
|
|
120
|
+ WHERE ID=@gd_id
|
|
|
121
|
+ END
|
|
|
122
|
+ END
|
|
|
123
|
+ END
|
|
|
124
|
+END TRY
|
|
|
125
|
+BEGIN CATCH
|
|
|
126
|
+ SET @tran_error=@tran_error+1
|
|
|
127
|
+END CATCH
|
|
|
128
|
+IF @tran_error>0
|
|
|
129
|
+ BEGIN
|
|
|
130
|
+ ROLLBACK TRAN clgd
|
|
|
131
|
+ RETURN 0
|
|
|
132
|
+ END
|
|
|
133
|
+ELSE
|
|
|
134
|
+ BEGIN
|
|
|
135
|
+ COMMIT TRAN clgd
|
|
|
136
|
+ RETURN 1
|
|
|
137
|
+ END
|
|
|
138
|
+
|
|
|
139
|
+GO
|
|
|
140
|
+
|
|
|
141
|
+
|