uo_oaflowdef.sru 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. $PBExportHeader$uo_oaflowdef.sru
  2. forward
  3. global type uo_oaflowdef from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_oaflowdef from nonvisualobject
  7. end type
  8. global uo_oaflowdef uo_oaflowdef
  9. type variables
  10. end variables
  11. forward prototypes
  12. public function integer uof_flow_del (long arg_flowid, ref string arg_msg, boolean arg_ifcommit)
  13. public function integer uof_flow_add (s_oa_flow arg_s_oa_flow, ref string arg_msg, string arg_opemp, boolean arg_ifcommit)
  14. public function integer uof_flow_stepadd (s_oaflow_step arg_s_oaflow_step, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer uof_flow_stepdel (long arg_flowid, long arg_flowsort, ref string arg_msg, boolean arg_ifcommit)
  16. end prototypes
  17. public function integer uof_flow_del (long arg_flowid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  18. Long ll_flowid
  19. Long cnt
  20. IF arg_flowid = 0 THEN
  21. rslt = 0
  22. arg_msg = '没有删除对象'
  23. GOTO ext
  24. END IF
  25. //检查
  26. cnt = 0
  27. SELECT count(*)
  28. INTO :cnt
  29. FROM oa_doc
  30. Where Flowid = :arg_flowid;
  31. IF sqlca.SQLCode <> 0 THEN
  32. arg_msg = "查询流程是否已用于公文失败,"+sqlca.SQLErrText
  33. rslt = 0
  34. GOTO ext
  35. END IF
  36. IF cnt > 0 THEN
  37. arg_msg = "流程已用于公文,不能删除"
  38. rslt = 0
  39. GOTO ext
  40. END IF
  41. DELETE FROM oa_flowdef
  42. Where Flowid = :arg_flowid;
  43. IF sqlca.SQLCode <> 0 THEN
  44. arg_msg = "删除流程操作失败,请重试!"+'~n'+sqlca.SQLErrText
  45. rslt = 0
  46. GOTO ext
  47. END IF
  48. DELETE FROM OA_FLOWDEF_STEP
  49. Where Flowid = :arg_flowid;
  50. IF sqlca.SQLCode <> 0 THEN
  51. arg_msg = "删除流程明细操作失败,请重试!"+'~n'+sqlca.SQLErrText
  52. rslt = 0
  53. GOTO ext
  54. END IF
  55. DELETE FROM OA_FLOWDEF_STEPEMP
  56. Where Flowid = :arg_flowid;
  57. IF sqlca.SQLCode <> 0 THEN
  58. arg_msg = "删除流程明细已经指定的经办人操作失败,请重试!"+'~n'+sqlca.SQLErrText
  59. rslt = 0
  60. GOTO ext
  61. END IF
  62. ext:
  63. IF rslt = 0 THEN
  64. ROLLBACK;
  65. ELSEIF rslt = 1 AND arg_ifcommit THEN
  66. COMMIT;
  67. END IF
  68. RETURN rslt
  69. end function
  70. public function integer uof_flow_add (s_oa_flow arg_s_oa_flow, ref string arg_msg, string arg_opemp, boolean arg_ifcommit);Int rslt = 1
  71. Long ll_flowid
  72. If IsNull(arg_s_oa_flow.flowid) Then arg_s_oa_flow.flowid = 0
  73. If IsNull(arg_s_oa_flow.sortnum) Then arg_s_oa_flow.sortnum = ''
  74. If IsNull(arg_s_oa_flow.flowtype) Then arg_s_oa_flow.flowtype = ''
  75. If IsNull(arg_s_oa_flow.flowname) Then arg_s_oa_flow.flowname = ''
  76. If IsNull(arg_s_oa_flow.billtypead) Then arg_s_oa_flow.billtypead = 0
  77. If IsNull(arg_s_oa_flow.if_rivet) Then arg_s_oa_flow.if_rivet = 0
  78. If IsNull(arg_s_oa_flow.dscrp) Then arg_s_oa_flow.dscrp = ''
  79. If IsNull(arg_s_oa_flow.relation) Then arg_s_oa_flow.relation = ''
  80. If IsNull(arg_s_oa_flow.expression) Then arg_s_oa_flow.expression = ''
  81. If arg_s_oa_flow.sortnum = '' Then
  82. arg_msg = '请输入编号'
  83. rslt = 0
  84. Goto ext
  85. End If
  86. If arg_s_oa_flow.flowname = '' Then
  87. arg_msg = '请输入名称'
  88. rslt = 0
  89. Goto ext
  90. End If
  91. If arg_s_oa_flow.billtypead = 0 Then
  92. arg_s_oa_flow.relation = ''
  93. arg_s_oa_flow.expression = ''
  94. End If
  95. If arg_s_oa_flow.flowid = 0 Then
  96. ll_flowid = f_sys_scidentity(0,"oa_flowdef","flowid",arg_msg,True,id_sqlca)
  97. If ll_flowid <= 0 Then
  98. rslt = 0
  99. Goto ext
  100. End If
  101. Insert Into oa_flowdef
  102. (
  103. flowid,
  104. flowname,
  105. flowtype,
  106. dscrp,
  107. opemp,
  108. opdate,
  109. sortnum,
  110. if_rivet,
  111. billtypead,
  112. relation,
  113. expression)
  114. Values
  115. (
  116. :ll_flowid,
  117. :arg_s_oa_flow.flowname,
  118. :arg_s_oa_flow.flowtype,
  119. :arg_s_oa_flow.dscrp,
  120. :arg_opemp,
  121. getdate(),
  122. :arg_s_oa_flow.sortnum,
  123. :arg_s_oa_flow.if_rivet,
  124. :arg_s_oa_flow.billtypead,
  125. :arg_s_oa_flow.relation,
  126. :arg_s_oa_flow.expression);
  127. If sqlca.SQLCode <> 0 Then
  128. arg_msg = "流程新建失败,请重试!"+'~n'+sqlca.SQLErrText
  129. rslt = 0
  130. Goto ext
  131. End If
  132. Else
  133. Update oa_flowdef
  134. Set flowname = :arg_s_oa_flow.flowname ,
  135. flowtype = :arg_s_oa_flow.flowtype ,
  136. dscrp = :arg_s_oa_flow.dscrp ,
  137. modemp = :arg_opemp,
  138. moddate = getdate(),
  139. sortnum = :arg_s_oa_flow.sortnum,
  140. if_rivet = :arg_s_oa_flow.if_rivet,
  141. billtypead = :arg_s_oa_flow.billtypead,
  142. relation = :arg_s_oa_flow.relation,
  143. expression = :arg_s_oa_flow.expression
  144. Where flowid = :arg_s_oa_flow.flowid;
  145. If sqlca.SQLCode <> 0 Then
  146. arg_msg = "流程更新失败,请重试!"+'~n'+sqlca.SQLErrText
  147. rslt = 0
  148. Goto ext
  149. End If
  150. //如果是直接完成审批类型,不需要流程明细
  151. If arg_s_oa_flow.if_rivet = 2 Then
  152. Delete From OA_FLOWDEF_STEP
  153. Where flowid = :arg_s_oa_flow.flowid;
  154. If sqlca.SQLCode <> 0 Then
  155. arg_msg = "删除流程明细操作失败,请重试!"+'~n'+sqlca.SQLErrText
  156. rslt = 0
  157. Goto ext
  158. End If
  159. End If
  160. End If
  161. ext:
  162. If rslt = 0 Then
  163. Rollback;
  164. ElseIf rslt = 1 And arg_ifcommit Then
  165. Commit;
  166. End If
  167. Return rslt
  168. end function
  169. public function integer uof_flow_stepadd (s_oaflow_step arg_s_oaflow_step, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  170. Long i
  171. If IsNull(arg_s_oaflow_step.flowid) Then arg_s_oaflow_step.flowid = 0
  172. If IsNull(arg_s_oaflow_step.flowstepname) Then arg_s_oaflow_step.flowstepname = ''
  173. If IsNull(arg_s_oaflow_step.flowsort) Then arg_s_oaflow_step.flowsort = 0
  174. If IsNull(arg_s_oaflow_step.ifopflag) Then arg_s_oaflow_step.ifopflag = 0
  175. If IsNull(arg_s_oaflow_step.flowempstr) Then arg_s_oaflow_step.flowempstr = ''
  176. If IsNull(arg_s_oaflow_step.flowinfo) Then arg_s_oaflow_step.flowinfo = ''
  177. If IsNull(arg_s_oaflow_step.limithour) Then arg_s_oaflow_step.limithour = 0
  178. If IsNull(arg_s_oaflow_step.ifnecessary) Then arg_s_oaflow_step.ifnecessary = 0
  179. If IsNull(arg_s_oaflow_step.ifjoin) Then arg_s_oaflow_step.ifjoin = 0
  180. If IsNull(arg_s_oaflow_step.ifmod_relqty) Then arg_s_oaflow_step.ifmod_relqty = 0
  181. If arg_s_oaflow_step.flowid = 0 Then
  182. arg_msg = '错误的流程id,请检查'
  183. rslt = 0
  184. Goto ext
  185. End If
  186. If arg_s_oaflow_step.flowstepname = '' Then
  187. arg_msg = '请输入步骤名称'
  188. rslt = 0
  189. Goto ext
  190. End If
  191. If arg_s_oaflow_step.flowsort = 0 Then
  192. arg_msg = '请输入步骤'
  193. rslt = 0
  194. Goto ext
  195. End If
  196. //不是发起者处理的,需要选择具体人员
  197. If arg_s_oaflow_step.ifopflag = 0 Then
  198. If arg_s_oaflow_step.flowempstr = '' Then
  199. arg_msg = '请设置相关人员'
  200. rslt = 0
  201. Goto ext
  202. End If
  203. If UpperBound(arg_s_oaflow_step.empid) = 0 Then
  204. arg_msg = '请选择相关人员'
  205. rslt = 0
  206. Goto ext
  207. End If
  208. End If
  209. Insert Into oa_flowdef_step
  210. ( flowid,
  211. flowstepname,
  212. flowsort,
  213. flowempstr,
  214. ifopflag,
  215. flowinfo,
  216. limithour,
  217. ifnecessary,
  218. ifjoin,
  219. ifmod_relqty)
  220. Values(
  221. :arg_s_oaflow_step.flowid,
  222. :arg_s_oaflow_step.flowstepname,
  223. :arg_s_oaflow_step.flowsort,
  224. :arg_s_oaflow_step.flowempstr,
  225. :arg_s_oaflow_step.ifopflag,
  226. :arg_s_oaflow_step.flowinfo,
  227. :arg_s_oaflow_step.limithour,
  228. :arg_s_oaflow_step.ifnecessary,
  229. :arg_s_oaflow_step.ifjoin,
  230. :arg_s_oaflow_step.ifmod_relqty);
  231. If sqlca.SQLCode <> 0 Then
  232. rslt = 0
  233. arg_msg = '新增步骤操作,'+sqlca.SQLErrText
  234. Goto ext
  235. End If
  236. For i = 1 To UpperBound(arg_s_oaflow_step.empid)
  237. Insert Into oa_flowdef_stepemp
  238. (flowid,
  239. flowsort,
  240. empid)
  241. Values(
  242. :arg_s_oaflow_step.flowid,
  243. :arg_s_oaflow_step.flowsort,
  244. :arg_s_oaflow_step.empid[i]);
  245. If sqlca.SQLCode <> 0 Then
  246. rslt = 0
  247. arg_msg = '新增步骤操作,'+sqlca.SQLErrText
  248. Goto ext
  249. End If
  250. Next
  251. ext:
  252. If rslt = 0 Then
  253. Rollback;
  254. ElseIf rslt = 1 And arg_ifcommit Then
  255. Commit;
  256. End If
  257. Return rslt
  258. end function
  259. public function integer uof_flow_stepdel (long arg_flowid, long arg_flowsort, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  260. //arg_flowsort = -1 全删
  261. IF IsNull(arg_flowid) THEN arg_flowid = 0
  262. IF IsNull(arg_flowsort) THEN arg_flowsort = 0
  263. IF arg_flowid = 0 THEN
  264. arg_msg = '错误的流程id,请检查'
  265. rslt = 0
  266. GOTO ext
  267. END IF
  268. IF arg_flowsort = 0 THEN
  269. arg_msg = '请错误的步骤,请检查'
  270. rslt = 0
  271. GOTO ext
  272. END IF
  273. DELETE FROM oa_flowdef_stepemp
  274. WHERE flowid = :arg_flowid
  275. AND (flowsort = :arg_flowsort or :arg_flowsort = -1);
  276. IF sqlca.SQLCode <> 0 THEN
  277. rslt = 0
  278. arg_msg = '删除步骤人员操作失败,'+sqlca.SQLErrText
  279. GOTO ext
  280. END IF
  281. DELETE FROM OA_FLOWDEF_STEP
  282. WHERE flowid = :arg_flowid
  283. AND (flowsort = :arg_flowsort or :arg_flowsort = -1);
  284. IF sqlca.SQLCode <> 0 THEN
  285. rslt = 0
  286. arg_msg = '删除步骤操作失败,'+sqlca.SQLErrText
  287. GOTO ext
  288. END IF
  289. ext:
  290. IF rslt = 0 THEN
  291. ROLLBACK;
  292. ELSEIF rslt = 1 AND arg_ifcommit THEN
  293. COMMIT;
  294. END IF
  295. RETURN rslt
  296. end function
  297. on uo_oaflowdef.create
  298. call super::create
  299. TriggerEvent( this, "constructor" )
  300. end on
  301. on uo_oaflowdef.destroy
  302. TriggerEvent( this, "destructor" )
  303. call super::destroy
  304. end on