f_oa_update_html.srf 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. $PBExportHeader$f_oa_update_html.srf
  2. global type f_oa_update_html from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_oa_update_html (long ll_powerid, long ll_scid, long ll_taskid, long ll_billtype, string ls_html, ref string arg_msg, boolean if_commit)
  6. end prototypes
  7. global function integer f_oa_update_html (long ll_powerid, long ll_scid, long ll_taskid, long ll_billtype, string ls_html, ref string arg_msg, boolean if_commit);Int rslt = 1
  8. Long ll_docid
  9. SELECT top 1 docid
  10. INTO :ll_docid
  11. FROM oa_doc
  12. WHERE dtype = 1
  13. AND powerid = :ll_powerid
  14. AND scid = :ll_scid
  15. And BILLID = :ll_taskid
  16. ORDER BY docid desc;
  17. IF sqlca.SQLCode <> 0 THEN
  18. rslt = 0
  19. arg_msg = '查询订单对应公文失败,' + sqlca.SQLErrText
  20. GOTO ext
  21. END IF
  22. Long arr_fileid[], ll_fileid
  23. String arr_filename[], ls_filename
  24. Long i = 0
  25. IF sys_filedb_sqlca.DBHandle() > 0 THEN
  26. DECLARE cur1 CURSOR FOR
  27. SELECT FileID, FileName
  28. FROM u_File
  29. WHERE billtype = :ll_billtype
  30. AND relid = :ll_taskid
  31. AND scid = :ll_scid
  32. Order By FileName
  33. Using sys_filedb_sqlca;
  34. OPEN cur1;
  35. FETCH cur1 Into :ll_fileid, :ls_filename;
  36. DO WHILE sys_filedb_sqlca.SQLCode = 0
  37. i++
  38. arr_fileid[i] = ll_fileid
  39. arr_filename[i] = ls_filename
  40. FETCH cur1 Into :ll_fileid, :ls_filename;
  41. LOOP
  42. CLOSE cur1;
  43. END IF
  44. DELETE From oa_doc_bill_fj Where docid = :ll_docid;
  45. IF sqlca.SQLCode <> 0 THEN
  46. rslt = 0
  47. arg_msg = '删除旧的公文附件连接失败,' + sqlca.SQLErrText
  48. GOTO ext
  49. END IF
  50. FOR i = 1 To UpperBound(arr_fileid)
  51. INSERT INTO oa_doc_bill_fj(docid, printid, fileid, filename)
  52. Values(:ll_docid, :i, :arr_fileid[i], :arr_filename[i]);
  53. IF sqlca.SQLCode <> 0 THEN
  54. rslt = 0
  55. arg_msg = '插入公文附件连接失败,' + sqlca.SQLErrText
  56. GOTO ext
  57. END IF
  58. NEXT
  59. // DONE: 更新html
  60. Blob lb_html
  61. lb_html = Blob(ls_html)
  62. UpdateBlob oa_doc
  63. Set HTML = :lb_html
  64. Where docid = :ll_docid;
  65. IF sqlca.SQLCode <> 0 THEN
  66. rslt = 0
  67. arg_msg = '更新公文HTML失败,' + sqlca.SQLErrText
  68. GOTO ext
  69. END IF
  70. ext:
  71. IF rslt = 1 and if_commit THEN
  72. COMMIT;
  73. ELSE
  74. ROLLBACK;
  75. END IF
  76. RETURN rslt
  77. end function