Browse Source

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@669 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

administrator 11 years ago
parent
commit
65c268b4cb
27 changed files with 629 additions and 132 deletions
  1. 15 4
      src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java
  2. 11 0
      src/main/java/com/uas/platform/b2b/controller/SaleNoticeController.java
  3. 10 2
      src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java
  4. 17 4
      src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java
  5. 17 0
      src/main/java/com/uas/platform/b2b/core/ApplicationContextRegister.java
  6. 0 97
      src/main/java/com/uas/platform/b2b/core/BaseUtil.java
  7. 55 0
      src/main/java/com/uas/platform/b2b/core/ContextUtils.java
  8. 71 0
      src/main/java/com/uas/platform/b2b/core/PathUtils.java
  9. 11 0
      src/main/java/com/uas/platform/b2b/dao/UsageLogDao.java
  10. 3 2
      src/main/java/com/uas/platform/b2b/erp/support/ErpBufferedLogger.java
  11. 16 0
      src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java
  12. 9 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderChange.java
  13. 10 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderReply.java
  14. 17 1
      src/main/java/com/uas/platform/b2b/model/SaleSend.java
  15. 209 0
      src/main/java/com/uas/platform/b2b/model/UsageLog.java
  16. 2 2
      src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java
  17. 1 1
      src/main/java/com/uas/platform/b2b/service/PurchaseOrderChangeService.java
  18. 2 2
      src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java
  19. 8 0
      src/main/java/com/uas/platform/b2b/service/UsageLogService.java
  20. 2 2
      src/main/java/com/uas/platform/b2b/service/impl/AttachServiceImpl.java
  21. 4 4
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java
  22. 5 4
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderChangeServiceImpl.java
  23. 10 7
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java
  24. 26 0
      src/main/java/com/uas/platform/b2b/service/impl/UsageLogServiceImpl.java
  25. 65 0
      src/main/java/com/uas/platform/b2b/support/UsageBufferedLogger.java
  26. 31 0
      src/main/java/com/uas/platform/b2b/support/UsageLogTask.java
  27. 2 0
      src/main/resources/spring/context.xml

+ 15 - 4
src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java

@@ -17,6 +17,8 @@ import com.uas.platform.b2b.model.PurchaseInquiry;
 import com.uas.platform.b2b.model.PurchaseInquiryItem;
 import com.uas.platform.b2b.service.PurchaseInquiryService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
