BS_PreInProcessViolLogService.cls 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /// 事前事中分析违规日志服务类
  2. /// 提供宽表 BS_PreInProcess_ViolationLog 的插入/更新方法
  3. /// 对应 C# 端 serviceCode: 09010100(插入) / 09010101(更新)
  4. Class User.BSPreInProcessViolLogService Extends %RegisteredObject
  5. {
  6. /// Creator: CodeBuddy
  7. /// CreatDate: 2026-04-26
  8. /// Description: 新增/修改违规记录(09010100)
  9. /// 通过 JrID 判断:不存在则插入,存在则更新
  10. /// Input: param.LogData=宽表字段对象, param.InterfaceDr=接口Dr, param.UpdateUserID=操作员ID
  11. /// Output: {errorCode, errorMessage}
  12. ClassMethod InsertLog(param) As %Library.DynamicAbstractObject
  13. {
  14. new (param)
  15. set resultObj = {}
  16. set resultObj.errorCode = 0
  17. set resultObj.errorMessage = ""
  18. set PreMsg = ""
  19. try {
  20. set logData = param.LogData
  21. set updateUserID = param.UpdateUserID
  22. set HospitalDr = param.HospitalDr
  23. set InterfaceDr = param.InterfaceDr
  24. ; 必填校验
  25. if (logData.JrID = "")
  26. {
  27. set resultObj.errorCode = "-1"
  28. set resultObj.errorMessage = "JrID不能为空"
  29. quit resultObj
  30. }
  31. ; 合并 InterfaceDr(C#端单独传入,需合并到数据对象)
  32. if (logData.InterfaceDr = "")
  33. {
  34. set logData.InterfaceDr = InterfaceDr
  35. }
  36. set PreMsg = "违规标识("_logData.JrID_")的记录提示:"
  37. ; 根据 JrID 判断是否存在
  38. set count = 0
  39. set rowID = ""
  40. &sql(select count(*),ID into :count,:rowID from BS_PreInProcess_ViolationLog where JrID = :logData.JrID and Deleted = 0)
  41. set logData.ID = rowID
  42. ; 构建操作对象
  43. set insObj = {}
  44. set data = []
  45. set insObj.className = "User.BSPreInProcessViolLog"
  46. set insObj.updateUserID = updateUserID
  47. do data.%Push(logData)
  48. set insObj.data = data
  49. if (count = 1)
  50. {
  51. ; 已存在则更新
  52. set rtn = ##class(src.util.operatetable).Update(.insObj)
  53. set errorCode = rtn.errorCode
  54. set errorMessage = PreMsg_"更新结果为"_rtn.errorMessage_";"
  55. if (errorCode '= 0)
  56. {
  57. set resultObj.errorCode = errorCode
  58. set resultObj.errorMessage = errorMessage
  59. }
  60. }
  61. elseif (count = 0)
  62. {
  63. ; 不存在则插入
  64. set rtn = ##class(src.util.operatetable).Insert(.insObj)
  65. set errorCode = rtn.errorCode
  66. set errorMessage = PreMsg_"插入结果为"_rtn.errorMessage_";"
  67. if (errorCode '= 0)
  68. {
  69. set resultObj.errorCode = errorCode
  70. set resultObj.errorMessage = errorMessage
  71. }
  72. }
  73. else
  74. {
  75. ; 同一 JrID 存在多条记录,数据异常
  76. set resultObj.errorCode = "-100"
  77. set resultObj.errorMessage = PreMsg_"数据存在"_count_"条记录,请检查!"
  78. }
  79. }
  80. catch(e)
  81. {
  82. set status = e.AsStatus()
  83. set resultObj.errorCode = $piece(##class(%SYSTEM.Status).GetErrorCodes(status),",")
  84. set resultObj.errorMessage = ##class(%SYSTEM.Status).GetErrorText(status,"cn")
  85. }
  86. quit resultObj
  87. }
  88. /// Creator: CodeBuddy
  89. /// CreatDate: 2026-04-26
  90. /// Description: 更新反馈记录(09010101)
  91. /// Input: param.FeedbackLog=反馈字段对象(WarnRsltID/DspoWay/DspoWayRea等), param.UpdateUserID=操作员ID
  92. /// Output: {errorCode, errorMessage}
  93. /// Note: WarnRsltID 与宽表 JrID 为同一值
  94. ClassMethod UpdateFeedback(param) As %Library.DynamicAbstractObject
  95. {
  96. new (param)
  97. set resultObj = {}
  98. set resultObj.errorCode = 0
  99. set resultObj.errorMessage = ""
  100. try {
  101. set feedbackLog = param.FeedbackLog
  102. set updateUserID = param.UpdateUserID
  103. set warnRsltID = feedbackLog.WarnRsltID
  104. if (warnRsltID = "")
  105. {
  106. set resultObj.errorCode = "-1"
  107. set resultObj.errorMessage = "WarnRsltID不能为空"
  108. quit resultObj
  109. }
  110. ; 根据 WarnRsltID(JrID) 定位记录
  111. set rowID = ""
  112. &sql(select ID into :rowID from BS_PreInProcess_ViolationLog where JrID = :warnRsltID and Deleted = 0)
  113. if (rowID = "")
  114. {
  115. set resultObj.errorCode = "-1"
  116. set resultObj.errorMessage = "未找到对应违规记录,JrID="_warnRsltID
  117. quit resultObj
  118. }
  119. ; 构建更新对象
  120. set insObj = {}
  121. set data = []
  122. set insObj.className = "User.BSPreInProcessViolLog"
  123. set insObj.updateUserID = updateUserID
  124. set feedbackLog.ID = rowID
  125. do data.%Push(feedbackLog)
  126. set insObj.data = data
  127. set rtn = ##class(src.util.operatetable).Update(.insObj)
  128. set resultObj.errorCode = rtn.errorCode
  129. set resultObj.errorMessage = rtn.errorMessage
  130. }
  131. catch(e)
  132. {
  133. set status = e.AsStatus()
  134. set resultObj.errorCode = $piece(##class(%SYSTEM.Status).GetErrorCodes(status),",")
  135. set resultObj.errorMessage = ##class(%SYSTEM.Status).GetErrorText(status,"cn")
  136. }
  137. quit resultObj
  138. }
  139. }