package nc.oss.utils;

import java.util.Date;

import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.server.ServerConfiguration;
import nc.md.model.MetaDataException;
import nc.md.persist.framework.MDPersistenceService;
import nc.oss.common.OSSConst;
import nc.vo.oss.log.AggLogVO;
import nc.vo.oss.log.LogDetailVO;
import nc.vo.oss.log.LogVO;
import nc.vo.pub.VOStatus;
import nc.vo.pub.lang.UFDateTime; import org.apache.commons.lang.StringUtils; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; /**
* 日志切面类
*
*
*/
public class LoggerAspect { /**
* 记录日志
* @param serviceName 调用服务接口名
* @param msgObj 服务返回日志
*/
public static void saveLogger(String serviceName, JSONObject msgObj) {
if (!StringUtils.isEmpty(serviceName) && msgObj != null) {
AggLogVO aggVO = new AggLogVO();
LogVO logVO = new LogVO();
aggVO.setParentVO(logVO);
UFDateTime creationtime = new UFDateTime(new Date());
JSONObject retMsgContent = msgObj.getJSONObject(OSSConst.RETURN_MSG);
String serverAddr = InvocationInfoProxy.getInstance().getCallServer();
serverAddr = ServerConfiguration.getServerConfiguration().getServerName(); logVO.setPk_service(serviceName);
logVO.setService_name(serviceName);
logVO.setServer_addr(serverAddr); // 服务器地址
logVO.setRun_status(msgObj.getIntValue(OSSConst.STATUS));
logVO.setLog_msg(retMsgContent.getString(OSSConst.MSG_SUMMARY)); // 消息摘要
logVO.setExt_system(msgObj.getString(OSSConst.EXT_SYSTEM)); // 外部系统
logVO.setBill_type(msgObj.getString(OSSConst.BILL_TYPE)); // 单据类型
logVO.setCreationtime(creationtime);
// 构造日志明细VO
aggVO.setChildrenVO(createLogDetails(serviceName, retMsgContent)); try {
logVO.setStatus(VOStatus.NEW);
MDPersistenceService.lookupPersistenceService().saveBill(aggVO);
} catch (MetaDataException e) {
e.printStackTrace();
}
}
} private static LogDetailVO[] createLogDetails(String serviceName, JSONObject msgContent) {
LogDetailVO[] detailVOs = null;
JSONArray msgDetails = msgContent.getJSONArray(OSSConst.MSG_CONTENT);
if (msgDetails != null && msgDetails.size()>0) {
int count = msgDetails.size();
detailVOs = new LogDetailVO[count];
for (int i=0; i<count; i++) {
LogDetailVO detailVO = new LogDetailVO();
JSONObject jsonMsgDetail = msgDetails.getJSONObject(i); detailVO.setPk_business(jsonMsgDetail.getString(OSSConst.BILL_PK)); // 单据PK
detailVO.setPk_business_ext(jsonMsgDetail.getString(OSSConst.SRC_BILL_PK)); // 来源单据PK
detailVO.setPk_service(serviceName);
detailVO.setRun_status(jsonMsgDetail.getIntValue(OSSConst.STATUS));
detailVO.setLog_msg(jsonMsgDetail.getString(OSSConst.MSG_DETAIL_DESC));
detailVO.setCreationtime(new UFDateTime(new Date()));
detailVO.setStatus(VOStatus.NEW);
detailVOs[i] = detailVO;
}
}
return detailVOs;
} }

最新文章

  1. 利用JSONP实现跨域请求
  2. Docker Hub仓库注册,使用
  3. 深入剖析 redis AOF 持久化策略
  4. HDU 3480 division
  5. SQL Server性能常用语句
  6. HAOI2007反素数
  7. iOS web与js的简单交互
  8. Linux下配置jdk1.7
  9. [codevs]失恋28天题目系列
  10. C# 想要程序文件移动 而数据保持相对位置
  11. Hadoop之——HBase注意事项
  12. MaterialWidgetLibrary 学习
  13. 02 Learning to Answer Yes/No
  14. python2/python3 内存中打包/压缩文件
  15. bzoj 4605: 崂山白花蛇草水
  16. contenOs7编码问题
  17. awk指定[]为分隔符
  18. C++ MFC棋牌类小游戏day6
  19. CSS形变与动画
  20. struts2的MVC模式

热门文章

  1. DBA操作常用命令
  2. zoj 2006 Glass Beads
  3. 计数排序Counting sort
  4. mvc BundleConfig实现对Css、Js压缩打包加载
  5. NGINX: 反向代理 Nexus
  6. quick 用系统浏览器打开url
  7. springboot:Spring boot中mongodb的使用(山东数漫江湖)
  8. ASP.NET 简单鼠标右键效果contextmenutrip
  9. 在AndroidStudio中导入开源库 或者jar
  10. Spring cloud 实战读书笔记