@@ -36,6 +38,8 @@ public class SaleInquiryController {
 	@Autowired
 	private PurchaseInquiryService purchaseInquiryService;
 
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
 	/**
 	 * 作为卖家,收到的采购询价(全部)
 	 * 
@@ -45,6 +49,7 @@ public class SaleInquiryController {
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseInquiryItem> getReceivedPurchaseInquiries(PageParams params) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(全部)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -60,6 +65,7 @@ public class SaleInquiryController {
 	@RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseInquiryItem> getTodoInquiries(PageParams params) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(待回复)");
 		PageInfo info = new PageInfo(params);
 		// 询价单状态为未回复
 		info.filter("status", Status.NOT_REPLY.value());
@@ -67,7 +73,7 @@ public class SaleInquiryController {
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
 		return purchaseInquiryService.findAllByPageInfo(info);
 	}
-	
+
 	/**
 	 * 作为卖家,收到的采购询价(已回复)
 	 * 
@@ -77,6 +83,7 @@ public class SaleInquiryController {
 	@RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseInquiryItem> getDoneInquiries(PageParams params) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已回复)");
 		PageInfo info = new PageInfo(params);
 		// 询价单状态为已回复
 		info.filter("status", Status.REPLIED.value());
@@ -92,7 +99,9 @@ public class SaleInquiryController {
 	@RequestMapping(value = "/items/{inquiryItemId}", method = RequestMethod.GET)
 	@ResponseBody
 	public PurchaseInquiryItem getInquiryItemById(@PathVariable("inquiryItemId") Long inquiryItemId) {
-		return purchaseInquiryService.findItemByItemId(inquiryItemId);
+		PurchaseInquiryItem item = purchaseInquiryService.findItemByItemId(inquiryItemId);
+		logger.log("客户询价单", "查看收到的客户询价单", null, item.getInquiry().getCode(), inquiryItemId);
+		return item;
 	}
 
 	/**
@@ -117,7 +126,8 @@ public class SaleInquiryController {
 	@RequestMapping(value = "/items/{inquiryItemId}/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyInquiryItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId) {
 		PurchaseInquiryItem item = FlexJsonUtils.fromJson(json, PurchaseInquiryItem.class);
-		purchaseInquiryService.reply(item);
+		item = purchaseInquiryService.reply(item);
+		logger.log("客户询价单", "给单个客户询价明细填写价格并确认报价", item.replyDescription(), item.getInquiry().getCode(), inquiryItemId);
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 
@@ -131,7 +141,8 @@ public class SaleInquiryController {
 	@RequestMapping(value = "/items/{inquiryItemId}", method = RequestMethod.POST)
 	public ResponseEntity<String> saveInquiryItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId) {
 		PurchaseInquiryItem item = FlexJsonUtils.fromJson(json, PurchaseInquiryItem.class);
-		purchaseInquiryService.save(item);
+		item = purchaseInquiryService.save(item);
+		logger.log("客户询价单", "给单个客户询价明细填写价格", item.replyDescription(), item.getInquiry().getCode(), inquiryItemId);
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 

+ 11 - 0
src/main/java/com/uas/platform/b2b/controller/SaleNoticeController.java

@@ -18,6 +18,8 @@ import com.uas.platform.b2b.model.SaleSend;
 import com.uas.platform.b2b.model.SaleSendItem;
 import com.uas.platform.b2b.service.PurchaseNoticeService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
@@ -37,6 +39,8 @@ public class SaleNoticeController {
 
 	@Autowired
 	private PurchaseNoticeService purchaseNoticeService;
+	
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	/**
 	 * 作为卖家,收到的送货提醒
@@ -47,6 +51,7 @@ public class SaleNoticeController {
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseNotice> getReceivedPurchaseNotices(PageParams params) {
+		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(全部)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -62,6 +67,7 @@ public class SaleNoticeController {
 	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
 	@ResponseBody
 	public PurchaseNotice getReceivedPurchaseNoticeById(@PathVariable("id") Long id) {
+		logger.log("客户送货提醒", "查看单个客户送货提醒", null, null, id);
 		return purchaseNoticeService.findById(id);
 	}
 
@@ -74,6 +80,7 @@ public class SaleNoticeController {
 	@RequestMapping(value = "/{id}/sendItems", method = RequestMethod.GET)
 	@ResponseBody
 	public List<SaleSendItem> getSendItemsNoticeById(@PathVariable("id") Long id) {
+		logger.log("客户送货提醒", "查看单个客户送货提醒的发货记录", null, null, id);
 		return purchaseNoticeService.findSendById(id);
 	}
 
@@ -86,6 +93,7 @@ public class SaleNoticeController {
 	@RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseNotice> getTodoPurchaseNotices(PageParams params) {
+		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(待发货)");
 		PageInfo info = new PageInfo(params);
 		// 询价单状态为未回复
 		info.filter("status", Status.NOT_REPLY.value());
@@ -103,6 +111,7 @@ public class SaleNoticeController {
 	@RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseNotice> getDonePurchaseNotices(PageParams params) {
+		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(已发货)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -118,6 +127,7 @@ public class SaleNoticeController {
 	@RequestMapping(params = RequestState.END, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseNotice> getEndPurchaseNotices(PageParams params) {
+		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(已结案)");
 		PageInfo info = new PageInfo(params);
 		// 询价单状态为已结案
 		info.filter("end", (short) Constant.YES);
@@ -137,6 +147,7 @@ public class SaleNoticeController {
 	public ResponseEntity<String> send(@PathVariable("noticeId") Long noticeId, @RequestBody String json) {
 		SaleSend send = FlexJsonUtils.fromJson(json, SaleSend.class);
 		purchaseNoticeService.send(noticeId, send);
+		logger.log("客户送货提醒", "给单个客户送货提醒填写数量并确认发货", send.sendDescription(), null, noticeId);
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 

+ 10 - 2
src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java

@@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import com.uas.platform.b2b.model.PurchaseOrderChange;
 import com.uas.platform.b2b.service.PurchaseOrderChangeService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
@@ -33,6 +35,8 @@ public class SaleOrderChangeController {
 	@Autowired
 	private PurchaseOrderChangeService purchaseOrderChangeService;
 
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
 	/**
 	 * 作为卖家,收到的采购变更单(全部)
 	 * 
@@ -42,6 +46,7 @@ public class SaleOrderChangeController {
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderChange> getReceivedPurchaseOrderChanges(PageParams params) {
+		logger.log("客户采购变更单", "查看收到的客户采购变更单列表(全部)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("order.vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -57,6 +62,7 @@ public class SaleOrderChangeController {
 	@RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderChange> getTodoPurchaseOrderChanges(PageParams params) {
+		logger.log("客户采购变更单", "查看收到的客户采购变更单列表(待处理)");
 		PageInfo info = new PageInfo(params);
 		// 变更单状态为未回复
 		info.filter("status", Status.NOT_REPLY.value());
@@ -64,7 +70,7 @@ public class SaleOrderChangeController {
 		info.filter("order.vendUU", SystemSession.getUser().getEnterprise().getUu());
 		return purchaseOrderChangeService.findAllByPageInfo(info);
 	}
-	
+
 	/**
 	 * 作为卖家,收到的采购变更单(已处理)
 	 * 
@@ -74,6 +80,7 @@ public class SaleOrderChangeController {
 	@RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderChange> getDonePurchaseOrderChanges(PageParams params) {
+		logger.log("客户采购变更单", "查看收到的客户采购变更单列表(已处理)");
 		PageInfo info = new PageInfo(params);
 		// 变更单状态为已回复
 		info.filter("status", Status.REPLIED.value());
@@ -104,7 +111,8 @@ public class SaleOrderChangeController {
 	@RequestMapping(value = "/{changeId}/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyOrderItem(@RequestBody String json, @PathVariable("changeId") Long changeId) {
 		PurchaseOrderChange change = FlexJsonUtils.fromJson(json, PurchaseOrderChange.class);
-		purchaseOrderChangeService.reply(change);
+		change = purchaseOrderChangeService.reply(change);
+		logger.log("客户采购变更单", "给单个客户采购变更单填写回复信息并确认回复", change.replyDescription(), change.getCode(), changeId);
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 

+ 17 - 4
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -22,6 +22,8 @@ import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderTodo;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
@@ -40,6 +42,8 @@ public class SaleOrderController {
 	@Autowired
 	private PurchaseOrderService purchaseOrderService;
 
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
 	/**
 	 * 作为卖家,收到的采购订单
 	 * 
@@ -49,6 +53,7 @@ public class SaleOrderController {
 	@RequestMapping(method = RequestMethod.POST)
 	@ResponseBody
 	public Page<PurchaseOrder> getReceivedPurchaseOrders(@RequestBody String json) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表");
 		PageInfo info = new PageInfo(json);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -76,6 +81,7 @@ public class SaleOrderController {
 	@RequestMapping(value = "/items", method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderAll> getReceivedPurchaseOrderItems(PageParams params) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(全部)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -91,12 +97,13 @@ public class SaleOrderController {
 	@RequestMapping(value = "/items", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderTodo> getTodoPurchaseOrderItems(PageParams params) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待回复)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
 		return purchaseOrderService.findTodoByPageInfo(info);
 	}
-	
+
 	/**
 	 * 作为卖家,收到的采购订单(含明细)(已回复)
 	 * 
@@ -106,6 +113,7 @@ public class SaleOrderController {
 	@RequestMapping(value = "/items", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderDone> getDonePurchaseOrderItems(PageParams params) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(已回复)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -113,7 +121,7 @@ public class SaleOrderController {
 	}
 
 	/**
-	 * 作为卖家,收到的采购订单(含明细)(已回复)
+	 * 作为卖家,收到的采购订单(含明细)(已结案)
 	 * 
 	 * @param params
 	 * @return
@@ -121,6 +129,7 @@ public class SaleOrderController {
 	@RequestMapping(value = "/items", params = RequestState.END, method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderEnd> getEndPurchaseOrderItems(PageParams params) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(已结案)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -140,7 +149,8 @@ public class SaleOrderController {
 		PurchaseOrderItem orderItem = new PurchaseOrderItem();
 		orderItem.setId(orderItemId);
 		reply.setOrderItem(orderItem);
-		purchaseOrderService.reply(reply);
+		reply = purchaseOrderService.reply(reply);
+		logger.log("客户采购单", "单个回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(), orderItemId);
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 
@@ -165,7 +175,10 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyOrderItems(@RequestBody String idString) {
-		purchaseOrderService.reply(idString.split(","));
+		List<PurchaseOrderReply> replies = purchaseOrderService.reply(idString.split(","));
+		for (PurchaseOrderReply reply : replies)
+			logger.log("客户采购单", "批量回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(), reply.getOrderItem()
+					.getId());
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 }

+ 17 - 0
src/main/java/com/uas/platform/b2b/core/ApplicationContextRegister.java

@@ -0,0 +1,17 @@
+package com.uas.platform.b2b.core;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+public class ApplicationContextRegister implements ApplicationContextAware {
+
+	private static Logger logger = Logger.getLogger(ApplicationContextRegister.class);
+
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		ContextUtils.setApplicationContext(applicationContext);
+		logger.debug("ApplicationContext registed");
+	}
+	
+}

+ 0 - 97
src/main/java/com/uas/platform/b2b/core/BaseUtil.java

@@ -1,97 +0,0 @@
-package com.uas.platform.b2b.core;
-
-import java.io.File;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.Random;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-@Component
-public class BaseUtil implements ApplicationContextAware {
-	private static ApplicationContext context;
-
-	// 目录结构: -SYSPATH(saas)
-	// -PATH(WEB-INF)
-	// -FILEPATH(自定义附件目录)
-	// 系统class加载路径 WEB-INF目录
-	public static String PATH;
-	// 系统目录,saas
-	public static String SYSPATH;
-	// 系统的附件的路径,默认与项目同级
-	public static String FILEPATH;
-
-	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-		context = applicationContext;
-		setPath();
-		setSysPath();
-		setFilePath();
-	}
-
-	/**
-	 * 获取bean
-	 * 
-	 * @param cls
-	 * @return
-	 */
-	public static <T> T getBean(Class<T> cls) {
-		return context.getBean(cls);
-	}
-
-	@SuppressWarnings({ "rawtypes", "static-access" })
-	public static void setPath() {
-		Class classes = context.getClass();
-		String strRealPath = classes.getClassLoader().getResource("").getFile();
-		try {
-			strRealPath = URLDecoder.decode(strRealPath, "UTF-8");
-		} catch (UnsupportedEncodingException e) {
-			e.printStackTrace();
-		}
-		File file = new File(strRealPath);
-		BaseUtil.PATH = file.getParent() + file.separator;
-		if (BaseUtil.PATH.contains("/")) {
-			BaseUtil.PATH = "/" + BaseUtil.PATH;
-		}
-	};
-
-	@SuppressWarnings("static-access")
-	public static void setSysPath() {
-		if (BaseUtil.PATH != null) {
-			File file = new File(BaseUtil.PATH);
-			BaseUtil.SYSPATH = file.getParent() + file.separator;
-		}
-	}
-
-	@SuppressWarnings("static-access")
-	public static void setFilePath() {
-		if (BaseUtil.SYSPATH != null) {
-			File file = new File(BaseUtil.SYSPATH);
-			BaseUtil.FILEPATH = file.getParent() + file.separator;
-		}
-	}
-
-	/**
-	 * 获得随机长度的字符串
-	 * */
-	public static String randomString(int length) {
-		Random randGen = null;
-		char[] numbersAndLetters = null;
-		if (length < 1) {
-			return null;
-		}
-		if (randGen == null) {
-			randGen = new Random();
-			numbersAndLetters = ("0123456789abcdefghijklmnopqrstuvwxyz" + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
-			// numbersAndLetters =
-			// ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
-		}
-		char[] randBuffer = new char[length];
-		for (int i = 0; i < randBuffer.length; i++) {
-			randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];
-		}
-		return new String(randBuffer);
-	}
-}

