新乡民调(来自息县民调) - 主标

sql_20180503_DealWorkOrderbak.sql 11KB

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