/// 事前事中分析违规日志服务类 /// 提供宽表 BS_PreInProcess_ViolationLog 的插入/更新方法 /// 对应 C# 端 serviceCode: 09010100(插入) / 09010101(更新) Class User.BSPreInProcessViolLogService Extends %RegisteredObject { /// Creator: CodeBuddy /// CreatDate: 2026-04-26 /// Description: 新增/修改违规记录(09010100) /// 通过 JrID 判断:不存在则插入,存在则更新 /// Input: param.LogData=宽表字段对象, param.InterfaceDr=接口Dr, param.UpdateUserID=操作员ID /// Output: {errorCode, errorMessage} ClassMethod InsertLog(param) As %Library.DynamicAbstractObject { new (param) set resultObj = {} set resultObj.errorCode = 0 set resultObj.errorMessage = "" set PreMsg = "" try { set logData = param.LogData set updateUserID = param.UpdateUserID set HospitalDr = param.HospitalDr set InterfaceDr = param.InterfaceDr ; 必填校验 if (logData.JrID = "") { set resultObj.errorCode = "-1" set resultObj.errorMessage = "JrID不能为空" quit resultObj } ; 合并 InterfaceDr(C#端单独传入,需合并到数据对象) if (logData.InterfaceDr = "") { set logData.InterfaceDr = InterfaceDr } set PreMsg = "违规标识("_logData.JrID_")的记录提示:" ; 根据 JrID 判断是否存在 set count = 0 set rowID = "" &sql(select count(*),ID into :count,:rowID from BS_PreInProcess_ViolationLog where JrID = :logData.JrID and Deleted = 0) set logData.ID = rowID ; 构建操作对象 set insObj = {} set data = [] set insObj.className = "User.BSPreInProcessViolLog" set insObj.updateUserID = updateUserID do data.%Push(logData) set insObj.data = data if (count = 1) { ; 已存在则更新 set rtn = ##class(src.util.operatetable).Update(.insObj) set errorCode = rtn.errorCode set errorMessage = PreMsg_"更新结果为"_rtn.errorMessage_";" if (errorCode '= 0) { set resultObj.errorCode = errorCode set resultObj.errorMessage = errorMessage } } elseif (count = 0) { ; 不存在则插入 set rtn = ##class(src.util.operatetable).Insert(.insObj) set errorCode = rtn.errorCode set errorMessage = PreMsg_"插入结果为"_rtn.errorMessage_";" if (errorCode '= 0) { set resultObj.errorCode = errorCode set resultObj.errorMessage = errorMessage } } else { ; 同一 JrID 存在多条记录,数据异常 set resultObj.errorCode = "-100" set resultObj.errorMessage = PreMsg_"数据存在"_count_"条记录,请检查!" } } catch(e) { set status = e.AsStatus() set resultObj.errorCode = $piece(##class(%SYSTEM.Status).GetErrorCodes(status),",") set resultObj.errorMessage = ##class(%SYSTEM.Status).GetErrorText(status,"cn") } quit resultObj } /// Creator: CodeBuddy /// CreatDate: 2026-04-26 /// Description: 更新反馈记录(09010101) /// Input: param.FeedbackLog=反馈字段对象(WarnRsltID/DspoWay/DspoWayRea等), param.UpdateUserID=操作员ID /// Output: {errorCode, errorMessage} /// Note: WarnRsltID 与宽表 JrID 为同一值 ClassMethod UpdateFeedback(param) As %Library.DynamicAbstractObject { new (param) set resultObj = {} set resultObj.errorCode = 0 set resultObj.errorMessage = "" try { set feedbackLog = param.FeedbackLog set updateUserID = param.UpdateUserID set warnRsltID = feedbackLog.WarnRsltID if (warnRsltID = "") { set resultObj.errorCode = "-1" set resultObj.errorMessage = "WarnRsltID不能为空" quit resultObj } ; 根据 WarnRsltID(JrID) 定位记录 set rowID = "" &sql(select ID into :rowID from BS_PreInProcess_ViolationLog where JrID = :warnRsltID and Deleted = 0) if (rowID = "") { set resultObj.errorCode = "-1" set resultObj.errorMessage = "未找到对应违规记录,JrID="_warnRsltID quit resultObj } ; 构建更新对象 set insObj = {} set data = [] set insObj.className = "User.BSPreInProcessViolLog" set insObj.updateUserID = updateUserID set feedbackLog.ID = rowID do data.%Push(feedbackLog) set insObj.data = data set rtn = ##class(src.util.operatetable).Update(.insObj) set resultObj.errorCode = rtn.errorCode set resultObj.errorMessage = rtn.errorMessage } catch(e) { set status = e.AsStatus() set resultObj.errorCode = $piece(##class(%SYSTEM.Status).GetErrorCodes(status),",") set resultObj.errorMessage = ##class(%SYSTEM.Status).GetErrorText(status,"cn") } quit resultObj } }