+ 55 - 0
src/main/java/com/uas/platform/b2b/core/ContextUtils.java

@@ -0,0 +1,55 @@
+package com.uas.platform.b2b.core;
+
+import org.apache.log4j.Logger;
+import org.springframework.context.ApplicationContext;
+
+public class ContextUtils {
+	private static ApplicationContext applicationContext;
+
+	private static Logger logger = Logger.getLogger(ContextUtils.class);
+
+	public static void setApplicationContext(ApplicationContext applicationContext) {
+		synchronized (ContextUtils.class) {
+			logger.debug("setApplicationContext, notifyAll");
+			ContextUtils.applicationContext = applicationContext;
+			ContextUtils.class.notifyAll();
+		}
+	}
+
+	public static ApplicationContext getApplicationContext() {
+		synchronized (ContextUtils.class) {
+			while (applicationContext == null) {
+				try {
+					logger.debug("getApplicationContext, wait...");
+					ContextUtils.class.wait(60000);
+					if (applicationContext == null) {
+						logger.warn("Have been waiting for ApplicationContext to be set for 1 minute", new Exception());
+					}
+				} catch (InterruptedException ex) {
+					logger.debug("getApplicationContext, wait interrupted");
+				}
+			}
+			return applicationContext;
+		}
+	}
+
+	/**
+	 * 获取bean
+	 * 
+	 * @param name
+	 * @return
+	 */
+	public static Object getBean(String name) {
+		return getApplicationContext().getBean(name);
+	}
+
+	/**
+	 * 获取bean
+	 * 
+	 * @param cls
+	 * @return
+	 */
+	public static <T> T getBean(Class<T> cls) {
+		return getApplicationContext().getBean(cls);
+	}
+}

