DEP创建的单据如何写入上机日志原创
金蝶云社区-Hadwin
Hadwin
10人赞赏了该文章 289次浏览 未经作者许可,禁止转载编辑于2023年02月20日 14:18:43

需求场景:

dep创建的单据,在前台删除单据后,由于上机日志没有记录,不清楚是谁做了删除操作,需要写入上机日志中


实现原理:

查看上机日志的实现原理文档如附件所示可知,核心原理是在执行对应业务操作时先开启上机日志,调用

com.kingdee.eas.base.log.LogUtil

public static IObjectPK beginLog(Context ctx, String methodName, BOSObjectType bizObjType, IObjectPK instancePK, String instanceDeatil, String logItemName) 方法先写入一条失败记录,操作完对应业务后调用

com.kingdee.eas.base.log.LogUtilpublic static void afterLog(Context ctx, IObjectPK logPK) 方法更新状态


实现方式:

实体-扩展定义

image.png


找到对应方法编写脚本

image.png


image.png

参考脚本

前置脚本:

//开启上机日志 

var ctx = pluginCtx.getContext();

 //获取当前登录用户 

var userName = com.kingdee.eas.util.app.ContextUtil.getCurrentUserInfo(ctx).toString(); 

//获取上下文

 var appLog = com.kingdee.eas.base.log.AppLogFactory.getLocalInstance(ctx); 

//定义参数 

var methodName = "delete"; 

var bizObjType = com.kingdee.bos.util.BOSObjectType.create("0E1C26E5"); //instancePK 可以为空 

var instancePK = null; var instanceDetail = userName +"再删除单据"; 

//调用日志 

var logpk = appLog.writeLog(methodName, bizObjType, instancePK, instanceDetail); 

//存入上下文

pluginCtx.getContext().put("logpk",logpk);


后置脚本

//获取key 

var ctx = pluginCtx.getContext(); 

var logpk = pluginCtx.getContext().get("logpk"); 

//获取上下文 

var appLog = com.kingdee.eas.base.log.AppLogFactory.getLocalInstance(ctx); 

if(logpk != null){ 

 appLog.upateLogStatus(logpk);

 }


实现效果

image.png

赞 10