uo_oa_fj_downsave.sru 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. $PBExportHeader$uo_oa_fj_downsave.sru
  2. forward
  3. global type uo_oa_fj_downsave from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_oa_fj_downsave from nonvisualobject
  7. end type
  8. global uo_oa_fj_downsave uo_oa_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_save_fj (long arg_docid, long arg_annextype, string arg_fjname, blob arg_fjbody, long arg_fjtype, long arg_ifdownfj, long arg_iflookfj, ref string arg_msg, boolean arg_ifcommit, decimal arg_filesize)
  15. end prototypes
  16. public function integer f_down_fj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg);Long rslt = 1,cnt
  17. Blob ls_filedata
  18. IF arg_fjid <= 0 THEN
  19. rslt = 0
  20. arg_msg = '下载附件失败(错误附件ID)'
  21. GOTO ext
  22. END IF
  23. IF arg_fjname = '' THEN
  24. rslt = 0
  25. arg_msg = '下载附件失败(错误附件名)'
  26. GOTO ext
  27. END IF
  28. //SELECT count(*)
  29. // INTO :cnt
  30. // FROM oa_doc_annex
  31. // WHERE (oa_doc_annex.AnnexNO = :arg_fjid) AND
  32. // (oa_doc_annex.Filename = :arg_fjname)
  33. // USING ins_tran;
  34. //IF ins_tran.SQLCode <> 0 THEN
  35. // rslt = 0
  36. // arg_msg = '查询附件信息失败>>'+ins_tran.SQLErrText
  37. // GOTO ext
  38. //END IF
  39. SELECTBLOB Fileblob
  40. INTO :ls_filedata
  41. FROM oa_doc_annex
  42. Where (oa_doc_annex.AnnexNO = :arg_fjid) AND
  43. (oa_doc_annex.Filename = :arg_fjname)
  44. USING ins_tran;
  45. IF ins_tran.SQLCode <> 0 THEN
  46. rslt = 0
  47. arg_msg = '下载附件失败>>'+ins_tran.SQLErrText
  48. GOTO ext
  49. END IF
  50. arg_fjdata = ls_filedata
  51. ext:
  52. RETURN rslt
  53. end function
  54. 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, ref string arg_msg, boolean arg_ifcommit, decimal arg_filesize);//保存附件
  55. Long rslt = 1
  56. Long ls_newid
  57. IF arg_docid <= 0 THEN
  58. rslt = 0
  59. arg_msg = '保存附件失败(公文ID)'
  60. GOTO ext
  61. END IF
  62. IF IsNull(arg_fjname) OR arg_fjname = '' THEN
  63. rslt = 0
  64. if IsNull(arg_fjname) then
  65. arg_msg = '保存附件失败(附件名) null'
  66. else
  67. arg_msg = '保存附件失败(附件名) 空'
  68. end if
  69. GOTO ext
  70. END IF
  71. ls_newid = f_sys_scidentity(0,"oa_doc_annex","AnnexNO",arg_msg,TRUE,id_sqlca)
  72. IF ls_newid <= 0 THEN
  73. rslt = 0
  74. GOTO ext
  75. END IF
  76. INSERT INTO oa_doc_annex
  77. ( docID,
  78. annextype,
  79. AnnexNO,
  80. Filename,
  81. Opdate,
  82. Opemp,
  83. Filetype,
  84. IFDOWNFJ,
  85. IFLOOKFJ,
  86. filesize)
  87. VALUES ( :arg_docid,
  88. :arg_annextype,
  89. :ls_newid,
  90. :arg_fjname,
  91. getdate(),
  92. :publ_operator,
  93. :arg_fjtype,
  94. :ARG_IFDOWNFJ,
  95. :ARG_IFLOOKFJ,
  96. :arg_filesize)
  97. USING ins_tran;
  98. IF ins_tran.SQLCode <> 0 THEN
  99. rslt = 0
  100. arg_msg = '因网络或其它原因保存附件失败>>'+ins_tran.SQLErrText
  101. GOTO ext
  102. ELSE
  103. COMMIT USING ins_tran;
  104. END IF
  105. UPDATEBLOB oa_doc_annex
  106. Set Fileblob = :arg_fjbody
  107. Where AnnexNO = :ls_newid 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. COMMIT USING ins_tran;
  114. ext:
  115. RETURN rslt
  116. end function
  117. on uo_oa_fj_downsave.create
  118. call super::create
  119. TriggerEvent( this, "constructor" )
  120. end on
  121. on uo_oa_fj_downsave.destroy
  122. TriggerEvent( this, "destructor" )
  123. call super::destroy
  124. end on