method-template.cls 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /// 方法定义模板
  2. /// 请根据实际业务需求修改以下内容:
  3. /// 1. 类名:使用正确的业务包名
  4. /// 2. 方法名:遵循{动词}{名词}格式
  5. /// 3. 参数:使用p前缀
  6. /// 4. 变量:使用t前缀
  7. /// 5. 必须包含try-catch错误处理
  8. /// 6. 数据操作使用src.util.operatetable
  9. Class src.SamplePackage.SampleClass Extends %RegisteredObject [ Not ProcedureBlock ]
  10. {
  11. /// 方法描述(简要说明方法功能)
  12. ///
  13. /// @param pParameter1 参数1说明
  14. /// @param pParameter2 参数2说明
  15. /// @return 返回值说明
  16. ClassMethod SampleMethod(pParameter1 As %String, pParameter2 As %Integer) As %String
  17. {
  18. new (pParameter1,pParameter2)
  19. Try {
  20. // 初始化返回值
  21. Set tResult = ""
  22. Set tSC = $$$OK
  23. // 参数验证
  24. If (pParameter1 = "") {
  25. return $System.Status.Error(5001, "参数1不能为空")
  26. }
  27. // 准备数据
  28. Set tData = ##class(%GlobalBinaryStream).%New()
  29. Set tData.Field1 = pParameter1
  30. Set tData.Field2 = pParameter2
  31. // 数据操作(示例:插入)
  32. Set tResult = ##class(src.util.operatetable).Insert("User.BSSample", tData)
  33. If (tResult = "") {
  34. Throw ##class(%Exception.SystemException).%New("插入数据失败")
  35. }
  36. // 返回成功结果
  37. return tResult
  38. } Catch {
  39. // 错误处理
  40. Return $System.Status.Error(5001, "方法执行失败: " _ $ze)
  41. }
  42. }
  43. /// 带事务的方法模板
  44. ///
  45. /// @param pOrderData 订单数据
  46. /// @return 订单ID
  47. ClassMethod SaveOrderWithTransaction(pOrderData As %GlobalBinaryStream) As %String
  48. {
  49. new (pOrderData)
  50. Try {
  51. // 开始事务
  52. TSTART
  53. // 插入订单主表
  54. Set tOrderDr = ##class(src.util.operatetable).Insert("User.BSOrder", pOrderData)
  55. If (tOrderDr = "") {
  56. Throw ##class(%Exception.SystemException).%New("保存订单失败")
  57. }
  58. // 插入订单明细
  59. Set tItemData = ##class(%GlobalBinaryStream).%New()
  60. Set tItemData.OrderDr = tOrderDr
  61. Set tItemDr = ##class(src.util.operatetable).Insert("User.BSOrderItem", tItemData)
  62. If (tItemDr = "") {
  63. Throw ##class(%Exception.SystemException).%New("保存订单明细失败")
  64. }
  65. // 提交事务
  66. TCOMMIT
  67. // 返回订单ID
  68. return tOrderDr
  69. } Catch {
  70. // 回滚事务
  71. TROLLBACK
  72. Return ""
  73. }
  74. }
  75. /// 查询方法模板
  76. ///
  77. /// @param pOrderId 订单ID
  78. /// @return 订单数据
  79. ClassMethod GetOrderInfo(pOrderId As %String) As %String
  80. {
  81. new (pOrderId)
  82. Try {
  83. Set tOrderInfo = ""
  84. // 参数验证
  85. If (pOrderId = "") {
  86. return $System.Status.Error(5001, "订单ID不能为空")
  87. }
  88. // 查询数据
  89. Set tOrderInfo = ##class(src.util.operatetable).GetRow("User.BSOrder", pOrderId)
  90. If (tOrderInfo = "") {
  91. return $System.Status.Error(5002, "订单不存在")
  92. }
  93. // 返回数据
  94. return tOrderInfo
  95. } Catch {
  96. Return $System.Status.Error(5001, "查询失败: " _ $ze)
  97. }
  98. }
  99. /// 更新方法模板
  100. ///
  101. /// @param pOrderId 订单ID
  102. /// @param pOrderData 订单数据
  103. /// @return 操作状态
  104. ClassMethod UpdateOrder(pOrderId As %String, pOrderData As %GlobalBinaryStream) As %Status
  105. {
  106. new (pOrderId, pOrderData)
  107. Try {
  108. // 参数验证
  109. If (pOrderId = "") {
  110. return $System.Status.Error(5001, "订单ID不能为空")
  111. }
  112. // 更新数据
  113. Set tSC = ##class(src.util.operatetable).Update("User.BSOrder", pOrderId, pOrderData)
  114. If $$$ISERR(tSC) {
  115. Throw ##class(%Exception.SystemException).%New("更新失败")
  116. }
  117. // 返回成功状态
  118. return $$$OK
  119. } Catch {
  120. Return $System.Status.Error(5001, "更新失败: " _ $ze)
  121. }
  122. }
  123. /// 删除方法模板(逻辑删除)
  124. ///
  125. /// @param pOrderId 订单ID
  126. /// @return 操作状态
  127. ClassMethod DeleteOrder(pOrderId As %String) As %Status
  128. {
  129. new (pOrderId)
  130. Try {
  131. // 参数验证
  132. If (pOrderId = "") {
  133. return $System.Status.Error(5001, "订单ID不能为空")
  134. }
  135. // 获取订单数据
  136. Set tOrder = ##class(src.util.operatetable).GetRow("User.BSOrder", pOrderId)
  137. If (tOrder = "") {
  138. return $System.Status.Error(5002, "订单不存在")
  139. }
  140. // 设置删除标记
  141. Set tOrder.Deleted = 1
  142. Set tOrder.DeleteTime = $zdatetime($horolog, 3)
  143. // 更新数据
  144. Set tSC = ##class(src.util.operatetable).Update("User.BSOrder", pOrderId, tOrder)
  145. If $$$ISERR(tSC) {
  146. Throw ##class(%Exception.SystemException).%New("删除失败")
  147. }
  148. // 返回成功状态
  149. return $$$OK
  150. } Catch {
  151. Return $System.Status.Error(5001, "删除失败: " _ $ze)
  152. }
  153. }
  154. /// 批量操作方法模板
  155. ///
  156. /// @param pDataList 数据列表
  157. /// @return 成功数量
  158. ClassMethod BatchSave(pDataList As %List) As %Integer
  159. {
  160. new (pDataList)
  161. Try {
  162. Set tSuccessCount = 0
  163. // 参数验证
  164. If ($ListLength(pDataList) = 0) {
  165. return 0
  166. }
  167. // 开始事务
  168. TSTART
  169. // 遍历数据列表
  170. For i = 1:1:$ListLength(pDataList) {
  171. Set tData = $ListGet(pDataList, i)
  172. Set tDr = ##class(src.util.operatetable).Insert("User.BSSample", tData)
  173. If (tDr '= "") {
  174. Set tSuccessCount = tSuccessCount + 1
  175. }
  176. }
  177. // 提交事务
  178. TCOMMIT
  179. // 返回成功数量
  180. return tSuccessCount
  181. } Catch {
  182. // 回滚事务
  183. TROLLBACK
  184. Return 0
  185. }
  186. }
  187. }