• LoggerAspect


    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;
        }
        
    }
  • 相关阅读:
    java 项目自我总结-01 开发环境的搭建
    sql server 导入c#dll
    java 开发自我总结- idea 如何打包spring boot
    如何快速创建多工作页 excel
    运维知识总结
    .net core
    ubuntu安装网易云音乐
    Java中(==)与equals的区别
    Linux压缩打包命令
    文件目录属性
  • 原文地址:https://www.cnblogs.com/zzzzw/p/9131675.html
Copyright © 2020-2023  润新知