Parcourir la source

Merge remote-tracking branch 'origin/feature-201830-wangcz' into dev

wangcz il y a 7 ans
Parent
commit
d256793667
100 fichiers modifiés avec 1591 ajouts et 548 suppressions
  1. 21 11
      src/main/java/com/uas/platform/b2c/common/account/model/UsageLog.java
  2. 0 1
      src/main/java/com/uas/platform/b2c/common/lottery/controller/LotteryController.java
  3. 0 1
      src/main/java/com/uas/platform/b2c/common/lottery/service/WinningHistoryService.java
  4. 3 2
      src/main/java/com/uas/platform/b2c/common/lottery/service/impl/ActivityItemServiceImpl.java
  5. 3 3
      src/main/java/com/uas/platform/b2c/common/lottery/service/impl/LotteryServiceImpl.java
  6. 3 2
      src/main/java/com/uas/platform/b2c/common/lottery/service/impl/PrizeServiceImpl.java
  7. 3 2
      src/main/java/com/uas/platform/b2c/common/lottery/service/impl/UserInfoServiceImpl.java
  8. 3 3
      src/main/java/com/uas/platform/b2c/common/lottery/service/impl/WinningHistoryServiceImpl.java
  9. 0 3
      src/main/java/com/uas/platform/b2c/common/message/service/InternalMessageService.java
  10. 2 3
      src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java
  11. 17 1
      src/main/java/com/uas/platform/b2c/core/support/view/JxlsExcelView.java
  12. 8 2
      src/main/java/com/uas/platform/b2c/core/utils/StringUtilB2C.java
  13. 6 2
      src/main/java/com/uas/platform/b2c/external/erp/order/api/OrderController.java
  14. 0 1
      src/main/java/com/uas/platform/b2c/external/erp/order/service/impl/InvoiceNotifyServiceImpl.java
  15. 8 3
      src/main/java/com/uas/platform/b2c/fa/payment/controller/BankInfoController.java
  16. 10 2
      src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankTransferServiceImpl.java
  17. 12 2
      src/main/java/com/uas/platform/b2c/fa/settlement/model/Refund.java
  18. 11 2
      src/main/java/com/uas/platform/b2c/fa/settlement/model/RefundDetail.java
  19. 5 1
      src/main/java/com/uas/platform/b2c/fa/settlement/service/impl/RefundServiceImpl.java
  20. 5 1
      src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceController.java
  21. 2 1
      src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceFOrderController.java
  22. 2 1
      src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceFPurchaseController.java
  23. 1 2
      src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceDao.java
  24. 0 1
      src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceDetailDao.java
  25. 0 2
      src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceFOrderDao.java
  26. 13 2
      src/main/java/com/uas/platform/b2c/logistics/model/Invoice.java
  27. 8 3
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceDetail.java
  28. 1 3
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrder.java
  29. 8 1
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrderDetail.java
  30. 1 1
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchase.java
  31. 8 1
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchaseDetail.java
  32. 10 2
      src/main/java/com/uas/platform/b2c/logistics/model/Receipt.java
  33. 8 1
      src/main/java/com/uas/platform/b2c/logistics/model/ReceiptDetail.java
  34. 0 2
      src/main/java/com/uas/platform/b2c/logistics/service/InvoiceFOrderDetailService.java
  35. 1 2
      src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFOrderDetailServiceImpl.java
  36. 13 2
      src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceServiceImpl.java
  37. 10 2
      src/main/java/com/uas/platform/b2c/logistics/service/impl/ReceiptServiceImpl.java
  38. 6 1
      src/main/java/com/uas/platform/b2c/logistics/util/ModelConvertUtil.java
  39. 20 0
      src/main/java/com/uas/platform/b2c/prod/commodity/constant/UploadConstant.java
  40. 14 3
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java
  41. 14 28
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/ReleaseProductByBatchController.java
  42. 2 0
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/ReleaseProductByBatchDao.java
  43. 12 2
      src/main/java/com/uas/platform/b2c/prod/commodity/model/CommodityInOutbound.java
  44. 9 2
      src/main/java/com/uas/platform/b2c/prod/commodity/model/Goods.java
  45. 9 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/GoodsHistory.java
  46. 10 2
      src/main/java/com/uas/platform/b2c/prod/commodity/model/InOutboundDetail.java
  47. 5 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ModifyInfo.java
  48. 10 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java
  49. 5 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductPrivate.java
  50. 17 138
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java
  51. 9 2
      src/main/java/com/uas/platform/b2c/prod/commodity/model/V_ProductPerson.java
  52. 9 2
      src/main/java/com/uas/platform/b2c/prod/commodity/model/V_ProductPrivate.java
  53. 0 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/CommodityInOutboundService.java
  54. 12 2
      src/main/java/com/uas/platform/b2c/prod/commodity/service/GoodsService.java
  55. 8 3
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java
  56. 76 0
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ReleaseProductByBatchService.java
  57. 11 11
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/CommodityInOutboundServiceImpl.java
  58. 69 5
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java
  59. 7 2
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/InOutboundDetailServiceImpl.java
  60. 62 11
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java
  61. 224 213
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java
  62. 2 0
      src/main/java/com/uas/platform/b2c/prod/product/kind/api/KindController.java
  63. 8 1
      src/main/java/com/uas/platform/b2c/prod/store/model/StoreApply.java
  64. 7 1
      src/main/java/com/uas/platform/b2c/prod/store/service/impl/StoreApplyServiceImpl.java
  65. 18 2
      src/main/java/com/uas/platform/b2c/prod/store/service/impl/StoreInServiceImpl.java
  66. 12 2
      src/main/java/com/uas/platform/b2c/trade/order/controller/OrderController.java
  67. 125 0
      src/main/java/com/uas/platform/b2c/trade/order/controller/PurchaseProductController.java
  68. 20 3
      src/main/java/com/uas/platform/b2c/trade/order/model/Order.java
  69. 1 1
      src/main/java/com/uas/platform/b2c/trade/order/model/OrderDetail.java
  70. 1 1
      src/main/java/com/uas/platform/b2c/trade/order/model/OrderIndex.java
  71. 1 1
      src/main/java/com/uas/platform/b2c/trade/order/model/OrderSimpleInfo.java
  72. 13 2
      src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java
  73. 0 2
      src/main/java/com/uas/platform/b2c/trade/order/service/OrderService.java
  74. 23 0
      src/main/java/com/uas/platform/b2c/trade/order/service/PurchaseProductService.java
  75. 9 2
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderDetailServiceImpl.java
  76. 25 4
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java
  77. 358 0
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseProductServiceImpl.java
  78. 31 5
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseServiceImpl.java
  79. 41 0
      src/main/java/com/uas/platform/b2c/trade/order/support/AjaxUtil.java
  80. 13 1
      src/main/java/com/uas/platform/b2c/trade/presale/model/Cart.java
  81. 5 3
      src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseBomController.java
  82. 3 3
      src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseBomService.java
  83. 22 4
      src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseBomServiceImpl.java
  84. 6 1
      src/main/java/com/uas/platform/b2c/trade/support/CodeType.java
  85. 21 0
      src/main/java/com/uas/platform/b2c/trade/support/ResultMap.java
  86. BIN
      src/main/resources/jxls-tpl/trade/releasePCBByBatch-rmb.xls
  87. BIN
      src/main/resources/jxls-tpl/trade/releasePCBByBatchError-rmb.xls
  88. BIN
      src/main/resources/jxls-tpl/trade/releasePCBByBatchError-usd.xls
  89. BIN
      src/main/resources/jxls-tpl/trade/releasePCBbyBatch-usd.xls
  90. BIN
      src/main/webapp/resources/img/all/logo_uas.png
  91. BIN
      src/main/webapp/resources/img/all/qrcode_uas.png
  92. BIN
      src/main/webapp/resources/img/common/uas-logo.png
  93. BIN
      src/main/webapp/resources/img/common/uas.png
  94. BIN
      src/main/webapp/resources/img/help/market_1.png
  95. BIN
      src/main/webapp/resources/img/help/orderinfo_1.png
  96. BIN
      src/main/webapp/resources/img/product/manual-apply-brand.png
  97. BIN
      src/main/webapp/resources/img/product/manual-batch-publish.png
  98. BIN
      src/main/webapp/resources/img/product/manual-component-apply.png
  99. BIN
      src/main/webapp/resources/img/product/manual-fill-component.png
  100. BIN
      src/main/webapp/resources/img/product/manual-find-product.png

+ 21 - 11
src/main/java/com/uas/platform/b2c/common/account/model/UsageLog.java

@@ -6,9 +6,16 @@ import com.uas.platform.core.logging.BufferedLogable;
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
-import java.util.Date;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import java.io.*;
 
 /**
  * 平台使用日志
@@ -237,7 +244,7 @@ public class UsageLog extends BufferedLogable implements Serializable {
 		this.detail = detail;
 		this.code = code;
 		this.key = key;
-		this.time = new Date().getTime();
+		this.time = System.currentTimeMillis();
 		if(SystemSession.getUser() != null) {
 			this.userUU = SystemSession.getUser().getUserUU();
 			this.enUU = SystemSession.getUser().getEnterprise() != null ? SystemSession.getUser().getEnterprise().getUu() : null;
@@ -253,7 +260,7 @@ public class UsageLog extends BufferedLogable implements Serializable {
 		this.detail = detail;
 		this.code = code;
 		this.key = key;
-		this.time = new Date().getTime();
+		this.time = System.currentTimeMillis();
 		if(SystemSession.getUser() != null) {
 			this.ip = SystemSession.getUser().getIp();
 		}
@@ -265,20 +272,23 @@ public class UsageLog extends BufferedLogable implements Serializable {
 		this.message = message;
 		this.code = code;
 		this.key = key;
-		this.time = new Date().getTime();
+		this.time = System.currentTimeMillis();
 		this.userUU = userUU;
 		this.ip = ip;
 	}
 
-	public void bufferedLog(String bufferedMessage) {
+	@Override
+    public void bufferedLog(String bufferedMessage) {
 		String[] strArray = bufferedMessage.split(separator);
 		if (strArray.length == 9) {
 			this.time = Long.parseLong(strArray[0]);
 			this.ip = strArray[1];
-			if (!"null".equals(strArray[2]))
-				this.enUU = Long.parseLong(strArray[2]);
-			if (!"null".equals(strArray[3]))
-				this.userUU = Long.parseLong(strArray[3]);
+			if (!"null".equals(strArray[2])) {
+                this.enUU = Long.parseLong(strArray[2]);
+            }
+			if (!"null".equals(strArray[3])) {
+                this.userUU = Long.parseLong(strArray[3]);
+            }
 			this.title = strArray[4];
 			this.message = strArray[5];
 			this.detail = StringUtils.hasText(strArray[6]) ? strArray[6] : null;

+ 0 - 1
src/main/java/com/uas/platform/b2c/common/lottery/controller/LotteryController.java

@@ -9,7 +9,6 @@ import com.uas.platform.b2c.common.lottery.service.WinningHistoryService;
 import com.uas.platform.b2c.common.search.util.PageParams;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;

+ 0 - 1
src/main/java/com/uas/platform/b2c/common/lottery/service/WinningHistoryService.java

@@ -3,7 +3,6 @@ package com.uas.platform.b2c.common.lottery.service;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.search.util.PageParams;
 import com.uas.platform.b2c.trade.support.ResultMap;
-import org.springframework.data.domain.Page;
 
 /**
  * Created by wangyc on 2018/9/12.

+ 3 - 2
src/main/java/com/uas/platform/b2c/common/lottery/service/impl/ActivityItemServiceImpl.java

@@ -8,12 +8,13 @@ import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.HttpUtil.Response;
-import java.util.HashMap;
-import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by wangyc on 2018/9/12.
  *

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/lottery/service/impl/LotteryServiceImpl.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2c.common.lottery.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.lottery.service.LotteryService;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.support.SystemSession;
@@ -9,12 +8,13 @@ import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.HttpUtil.Response;
 import com.uas.ps.core.page.exception.IllegalOperatorException;
-import java.util.HashMap;
-import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by wangyc on 2018/9/13.
  *

+ 3 - 2
src/main/java/com/uas/platform/b2c/common/lottery/service/impl/PrizeServiceImpl.java

@@ -8,12 +8,13 @@ import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.HttpUtil.Response;
-import java.util.HashMap;
-import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by wangyc on 2018/9/12.
  *

+ 3 - 2
src/main/java/com/uas/platform/b2c/common/lottery/service/impl/UserInfoServiceImpl.java

@@ -8,12 +8,13 @@ import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.HttpUtil.Response;
-import java.util.HashMap;
-import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by wangyc on 2018/9/12.
  *

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/lottery/service/impl/WinningHistoryServiceImpl.java

@@ -11,13 +11,13 @@ import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.HttpUtil.Response;
 import com.uas.ps.core.page.exception.IllegalOperatorException;
-import java.util.HashMap;
-import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by wangyc on 2018/9/12.
  *

+ 0 - 3
src/main/java/com/uas/platform/b2c/common/message/service/InternalMessageService.java

@@ -2,13 +2,10 @@ package com.uas.platform.b2c.common.message.service;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.b2c.common.message.model.MessageModel;
 import com.uas.platform.b2c.trade.deprecated.model.BasicMessage;
 import com.uas.platform.core.model.PageParams;
-import org.springframework.data.domain.Page;
 
 import java.util.Date;
-import java.util.List;
 
 /**
  * 站内信service

+ 2 - 3
src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java

@@ -32,9 +32,8 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
+import java.io.*;
+import java.net.*;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;

+ 17 - 1
src/main/java/com/uas/platform/b2c/core/support/view/JxlsExcelView.java

@@ -14,7 +14,7 @@ import org.springframework.web.servlet.view.document.AbstractExcelView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.net.URLEncoder;
+import java.net.*;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Locale;
@@ -33,10 +33,26 @@ public class JxlsExcelView extends AbstractExcelView {
 	 */
 	public final static int MAX_SIZE = 50000;
 
+    /**
+     * 文件名
+     */
 	private String fileName;
 
+	/**
+	 * 导入.xls格式文件
+	 */
 	private static final String EXTENSION = ".xls";
 
