uo_oa_doc_fj_downsave.sru 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. $PBExportHeader$uo_oa_doc_fj_downsave.sru
  2. forward
  3. global type uo_oa_doc_fj_downsave from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_oa_doc_fj_downsave from nonvisualobject
  7. end type
  8. global uo_oa_doc_fj_downsave uo_oa_doc_fj_downsave
  9. type variables
  10. transaction ins_tran //数据commit事务
  11. end variables
  12. forward prototypes
  13. public function integer f_down_fj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg)
  14. public function integer f_getfj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg)
  15. public function integer f_update_blob_fj (long arg_fjid, string arg_fjname, blob arg_fjbody, ref string arg_msg, boolean arg_ifcommit)
  16. public function integer f_del_fj (long arg_docid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer f_save_fj (long arg_docid, long arg_annextype, string arg_fjname, blob arg_fjbody, long arg_fjtype, long arg_ifdownfj, long arg_iflookfj, integer arg_modelflag, ref string arg_msg, boolean arg_ifcommit, decimal arg_filesize, integer arg_ifmain)
  18. end prototypes
  19. public function integer f_down_fj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg);Long rslt = 1,cnt
  20. Blob ls_filedata
  21. IF arg_fjid <= 0 THEN
  22. rslt = 0
  23. arg_msg = '下载附件失败(错误附件ID)'
  24. GOTO ext
  25. END IF
  26. IF arg_fjname = '' THEN
  27. rslt = 0
  28. arg_msg = '下载附件失败(错误附件名)'
  29. GOTO ext
  30. END IF
  31. SELECT count(*)
  32. INTO :cnt
  33. FROM oa_doc_annex
  34. WHERE (oa_doc_annex.AnnexNO = :arg_fjid) AND
  35. (oa_doc_annex.Filename = :arg_fjname)
  36. USING ins_tran;
  37. IF ins_tran.SQLCode <> 0 THEN
  38. rslt = 0
  39. arg_msg = '查询附件信息失败>>'+ins_tran.SQLErrText
  40. GOTO ext
  41. END IF
  42. SELECTBLOB Fileblob
  43. INTO :ls_filedata
  44. FROM oa_doc_annex
  45. Where (oa_doc_annex.AnnexNO = :arg_fjid) AND
  46. (oa_doc_annex.Filename = :arg_fjname)
  47. USING ins_tran;
  48. IF ins_tran.SQLCode <> 0 THEN
  49. rslt = 0
  50. arg_msg = '下载附件失败>>'+ins_tran.SQLErrText
  51. GOTO ext
  52. END IF
  53. arg_fjdata = ls_filedata
  54. ext:
  55. RETURN rslt
  56. end function
  57. public function integer f_getfj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg);Long rslt = 1,cnt
  58. Blob ls_filedata
  59. IF arg_fjid <= 0 THEN
  60. rslt = 0
  61. arg_msg = '下载附件失败(错误附件ID)'
  62. GOTO ext
  63. END IF
  64. IF arg_fjname = '' THEN
  65. rslt = 0
  66. arg_msg = '下载附件失败(错误附件名)'
  67. GOTO ext
  68. END IF
  69. SELECT count(*)
  70. INTO :cnt
  71. FROM oa_doc_annex
  72. WHERE (oa_doc_annex.AnnexNO = :arg_fjid) AND
  73. (oa_doc_annex.Filename = :arg_fjname)
  74. USING ins_tran;
  75. IF ins_tran.SQLCode <> 0 THEN
  76. rslt = 0
  77. arg_msg = '查询附件信息失败>>'+ins_tran.SQLErrText
  78. GOTO ext
  79. END IF
  80. SELECTBLOB Fileblob
  81. INTO :ls_filedata
  82. FROM oa_doc_annex
  83. Where (oa_doc_annex.AnnexNO = :arg_fjid) AND
  84. (oa_doc_annex.Filename = :arg_fjname)
  85. USING ins_tran;
  86. IF ins_tran.SQLCode <> 0 THEN
  87. rslt = 0
  88. arg_msg = '下载附件失败>>'+ins_tran.SQLErrText
  89. GOTO ext
  90. END IF
  91. arg_fjdata = ls_filedata
  92. ext:
  93. RETURN rslt
  94. end function
  95. public function integer f_update_blob_fj (long arg_fjid, string arg_fjname, blob arg_fjbody, ref string arg_msg, boolean arg_ifcommit);//保存附件
  96. Long rslt = 1, cnt
  97. IF IsNull(arg_fjname) Or arg_fjname = '' THEN
  98. rslt = 0
  99. arg_msg = '保存附件失败(附件名)'
  100. GOTO ext
  101. END IF
  102. SELECT count(*)
  103. INTO :cnt
  104. FROM oa_doc_annex
  105. WHERE (oa_doc_annex.AnnexNO = :arg_fjid) AND
  106. (oa_doc_annex.Filename = :arg_fjname)
  107. Using ins_tran;
  108. IF ins_tran.SQLCode <> 0 THEN
  109. rslt = 0
  110. arg_msg = '查询附件信息失败>>'+ins_tran.SQLErrText
  111. GOTO ext
  112. END IF
  113. UPDATEBLOB oa_doc_annex
  114. Set Fileblob = :arg_fjbody
  115. Where AnnexNO = :arg_fjid USING ins_tran;
  116. IF ins_tran.SQLCode <> 0 THEN
  117. rslt = 0
  118. arg_msg = '因网络或其它原因保存附件失败>>'+ins_tran.SQLErrText
  119. GOTO ext
  120. END IF
  121. ext:
  122. IF rslt = 0 THEN
  123. ROLLBACK Using ins_tran;
  124. ELSEIF arg_ifcommit THEN
  125. COMMIT Using ins_tran;
  126. END IF
  127. RETURN rslt
  128. end function
  129. public function integer f_del_fj (long arg_docid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,cnt
  130. Blob ls_filedata
  131. IF arg_docid <= 0 THEN
  132. rslt = 0
  133. arg_msg = '下载附件失败(错误附件ID)'
  134. GOTO ext
  135. END IF
  136. delete from oa_doc_annex
  137. where docID = :arg_docid
  138. USING ins_tran;
  139. IF ins_tran.SQLCode <> 0 THEN
  140. rslt = 0
  141. arg_msg = '因网络或其它原因保存附件失败>>'+ins_tran.SQLErrText
  142. GOTO ext
  143. END IF
  144. ext:
  145. if rslt = 0 then
  146. rollback USING ins_tran;
  147. elseif arg_ifcommit then
  148. commit USING ins_tran;
  149. end if
  150. RETURN rslt
  151. end function
  152. public function integer f_save_fj (long arg_docid, long arg_annextype, string arg_fjname, blob arg_fjbody, long arg_fjtype, long arg_ifdownfj, long arg_iflookfj, integer arg_modelflag, ref string arg_msg, boolean arg_ifcommit, decimal arg_filesize, integer arg_ifmain);//保存附件
  153. Long rslt = 1
  154. Long ls_newid
  155. IF arg_docid <= 0 THEN
  156. rslt = 0
  157. arg_msg = '保存附件失败(公文ID)'
  158. GOTO ext
  159. END IF
  160. IF IsNull(arg_fjname) Or arg_fjname = '' THEN
  161. rslt = 0
  162. IF IsNull(arg_fjname) THEN
  163. arg_msg = '保存附件失败(附件名) null'
  164. ELSE
  165. arg_msg = '保存附件失败(附件名) 空'
  166. END IF
  167. GOTO ext
  168. END IF
  169. ls_newid = f_sys_scidentity(0,"oa_doc_annex","AnnexNO",arg_msg,True,id_sqlca)
  170. IF ls_newid <= 0 THEN
  171. rslt = 0
  172. GOTO ext
  173. END IF
  174. INSERT INTO oa_doc_annex
  175. ( docID,
  176. annextype,
  177. AnnexNO,
  178. Filename,
  179. Opdate,
  180. Opemp,
  181. Filetype,
  182. IFDOWNFJ,
  183. IFLOOKFJ,
  184. filesize,
  185. modelflag,
  186. ifmain)
  187. VALUES ( :arg_docid,
  188. :arg_annextype,
  189. :ls_newid,
  190. :arg_fjname,
  191. getdate(),
  192. :publ_operator,
  193. :arg_fjtype,
  194. :ARG_IFDOWNFJ,
  195. :ARG_IFLOOKFJ,
  196. :arg_filesize,
  197. :arg_modelflag,
  198. :arg_ifmain)
  199. Using ins_tran;
  200. IF ins_tran.SQLCode <> 0 THEN
  201. rslt = 0
  202. arg_msg = '因网络或其它原因保存附件失败>>'+ins_tran.SQLErrText
  203. GOTO ext
  204. ELSE
  205. COMMIT Using ins_tran;
  206. END IF
  207. UpdateBlob oa_doc_annex
  208. Set Fileblob = :arg_fjbody
  209. Where AnnexNO = :ls_newid Using ins_tran;
  210. IF ins_tran.SQLCode <> 0 THEN
  211. rslt = 0
  212. arg_msg = '因网络或其它原因保存附件失败>>'+ins_tran.SQLErrText
  213. GOTO ext
  214. END IF
  215. COMMIT Using ins_tran;
  216. ext:
  217. RETURN rslt
  218. end function
  219. on uo_oa_doc_fj_downsave.create
  220. call super::create
  221. TriggerEvent( this, "constructor" )
  222. end on
  223. on uo_oa_doc_fj_downsave.destroy
  224. TriggerEvent( this, "destructor" )
  225. call super::destroy
  226. end on