+ 71 - 0
src/main/java/com/uas/platform/b2b/core/PathUtils.java

@@ -0,0 +1,71 @@
+package com.uas.platform.b2b.core;
+
+import java.io.File;
+
+/**
+ * 路径
+ * 
+ * @author yingp
+ *
+ */
+public class PathUtils {
+
+	private static String classPath;
+
+	private static String appPath;
+
+	private static String filePath;
+
+	/**
+	 * classes文件目录
+	 * 
+	 * @return
+	 */
+	public static String getClassPath() {
+		if (classPath == null)
+			setClassPath();
+		return classPath;
+	}
+
+	/**
+	 * 应用程序目录
+	 * 
+	 * @return
+	 */
+	public static String getAppPath() {
+		if (appPath == null)
+			setAppPath();
+		return appPath;
+	}
+
+	/**
+	 * 日志、附件文件等存放目录,与程序同级
+	 * 
+	 * @return
+	 */
+	public static String getFilePath() {
+		if (filePath == null)
+			setFilePath();
+		return filePath;
+	}
+
+	private static void setClassPath() {
+		Class<PathUtils> cls = PathUtils.class;
+		int len = cls.getName().split("\\.").length - 1;
+		File file = new File(cls.getResource("").getPath());
+		for (int i = 0; i < len; i++) {
+			file = file.getParentFile();
+		}
+		classPath = file.getAbsolutePath().replaceAll("%20", " ");
+	}
+
+	private static void setAppPath() {
+		File file = new File(getClassPath());
+		appPath = file.getParent() + File.separator;
+	}
+
+	private static void setFilePath() {
+		File file = new File(getAppPath());
+		filePath = file.getParent() + File.separator;
+	}
+}