+	/**
+	 *  .xls 表格
+	 */
+	public static final String EXCEL_XLS = "xls";
+
+	/**
+	 * .xlsx 表格
+	 */
+	public static final String EXCEL_XLSX = "xlsx";
+
 	public JxlsExcelView(String tplPath, String fileName) {
 		super();
 		setUrl(tplPath);

+ 8 - 2
src/main/java/com/uas/platform/b2c/core/utils/StringUtilB2C.java

@@ -11,8 +11,14 @@ import com.uas.platform.core.model.Type;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import java.io.UnsupportedEncodingException;
-import java.util.*;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 

+ 6 - 2
src/main/java/com/uas/platform/b2c/external/erp/order/api/OrderController.java

@@ -5,10 +5,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.account.service.VendorService;
-import com.uas.platform.b2c.fa.payment.model.BankTransfer;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.StringUtilB2C;
+import com.uas.platform.b2c.fa.payment.model.BankTransfer;
 import com.uas.platform.b2c.trade.order.model.Order;
 import com.uas.platform.b2c.trade.order.model.OrderDetail;
 import com.uas.platform.b2c.trade.order.model.OrderSimpleInfo;
@@ -22,7 +22,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.management.OperationsException;
 import java.util.ArrayList;

+ 0 - 1
src/main/java/com/uas/platform/b2c/external/erp/order/service/impl/InvoiceNotifyServiceImpl.java

@@ -5,7 +5,6 @@ import com.uas.api.b2c_erp.buyer.model.AcceptNotifyDetail;
 import com.uas.api.b2c_erp.buyer.service.InvoiceNotifyService;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.logistics.dao.InvoiceDao;
-import com.uas.platform.b2c.logistics.dao.InvoiceFOrderDao;
 import com.uas.platform.b2c.logistics.model.Invoice;
 import com.uas.platform.b2c.logistics.model.InvoiceDetail;
 import com.uas.platform.core.model.Status;

+ 8 - 3
src/main/java/com/uas/platform/b2c/fa/payment/controller/BankInfoController.java

@@ -6,10 +6,10 @@ import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.base.model.FileUpload;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.support.SystemSession;
-import com.uas.platform.b2c.fa.payment.model.BankInfo;
-import com.uas.platform.b2c.fa.payment.service.BankInfoService;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.b2c.fa.payment.model.BankInfo;
+import com.uas.platform.b2c.fa.payment.service.BankInfoService;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageParams;
@@ -19,7 +19,12 @@ import com.wordnik.swagger.annotations.ApiOperation;
 import com.wordnik.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 import java.util.Set;

+ 10 - 2
src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankTransferServiceImpl.java

@@ -31,7 +31,11 @@ import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.b2c.trade.util.Preconditions;
 import com.uas.platform.core.exception.IllegalOperatorException;
-import com.uas.platform.core.model.*;
+import com.uas.platform.core.model.EncodingRulesConstant;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.model.Status;
+import com.uas.platform.core.model.Type;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
@@ -50,7 +54,11 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @author yujia

+ 12 - 2
src/main/java/com/uas/platform/b2c/fa/settlement/model/Refund.java

@@ -6,8 +6,18 @@ import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.trade.order.model.Order;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;

+ 11 - 2
src/main/java/com/uas/platform/b2c/fa/settlement/model/RefundDetail.java

@@ -5,8 +5,17 @@ import com.uas.platform.b2c.trade.order.model.Document;
 import com.uas.platform.b2c.trade.order.model.OrderDetail;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import java.io.*;
 
 
 /**

+ 5 - 1
src/main/java/com/uas/platform/b2c/fa/settlement/service/impl/RefundServiceImpl.java

@@ -32,7 +32,11 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.servlet.http.HttpServletRequest;
-import java.util.*;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * The type Refund service.

+ 5 - 1
src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceController.java

@@ -19,7 +19,11 @@ import com.wordnik.swagger.annotations.ApiOperation;
 import com.wordnik.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.management.OperationsException;
 import java.util.List;

+ 2 - 1
src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceFOrderController.java

@@ -1,7 +1,8 @@
 package com.uas.platform.b2c.logistics.controller;
 
 
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 /**
  * The type InvoiceFOrder controller.
  */

+ 2 - 1
src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceFPurchaseController.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2c.logistics.controller;
 
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 
 /**

+ 1 - 2
src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceDao.java

@@ -1,14 +1,13 @@
 package com.uas.platform.b2c.logistics.dao;
 
 
+import com.uas.platform.b2c.logistics.model.Invoice;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2c.logistics.model.Invoice;
-
 import java.util.List;
 
 /**

+ 0 - 1
src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceDetailDao.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2c.logistics.dao;
 
 import com.uas.platform.b2c.logistics.model.InvoiceDetail;
-import com.uas.platform.b2c.logistics.model.InvoiceFPurchaseDetail;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;

+ 0 - 2
src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceFOrderDao.java

@@ -3,8 +3,6 @@ package com.uas.platform.b2c.logistics.dao;
 import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;

+ 13 - 2
src/main/java/com/uas/platform/b2c/logistics/model/Invoice.java

@@ -9,8 +9,19 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;

+ 8 - 3
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceDetail.java

@@ -2,16 +2,21 @@ package com.uas.platform.b2c.logistics.model;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.uas.platform.b2c.core.utils.NumberUtil;
-import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
 import com.uas.platform.b2c.trade.order.model.OrderDetail;
 import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
 import com.uas.platform.core.exception.IllegalStatusException;
-import com.uas.platform.core.model.EncodingRulesConstant;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
 
 /**
  * 发货单(来源于订单的)明细

+ 1 - 3
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrder.java

@@ -1,9 +1,7 @@
 package com.uas.platform.b2c.logistics.model;
 
-import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.trade.order.model.Document;
 import com.uas.platform.b2c.trade.order.model.Order;
-import com.uas.platform.b2c.trade.order.model.OrderDetail;
 import com.uas.platform.core.exception.IllegalStatusException;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.StatusColumn;
@@ -22,7 +20,7 @@ import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
 import javax.persistence.Table;
-import java.io.Serializable;
+import java.io.*;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;

+ 8 - 1
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrderDetail.java

@@ -7,7 +7,14 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
 
 /**
  * 发货单(来源于订单的)明细

+ 1 - 1
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchase.java

@@ -20,7 +20,7 @@ import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
 import javax.persistence.Table;
 import javax.persistence.Transient;
-import java.io.Serializable;
+import java.io.*;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;

+ 8 - 1
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchaseDetail.java

@@ -7,7 +7,14 @@ import com.uas.platform.core.exception.IllegalStatusException;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
 
 /**
  * 发货单(来源于采购单的)明细

+ 10 - 2
src/main/java/com/uas/platform/b2c/logistics/model/Receipt.java

@@ -7,8 +7,16 @@ import com.uas.platform.core.persistence.StatusColumn;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import java.io.*;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;

+ 8 - 1
src/main/java/com/uas/platform/b2c/logistics/model/ReceiptDetail.java

@@ -4,7 +4,14 @@ import com.alibaba.fastjson.annotation.JSONField;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
 
 /**
  * 入库单明细

+ 0 - 2
src/main/java/com/uas/platform/b2c/logistics/service/InvoiceFOrderDetailService.java

@@ -1,7 +1,5 @@
 package com.uas.platform.b2c.logistics.service;
 
-import com.uas.platform.b2c.logistics.model.InvoiceFOrderDetail;
-
 /**
  * The interface InvoiceFOrderDetail service.
  */

+ 1 - 2
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFOrderDetailServiceImpl.java

@@ -1,8 +1,7 @@
 package com.uas.platform.b2c.logistics.service.impl;
 
-import org.springframework.stereotype.Service;
-
 import com.uas.platform.b2c.logistics.service.InvoiceFOrderDetailService;
+import org.springframework.stereotype.Service;
 
 @Service
 public class InvoiceFOrderDetailServiceImpl implements InvoiceFOrderDetailService {

+ 13 - 2
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceServiceImpl.java

@@ -16,7 +16,11 @@ import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.logistics.dao.InvoiceDao;
 import com.uas.platform.b2c.logistics.dao.InvoiceFOrderDao;
 import com.uas.platform.b2c.logistics.dao.InvoiceFPurchaseDao;
-import com.uas.platform.b2c.logistics.model.*;
+import com.uas.platform.b2c.logistics.model.Invoice;
+import com.uas.platform.b2c.logistics.model.InvoiceDetail;
+import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
+import com.uas.platform.b2c.logistics.model.Logistics;
 import com.uas.platform.b2c.logistics.service.InvoiceService;
 import com.uas.platform.b2c.logistics.service.LogisticsOldService;
 import com.uas.platform.b2c.logistics.service.LogisticsPortService;
@@ -64,7 +68,14 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 @Service
 public class InvoiceServiceImpl implements InvoiceService {

+ 10 - 2
src/main/java/com/uas/platform/b2c/logistics/service/impl/ReceiptServiceImpl.java

@@ -8,7 +8,11 @@ import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.fa.settlement.util.SettlementUtil;
 import com.uas.platform.b2c.logistics.dao.ReceiptDao;
-import com.uas.platform.b2c.logistics.model.*;
+import com.uas.platform.b2c.logistics.model.Invoice;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchaseDetail;
+import com.uas.platform.b2c.logistics.model.Receipt;
+import com.uas.platform.b2c.logistics.model.ReceiptDetail;
 import com.uas.platform.b2c.logistics.service.ReceiptDetailService;
 import com.uas.platform.b2c.logistics.service.ReceiptService;
 import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
@@ -37,7 +41,11 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 import static com.uas.platform.b2c.trade.util.Preconditions.checkArgument;
 import static com.uas.platform.b2c.trade.util.Preconditions.checkNotNull;

+ 6 - 1
src/main/java/com/uas/platform/b2c/logistics/util/ModelConvertUtil.java

@@ -1,6 +1,11 @@
 package com.uas.platform.b2c.logistics.util;
 
-import com.uas.platform.b2c.logistics.model.*;
+import com.uas.platform.b2c.logistics.model.Invoice;
+import com.uas.platform.b2c.logistics.model.InvoiceDetail;
+import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
+import com.uas.platform.b2c.logistics.model.InvoiceFOrderDetail;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchaseDetail;
 
 import java.util.HashSet;
 import java.util.Set;

+ 20 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/constant/UploadConstant.java

@@ -180,4 +180,24 @@ public final class UploadConstant {
      * PCB一级类目id
      */
     public static final long PCB_PARENTID = 3825L;
+
+    /**
+     * 个人物料上传品牌标识
+     */
+    public static final String PRODUCT_BRAND_NAME = "英文/中文品牌名称";
+
+    /**
+     * 个人物料上传物料名称标识
+     */
+    public static final String PRODUCT_KIND_NAME = "物料名称";
+
+    /**
+     * 个人物料上传型号标识
+     */
+    public static final String PRODUCT_CMPCODE_NAME = "型号";
+
+    /**
+     * 个人物料上传规格标识
+     */
+    public static final String PRODUCT_SPEC_NAME = "规格(含参数、封装)";
 }

+ 14 - 3
src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java

@@ -6,7 +6,12 @@ import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.view.JxlsExcelView;
 import com.uas.platform.b2c.prod.commodity.facade.ProductFacade;
-import com.uas.platform.b2c.prod.commodity.model.*;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
+import com.uas.platform.b2c.prod.commodity.model.ProductReplace;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.service.GoodsService;
 import com.uas.platform.b2c.prod.commodity.service.ProductService;
 import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
@@ -19,13 +24,19 @@ import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;

+ 14 - 28
src/main/java/com/uas/platform/b2c/prod/commodity/controller/ReleaseProductByBatchController.java

@@ -14,6 +14,7 @@ import com.uas.platform.b2c.prod.product.brand.service.BrandService;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
 import com.uas.platform.b2c.trade.order.StringConstant.Currency;
+import com.uas.platform.b2c.trade.order.support.AjaxUtil;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
@@ -26,15 +27,18 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -374,21 +378,12 @@ public class ReleaseProductByBatchController {
      */
     @RequestMapping(value = "/release/failure/xls", method = RequestMethod.GET)
     public ModelAndView exportOrderses(String batch, HttpServletRequest request, @RequestParam(defaultValue = "false") Boolean isAjax, String currency, Integer isPerson) {
-        ModelAndView modelAndView = new ModelAndView();
         HttpSession session = request.getSession();
-        Object loading = session.getAttribute("load-error-ing");
-        if (isAjax) {
-            MappingJackson2JsonView view = new MappingJackson2JsonView();
-            Map attributes = new HashMap();
-            if (loading == null || !Boolean.valueOf(loading.toString())) {
-                attributes.put("load", false);
-            } else if (Boolean.valueOf(loading.toString())) {
-                attributes.put("load", true);
-            }
-            view.setAttributesMap(attributes);
-            modelAndView.setView(view);
+        ModelAndView modelAndView = AjaxUtil.checkIsAjax(session, isAjax);
+        if (!modelAndView.isEmpty()) {
             return modelAndView;
         }
+        Object loading = session.getAttribute("load-error-ing");
         if (loading == null || !Boolean.valueOf(loading.toString())) {
             session.setAttribute("load-error-ing", true);
         }
@@ -439,21 +434,12 @@ public class ReleaseProductByBatchController {
      */
     @RequestMapping(value = "/modify/failure", method = RequestMethod.GET)
     public ModelAndView exportFailureData(String batch, HttpServletRequest request, @RequestParam(defaultValue = "false") Boolean isAjax) throws UnsupportedEncodingException {
-        ModelAndView modelAndView = new ModelAndView();
         HttpSession session = request.getSession();
-        Object loading = session.getAttribute("load-error-ing");
-        if (isAjax) {
-            MappingJackson2JsonView view = new MappingJackson2JsonView();
-            Map<String, Boolean> attributes = new HashMap<>();
-            if (loading == null || !Boolean.valueOf(loading.toString())) {
-                attributes.put("load", false);
-            } else if (Boolean.valueOf(loading.toString())) {
-                attributes.put("load", true);
-            }
-            view.setAttributesMap(attributes);
-            modelAndView.setView(view);
+        ModelAndView modelAndView = AjaxUtil.checkIsAjax(session, isAjax);
+        if (!modelAndView.isEmpty()) {
             return modelAndView;
         }
+        Object loading = session.getAttribute("load-error-ing");
         if (loading == null || !Boolean.valueOf(loading.toString())) {
             session.setAttribute("load-error-ing", true);
         }

+ 2 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ReleaseProductByBatchDao.java

@@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
@@ -16,6 +17,7 @@ import java.util.List;
  * @time 创建时间 :2016年9月24日
  * @version 2017年8月3日13:47:42 yuj 增加注释
  */
+@Repository
 public interface ReleaseProductByBatchDao
 		extends JpaSpecificationExecutor<ReleaseProductByBatch>, JpaRepository<ReleaseProductByBatch, Long> {
 

+ 12 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/model/CommodityInOutbound.java

@@ -5,8 +5,18 @@ import com.uas.platform.b2c.logistics.model.Logistics;
 import com.uas.platform.b2c.prod.commodity.type.InOutBoundType;
 import org.apache.commons.lang.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.util.Date;
 import java.util.Set;
 

+ 9 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/model/Goods.java

@@ -20,8 +20,15 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;

+ 9 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/GoodsHistory.java

@@ -3,7 +3,15 @@ package com.uas.platform.b2c.prod.commodity.model;
 import com.uas.platform.b2c.common.account.model.UserBaseInfo;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
 import java.util.Date;
 import java.util.List;
 

+ 10 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/model/InOutboundDetail.java

@@ -5,8 +5,16 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.uas.platform.b2c.logistics.model.InvoiceDetail;
 import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import java.io.*;
 
 @Entity
 @Table(name = "trade$in_out_bound_detail")

+ 5 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/ModifyInfo.java

@@ -1,6 +1,10 @@
 package com.uas.platform.b2c.prod.commodity.model;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
 
 /**
  * 商品修改明细类

+ 10 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java

@@ -6,7 +6,16 @@ import com.uas.platform.core.persistence.EnterpriseUU;
 import com.uas.platform.core.persistence.Logger;
 import com.uas.platform.core.persistence.UserUU;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
 import java.util.Date;
 import java.util.Set;
 

+ 5 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductPrivate.java

@@ -2,7 +2,11 @@ package com.uas.platform.b2c.prod.commodity.model;
 
 import com.uas.platform.b2c.core.constant.IntegerConstant;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
 
 /**
  * 存贮商城私有物料字段

+ 17 - 138
src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2c.prod.commodity.model;
 
 import com.alibaba.fastjson.annotation.JSONField;
-import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.core.utils.RegexConstant;
@@ -16,9 +15,13 @@ import org.apache.commons.collections.CollectionUtils;
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -76,7 +79,9 @@ public class ReleaseProductByBatch implements Serializable {
 	@GeneratedValue
 	private Long id;
 
-	// 当前的申请的这一批的单号
+	/**
+	 * 当前的申请的这一批的单号
+	 */
 	@Column(name = "rel_batchid")
 	private String relbatchid = "";
 
@@ -225,7 +230,7 @@ public class ReleaseProductByBatch implements Serializable {
 	 * 上传时间
 	 */
 	@Column(name = "rel_createdate")
-	private Date createDate;
+	private Date createDate = new Date(System.currentTimeMillis());
 
 	/**
 	 * 产品最小包装量
@@ -323,42 +328,6 @@ public class ReleaseProductByBatch implements Serializable {
 	@Column(name = "rel_thick")
 	private String thick = "";
 
-//	/**
-//	 * 商城最长交期
-//	 */
-//	@Column(name = "go_b2cmaxdelivery")
-//	private Short b2cMaxDelivery;
-//
-//	/**
-//	 * 商城最短交期
-//	 */
-//	@Column(name = "go_b2cmindelivery")
-//	private Short b2cMinDelivery;
-//
-//	/**
-//	 * 用户填写的大陆最长交期
-//	 */
-//	@Column(name = "rel_maxdeliverydemtime")
-//	private Short deliveryDemMaxTime;
-//
-//	/**
-//	 * 用户填写的大陆最短交期
-//	 */
-//	@Column(name = "rel_mindeliverydemtime")
-//	private Short deliveryDemMinTime;
-//
-//	/**
-//	 * 用户填写的香港最短交期
-//	 */
-//	@Column(name = "rel_mindeliveryhktime")
-//	private Short deliveryHKMinTime;
-//
-//	/**
-//	 * 用户填写的香港最长交期
-//	 */
-//	@Column(name = "rel_maxdeliveryhktime")
-//	private Short deliveryHKMaxTime;
-
 	/**
 	 * 备注
 	 */
@@ -541,13 +510,13 @@ public class ReleaseProductByBatch implements Serializable {
 	 * 店铺的id
 	 */
 	@Column(name = "rel_storeid")
-	private String storeid;
+	private String storeid = "";
 
 	/**
 	 * 店铺名称
 	 */
 	@Column(name = "rel_storename")
-	private String storeName;
+	private String storeName = "";
 
 	/**
 	 * 规格信息
@@ -565,7 +534,7 @@ public class ReleaseProductByBatch implements Serializable {
 	 * 物料id信息
 	 */
 	@Column(name = "rel_pronum", length = 100)
-	private String productNum;
+	private String productNum = "";
 
 	/**
 	 * 规格书信息
@@ -592,15 +561,9 @@ public class ReleaseProductByBatch implements Serializable {
 
 		ReleaseProductByBatch that = (ReleaseProductByBatch) o;
 
-		if (!brandNameEn.equals(that.brandNameEn)) return false;
-//		if (!code.equals(that.code)) return false;
-//		if (!minBuyQtyStr.equals(that.minBuyQtyStr)) return false;
-//		if (!productDate.equals(that.productDate)) return false;
-//		if (!minPackageStr.equals(that.minPackageStr)) return false;
-//		if (!packaging.equals(that.packaging)) return false;
-//		if (!selfMaxDeliveryStr.equals(that.selfMaxDeliveryStr)) return false;
-//		if (!selfMinDeliveryStr.equals(that.selfMinDeliveryStr)) return false;
-//		return GoodsUtil.compareWithQtyPrice(prices, that.getPrices(), that.getCurrency());
+		if (!brandNameEn.equals(that.brandNameEn)) {
+		    return false;
+        }
 		return code.equals(that.code);
 	}
 
@@ -608,22 +571,6 @@ public class ReleaseProductByBatch implements Serializable {
 		setBatchCode(StringUtilB2C.getStr(value).trim());
 	}
 
-	public void setStatusByExcel(Object value) {
-		if (StringUtils.isEmpty(value)) {
-			addErrmsg(ErrorInfoConstant.SALE_EMPTY.getInfo());
-		} else {
-			String statusStr = StringUtilB2C.getStr(value);
-			setStatusStr(statusStr);
-			if (!STATUS_LIST.contains(statusStr)) {
-				addErrmsg(ErrorInfoConstant.SALE_EMPTY.getInfo());
-			} else {
-				int status = "上架".equals(statusStr) ? Status.AVAILABLE.value() : Status.REMOVED.value();
-				setStatus(status);
-			}
-		}
-
-	}
-
 	public void setBrandEnByExcel(Object value) {
 		if (StringUtils.isEmpty(value)) {
 			addErrmsg(ErrorInfoConstant.BRAND_EMPTY_INFO.getInfo());
@@ -717,19 +664,6 @@ public class ReleaseProductByBatch implements Serializable {
 		}
 	}
 
-	public void setProductDateByExcel(Object value) {
-		if (StringUtils.isEmpty(value)) {
-			addErrmsg(ErrorInfoConstant.PRODUCE_DATE_INFO.getInfo());
-		}
-		String productData = StringUtilB2C.replaceLineBreak(StringUtilB2C.getStr(value));
-		try {
-			productData = com.uas.platform.b2c.fa.payment.utils.StringUtils.cutOutString(productData, 12);
-		} catch (UnsupportedEncodingException e) {
-			throw new RuntimeException(e + "指定字符集不支持");
-		}
-		setProductDate(productData);
-	}
-
 	public void setPackagingByExcel(Object value, boolean isAPerson) {
 		if (!StringUtils.isEmpty(value)) {
 			String packagingData = StringUtilB2C.replaceLineBreak(StringUtilB2C.getStr(value));
@@ -954,8 +888,6 @@ public class ReleaseProductByBatch implements Serializable {
 		this.brandId = brandId;
 	}
 
-
-
 	public String getCode() {
 		return code;
 	}
@@ -1163,22 +1095,6 @@ public class ReleaseProductByBatch implements Serializable {
 		this.publisherName = publisherName;
 	}
 
-//	public Short getB2cMaxDelivery() {
-//		return b2cMaxDelivery;
-//	}
-//
-//	public void setB2cMaxDelivery(Short b2cMaxDelivery) {
-//		this.b2cMaxDelivery = b2cMaxDelivery;
-//	}
-//
-//	public Short getB2cMinDelivery() {
-//		return b2cMinDelivery;
-//	}
-//
-//	public void setB2cMinDelivery(Short b2cMinDelivery) {
-//		this.b2cMinDelivery = b2cMinDelivery;
-//	}
-
 	public Long getPublisherUu() {
 		return publisherUu;
 	}
@@ -1577,43 +1493,6 @@ public class ReleaseProductByBatch implements Serializable {
 		return serialVersionUID;
 	}
 
-//	public Short getDeliveryDemMaxTime() {
-//		return deliveryDemMaxTime;
-//	}
-//
-//	public ReleaseProductByBatch setDeliveryDemMaxTime(Short deliveryDemMaxTime) {
-//		this.deliveryDemMaxTime = deliveryDemMaxTime;
-//		return this;
-//	}
-//
-//	public Short getDeliveryDemMinTime() {
-//		return deliveryDemMinTime;
-//	}
-//
-//	public ReleaseProductByBatch setDeliveryDemMinTime(Short deliveryDemMinTime) {
-//		this.deliveryDemMinTime = deliveryDemMinTime;
-//		return this;
-//	}
-//
-//	public Short getDeliveryHKMinTime() {
-//		return deliveryHKMinTime;
-//	}
-//
-//	public ReleaseProductByBatch setDeliveryHKMinTime(Short deliveryHKMinTime) {
-//		this.deliveryHKMinTime = deliveryHKMinTime;
-//		return this;
-//	}
-//
-//	public Short getDeliveryHKMaxTime() {
-//		return deliveryHKMaxTime;
-//	}
-//
-//	public ReleaseProductByBatch setDeliveryHKMaxTime(Short deliveryHKMaxTime) {
-//		this.deliveryHKMaxTime = deliveryHKMaxTime;
-//		return this;
-//	}
-
-
 	public Short getSelfMaxDelivery() {
 		return selfMaxDelivery;
 	}

+ 9 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/model/V_ProductPerson.java

@@ -4,8 +4,15 @@ package com.uas.platform.b2c.prod.commodity.model;
 import com.uas.platform.core.persistence.EnterpriseUU;
 import com.uas.platform.core.persistence.UserUU;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;

+ 9 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/model/V_ProductPrivate.java

@@ -3,8 +3,15 @@ package com.uas.platform.b2c.prod.commodity.model;
 import com.uas.platform.core.persistence.EnterpriseUU;
 import com.uas.platform.core.persistence.UserUU;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.util.Date;
 import java.util.Set;
 

+ 0 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/CommodityInOutboundService.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2c.prod.commodity.service;
 
 import com.uas.platform.b2c.logistics.model.Invoice;
-import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
 import com.uas.platform.b2c.prod.commodity.model.CommodityInOutbound;
 import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
 import com.uas.platform.b2c.trade.order.model.Order;

+ 12 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/service/GoodsService.java

@@ -2,7 +2,12 @@ package com.uas.platform.b2c.prod.commodity.service;
 
 import com.uas.api.b2c_erp.seller.model.GoodsFUas;
 import com.uas.api.b2c_erp.seller.model.GoodsSimpleUas;
-import com.uas.platform.b2c.prod.commodity.model.*;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsFilter;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
+import com.uas.platform.b2c.prod.commodity.model.GoodsInfo;
+import com.uas.platform.b2c.prod.commodity.model.GoodsSimple;
+import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
 import com.uas.platform.b2c.trade.order.model.Order;
 import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
@@ -47,7 +52,12 @@ public interface GoodsService {
      */
     Goods updateAvailableDays(Goods goods, GoodsHistory.OperateType operateType, Long... param);
 
-
+    /**
+     * 设置上架商品基本属性
+     *
+     * @param goods 商品信息
+     */
+    void setGoodsDefault(Goods goods);
 
     /**
      * 根据uuid查找货物信息

+ 8 - 3
src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java

@@ -1,14 +1,19 @@
 package com.uas.platform.b2c.prod.commodity.service;
 
 import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.b2c.prod.commodity.model.*;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
+import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
+import com.uas.platform.b2c.prod.commodity.model.ProductReplace;
+import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 
 import java.util.List;
 import java.util.Map;

+ 76 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/ReleaseProductByBatchService.java

@@ -1,7 +1,10 @@
 package com.uas.platform.b2c.prod.commodity.service;
 
 import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
+import com.uas.platform.b2c.prod.store.model.StoreIn;
 import com.uas.platform.core.model.PageInfo;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
@@ -115,4 +118,77 @@ public interface ReleaseProductByBatchService {
      * 每天零层删除所有的信息
      */
     void deleteAllInfo();
+
+    /**
+     * 判断店铺信息
+     *
+     * @param selfSale 自营还是寄售
+     * @return StoreIn
+     * @see StoreIn
+     */
+    StoreIn getStoreInfo(Boolean selfSale);
+
+    /**
+     *	验证该模板是否是商城模板
+     * @param headerRow 首行
+     * @param colNum	总列
+     * @param currency	币别
+     * @param isPcb 是否pcb模块
+     * @param isAPerson 是否为个人用户
+     */
+    void validateTemplate(Row headerRow, int colNum, String currency, boolean isAPerson, boolean isPcb);
+
+    /**
+     * 验证是否是模板的数据
+     * @param row excel的row对象
+     * @param rowNum 行号
+     * @return true false
+     */
+    boolean validateExcelData(Row row, int rowNum);
+
+    /**
+     * 初始化product信息,将excel内容转换为product字段值
+     * @param row 行对象
+     * @param aProduct 验证单行数据
+     * @param rowNum 行数
+     * @param isPcb 是否pcb模块
+     * @param isAPerson 是否是个人用户
+     * @return 为空的个数
+     */
+    int convertValueToProduct(Row row, ReleaseProductByBatch aProduct, int rowNum, boolean isAPerson, boolean isPcb);
+
+    /**
+     * 统计批量上传数据相关
+     *
+     * @param modelMap ModelMap
+     * @param strCount
+     * @param batch
+     */
+    void checkReleaseCount(ModelMap modelMap, String strCount, String batch);
+
+    /**
+     *  1:比较品牌、型号、自定义标签是否重复,2:比较六要素是否重复
+     * @param releaseProductByBatchArrayList 批量上传商品建立临时表存储相关信息
+     */
+    void judgeSameReleaseProductByBatch(List<ReleaseProductByBatch> releaseProductByBatchArrayList);
+
+    /**
+     * 调用存储过程
+     * @param enUU 企业的enUU
+     * @param batch 批次
+     * @return 验证结果
+     */
+    String productReleaseValid(Long enUU, String batch);
+
+    /**
+     * 创建时间 :2016年12月11日 下午2:02:16
+     *
+     * @author yujia
+     * @param cell
+     * @param cellType
+     * @param n
+     * @param r
+     * @return Object
+     */
+    Object readWorkBookCell(Cell cell, int cellType, int r, int n);
 }

+ 11 - 11
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/CommodityInOutboundServiceImpl.java

@@ -40,7 +40,11 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * description
@@ -50,21 +54,17 @@ import java.util.*;
 @Service
 public class CommodityInOutboundServiceImpl implements CommodityInOutboundService {
 
-    private final CommodityInOutboundDao commodityInOutboundDao;
-
-    private final CreateNumberService createNumberService;
+    @Autowired
+    private CommodityInOutboundDao commodityInOutboundDao;
 
-    private final ProductService productService;
+    @Autowired
+    private CreateNumberService createNumberService;
 
     @Autowired
-    private InvoiceService invoiceService;
+    private ProductService productService;
 
     @Autowired
-    public CommodityInOutboundServiceImpl(CommodityInOutboundDao commodityInOutboundDao, CreateNumberService createNumberService, ProductService productService) {
-        this.commodityInOutboundDao = commodityInOutboundDao;
-        this.createNumberService = createNumberService;
-        this.productService = productService;
-    }
+    private InvoiceService invoiceService;
 
     /**
      * 批量保存出入库记录

+ 69 - 5
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java

@@ -18,13 +18,24 @@ import com.uas.platform.b2c.core.constant.ShortConstant;
 import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
-import com.uas.platform.b2c.core.utils.*;
+import com.uas.platform.b2c.core.utils.DoubleArith;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.b2c.core.utils.NumberUtil;
+import com.uas.platform.b2c.core.utils.RegexConstant;
+import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.external.erp.commodity.util.ModelConverter;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.IntegerConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
 import com.uas.platform.b2c.prod.commodity.constant.UploadConstant;
-import com.uas.platform.b2c.prod.commodity.dao.*;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsModifyInfoDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsSimpleDao;
+import com.uas.platform.b2c.prod.commodity.dao.PCBDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDetailDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
 import com.uas.platform.b2c.prod.commodity.model.*;
 import com.uas.platform.b2c.prod.commodity.model.GoodsHistory.OperateType;
 import com.uas.platform.b2c.prod.commodity.service.*;
@@ -66,7 +77,11 @@ import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.b2c.trade.util.BoundedExecutor;
 import com.uas.platform.core.exception.IllegalOperatorException;
-import com.uas.platform.core.model.*;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.EncodingRulesConstant;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.model.Type;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
 import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
@@ -110,7 +125,17 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.regex.Matcher;
@@ -159,6 +184,9 @@ public class GoodsServiceImpl implements GoodsService {
     @Autowired
     private ComponentDao componentDao;
 
+    @Autowired
+    private InOutboundDetailService inOutboundDetailService;
+
     @Autowired
     private ProductPrivateDao productPrivateDao;
 
@@ -195,6 +223,9 @@ public class GoodsServiceImpl implements GoodsService {
     @Autowired
     private JdbcTemplate jdbcTemplate;
 
+    @Autowired
+    private CommodityInOutboundService commodityInOutboundService;
+
     private final ProductDao productDao;
 
     @Autowired
@@ -550,7 +581,8 @@ public class GoodsServiceImpl implements GoodsService {
      *
      * @param goods
      */
-    private void setGoodsDefault(Goods goods) {
+    @Override
+    public void setGoodsDefault(Goods goods) {
         if (StringUtils.isEmpty(goods.getBatchCode())) {
             String batchCode = EncodingRulesConstant.BATCH.replace("_TIMESTAP_NUMBER",
                     createNumberService.getTimeNumber("product$goods", 8));
@@ -1591,6 +1623,38 @@ public class GoodsServiceImpl implements GoodsService {
         if(nowGoods.getProductid() != null) {
             Product product = productDao.findOne(nowGoods.getProductid());
             if(product != null) {
+                if (!nowGoods.getSpec().equals(oldGoods.getSpec())) {
+                    product.setSpec(oldGoods.getSpec());
+                }
+                if (!nowGoods.getPackaging().equals(oldGoods.getPackaging())) {
+                    product.setPackaging(oldGoods.getPackaging());
+                }
+                if (!nowGoods.getMinPackQty().equals(oldGoods.getMinPackQty())) {
+                    product.setMinPackQty(oldGoods.getMinPackQty());
+                }
+                if (!product.getErpReserve().equals(oldGoods.getReserve())) {
+                    product.setErpReserve(oldGoods.getReserve());
+                    InOutboundDetail inOutboundDetail = new InOutboundDetail(product);
+                    Double qty = NumberUtil.sub(oldGoods.getReserve(), product.getErpReserve());
+                    if (NumberUtil.compare(qty, DoubleConstant.zero) != 0) {
+                        //做出入库记录
+                        inOutboundDetail.setQty(qty);
+                        inOutboundDetail.setPrice(oldGoods.getCostPrice());
+                    }
+                    Set<InOutboundDetail> set = new HashSet<>();
+                    set.add(inOutboundDetail);
+                    if (CollectionUtils.isNotEmpty(set)) {
+                        Map<String, Set<InOutboundDetail>> inOutMap = inOutboundDetailService.initInOutboundDetailByQty(set);
+                        Set<String> stringSet = inOutMap.keySet();
+                        for (String type : stringSet) {
+                            CommodityInOutbound commodityInOutbound = commodityInOutboundService.produceCommodityInOutbound(inOutMap.get(type), type);
+                            if (commodityInOutbound != null) {
+                                commodityInOutboundService.save(commodityInOutbound);
+                            }
+                        }
+                    }
+                }
+                productDao.save(product);
                 if (StringConstant.ERP.equals(product.getSourceApp())) {
                     List<Goods> goodses = goodsDao.findByProductId(product.getId());
                     Double reserve = productService.getGoodsReserveByErpReserve(product.getErpReserve(), goodses);

+ 7 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/InOutboundDetailServiceImpl.java

@@ -3,15 +3,20 @@ package com.uas.platform.b2c.prod.commodity.service.impl;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.logistics.model.InvoiceDetail;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
-import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
 import com.uas.platform.b2c.prod.commodity.dao.InOutboundDetailDao;
+import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
 import com.uas.platform.b2c.prod.commodity.service.InOutboundDetailService;
 import com.uas.platform.b2c.prod.commodity.type.InOutBoundType;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * description

+ 62 - 11
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java

@@ -13,7 +13,11 @@ import com.uas.platform.b2c.common.base.dao.CommonDao;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.common.search.util.SPage;
 import com.uas.platform.b2c.core.config.SysConf;
-import com.uas.platform.b2c.core.constant.*;
+import com.uas.platform.b2c.core.constant.IntegerConstant;
+import com.uas.platform.b2c.core.constant.ReleaseStatus;
+import com.uas.platform.b2c.core.constant.ShortConstant;
+import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
@@ -21,9 +25,44 @@ import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.PublicProductUrl;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
-import com.uas.platform.b2c.prod.commodity.dao.*;
-import com.uas.platform.b2c.prod.commodity.model.*;
-import com.uas.platform.b2c.prod.commodity.service.*;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.MatchModelDao;
+import com.uas.platform.b2c.prod.commodity.dao.PCBDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDetailDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductMatchResultDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductModifyHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductReplaceDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductStoreStatusDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
+import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
+import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
+import com.uas.platform.b2c.prod.commodity.model.MatchModel;
+import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductAttachSubmit;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
+import com.uas.platform.b2c.prod.commodity.model.ProductMatchResult;
+import com.uas.platform.b2c.prod.commodity.model.ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.model.ProductReplace;
+import com.uas.platform.b2c.prod.commodity.model.ProductStoreStatus;
+import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
+import com.uas.platform.b2c.prod.commodity.model.UASBatchPutOnProperty;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
+import com.uas.platform.b2c.prod.commodity.service.GoodsService;
+import com.uas.platform.b2c.prod.commodity.service.InOutboundDetailService;
+import com.uas.platform.b2c.prod.commodity.service.ProductAttachService;
+import com.uas.platform.b2c.prod.commodity.service.ProductPrivateService;
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
+import com.uas.platform.b2c.prod.commodity.service.UASBatchPutOnPropertyService;
 import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
 import com.uas.platform.b2c.prod.commodity.util.GoodsUtil;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
@@ -90,7 +129,16 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -2015,15 +2063,17 @@ public class ProductServiceImpl implements ProductService {
                     @Override
                     public void run() {
                         List<Product> productList = productDao.findByCmpUuId(component.getUuid());
-                        List<Product> list = new ArrayList<>();
+                        Set<Product> set = new HashSet<>();
                         List<Long> ids = new ArrayList<>();
                         for (Product product : productList) {
                             if (!StringUtils.isEmpty(component.getAttach())) {
+                                product.setAttachment(component.getAttach());
+                                set.add(product);
                                 ids.add(product.getId());
                             }
-                            if (StringUtils.isEmpty(product.getSpec()) && !StringUtils.isEmpty(component.getSpec())) {
+                            if ((StringUtils.isEmpty(product.getSpec()) && !StringUtils.isEmpty(component.getSpec()))) {
                                 product.setSpec(component.getSpec());
-                                list.add(product);
+                                set.add(product);
                             }
                         }
                         if (CollectionUtils.isNotEmpty(ids)) {
@@ -2050,8 +2100,8 @@ public class ProductServiceImpl implements ProductService {
                                 productPrivateDao.save(productPrivatelist);
                             }
                         }
-                        if (CollectionUtils.isNotEmpty(list)) {
-                            productDao.save(list);
+                        if (CollectionUtils.isNotEmpty(set)) {
+                            productDao.save(set);
                         }
                         goodsService.updateGoodsByComponent(component);
                     }
@@ -2172,7 +2222,7 @@ public class ProductServiceImpl implements ProductService {
     @Override
     public void saveByJdbcTemplate(List<ReleaseProductByBatch> list) {
         if (CollectionUtils.isNotEmpty(list)) {
-            jdbcTemplate.batchUpdate("insert into products(pr_code,pr_cmpimg,pr_enuu,pr_brand,pr_cmpcode,pr_cmpuuid,pr_kind,pr_kindid,pr_pcmpcode,pr_pbrand,pr_pbranden,pr_pbrandid,pr_pbranduuid,pr_standard,pr_create_time,pr_spec,pr_title,pr_issale, pr_price, pr_minpack, pr_packaging, pr_reserve) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
+            jdbcTemplate.batchUpdate("insert into products(pr_code,pr_cmpimg,pr_enuu,pr_brand,pr_cmpcode,pr_cmpuuid,pr_kind,pr_kindid,pr_pcmpcode,pr_pbrand,pr_pbranden,pr_pbrandid,pr_pbranduuid,pr_standard,pr_create_time,pr_spec,pr_title,pr_issale, pr_price, pr_minpack, pr_packaging, pr_reserve,pr_attachment) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
                     list, list.size(), new ParameterizedPreparedStatementSetter<ReleaseProductByBatch>() {
 
                         @Override
@@ -2199,6 +2249,7 @@ public class ProductServiceImpl implements ProductService {
                             ps.setObject(20, t.getMinPackage());
                             ps.setObject(21, t.getPackaging());
                             ps.setObject(22, t.getReserve());
+                            ps.setObject(23, t.getAttach());
                         }
                     });
         } else {

+ 224 - 213
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java

@@ -10,10 +10,36 @@ import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.core.utils.RegexConstant;
 import com.uas.platform.b2c.core.utils.StringUtilB2C;
-import com.uas.platform.b2c.prod.commodity.constant.*;
-import com.uas.platform.b2c.prod.commodity.dao.*;
-import com.uas.platform.b2c.prod.commodity.model.*;
-import com.uas.platform.b2c.prod.commodity.service.*;
+import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
+import com.uas.platform.b2c.prod.commodity.constant.ErrorInfoConstant;
+import com.uas.platform.b2c.prod.commodity.constant.ModifyConstant;
+import com.uas.platform.b2c.prod.commodity.constant.ShortConstant;
+import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
+import com.uas.platform.b2c.prod.commodity.constant.UploadConstant;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.dao.PCBDao;
+import com.uas.platform.b2c.prod.commodity.dao.PcbPropertyvalueDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.ReleaseProductByBatchDao;
+import com.uas.platform.b2c.prod.commodity.model.CommodityInOutbound;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
+import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
+import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
+import com.uas.platform.b2c.prod.commodity.model.PCB;
+import com.uas.platform.b2c.prod.commodity.model.PCBPropertyValue;
+import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
+import com.uas.platform.b2c.prod.commodity.service.CommodityInOutboundService;
+import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
+import com.uas.platform.b2c.prod.commodity.service.GoodsService;
+import com.uas.platform.b2c.prod.commodity.service.InOutboundDetailService;
+import com.uas.platform.b2c.prod.commodity.service.ProductPrivateService;
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
+import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
 import com.uas.platform.b2c.prod.commodity.util.GoodsUtil;
 import com.uas.platform.b2c.prod.commodity.util.SheetUtil;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandInfoDao;
@@ -38,10 +64,13 @@ import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.HashedMap;
-import org.apache.log4j.Logger;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFDateUtil;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.dao.DataAccessException;
@@ -68,7 +97,16 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.regex.Matcher;
@@ -109,9 +147,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	@Autowired
 	private RestTemplate restTemplate;
 
-	@Autowired
-	private ProductPrivateDao productPrivateDao;
-
     @Autowired
     private ProductPersonDao productPersonDao;
 
@@ -127,9 +162,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	@Autowired
 	private PcbPropertyvalueDao pcbPropertyvalueDao;
 
-	@Autowired
-	private V_ProductPrivateDao v_productPrivateDao;
-
 	@Autowired
 	private  ProductService productService;
 
@@ -145,9 +177,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	@Autowired
 	private InOutboundDetailService inOutboundDetailService;
 
-
-	private final Logger logger = Logger.getLogger(getClass());
-
 	/**
 	 * 控制任务提交速度的线程池
 	 */
@@ -286,46 +315,60 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		} else {
 			strCount = productReleaseValid(enUU, batch);
 		}
-		Integer filter = 0, failure = 0, success = 0;
 		if (!StringUtilB2C.isEmpty(strCount)) {
-			String[] split = strCount.split(SplitChar.HYPHEN);
-            if (split.length == 3) {
-                filter = Integer.valueOf(split[0]);
-                failure = Integer.valueOf(split[1]);
-                success = Integer.valueOf(split[2]);
-            } else {
-                //上面的代码只能在正式上获取到返回值,为了在测试上执行,增加获取结果的代码
-                Long userUU = SystemSession.getUser().getUserUU();
-                filter = releaseProductByBatchDao.getCountOfImportFail(userUU, batch, failCode);
-                failure = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.failure.value());
-                success = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.success.value());
-            }
+			checkReleaseCount(modelMap, strCount, batch);
 		}
 		if (!isAPerson && !isPcb) {
 			String publish = publishByBatch(batch, isPcb, ignoreImport);
 			modelMap.put("publish", publish);
 		}
 		modelMap.put("total", total);
-		modelMap.put("success", success);
-		modelMap.put("failure", failure);
-		modelMap.put("filter", filter);
 		modelMap.put("batch", batch);
 		return modelMap;
 	}
 
+    /**
+     * 统计批量上传数据相关
+     *
+     * @param modelMap ModelMap
+     * @param strCount
+     * @param batch
+     */
+    @Override
+    public void checkReleaseCount(ModelMap modelMap, String strCount, String batch) {
+        Integer filter, failure, success;
+        String[] split = strCount.split(SplitChar.HYPHEN);
+        int splitIndex = 3;
+        if (split.length == splitIndex) {
+            filter = Integer.valueOf(split[0]);
+            failure = Integer.valueOf(split[1]);
+            success = Integer.valueOf(split[2]);
+        } else {
+            //上面的代码只能在正式上获取到返回值,为了在测试上执行,增加获取结果的代码
+            Long userUU = SystemSession.getUser().getUserUU();
+            filter = releaseProductByBatchDao.getCountOfImportFail(userUU, batch, failCode);
+            failure = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.failure.value());
+            success = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.success.value());
+        }
+        modelMap.put("success", success);
+        modelMap.put("failure", failure);
+        modelMap.put("filter", filter);
+    }
+
 	/**
 	 * 判断是存在相同的信息
 	 * @param releaseProductByBatchs
 	 */
-	private void judgeSameReleaseProductByBatch(List<ReleaseProductByBatch> releaseProductByBatchs) {
+	@Override
+	public void judgeSameReleaseProductByBatch(List<ReleaseProductByBatch> releaseProductByBatchs) {
 		if (CollectionUtils.isEmpty(releaseProductByBatchs)) {
 			return ;
 		}
-		for(int i = releaseProductByBatchs.size() - 1; i > -1; i--) {
+		for (int i = releaseProductByBatchs.size() - 1; i > -1; i--) {
 			ReleaseProductByBatch releaseProductByBatch = releaseProductByBatchs.get(i);
 			for (int j = i - 1; j > -1; j--) {
 				ReleaseProductByBatch byBatch = releaseProductByBatchs.get(j);
-				if(releaseProductByBatch.compareSameProductTagInfo(byBatch)) {
+				if (releaseProductByBatch.compareSameProductTagInfo(byBatch)) {
 					releaseProductByBatch.setTag("");
 					releaseProductByBatch.setTagstr("");
 					releaseProductByBatch.addErrmsg(ErrorInfoConstant.REPEAT_IN_EXCEL.getInfo());
@@ -339,7 +382,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 	}
 
-
 	/**
 	 * 根据上传的信息,查看是否在个人物料库已存在。
 	 * @param releaseProductByBatchs
@@ -380,7 +422,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @param batch 批次
 	 * @return 验证结果
 	 */
-	private String productReleaseValid(Long enUU, String batch) {
+	@Override
+	public String productReleaseValid(Long enUU, String batch) {
         if (enUU == null || StringUtilB2C.isEmpty(batch)) {
             return "0";
         }
@@ -489,13 +532,22 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		if (CollectionUtils.isEmpty(batchList)) {
 			return result;
 		}
+		List<Long> productIds = new ArrayList<>(batchList.size());
 		List<String> batchCodes = new ArrayList<>();
 		for (ReleaseProductByBatch aBatch : batchList) {
+			if (!StringUtilB2C.isEmpty(aBatch.getBatchCode()) && RegexConstant.isNumber(aBatch.getBatchCode())) {
+				productIds.add(Long.parseLong(aBatch.getBatchCode()));
+				continue;
+			}
 			if (!StringUtilB2C.isEmpty(aBatch.getBatchCode())) {
 				batchCodes.add(aBatch.getBatchCode());
 			}
 		}
-
+		List<Product> products = new ArrayList<>();
+		if (CollectionUtils.isNotEmpty(productIds)) {
+			products = productDao.findProductInIds(productIds);
+		}
+		Product newProduct = null;
 		List<Goods> goodses = new ArrayList<>();
 		if (CollectionUtils.isNotEmpty(batchCodes)) {
 			goodses = goodsService.findGoodsByBatchCodes(batchCodes);
@@ -504,49 +556,90 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		List<GoodsHistory> goodsHistoryList = new ArrayList<>();
 		for (ReleaseProductByBatch aBatch : batchList) {
 			newGoods = null;
-			for (Goods goods : goodses) {
-				if (goods.getBatchCode().equals(aBatch.getBatchCode())) {
-					aBatch.setB2cBranden(goods.getBrandNameEn());
-					aBatch.setBrandNameEn(goods.getBrandNameEn());
-					aBatch.setKindName(goods.getKindNameCn());
-					aBatch.setB2cCode(goods.getCode());
-					aBatch.setCode(goods.getCode());
-					aBatch.setCurrency(goods.getCurrencyName());
-					if (goods.getUuid() == null) {
-						aBatch.setReleaseCode(ReleaseStatus.failure.value());
-						aBatch.setReleaseStatus(ReleaseStatus.failure.getPhrase());
+			if (!RegexConstant.isNumber(aBatch.getBatchCode())) {
+				for (Goods goods : goodses) {
+					if (goods.getBatchCode().equals(aBatch.getBatchCode())) {
+						aBatch.setB2cBranden(goods.getBrandNameEn());
+						aBatch.setBrandNameEn(goods.getBrandNameEn());
+						aBatch.setKindName(goods.getKindNameCn());
+						aBatch.setB2cCode(goods.getCode());
+						aBatch.setCode(goods.getCode());
+						aBatch.setCurrency(goods.getCurrencyName());
+						if (goods.getUuid() == null) {
+							aBatch.setReleaseCode(ReleaseStatus.failure.value());
+							aBatch.setReleaseStatus(ReleaseStatus.failure.getPhrase());
+						}
+						fillInGoods(goods, aBatch);
+						newGoods = goods;
+						break;
 					}
-					fillInGoods(goods, aBatch);
-					newGoods = goods;
-					break;
 				}
-			}
-			if (newGoods == null) {
-				newGoods = new Goods();
-				TradeDeliveryDelayTime delayTime = getDelayTime(aBatch);
-				newGoods.setGoodsByReleaseProductByBatch(aBatch, delayTime);
-				goodsHistoryList.add(goodsHistoryService.converTGoodsHist(newGoods, GoodsHistory.OperateType.Publish.getPhrase(), false));
-			}
-			ResultMap resultMap = goodsService.updateGoods(newGoods);
-			if (resultMap.isSuccess()) {
-				Goods goods1 = (Goods) resultMap.getData();
-				if (Status.REMOVED.value() == aBatch.getStatus() && Status.REMOVED.value() != goods1.getStatus()) {
-					ResultMap offMap = goodsService.offShelfGoodsByProvider(newGoods.getBatchCode(), null, false);
-					if (offMap.isSuccess()) {
-						result++;
+				if (newGoods == null) {
+					newGoods = new Goods();
+					TradeDeliveryDelayTime delayTime = getDelayTime(aBatch);
+					newGoods.setGoodsByReleaseProductByBatch(aBatch, delayTime);
+					goodsHistoryList.add(goodsHistoryService.converTGoodsHist(newGoods, GoodsHistory.OperateType.Publish.getPhrase(), false));
+				}
+				ResultMap resultMap = goodsService.updateGoods(newGoods);
+				if (resultMap.isSuccess()) {
+					Goods goods1 = (Goods) resultMap.getData();
+					if (Status.REMOVED.value() == aBatch.getStatus() && Status.REMOVED.value() != goods1.getStatus()) {
+						ResultMap offMap = goodsService.offShelfGoodsByProvider(newGoods.getBatchCode(), null, false);
+						if (offMap.isSuccess()) {
+							result++;
+						} else {
+							aBatch.setErrmsg(offMap.getMessage());
+							aBatch.setReleaseCode(ReleaseStatus.lack_info.value());
+							aBatch.setReleaseStatus(ReleaseStatus.lack_info.getPhrase());
+						}
 					} else {
-						aBatch.setErrmsg(offMap.getMessage());
-						aBatch.setReleaseCode(ReleaseStatus.lack_info.value());
-						aBatch.setReleaseStatus(ReleaseStatus.lack_info.getPhrase());
+						result++;
 					}
 				} else {
-					result++;
+					aBatch.setErrmsg(resultMap.getMessage());
+					aBatch.setReleaseCode(ReleaseStatus.lack_info.value());
+					aBatch.setReleaseStatus(ReleaseStatus.lack_info.getPhrase());
 				}
 			} else {
-				aBatch.setErrmsg(resultMap.getMessage());
-				aBatch.setReleaseCode(ReleaseStatus.lack_info.value());
-				aBatch.setReleaseStatus(ReleaseStatus.lack_info.getPhrase());
+				for (Product product : products) {
+					if (product.getId().equals(Long.parseLong(aBatch.getBatchCode()))) {
+						aBatch.setB2cCode(product.getPcmpcode());
+						aBatch.setProductNum(product.getProdNum());
+						aBatch.setBrandNameEn(product.getBrand());
+						aBatch.setKindName(product.getProdName());
+						aBatch.setCurrency(product.getCurrency());
+						aBatch.setProductNum(product.getProdNum());
+						InOutboundDetail inOutboundDetail = new InOutboundDetail(newProduct);
+						fillInProduct(product, aBatch, inOutboundDetail);
+						newProduct = product;
+						Set<InOutboundDetail> set = new HashSet<>();
+						set.add(inOutboundDetail);
+						if (CollectionUtils.isNotEmpty(set)) {
+							Map<String, Set<InOutboundDetail>> inOutMap = inOutboundDetailService.initInOutboundDetailByQty(set);
+							Set<String> stringSet = inOutMap.keySet();
+							for (String type : stringSet) {
+								CommodityInOutbound commodityInOutbound = commodityInOutboundService.produceCommodityInOutbound(inOutMap.get(type), type);
+								if (commodityInOutbound != null) {
+									commodityInOutboundService.save(commodityInOutbound);
+								}
+							}
+						}
+						productDao.save(newProduct);
+						result++;
+					}
+				}
+				if (StringUtils.isEmpty(newProduct)) {
+					aBatch.setErrmsg("物料SKU码有误");
+					aBatch.setReleaseCode(ReleaseStatus.lack_info.value());
+					aBatch.setReleaseStatus(ReleaseStatus.lack_info.getPhrase());
+				} else {
+					Goods needGoods = new Goods();
+					needGoods.setProductInfo(newProduct);
+					goodsService.setGoodsDefault(needGoods);
+					goodsDao.save(needGoods);
+				}
 			}
+
 		}
 		return result;
 	}
@@ -668,6 +761,43 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		goods.setStatus(aBatch.getStatus());
 	}
 
+	private void fillInProduct(Product product, ReleaseProductByBatch aBatch, InOutboundDetail inOutboundDetail) {
+		if (!StringUtils.isEmpty(aBatch.getSpec())) {
+			product.setSpec(aBatch.getSpec());
+		}
+		if (!StringUtils.isEmpty(aBatch.getPackaging())) {
+			product.setPackaging(aBatch.getPackaging());
+		}
+		if (!StringUtils.isEmpty(aBatch.getSelfMinDelivery())) {
+			product.setMinDelivery(aBatch.getSelfMinDelivery());
+		}
+		if (!StringUtils.isEmpty(aBatch.getSelfMaxDelivery())) {
+			product.setMaxDelivery(aBatch.getSelfMaxDelivery());
+		}
+		if (!StringUtils.isEmpty(aBatch.getBreakUp())) {
+			product.setBreakUp(aBatch.getBreakUp());
+		}
+		if (!StringUtils.isEmpty(aBatch.getMinPackage())) {
+			product.setMinPackQty(aBatch.getMinPackage());
+		} else {
+			product.setMinPackQty(1d);
+		}
+		if (!StringUtils.isEmpty(aBatch.getCostPrice())) {
+			product.setPrice(aBatch.getCostPrice());
+		}
+		if (!StringUtils.isEmpty(aBatch.getReserve())) {
+			product.setErpReserve(aBatch.getReserve());
+			Double qty = NumberUtil.sub(aBatch.getReserve(), product.getErpReserve());
+			if (NumberUtil.compare(qty, DoubleConstant.zero) != 0) {
+				//做出入库记录
+				product.setErpReserve(aBatch.getReserve());
+				inOutboundDetail = new InOutboundDetail(product);
+				inOutboundDetail.setQty(qty);
+				inOutboundDetail.setPrice(aBatch.getCostPrice());
+			}
+		}
+	}
+
 	private StoreIn getModifyStoreInfo(Object value, StoreIn self, StoreIn consignment) {
 		List<String> sellList = Arrays.asList("自营", "寄售");
 		if (StringUtils.isEmpty(value) || !sellList.contains(StringUtilB2C.getStr(value))) {
@@ -857,21 +987,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 	}
 
-	/**
-	 * 验证该产品自定义标签是否重复
-	 * @param aProduct 单个产品
-	 * @param productSet 产品列表
-	 */
-	private Boolean validateTagInfo(ReleaseProductByBatch aProduct, List<ReleaseProductByBatch> productSet) {
-		for (ReleaseProductByBatch each : productSet) {
-			if (aProduct.getBrandNameEn().equals(each.getBrandNameEn()) && aProduct.getCode().equals(each.getCode())
-					&& aProduct.getTag().equals(each.getTag())) {
-				return true;
-			}
-		}
-		return false;
-	}
-
 	/**
 	 *	验证该模板是否是商城模板
 	 * @param headerRow 首行
@@ -879,7 +994,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @param currency	币别
 	 * @param isPcb 是否pcb模块
 	 */
-	private void validateTemplate(Row headerRow, int colNum, String currency, boolean isAPerson, boolean isPcb) {
+	@Override
+	public void validateTemplate(Row headerRow, int colNum, String currency, boolean isAPerson, boolean isPcb) {
 		if (isAPerson) {
 			if (colNum == UploadConstant.MAX_TOTAL_COLUMN_PERSON) {
 				Cell errorCell = headerRow.getCell(UploadConstant.MAX_TOTAL_COLUMN_PERSON - 1);
@@ -939,11 +1055,17 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @param rowNum 行号
 	 * @return
 	 */
-	private boolean validateExcelData(Row row, int rowNum) {
+	@Override
+	public boolean validateExcelData(Row row, int rowNum) {
 		Object codeValue = readWorkBookCell(row.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
 				rowNum, UploadConstant.PRODUCT_CODE);
-		if ("只能填数字、英文、英文特殊符号".equals(StringUtilB2C.getStr(codeValue)) || "SJ-S-112DMH(举例)".equals(StringUtilB2C.getStr(codeValue)))
-			return false;
+		// 内容格式提示
+		String formatTip = "只能填数字、英文、英文特殊符号";
+		// 举例提示
+		String exampleTip = "SJ-S-112DMH(举例)";
+		if (formatTip.equals(StringUtilB2C.getStr(codeValue)) || exampleTip.equals(StringUtilB2C.getStr(codeValue))) {
+            return false;
+        }
 		return true;
 	}
 
@@ -982,52 +1104,13 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 	}
 
-	/**
-	 * 分析分段的价格
- 	 */
-	private List<GoodsQtyPrice> setPricesQty(List<GoodsQtyPrice> prices, ReleaseProductByBatch productByBatch) {
-		GoodsQtyPrice[] array = new GoodsQtyPrice[prices.size()];
-		prices.toArray(array);
-		Arrays.sort(array, new Comparator<GoodsQtyPrice>() {
-			@Override
-			public int compare(GoodsQtyPrice o1, GoodsQtyPrice o2) {
-				return NumberUtil.compare(o1.getEnd(), o2.getEnd());
-			}
-		});
-		List<GoodsQtyPrice> prices1 = Arrays.asList(array);
-		List<GoodsQtyPrice> prices2 = new ArrayList<>();
-		for (int j = 0; j < prices1.size(); j++) {
-			GoodsQtyPrice price = prices1.get(j);
-			if (j == 0) {
-				if(NumberUtil.compare(price.getEnd(), DoubleConstant.minReserve) > -1) {
-					price.setStart(DoubleConstant.minReserve);
-					prices2.add(price);
-				}
-			} else if (j < prices1.size() - 1) {
-				GoodsQtyPrice qtyPrice = prices1.get(j - 1);
-				if(NumberUtil.compare(qtyPrice.getEnd(), price.getEnd()) < 0 ) {
-					price.setStart(NumberUtil.add(qtyPrice.getEnd(), 1.0d));
-					prices2.add(price);
-				}
-			} else if (j == prices1.size() - 1) {
-				price.setEnd(DoubleConstant.maxMinPackageQty);
-				if (prices1.size() == 1) {
-					price.setStart(DoubleConstant.minReserve);
-				} else {
-					price.setStart(NumberUtil.add(prices1.get(j - 1).getEnd(), 1.0d));
-				}
-				prices2.add(price);
-			}
-		}
-		return prices2;
-	}
-
 	/**
 	 * 获取店铺的信息
 	 * @param selfSale
 	 * @return
 	 */
-	private StoreIn getStoreInfo(Boolean selfSale) {
+	@Override
+	public StoreIn getStoreInfo(Boolean selfSale) {
 		StoreIn storeIn = null;
 		if(selfSale) {
 			storeIn = storeInService.findByEnUU(SystemSession.getUser().getEnterprise().getUu());
@@ -1046,7 +1129,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @return
 	 */
 	private StoreIn getStoreIn(Boolean selfSale) {
-		StoreIn storeIn = null;
+		StoreIn storeIn;
 		if (selfSale) {
 			storeIn = storeInService.findByEnUU(SystemSession.getUser().getEnterprise().getUu());
 			if((storeIn == null) || (storeIn.getStatus() != StoreStatus.OPENED)) {
@@ -1116,41 +1199,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 	}
 
-	/**
-	 * 当分段价格为空时,设置默认分段价格
-	 * 其中分段1价格为必填项,这个是否还需要
-	 *
-	 * @param aProduct 单行数据
-	 * @param priceMaxMinPrice 最大和最小价格
-	 * @return
-	 */
-	private GoodsQtyPrice getDefaultQtyPrice(ReleaseProductByBatch aProduct, Double[] priceMaxMinPrice) {
-		GoodsQtyPrice qtyPrice = new GoodsQtyPrice();
-		qtyPrice.setStart(aProduct.getMinBuyQty());
-		if (Currency.USD.equals(aProduct.getCurrency())) {
-			Double usdMinPackPrice = aProduct.getUsdMinPackPrice();
-			if (usdMinPackPrice != null) {
-				qtyPrice.setUSDPrice(usdMinPackPrice);
-				qtyPrice.setUSDNTPrice(usdMinPackPrice);
-				priceMaxMinPrice[0] = usdMinPackPrice;
-				priceMaxMinPrice[1] = usdMinPackPrice;
-			}
-
-		} else {
-			Double rmbMinPackPrice = aProduct.getRmbMinPackPrice();
-			if (rmbMinPackPrice != null) {
-				qtyPrice.setRMBPrice(rmbMinPackPrice);
-				BigDecimal priceNum = new BigDecimal(rmbMinPackPrice);
-				BigDecimal taxNum = new BigDecimal(aProduct.getRmbTaxRate() + 1);
-				qtyPrice.setRMBNTPrice(priceNum.divide(taxNum, 6, BigDecimal.ROUND_HALF_UP).doubleValue());
-				priceMaxMinPrice[0] = rmbMinPackPrice;
-				priceMaxMinPrice[1] = rmbMinPackPrice;
-			}
-		}
-		qtyPrice.setEnd(DoubleConstant.maxMinPackageQty);
-		return qtyPrice;
-	}
-
 	/**
 	 * 初始化product信息,将excel内容转换为product字段值
 	 * @param row 行对象
@@ -1158,7 +1206,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @param rowNum 行数
 	 * @param isPcb 是否pcb模块
 	 */
-	private int convertValueToProduct(Row row, ReleaseProductByBatch aProduct, int rowNum, boolean isAPerson, boolean isPcb) {
+	@Override
+	public int convertValueToProduct(Row row, ReleaseProductByBatch aProduct, int rowNum, boolean isAPerson, boolean isPcb) {
 		// 统计为空的个数
 		int result = 0;
 		aProduct.setNum(rowNum - 2);
@@ -1168,7 +1217,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 			result += 1;
 		}
 		aProduct.setBrandEnByExcel(brandValue);
-		// pcb模块判断类目是否为商城标准品牌
+		// pcb模块判断类目是否为商城标准品牌,是则补充标准品牌信息
 		if (isPcb && !StringUtils.isEmpty(aProduct.getBrandNameEn())) {
 			List<BrandInfo> brandInfos = brandInfoDao.findByName(aProduct.getBrandNameEn());
 			if (CollectionUtils.isNotEmpty(brandInfos)) {
@@ -1177,8 +1226,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 					aProduct.setBranduuid(brandInfo.getUuid());
 					aProduct.setBrandId(brandInfo.getId());
 				}
-			} else {
-				aProduct.addErrmsg(ErrorInfoConstant.BRAND_UNSTANDARD.getInfo());
 			}
 		}
 
@@ -1266,10 +1313,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 			aProduct.setMinBuyQtyByExcel(buyQtyValue);
 
 			aProduct.setTagByExcel("");
-//			// 自定义标签不为null,则检查是否重复
-//			if (aProduct.getCode() != null && aProduct.getBrandNameEn() != null && aProduct.getTag() != null) {
-//				resetTag(aProduct);
-//			}
 
 			// 如果是pcb模块,解析尺寸、颜色、铜厚、厚度
 			if (isPcb) {
@@ -1298,38 +1341,6 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		return result;
 	}
 
-	/**
-	 * 重新设置tag标签
-	 * @param aProduct
-	 */
-	private void resetTag(ReleaseProductByBatch aProduct) {
-		Long enuu = SystemSession.getUser().getEnterprise().getUu();
-		int count = 0;
-		List<Product> productList = productDao.findMatchStandard(enuu, aProduct.getBrandNameEn(), aProduct.getCode(), IntegerConstant.YES_SHORT);
-		if (!CollectionUtils.isEmpty(productList)) {
-			if (aProduct.getBatchCode() != null) {
-				count = goodsDao.findCountByTagNotBatch(enuu, aProduct.getBatchCode(), productList.get(0).getPbranden(),
-						productList.get(0).getPcmpcode(), aProduct.getTag());
-			} else {
-				count = goodsDao.findCountByTagInGoods(enuu, productList.get(0).getPbranden(),
-						productList.get(0).getPcmpcode(), aProduct.getTag());
-			}
-
-		} else {
-			if (aProduct.getBatchCode() != null) {
-				count = goodsDao.findCountByTagNotBatch(enuu, aProduct.getBatchCode(), aProduct.getBrandNameEn(),
-						aProduct.getCode(), aProduct.getTag());
-			} else {
-				count = goodsDao.findCountByTagInGoods(enuu, aProduct.getBrandNameEn(),
-						aProduct.getCode(), aProduct.getTag());
-			}
-		}
-		// 如果在该型号品牌已有重复,则忽略该自定义标签
-		if (count != 0) {
-			aProduct.setTag(null);
-		}
-	}
-
 	/**
 	 * 初始化产品导入分段价格
 	 * @param row 行对象
@@ -1549,7 +1560,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @throws @Description:
 	 *             传入单元格,类型,返回值
 	 */
-	private Object readWorkBookCell(Cell cell, int cellType, int r, int n) {
+ 	@Override
+	public Object readWorkBookCell(Cell cell, int cellType, int r, int n) {
 		Object obj = null;
 		try {
 			if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
@@ -1561,9 +1573,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 						throw new IllegalOperatorException("读取表格中"+ (r + 1)+"行"+ (n+1)+ "列的内容错误,需要文本格式的信息");
 					}
 					String str = cell.getStringCellValue().trim();
-//					Object data = getCellData(cell);
-//					String str = data == null ? "" : data.toString();
-					if(str.indexOf("\u00A0") > -1){
+					if (str.indexOf("\u00A0") > -1){
 						  str= str.replaceAll("\u00A0", "");
 					}
 					str = StringUtilB2C.replaceTabAndLineBreak(str);
@@ -2040,6 +2050,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 			List<Product> productes = productService.findProductIdAndProdnumsByProdNums(proNums);
 			for (Product producte : productes) {
 				ProductPrivate productPrivate = new ProductPrivate(producte.getId());
+				productPrivate.setAttach(producte.getAttachment());
 				productPrivates.add(productPrivate);
 
 				prIds.add(producte.getId());

+ 2 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/api/KindController.java

@@ -228,6 +228,7 @@ public class KindController {
 	 *         {{相关的第一级类目},{相关的第二级类目},{相关的第三级类目},{相关的第四级类目}}
 	 */
 	@RequestMapping(value = "/{brandId}/pcbkindinfos", method = RequestMethod.GET)
+	@Deprecated
 	public List<List<KindInfo>> getKindInfosByBrandId(@PathVariable("brandId") Long brandId) {
 		return kindService.findByPCBBrandId(brandId);
 	}
@@ -239,6 +240,7 @@ public class KindController {
 	 * @return 物料属性信息
 	 */
 	@RequestMapping(value = "/pcbproperty/{productId}",method = RequestMethod.GET)
+	@Deprecated
 	public List<PCBPropertyValue> getPCBProperty(@PathVariable("productId") Long productId) {
 		return kindService.findByPCBProductId(productId);
 	}

+ 8 - 1
src/main/java/com/uas/platform/b2c/prod/store/model/StoreApply.java

@@ -6,7 +6,14 @@ import com.uas.platform.b2c.core.utils.JacksonUtils;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;

+ 7 - 1
src/main/java/com/uas/platform/b2c/prod/store/service/impl/StoreApplyServiceImpl.java

@@ -7,7 +7,13 @@ import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.UuidUtils;
 import com.uas.platform.b2c.prod.store.dao.StoreApplyDao;
 import com.uas.platform.b2c.prod.store.dao.StoreBrandInfoDao;
-import com.uas.platform.b2c.prod.store.model.*;
+import com.uas.platform.b2c.prod.store.model.EnterpriseSimple;
+import com.uas.platform.b2c.prod.store.model.Qualification;
+import com.uas.platform.b2c.prod.store.model.QualificationType;
+import com.uas.platform.b2c.prod.store.model.StoreApply;
+import com.uas.platform.b2c.prod.store.model.StoreBrandInfo;
+import com.uas.platform.b2c.prod.store.model.StoreIn;
+import com.uas.platform.b2c.prod.store.model.StoreType;
 import com.uas.platform.b2c.prod.store.service.StoreApplyService;
 import com.uas.platform.b2c.prod.store.service.StoreInService;
 import com.uas.platform.b2c.trade.support.CodeType;

+ 18 - 2
src/main/java/com/uas/platform/b2c/prod/store/service/impl/StoreInServiceImpl.java

@@ -26,7 +26,13 @@ import com.uas.platform.b2c.prod.store.dao.StoreApplyDao;
 import com.uas.platform.b2c.prod.store.dao.StoreBrandInfoDao;
 import com.uas.platform.b2c.prod.store.dao.StoreInDao;
 import com.uas.platform.b2c.prod.store.exception.EmptyParameterException;
-import com.uas.platform.b2c.prod.store.model.*;
+import com.uas.platform.b2c.prod.store.model.EnterpriseSimple;
+import com.uas.platform.b2c.prod.store.model.Qualification;
+import com.uas.platform.b2c.prod.store.model.StoreApply;
+import com.uas.platform.b2c.prod.store.model.StoreBrandInfo;
+import com.uas.platform.b2c.prod.store.model.StoreIn;
+import com.uas.platform.b2c.prod.store.model.StoreStatus;
+import com.uas.platform.b2c.prod.store.model.StoreType;
 import com.uas.platform.b2c.prod.store.service.StoreInService;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
 import com.uas.platform.b2c.trade.support.ResultMap;
@@ -58,7 +64,17 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.servlet.http.HttpServletRequest;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
 
 /**
  * 店铺业务实现类

+ 12 - 2
src/main/java/com/uas/platform/b2c/trade/order/controller/OrderController.java

@@ -30,14 +30,24 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
 import javax.management.OperationsException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import static com.uas.platform.b2c.core.utils.StringUtilB2C.decodeValue;
 

+ 125 - 0
src/main/java/com/uas/platform/b2c/trade/order/controller/PurchaseProductController.java

@@ -0,0 +1,125 @@
+package com.uas.platform.b2c.trade.order.controller;
+
+import com.uas.platform.b2c.common.base.model.FileUpload;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.core.support.view.JxlsExcelView;
+import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
+import com.uas.platform.b2c.trade.order.service.PurchaseProductService;
+import com.uas.platform.b2c.trade.order.support.AjaxUtil;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.io.*;
+
+/**
+ * 买家中心物料相关
+ *
+ * @author hejq
+ * @date 2018-09-18 9:30
+ * @version 1.0
+ */
+@RequestMapping("/trade/purchaseProduct")
+@RestController("trade.PurchaseProductController")
+public class PurchaseProductController {
+
+    /**
+     * 系统操作日志
+     */
+    private static final UsageBufferedLogger LOGGER = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    @Autowired
+    private PurchaseProductService purchaseProductService;
+
+    @Autowired
+    private ReleaseProductByBatchService releaseProductByBatchService;
+
+    /**
+     * 下载Excel批量上传个人物料模板
+     *
+     * @return model and view
+     */
+    @RequestMapping(value = "/release/template", method = RequestMethod.GET)
+    public ModelAndView releasePersonalProductTemplate() {
+        LOGGER.log("买家物料", "下载Excel批量上传个人物料模板");
+        ModelAndView modelAndView = new ModelAndView();
+        modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/trade/releaseByBatch-person", "导入个人产品库-优软商城"));
+        return modelAndView;
+    }
+
+    /**
+     * 通过excel批量导入个人物料
+     *
+     * @param uploadItem the upload item 上传的文件
+     * @param ignoreImport 是覆盖导入,还是忽略导入 1是忽略导入,0是覆盖导入
+     * @return ResultMap
+     * @see ResultMap
+     */
+    @RequestMapping(value = "/personal/release/excel", method = RequestMethod.POST)
+    public ResultMap releasePersonalProductByExcel(FileUpload uploadItem, Integer ignoreImport) {
+        CommonsMultipartFile file = uploadItem.getFile();
+        if (null == file) {
+            return ResultMap.error(new IllegalOperatorException("请上传excel文件"));
+        }
+        String fileName = file.getOriginalFilename();
+        // 获取EXCEL后缀格式
+        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
+        InputStream inputStream;
+        Workbook workbook;
+        try {
+            inputStream = file.getInputStream();
+            // 根据表格格式分开处理
+            if (JxlsExcelView.EXCEL_XLS.equals(suffix)) {
+                workbook = new HSSFWorkbook(inputStream);
+            } else if (JxlsExcelView.EXCEL_XLSX.equals(suffix)) {
+                workbook = new XSSFWorkbook(inputStream);
+            } else {
+                return ResultMap.error(new IllegalOperatorException("文件格式不正确!请上传.xls或.xlsx格式的文件"));
+            }
+            ResultMap resultMap = purchaseProductService.releasePersonalProductByExcel(workbook, ignoreImport);
+            LOGGER.log("买家物料", "通过Excel批量上传个人物料-优软商城");
+            return resultMap;
+        } catch (IOException e) {
+            return ResultMap.error(e);
+        }
+    }
+
+    /**
+     * 导出失败的个人物料
+     *
+     * @param batch   the batch 批次号
+     * @param request the request 请求对象
+     * @param isAjax  the is ajax 是否是ajax 请求
+     * @return model and view
+     */
+    @RequestMapping(value = "/release/failure/xls", method = RequestMethod.GET)
+    public ModelAndView exportReleaseByBatchError(String batch, HttpServletRequest request, @RequestParam(defaultValue = "false") Boolean isAjax) {
+        HttpSession session = request.getSession();
+        ModelAndView modelAndView = AjaxUtil.checkIsAjax(session, isAjax);
+        if (!modelAndView.isEmpty()) {
+            return modelAndView;
+        }
+        Object loading = session.getAttribute("load-error-ing");
+        if (loading == null || !Boolean.valueOf(loading.toString())) {
+            session.setAttribute("load-error-ing", true);
+        }
+        modelAndView.addObject("data", releaseProductByBatchService.findFailureReleaseProductByBatch(batch));
+        String url = "classpath:jxls-tpl/trade/releaseByBatchError-person";
+        modelAndView.setView(new JxlsExcelView(url, "导出失败的个人物料-优软商城"));
+        LOGGER.log("买家物料", "以Excel形式导出失败的个人物料");
+        session.setAttribute("load-error-ing", false);
+        return modelAndView;
+    }
+}

+ 20 - 3
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -14,9 +14,26 @@ import com.uas.platform.core.model.EncodingRulesConstant;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
-import java.util.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 
 /**
  * 订单

+ 1 - 1
src/main/java/com/uas/platform/b2c/trade/order/model/OrderDetail.java

@@ -24,7 +24,7 @@ import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 import javax.persistence.Transient;
-import java.io.Serializable;
+import java.io.*;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;

+ 1 - 1
src/main/java/com/uas/platform/b2c/trade/order/model/OrderIndex.java

@@ -22,7 +22,7 @@ import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
 import javax.persistence.Table;
 import javax.persistence.Transient;
-import java.io.Serializable;
+import java.io.*;
 import java.util.Date;
 import java.util.Set;
 

+ 1 - 1
src/main/java/com/uas/platform/b2c/trade/order/model/OrderSimpleInfo.java

@@ -1,6 +1,6 @@
 package com.uas.platform.b2c.trade.order.model;
 
-import java.io.Serializable;
+import java.io.*;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 

+ 13 - 2
src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java

@@ -10,8 +10,19 @@ import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.*;
-import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;

+ 0 - 2
src/main/java/com/uas/platform/b2c/trade/order/service/OrderService.java

@@ -17,8 +17,6 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 
 import java.util.Date;
 import java.util.List;

+ 23 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/PurchaseProductService.java

@@ -0,0 +1,23 @@
+package com.uas.platform.b2c.trade.order.service;
+
+import com.uas.platform.b2c.trade.support.ResultMap;
+import org.apache.poi.ss.usermodel.Workbook;
+
+/**
+ * 买家中心物料相关
+ *
+ * @author hejq
+ * @date 2018-09-18 10:09
+ */
+public interface PurchaseProductService {
+
+    /**
+     * 通过excel批量导入个人物料
+     *
+     * @param workbook Workbook 对象
+     * @param ignoreImport 是覆盖导入,还是忽略导入 1是忽略导入,0是覆盖导入
+     * @return ResultMap
+     * @see ResultMap
+     */
+    ResultMap releasePersonalProductByExcel(Workbook workbook, Integer ignoreImport);
+}

+ 9 - 2
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderDetailServiceImpl.java

@@ -18,7 +18,10 @@ import com.uas.platform.b2c.trade.order.StringConstant.Currency;
 import com.uas.platform.b2c.trade.order.dao.OrderDao;
 import com.uas.platform.b2c.trade.order.dao.OrderDetailDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDetailDao;
-import com.uas.platform.b2c.trade.order.model.*;
+import com.uas.platform.b2c.trade.order.model.Order;
+import com.uas.platform.b2c.trade.order.model.OrderDetail;
+import com.uas.platform.b2c.trade.order.model.Purchase;
+import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
 import com.uas.platform.b2c.trade.order.service.OrderDetailService;
 import com.uas.platform.b2c.trade.order.service.OrderService;
 import com.uas.platform.b2c.trade.order.type.ResultMapType;
@@ -40,7 +43,11 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * 订单明细业务实现类

+ 25 - 4
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -40,10 +40,12 @@ import com.uas.platform.b2c.fa.settlement.service.BillSubmitService;
 import com.uas.platform.b2c.fa.settlement.service.ExchangeRateService;
 import com.uas.platform.b2c.logistics.dao.AddressDao;
 import com.uas.platform.b2c.logistics.dao.PickUpAddressDao;
-import com.uas.platform.b2c.logistics.model.*;
+import com.uas.platform.b2c.logistics.model.Address;
+import com.uas.platform.b2c.logistics.model.Invoice;
+import com.uas.platform.b2c.logistics.model.PickUpAddress;
+import com.uas.platform.b2c.logistics.service.InvoiceService;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
-import com.uas.platform.b2c.logistics.service.InvoiceService;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
@@ -67,7 +69,15 @@ import com.uas.platform.b2c.trade.order.dao.OrderDao;
 import com.uas.platform.b2c.trade.order.dao.OrderDetailDao;
 import com.uas.platform.b2c.trade.order.dao.OrderIndexDetailDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
-import com.uas.platform.b2c.trade.order.model.*;
+import com.uas.platform.b2c.trade.order.model.MessageNotifyPersonalManagement;
+import com.uas.platform.b2c.trade.order.model.Order;
+import com.uas.platform.b2c.trade.order.model.OrderDetail;
+import com.uas.platform.b2c.trade.order.model.OrderIndex;
+import com.uas.platform.b2c.trade.order.model.OrderIndexDetail;
+import com.uas.platform.b2c.trade.order.model.OrderSimpleInfo;
+import com.uas.platform.b2c.trade.order.model.Purchase;
+import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
+import com.uas.platform.b2c.trade.order.model.TradeProofing;
 import com.uas.platform.b2c.trade.order.service.MessageNotifyPersonalManagementService;
 import com.uas.platform.b2c.trade.order.service.OrderDetailService;
 import com.uas.platform.b2c.trade.order.service.OrderService;
@@ -116,7 +126,18 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 

+ 358 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseProductServiceImpl.java

@@ -0,0 +1,358 @@
+package com.uas.platform.b2c.trade.order.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2c.core.constant.ReleaseStatus;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.core.utils.StringUtilB2C;
+import com.uas.platform.b2c.prod.commodity.constant.ErrorInfoConstant;
+import com.uas.platform.b2c.prod.commodity.constant.UploadConstant;
+import com.uas.platform.b2c.prod.commodity.dao.ReleaseProductByBatchDao;
+import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
+import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
+import com.uas.platform.b2c.prod.commodity.util.SheetUtil;
+import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
+import com.uas.platform.b2c.trade.order.service.PurchaseProductService;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.ps.entity.Product;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 买家中心物料相关
+ *
+ * @author hejq
+ * @date 2018-09-18 10:09
+ */
+@Service
+public class PurchaseProductServiceImpl implements PurchaseProductService {
+
+    @Autowired
+    private ReleaseProductByBatchService releaseProductByBatchService;
+
+    @Autowired
+    private CreateNumberService createNumberService;
+
+    @Autowired
+    private ReleaseProductByBatchDao releaseProductByBatchDao;
+
+    /**
+     * 物料服务访问路径
+     */
+    @Value("#{sys.productServiceIp}")
+    private String productServiceIp;
+
+    /**
+     * HTTP请求成功标志
+     */
+    static final String TRUE_SIGN = "true";
+
+    /**
+     * HTTP请求成功返回值
+     */
+    static final String SUCCESS_CODE = "success";
+
+    /**
+     * 程序执行日志
+     */
+    private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(PurchaseProductServiceImpl.class);
+
+    /**
+     * 通过excel批量导入个人物料
+     *
+     * @param workbook     Workbook 对象
+     * @param ignoreImport 是覆盖导入,还是忽略导入 1是忽略导入,0是覆盖导入
+     * @return ResultMap
+     * @see ResultMap
+     */
+    @Override
+    public ResultMap releasePersonalProductByExcel(Workbook workbook, Integer ignoreImport) {
+        // 先判断表格式
+        Sheet sheet = workbook.getSheetAt(0);
+        if (sheet.getRow(0) == null) {
+            return ResultMap.error(new IllegalOperatorException("表格模板不正确!请重新下载最新模板"));
+        }
+        int rowNum = SheetUtil.getSheetLastNum(sheet, UploadConstant.MAX_TOTAL_COLUMN);
+        // 表头占用行数
+        int minExcelNumber = 2;
+        if (rowNum < minExcelNumber) {
+            return ResultMap.error(new IllegalOperatorException("请填写上传信息"));
+        }
+        // 除去表头格式,最多上传2000条数据
+        int maxExcelNumber = 2002;
+        // 先判断表格内容
+        if (rowNum > maxExcelNumber) {
+            return ResultMap.error(new IllegalOperatorException("您上传的信息超过2000条,请拆分成2000以下再上传"));
+        }
+        List<ReleaseProductByBatch> releaseProductByBatchArrayList = new ArrayList<>(rowNum);
+        Row headerRow = sheet.getRow(0);
+        if (null != headerRow) {
+            int colNum = sheet.getRow(0).getPhysicalNumberOfCells();
+            // 验证模板是否为商城模板
+            validateTemplate(headerRow, colNum);
+            // 去重后的数据
+            List<ReleaseProductByBatch> uniqueBatchList = new ArrayList<>();
+            // 为空的个数
+            int blankNum;
+            // 本次上传总数
+            int total = 0;
+            // 批号
+            String batch = createNumberService.getTimeNumber("product$goods", 8, rowNum);
+            for (int r = minExcelNumber; r <= rowNum; r++) {
+                Row row = sheet.getRow(r);
+                // 英文品牌名称
+                if (row != null) {
+                    // 防止用户直接用模板进行上传
+                    if (!releaseProductByBatchService.validateExcelData(row, r)) {
+                        continue;
+                    }
+                    ReleaseProductByBatch releaseProductByBatch = new ReleaseProductByBatch();
+                    // 初始化默认信息
+                    setProductDefaultInfo(releaseProductByBatch, batch);
+                    // 将excel内容对应到ReleaseProductByBatch的字段当中
+                    blankNum = convertValueToProduct(row, releaseProductByBatch, r);
+                    if (blankNum != 4) {
+                        // 验证表格中数据是否重复,重复的取第一条数据
+                        ReleaseProductByBatch uniquerProduct = validateRepeatInExcel(releaseProductByBatchArrayList, releaseProductByBatch);
+                        if (null != uniquerProduct) {
+                            uniqueBatchList.add(uniquerProduct);
+                        }
+                        releaseProductByBatchArrayList.add(releaseProductByBatch);
+                        total++;
+                    }
+                }
+            }
+            // 保存临时表信息
+            releaseProductByBatchDao.save(releaseProductByBatchArrayList);
+            Long enUU = SystemSession.getUser().getEnterprise().getUu();
+            // 验证数据信息是否重复
+            releaseProductByBatchDao.callReleaseExistValidProcedure(batch, enUU);
+            ModelMap modelMap = new ModelMap();
+            // 处理上传数据
+            assignmentProductInfo(enUU, modelMap, batch);
+            // 验证成功后进行绑定处理
+            Integer assignNumber = 0;
+            if (!CollectionUtils.isEmpty(uniqueBatchList)) {
+                assignNumber = assignBatch(uniqueBatchList);
+            }
+            modelMap.put("assignSuccess", assignNumber);
+            modelMap.put("assignFailure", total - assignNumber);
+            modelMap.put("total", total);
+            modelMap.put("batch", batch);
+            return ResultMap.success(modelMap);
+        }
+        return ResultMap.success();
+    }
+
+    /**
+     * 初始化赋值
+     *
+     * @param aProduct 批量上传商品建立临时表存储相关信息
+     * @param batch 批号
+     */
+    private void setProductDefaultInfo(ReleaseProductByBatch aProduct, String batch) {
+        // 设置初始状态
+        aProduct.setReleaseCode(ReleaseStatus.success.value());
+        aProduct.setReleaseStatus(ReleaseStatus.success.getPhrase());
+        aProduct.setRelbatchid(batch);
+        aProduct.setUnit("PCS");
+        // 设置发布人信息
+        aProduct.setPublisherName(SystemSession.getUser().getUserName());
+        aProduct.setPublisherTel(SystemSession.getUser().getUserTel());
+        aProduct.setPublisherUu(SystemSession.getUser().getUserUU());
+    }
+
+    /**
+     * 初始化product信息,将excel内容转换为product字段值
+     *
+     * @param row 行对象
+     * @param aProduct 验证单行数据
+     * @param rowNum 行数
+     */
+    private int convertValueToProduct(Row row, ReleaseProductByBatch aProduct, int rowNum) {
+        // 统计为空的个数
+        int result = 0;
+        aProduct.setNum(rowNum - 2);
+        // 品牌
+        Object brandValue = releaseProductByBatchService.readWorkBookCell(row.getCell(UploadConstant.BRAND_ENGLISH), Cell.CELL_TYPE_STRING,
+                rowNum, UploadConstant.BRAND_ENGLISH);
+        if (StringUtils.isEmpty(brandValue)) {
+            result += 1;
+        }
+        aProduct.setBrandEnByExcel(brandValue);
+
+        // 类目
+        Object kindValue = releaseProductByBatchService.readWorkBookCell(row.getCell(UploadConstant.KIND), Cell.CELL_TYPE_STRING,
+                rowNum, UploadConstant.KIND);
+        if (StringUtils.isEmpty(kindValue)) {
+            result += 1;
+        }
+        aProduct.setKindByExcel(kindValue);
+
+        // 型号
+        Object codeValue = releaseProductByBatchService.readWorkBookCell(row.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
+                rowNum, UploadConstant.PRODUCT_CODE);
+        if (StringUtils.isEmpty(codeValue)) {
+            result += 1;
+        }
+        aProduct.setCodeByExcel(codeValue);
+
+        // 规格
+        Object specValue = releaseProductByBatchService.readWorkBookCell(row.getCell(UploadConstant.SPEC), Cell.CELL_TYPE_STRING,
+                rowNum, UploadConstant.SPEC);
+        aProduct.setSpecByExcel(specValue);
+        return result;
+    }
+
+    /**
+     * 个人物料上传模板校验
+     *
+     * @param headerRow 表头
+     * @param colNum 列数
+     */
+    private void validateTemplate(Row headerRow, int colNum) {
+        if (colNum == UploadConstant.MAX_TOTAL_COLUMN) {
+            Cell errorCell = headerRow.getCell(UploadConstant.MAX_TOTAL_COLUMN - 1);
+            Object errorCellObj = releaseProductByBatchService.readWorkBookCell(errorCell, Cell.CELL_TYPE_STRING, 0, 0);
+            String errorHead = StringUtilB2C.replaceLineBreak(String.valueOf(errorCellObj));
+            String errorMsg = "错误提示";
+            if (StringUtils.isEmpty(errorHead) || !(errorMsg.equals(errorHead))) {
+                throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
+            }
+        }
+        // 品牌
+        Object brandCellObj = releaseProductByBatchService.readWorkBookCell(headerRow.getCell(UploadConstant.BRAND_ENGLISH), Cell.CELL_TYPE_STRING,
+                0, UploadConstant.BRAND_ENGLISH);
+        if (!UploadConstant.PRODUCT_BRAND_NAME.equals(StringUtilB2C.getStr(brandCellObj))) {
+            throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
+        }
+        // 物料名称
+        Object titleCellObj = releaseProductByBatchService.readWorkBookCell(headerRow.getCell(UploadConstant.KIND), Cell.CELL_TYPE_STRING,
+                0, UploadConstant.KIND);
+        if (!UploadConstant.PRODUCT_KIND_NAME.equals(StringUtilB2C.getStr(titleCellObj))) {
+            throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
+        }
+        // 型号
+        Object codeCellObj = releaseProductByBatchService.readWorkBookCell(headerRow.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
+                0, UploadConstant.PRODUCT_CODE);
+        if (!UploadConstant.PRODUCT_CMPCODE_NAME.equals(StringUtilB2C.getStr(codeCellObj))) {
+            throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
+        }
+        // 规格
+        Object specCellObj = releaseProductByBatchService.readWorkBookCell(headerRow.getCell(UploadConstant.SPEC), Cell.CELL_TYPE_STRING,
+                0, UploadConstant.SPEC);
+        if (!UploadConstant.PRODUCT_SPEC_NAME.equals(StringUtilB2C.getStr(specCellObj))) {
+            throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
+        }
+    }
+
+    /**
+     * 将去重的数据批量绑定到个人物料库
+     *
+     * @param uniqueBatchList 去重后的物料信息
+     * @return 保存成功的数量
+     */
+    private Integer assignBatch(List<ReleaseProductByBatch> uniqueBatchList) {
+        List<Product> productList = covert(uniqueBatchList);
+        try {
+            String res = HttpUtil.doPost(productServiceIp + "/product/update/addToProductUser", FlexJsonUtils.toJsonDeep(productList));
+            JSONObject response = JSON.parseObject(res);
+            if (TRUE_SIGN.equals(response.get(SUCCESS_CODE))) {
+                return Integer.valueOf(response.get("result").toString());
+            }
+        } catch (Exception e) {
+            LOGGER.info("访问接口失败", e);
+        }
+        return 0;
+    }
+
+    /**
+     * 处理验证后的数据
+     *
+     * @param modelMap ModelMap
+     * @param enUU 当前企业UU
+     * @param batch 批号
+     */
+    private void assignmentProductInfo(Long enUU, ModelMap modelMap, String batch) {
+        String strCount = releaseProductByBatchService.productReleaseValid(enUU, batch);
+        if (!StringUtilB2C.isEmpty(strCount)) {
+            // 获取批量上传的相关数据统计
+            releaseProductByBatchService.checkReleaseCount(modelMap, strCount, batch);
+        }
+    }
+
+    /**
+     * 验证Excel中数据是否重复
+     *
+     * @param 	batchList 批量上传的数据
+     * @param 	aBatch 单个数据
+     * @return 判断是否重复的数据
+     */
+    private ReleaseProductByBatch validateRepeatInExcel(List<ReleaseProductByBatch> batchList, ReleaseProductByBatch aBatch) {
+        if (CollectionUtils.isEmpty(batchList) || !StringUtils.isEmpty(aBatch.getErrmsg())) {
+            return null;
+        }
+        for (ReleaseProductByBatch each : batchList) {
+            // 返回符合标准的唯一的物料信息
+            if (aBatch.compareSameProductTagInfo(each)) {
+                aBatch.addErrmsg(ErrorInfoConstant.REPEAT_IN_EXCEL.getInfo());
+                aBatch.setReleaseStatus(ReleaseStatus.had_exists.getPhrase());
+                aBatch.setReleaseCode(ReleaseStatus.had_exists.value());
+                if (aBatch.getErrmsg().substring(0, 1).equals(",")) {
+                    aBatch.setErrmsg(aBatch.getErrmsg().substring(1));
+                }
+            } else {
+                return aBatch;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 将去重的数据转换成Product数据并进行保存处理
+     *
+     * @param uniqueBatchList 上传后去重的数据
+     * @return List<Product>
+     */
+    private List<Product> covert(List<ReleaseProductByBatch> uniqueBatchList) {
+        List<Product> productList = new ArrayList<>();
+        uniqueBatchList.forEach(batch -> {
+            Product product = new Product();
+            product.setSpec(batch.getSpec());
+            product.setBrand(batch.getBrandNameEn() != null ? batch.getBrandNameEn() : batch.getBrandNameCn());
+            product.setUserUU(SystemSession.getUser().getUserUU());
+            product.setCode(batch.getCode());
+            // 没有编号设置编号
+            if (null == product.getCode()) {
+                String code = "B2CPR" + StringUtilB2C.getRandomNumber(6);
+                product.setCode(code);
+            }
+            // 交期默认赋值为0
+            Double leadTime = 0D;
+            product.setLeadTime(leadTime);
+            product.setCmpUuid(batch.getComponentUuId());
+            product.setCreateTime(new Date(System.currentTimeMillis()));
+            product.setEnUU(SystemSession.getUser().getEnterprise().getUu());
+            product.setKind(batch.getKindName());
+            product.setUnit(batch.getUnit());
+            product.setTitle(batch.getKindName());
+            productList.add(product);
+        });
+        return productList;
+    }
+}

+ 31 - 5
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseServiceImpl.java

@@ -25,8 +25,17 @@ import com.uas.platform.b2c.fa.settlement.dao.BillInfoDao;
 import com.uas.platform.b2c.fa.settlement.model.Bill;
 import com.uas.platform.b2c.fa.settlement.model.BillInfo;
 import com.uas.platform.b2c.fa.settlement.service.BillSubmitService;
-import com.uas.platform.b2c.logistics.dao.*;
-import com.uas.platform.b2c.logistics.model.*;
+import com.uas.platform.b2c.logistics.dao.AddressDao;
+import com.uas.platform.b2c.logistics.dao.InvoiceDetailDao;
+import com.uas.platform.b2c.logistics.dao.LogisticsDao;
+import com.uas.platform.b2c.logistics.dao.ReceiptDao;
+import com.uas.platform.b2c.logistics.dao.ReceiptDetailDao;
+import com.uas.platform.b2c.logistics.model.Address;
+import com.uas.platform.b2c.logistics.model.Invoice;
+import com.uas.platform.b2c.logistics.model.InvoiceDetail;
+import com.uas.platform.b2c.logistics.model.Logistics;
+import com.uas.platform.b2c.logistics.model.Receipt;
+import com.uas.platform.b2c.logistics.model.ReceiptDetail;
 import com.uas.platform.b2c.logistics.service.InvoiceService;
 import com.uas.platform.b2c.logistics.service.ReceiptService;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
@@ -39,8 +48,16 @@ import com.uas.platform.b2c.prod.store.dao.StoreApplyDao;
 import com.uas.platform.b2c.prod.store.dao.StoreInDao;
 import com.uas.platform.b2c.prod.store.model.StoreApply;
 import com.uas.platform.b2c.prod.store.model.StoreIn;
-import com.uas.platform.b2c.trade.order.dao.*;
-import com.uas.platform.b2c.trade.order.model.*;
+import com.uas.platform.b2c.trade.order.dao.OrderDao;
+import com.uas.platform.b2c.trade.order.dao.OrderDetailDao;
+import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
+import com.uas.platform.b2c.trade.order.dao.PurchaseDetailDao;
+import com.uas.platform.b2c.trade.order.dao.PurchaseModifyingHistoryDao;
+import com.uas.platform.b2c.trade.order.model.Order;
+import com.uas.platform.b2c.trade.order.model.OrderDetail;
+import com.uas.platform.b2c.trade.order.model.Purchase;
+import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
+import com.uas.platform.b2c.trade.order.model.PurchaseModifyingHistory;
 import com.uas.platform.b2c.trade.order.service.OrderService;
 import com.uas.platform.b2c.trade.order.service.PurchaseDetailService;
 import com.uas.platform.b2c.trade.order.service.PurchaseService;
@@ -73,7 +90,16 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 
 import static com.uas.platform.b2c.trade.util.Preconditions.checkArgument;
 import static com.uas.platform.b2c.trade.util.Preconditions.checkNotNull;

+ 41 - 0
src/main/java/com/uas/platform/b2c/trade/order/support/AjaxUtil.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2c.trade.order.support;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
+
+import javax.servlet.http.HttpSession;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * ajax判断相关
+ *
+ * @author hejq
+ * @date 2018-09-19 14:54
+ */
+public class AjaxUtil {
+
+    /**
+     * 校验前端是否是ajax请求
+     *
+     * @param session HttpSession
+     * @param isAjax 是否是ajax请求
+     * @return ModelAndView
+     */
+    public static ModelAndView checkIsAjax(HttpSession session, Boolean isAjax) {
+        ModelAndView modelAndView = new ModelAndView();
+        if (isAjax) {
+            Object loading = session.getAttribute("load-error-ing");
+            MappingJackson2JsonView view = new MappingJackson2JsonView();
+            Map attributes = new HashMap();
+            if (loading == null || !Boolean.valueOf(loading.toString())) {
+                attributes.put("load", false);
+            } else if (Boolean.valueOf(loading.toString())) {
+                attributes.put("load", true);
+            }
+            view.setAttributesMap(attributes);
+            modelAndView.setView(view);
+        }
+        return modelAndView;
+    }
+}

+ 13 - 1
src/main/java/com/uas/platform/b2c/trade/presale/model/Cart.java

@@ -8,7 +8,19 @@ import com.uas.platform.b2c.prod.store.model.StoreType;
 import com.uas.platform.b2c.trade.presale.status.cartStatus;
 import com.uas.platform.core.model.Status;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
 import java.util.Date;
 
 /**

+ 5 - 3
src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseBomController.java

@@ -24,11 +24,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.util.List;
 import java.util.Map;
 

+ 3 - 3
src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseBomService.java

@@ -6,13 +6,13 @@ import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBomList;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseByBatch;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.model.PageInfo;
-
-import java.util.List;
-import java.util.Map;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author liusw
  * @version 2018/1/19 14:54

+ 22 - 4
src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseBomServiceImpl.java

@@ -12,8 +12,17 @@ import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.brand.modal.Brand;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
-import com.uas.platform.b2c.trade.seek.dao.*;
-import com.uas.platform.b2c.trade.seek.model.*;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseBomDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseBomListDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseByBatchDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseGoodsDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseOfferDao;
+import com.uas.platform.b2c.trade.seek.model.PurcInquiry;
+import com.uas.platform.b2c.trade.seek.model.PurcInquiryItem;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBom;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBomList;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseByBatch;
 import com.uas.platform.b2c.trade.seek.service.SeekPurchaseBomService;
 import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
@@ -47,11 +56,20 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 

+ 6 - 1
src/main/java/com/uas/platform/b2c/trade/support/CodeType.java

@@ -73,7 +73,12 @@ public enum CodeType {
 	/**
 	 * 信息未修改
 	 */
-	INFO_NO_MODIFY(15, "INFO_NO_MODIFY");
+	INFO_NO_MODIFY(15, "INFO_NO_MODIFY"),
+
+	/**
+	 * 操作失败
+	 */
+	ERROR(16, "ERROR");
 
 	private int code;
 

+ 21 - 0
src/main/java/com/uas/platform/b2c/trade/support/ResultMap.java

@@ -107,4 +107,25 @@ public class ResultMap {
 		result.data = data;
 		return result;
 	}
+
+    /**
+     * 操作成功返回结果
+     *
+     * @return ResultMap
+     * @see ResultMap
+     */
+    public static ResultMap success() {
+        return new ResultMap(CodeType.OK.code(), null);
+    }
+
+	/**
+	 * 失败返回结果
+	 *
+	 * @param e 异常信息
+	 * @return ResultMap
+     * @see ResultMap
+	 */
+	public static ResultMap error(Exception e) {
+		return new ResultMap(CodeType.ERROR.code(), e.getMessage());
+	}
 }

BIN
src/main/resources/jxls-tpl/trade/releasePCBByBatch-rmb.xls


BIN
src/main/resources/jxls-tpl/trade/releasePCBByBatchError-rmb.xls


BIN
src/main/resources/jxls-tpl/trade/releasePCBByBatchError-usd.xls


BIN
src/main/resources/jxls-tpl/trade/releasePCBbyBatch-usd.xls


BIN
src/main/webapp/resources/img/all/logo_uas.png


BIN
src/main/webapp/resources/img/all/qrcode_uas.png


BIN
src/main/webapp/resources/img/common/uas-logo.png


BIN
src/main/webapp/resources/img/common/uas.png


BIN
src/main/webapp/resources/img/help/market_1.png


BIN
src/main/webapp/resources/img/help/orderinfo_1.png


BIN
src/main/webapp/resources/img/product/manual-apply-brand.png


BIN
src/main/webapp/resources/img/product/manual-batch-publish.png


BIN
src/main/webapp/resources/img/product/manual-component-apply.png


BIN
src/main/webapp/resources/img/product/manual-fill-component.png


BIN
src/main/webapp/resources/img/product/manual-find-product.png


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff