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; } }