+ 11 - 0
src/main/java/com/uas/platform/b2b/dao/UsageLogDao.java

@@ -0,0 +1,11 @@
+package com.uas.platform.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.UsageLog;
+
+@Repository
+public interface UsageLogDao extends JpaRepository<UsageLog, Long> {
+
+}

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/support/ErpBufferedLogger.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.erp.support;
 
-import com.uas.platform.b2b.core.BaseUtil;
+import com.uas.platform.b2b.core.ContextUtils;
+import com.uas.platform.b2b.core.PathUtils;
 import com.uas.platform.b2b.erp.model.ErpLog;
 import com.uas.platform.b2b.erp.service.ErpLogService;
 import com.uas.platform.core.logging.BufferedLogger;
@@ -14,7 +15,7 @@ import com.uas.platform.core.logging.BufferedLogger;
 public class ErpBufferedLogger extends BufferedLogger<ErpLog> {
 
 	public ErpBufferedLogger() {
-		super(BaseUtil.FILEPATH, ErpLog.class, BaseUtil.getBean(ErpLogService.class));
+		super(PathUtils.getFilePath(), ErpLog.class, ContextUtils.getBean(ErpLogService.class));
 	}
 
 	/**

+ 16 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java

@@ -19,6 +19,7 @@ import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.CollectionUtils;
 
 /**
  * 平台里面,以供应商的角度来查看采购询价单明细
@@ -395,4 +396,19 @@ public class PurchaseInquiryItem {
 	public void setUserUU(Long userUU) {
 		this.userUU = userUU;
 	}
+
+	/**
+	 * 回复记录的描述
+	 * 
+	 * @return
+	 */
+	public String replyDescription() {
+		if (!CollectionUtils.isEmpty(this.replies)) {
+			StringBuffer sb = new StringBuffer();
+			for (PurchaseInquiryReply reply : this.replies)
+				sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice()).append(";");
+			return sb.toString();
+		}
+		return null;
+	}
 }

+ 9 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderChange.java

@@ -324,4 +324,13 @@ public class PurchaseOrderChange implements Serializable {
 		return this.order;
 	}
 
+	/**
+	 * 处理详情
+	 * 
+	 * @return
+	 */
+	public String replyDescription() {
+		return isAgreed() ? "同意变更" : "不同意变更";
+	}
+
 }

+ 10 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderReply.java

@@ -15,6 +15,7 @@ import javax.persistence.OrderBy;
 import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
 /**
@@ -176,4 +177,13 @@ public class PurchaseOrderReply implements Serializable {
 		this.type = type;
 	}
 
+	/**
+	 * 回复详情
+	 * 
+	 * @return
+	 */
+	public String replyDescription() {
+		return "数量:" + this.qty + ",交期:" + DateFormatUtils.ISO_DATE_FORMAT.format(delivery);
+	}
+
 }

+ 17 - 1
src/main/java/com/uas/platform/b2b/model/SaleSend.java

@@ -16,6 +16,7 @@ import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.CollectionUtils;
 
 /**
  * 平台里面,供应商发起的发货单<br>
@@ -86,7 +87,7 @@ public class SaleSend implements Serializable {
 	 */
 	@Column(name = "ss_remark")
 	private String remark;
-	
+
 	/**
 	 * 录单人
 	 */
@@ -217,4 +218,19 @@ public class SaleSend implements Serializable {
 		this.recorder = recorder;
 	}
 
+	/**
+	 * 送货单详细
+	 * 
+	 * @return
+	 */
+	public String sendDescription() {
+		if (!CollectionUtils.isEmpty(this.sendItems)) {
+			StringBuffer sb = new StringBuffer("送货单号:").append(this.code).append("【");
+			for (SaleSendItem item : this.sendItems)
+				sb.append("行:").append(item.getNumber()).append(",数量:").append(item.getQty()).append(";");
+			return sb.append("】").toString();
+		}
+		return null;
+	}
+
 }

+ 209 - 0
src/main/java/com/uas/platform/b2b/model/UsageLog.java

@@ -0,0 +1,209 @@
+package com.uas.platform.b2b.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.StringUtils;
+
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.logging.BufferedLogable;
+
+/**
+ * 平台使用日志
+ * 
+ * @author yingp
+ * 
+ */
+@Entity
+@Table(name = "log$usage")
+public class UsageLog extends BufferedLogable implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$erp_gen")
+	@SequenceGenerator(name = "log$erp_gen", sequenceName = "log$erp_seq", allocationSize = 1)
+	@Column(name = "log_id")
+	private Long id;
+
+	@Column(name = "log_enuu")
+	private Long enUU;
+
+	@NotNull
+	@Column(name = "log_useruu")
+	private Long userUU;
+
+	/**
+	 * 日志时间
+	 */
+	@Column(name = "log_time")
+	private Long time;
+
+	/**
+	 * ip
+	 */
+	@Column(name = "log_ip")
+	private String ip;
+
+	@Column(name = "log_title")
+	private String title;
+
+	@Column(name = "log_message")
+	private String message;
+
+	@Column(name = "log_detail", length = 1000)
+	private String detail;
+
+	/**
+	 * 相关单据号
+	 */
+	@Column(name = "rel_code")
+	private String code;
+
+	/**
+	 * 相关单据主键
+	 */
+	@Column(name = "rel_key")
+	private Long key;
+
+	@JsonIgnore
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public Long getTime() {
+		return time;
+	}
+
+	public void setTime(Long time) {
+		this.time = time;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public String getDetail() {
+		return detail;
+	}
+
+	public void setDetail(String detail) {
+		this.detail = detail;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public Long getKey() {
+		return key;
+	}
+
+	public void setKey(Long key) {
+		this.key = key;
+	}
+
+	public UsageLog() {
+
+	}
+
+	public UsageLog(String title, String message, String detail, String code, Long key) {
+		this.enUU = SystemSession.getUser().getEnterprise().getUu();
+		this.title = title;
+		this.message = message;
+		this.detail = detail;
+		this.code = code;
+		this.key = key;
+		this.time = new Date().getTime();
+		this.userUU = SystemSession.getUser().getUserUU();
+		this.ip = SystemSession.getUser().getIp();
+	}
+
+	public void bufferedLog(String bufferedMessage) {
+		String[] strArray = bufferedMessage.split(separator);
+		if (strArray.length == 9) {
+			this.time = Long.parseLong(strArray[0]);
+			this.ip = strArray[1];
+			this.enUU = Long.parseLong(strArray[2]);
+			this.userUU = Long.parseLong(strArray[3]);
+			this.title = strArray[4];
+			this.message = strArray[5];
+			this.detail = StringUtils.hasText(strArray[6]) ? strArray[6] : null;
+			this.code = StringUtils.hasText(strArray[7]) ? strArray[7] : null;
+			this.key = StringUtils.hasText(strArray[8]) ? Long.parseLong(strArray[8]) : null;
+		}
+	}
+
+	@Override
+	public String bufferedMessage() {
+		StringBuffer sb = new StringBuffer();
+		sb.append(this.time).append(separator);
+		sb.append(this.ip).append(separator);
+		sb.append(this.enUU).append(separator);
+		sb.append(this.userUU).append(separator);
+		sb.append(this.title).append(separator);
+		sb.append(this.message).append(separator);
+		sb.append(this.detail == null ? "" : this.detail).append(separator);
+		sb.append(this.code == null ? "" : this.code).append(separator);
+		sb.append(this.key == null ? " " : this.key);
+		return sb.toString();
+	}
+
+}

+ 2 - 2
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java

@@ -106,7 +106,7 @@ public interface PurchaseInquiryService {
 	 * 
 	 * @param inquiryItem
 	 */
-	public void save(PurchaseInquiryItem inquiryItem);
+	public PurchaseInquiryItem save(PurchaseInquiryItem inquiryItem);
 
 	/**
 	 * 来自供应商ERP端的报价
@@ -120,7 +120,7 @@ public interface PurchaseInquiryService {
 	 * 
 	 * @param inquiryItem
 	 */
-	public void reply(PurchaseInquiryItem inquiryItem);
+	public PurchaseInquiryItem reply(PurchaseInquiryItem inquiryItem);
 
 	/**
 	 * 查找所有待上传到卖家ERP的报价信息的采纳结果

+ 1 - 1
src/main/java/com/uas/platform/b2b/service/PurchaseOrderChangeService.java

@@ -81,7 +81,7 @@ public interface PurchaseOrderChangeService {
 	 * 
 	 * @param reply
 	 */
-	public void reply(PurchaseOrderChange change);
+	public PurchaseOrderChange reply(PurchaseOrderChange change);
 
 	/**
 	 * 用变更单ID查找变更单

+ 2 - 2
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -93,7 +93,7 @@ public interface PurchaseOrderService {
 	 * 
 	 * @param reply
 	 */
-	public void reply(PurchaseOrderReply reply);
+	public PurchaseOrderReply reply(PurchaseOrderReply reply);
 
 	/**
 	 * 批量回复
@@ -108,7 +108,7 @@ public interface PurchaseOrderService {
 	 * @param orderItemIdString
 	 *            回复的明细ID的字符串数组
 	 */
-	public void reply(String[] orderItemIdString);
+	public List<PurchaseOrderReply> reply(String[] orderItemIdString);
 
 	/**
 	 * 查找订单明细的回复记录

+ 8 - 0
src/main/java/com/uas/platform/b2b/service/UsageLogService.java

@@ -0,0 +1,8 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.model.UsageLog;
+import com.uas.platform.core.logging.LogService;
+
+public interface UsageLogService extends LogService<UsageLog> {
+
+}

+ 2 - 2
src/main/java/com/uas/platform/b2b/service/impl/AttachServiceImpl.java

@@ -15,7 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import com.uas.platform.b2b.core.BaseUtil;
+import com.uas.platform.b2b.core.PathUtils;
 import com.uas.platform.b2b.dao.AttachDao;
 import com.uas.platform.b2b.model.Attach;
 import com.uas.platform.b2b.model.FileUpload;
@@ -130,7 +130,7 @@ public class AttachServiceImpl implements AttachService {
 	 * @return
 	 */
 	private String getDir(String parentDir) {
-		String path = BaseUtil.FILEPATH + "postattach";
+		String path = PathUtils.getFilePath() + "postattach";
 		File dir = new File(path);
 		if (!dir.isDirectory())
 			dir.mkdir();

+ 4 - 4
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -212,12 +212,12 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	}
 
 	@Override
-	public void save(PurchaseInquiryItem inquiryItem) {
-		purchaseInquiryItemDao.save(inquiryItem);
+	public PurchaseInquiryItem save(PurchaseInquiryItem inquiryItem) {
+		return purchaseInquiryItemDao.save(inquiryItem);
 	}
 
 	@Override
-	public void reply(PurchaseInquiryItem inquiryItem) {
+	public PurchaseInquiryItem reply(PurchaseInquiryItem inquiryItem) {
 		PurchaseInquiryItem item = purchaseInquiryItemDao.findOne(inquiryItem.getId());
 		if (item.getStatus() == Status.REPLIED.value()
 				|| (item.getReplySendStatus() != null && item.getReplySendStatus() == Status.DOWNLOADED.value()))
@@ -240,7 +240,7 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 						+ "行");
 			}
 		}
-		purchaseInquiryItemDao.save(inquiryItem);
+		return purchaseInquiryItemDao.save(inquiryItem);
 	}
 
 	@Override

+ 5 - 4
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderChangeServiceImpl.java

@@ -163,8 +163,8 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	}
 
 	@Override
-	public void reply(PurchaseOrderChange change) {
-		reply(change, true);
+	public PurchaseOrderChange reply(PurchaseOrderChange change) {
+		return reply(change, true);
 	}
 
 	/**
@@ -172,7 +172,7 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	 * @param isB2b
 	 *            是否在平台操作
 	 */
-	private void reply(PurchaseOrderChange change, boolean isB2b) {
+	private PurchaseOrderChange reply(PurchaseOrderChange change, boolean isB2b) {
 		PurchaseOrderChange orderChange = purchaseOrderChangeDao.findOne(change.getId());
 		orderChange.setStatus((short) Status.REPLIED.value());
 		orderChange.setAgreed(change.getAgreed());
@@ -180,7 +180,7 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 		orderChange.setReplySendStatus(change.getReplySendStatus());
 		if (isB2b)
 			orderChange.setReplySendStatus((short) Status.NOT_UPLOAD.value());
-		purchaseOrderChangeDao.save(orderChange);
+		orderChange = purchaseOrderChangeDao.save(orderChange);
 		PurchaseOrder order = orderChange.getOrder();
 		// 将回复信息推送给采购企业采购员(或管理员)
 		if (order.getUserUU() != null) {
@@ -191,6 +191,7 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 			XingePusher.pushSingleAccountIOS(order.getUserUU().toString(), "新增采购变更单回复" + "单号:" + order.getCode() + ",供应商:"
 					+ enterpriseDao.findOne(order.getVendUU()).getEnName());
 		}
+		return orderChange;
 	}
 
 	@Override

+ 10 - 7
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2b.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
@@ -117,8 +118,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public void reply(PurchaseOrderReply reply) {
-		reply(reply, true);
+	public PurchaseOrderReply reply(PurchaseOrderReply reply) {
+		return reply(reply, true);
 	}
 
 	/**
@@ -127,7 +128,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	 *            是否b2b新增
 	 */
 	@Transactional
-	private void reply(PurchaseOrderReply reply, boolean isB2b) {
+	private PurchaseOrderReply reply(PurchaseOrderReply reply, boolean isB2b) {
 		if (isB2b) {
 			reply.setDate(new Date());
 			// 作为B2B->买家ERP数据是否已传输的标志--为传输
@@ -143,7 +144,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		item.setReplyQty(replyQty + reply.getQty());
 		if (item.getReplyQty() > item.getQty())
 			throw new IllegalOperatorException("回复的数量合计超过了订单数量");
-		purchaseOrderReplyDao.save(reply);
+		reply = purchaseOrderReplyDao.save(reply);
 		purchaseOrderItemDao.updateByReply(reply.getDelivery(), reply.getRemark(), item.getId());
 		PurchaseOrder order = item.getOrder();
 		// 订单主记录状态
@@ -157,6 +158,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 			XingePusher.pushSingleAccountIOS(order.getUserUU().toString(), "新增采购单回复" + "单号:" + order.getCode() + ",供应商:"
 					+ enterpriseDao.findOne(order.getVendUU()).getEnName());
 		}
+		return reply;
 	}
 
 	/**
@@ -193,7 +195,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public void reply(String[] orderItemIdString) {
+	public List<PurchaseOrderReply> reply(String[] orderItemIdString) {
+		List<PurchaseOrderReply> replies = new ArrayList<PurchaseOrderReply>();
 		for (String orderItemId : orderItemIdString) {
 			PurchaseOrderItem orderItem = purchaseOrderItemDao.findOne(Long.parseLong(orderItemId));
 			PurchaseOrderReply reply = new PurchaseOrderReply();
@@ -203,9 +206,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 			if (orderItem.getReplyQty() == null)
 				orderItem.setReplyQty((double) 0);
 			reply.setQty(orderItem.getQty() - orderItem.getReplyQty());
-			reply(reply, true);
+			replies.add(reply(reply, true));
 		}
-
+		return replies;
 	}
 
 	@Override

+ 26 - 0
src/main/java/com/uas/platform/b2b/service/impl/UsageLogServiceImpl.java

@@ -0,0 +1,26 @@
+package com.uas.platform.b2b.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.uas.platform.b2b.dao.UsageLogDao;
+import com.uas.platform.b2b.model.UsageLog;
+import com.uas.platform.b2b.service.UsageLogService;
+
+@Service
+public class UsageLogServiceImpl implements UsageLogService {
+
+	@Autowired
+	private UsageLogDao usageLogDao;
+
+	@Override
+	public void save(UsageLog logable) {
+		usageLogDao.save(logable);
+	}
+
+	@Override
+	public void save(Iterable<UsageLog> logables) {
+		usageLogDao.save(logables);
+	}
+
+}

+ 65 - 0
src/main/java/com/uas/platform/b2b/support/UsageBufferedLogger.java

@@ -0,0 +1,65 @@
+package com.uas.platform.b2b.support;
+
+import com.uas.platform.b2b.core.ContextUtils;
+import com.uas.platform.b2b.core.PathUtils;
+import com.uas.platform.b2b.model.UsageLog;
+import com.uas.platform.b2b.service.UsageLogService;
+import com.uas.platform.core.logging.BufferedLogger;
+
+/**
+ * 平台的异步日志记录的工具
+ * 
+ * @author yingp
+ *
+ */
+public class UsageBufferedLogger extends BufferedLogger<UsageLog> {
+
+	public UsageBufferedLogger() {
+		super(PathUtils.getFilePath(), UsageLog.class, ContextUtils.getBean(UsageLogService.class));
+	}
+
+	/**
+	 * 记录平台使用日志
+	 * 
+	 * @param title
+	 *            消息标题
+	 * @param message
+	 *            消息
+	 */
+	public void log(String title, String message) {
+		log(new UsageLog(title, message, null, null, null));
+	}
+
+	/**
+	 * 记录平台使用日志
+	 * 
+	 * @param title
+	 *            消息标题
+	 * @param message
+	 *            消息
+	 * @param description
+	 *            消息详细描述
+	 */
+	public void log(String title, String message, String description) {
+		log(new UsageLog(title, message, description, null, null));
+	}
+
+	/**
+	 * 记录平台使用日志
+	 * 
+	 * @param title
+	 *            消息标题
+	 * @param message
+	 *            消息
+	 * @param description
+	 *            消息详细描述
+	 * @param relativeCode
+	 *            相关单据号
+	 * @param relativeKey
+	 *            相关单据主键
+	 */
+	public void log(String title, String message, String description, String relativeCode, Long relativeKey) {
+		log(new UsageLog(title, message, description, relativeCode, relativeKey));
+	}
+
+}

+ 31 - 0
src/main/java/com/uas/platform/b2b/support/UsageLogTask.java

@@ -0,0 +1,31 @@
+package com.uas.platform.b2b.support;
+
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.uas.platform.core.logging.BufferedLoggerManager;
+
+/**
+ * 定时任务<br>
+ * 将平台使用记录的日志文件的内容每隔30秒持久化一次
+ * 
+ * @author yingp
+ *
+ */
+@Component
+@EnableAsync
+@EnableScheduling
+public class UsageLogTask {
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	@Scheduled(fixedRate = 30 * 1000)
+	@Async
+	public void execute() {
+		logger.switchOver();
+	}
+
+}

+ 2 - 0
src/main/resources/spring/context.xml

@@ -9,6 +9,8 @@
 
 	<context:property-placeholder location="classpath*:*.properties" />
 
+	<bean class="com.uas.platform.b2b.core.ApplicationContextRegister" />
+
 	<context:component-scan base-package="com.uas.platform" />
 	<context:annotation-config />