Просмотр исходного кода

Merge branch 'hotfix-201807-suntg' into dev

# Conflicts:
#	src/main/java/com/uas/platform/b2b/service/impl/PagingReleaseServiceImpl.java
#	src/main/webapp/WEB-INF/views/normal/index.html
suntg 7 лет назад
Родитель
Сommit
d31b014936
100 измененных файлов с 1969 добавлено и 588 удалено
  1. 7 1
      src/main/java/com/uas/platform/b2b/controller/InvitationRecordController.java
  2. 2 1
      src/main/java/com/uas/platform/b2b/core/support/ApplicationContextRegister.java
  3. 21 14
      src/main/java/com/uas/platform/b2b/core/util/DateUtils.java
  4. 9 6
      src/main/java/com/uas/platform/b2b/core/util/PathUtils.java
  5. 9 6
      src/main/java/com/uas/platform/b2b/core/util/ThreadUtils.java
  6. 2 2
      src/main/java/com/uas/platform/b2b/dao/BarPackageDao.java
  7. 0 2
      src/main/java/com/uas/platform/b2b/dao/CommonDao.java
  8. 15 0
      src/main/java/com/uas/platform/b2b/dao/ErrorLogDao.java
  9. 15 0
      src/main/java/com/uas/platform/b2b/dao/ErrorLogDetailDao.java
  10. 0 2
      src/main/java/com/uas/platform/b2b/dao/MakeOrderChangeDao.java
  11. 41 0
      src/main/java/com/uas/platform/b2b/dao/NotExistOrdersDao.java
  12. 0 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseApBillOutTodoDao.java
  13. 1 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseNoticeDao.java
  14. 1 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderAllDao.java
  15. 13 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderChangeDao.java
  16. 18 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java
  17. 0 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseProofingItemDoneDao.java
  18. 0 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseTenderErpDao.java
  19. 0 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseTenderProdDao.java
  20. 1 0
      src/main/java/com/uas/platform/b2b/dao/ResourceDao.java
  21. 25 0
      src/main/java/com/uas/platform/b2b/dao/SaleOrderItemDao.java
  22. 0 1
      src/main/java/com/uas/platform/b2b/dao/SaleTenderDao.java
  23. 0 1
      src/main/java/com/uas/platform/b2b/dao/SaleTenderItemDao.java
  24. 2 1
      src/main/java/com/uas/platform/b2b/dao/UserDao.java
  25. 1 0
      src/main/java/com/uas/platform/b2b/data/support/DSUtils.java
  26. 14 7
      src/main/java/com/uas/platform/b2b/data/support/MultiDataSource.java
  27. 2 2
      src/main/java/com/uas/platform/b2b/erp/controller/DeputyOrderDownController.java
  28. 85 0
      src/main/java/com/uas/platform/b2b/erp/controller/NotExistOrderController.java
  29. 1 142
      src/main/java/com/uas/platform/b2b/erp/controller/ProdController.java
  30. 21 4
      src/main/java/com/uas/platform/b2b/erp/controller/PurchaseController.java
  31. 2 2
      src/main/java/com/uas/platform/b2b/erp/controller/PurchaseNotifyController.java
  32. 5 0
      src/main/java/com/uas/platform/b2b/erp/controller/PurchaseProdInOutController.java
  33. 2 2
      src/main/java/com/uas/platform/b2b/erp/controller/PurchaseQuaMRBController.java
  34. 25 1
      src/main/java/com/uas/platform/b2b/erp/controller/SaleDownChangeController.java
  35. 10 4
      src/main/java/com/uas/platform/b2b/erp/controller/VendorRecommendController.java
  36. 60 0
      src/main/java/com/uas/platform/b2b/erp/exception/ExceptionNote.java
  37. 34 0
      src/main/java/com/uas/platform/b2b/erp/exception/NotFoundUtils.java
  38. 0 13
      src/main/java/com/uas/platform/b2b/erp/model/APCheckDetail.java
  39. 6 2
      src/main/java/com/uas/platform/b2b/erp/model/AcceptNotify.java
  40. 5 3
      src/main/java/com/uas/platform/b2b/erp/model/ErpLog.java
  41. 8 3
      src/main/java/com/uas/platform/b2b/erp/model/InquiryDetail.java
  42. 120 26
      src/main/java/com/uas/platform/b2b/erp/model/Make.java
  43. 70 0
      src/main/java/com/uas/platform/b2b/erp/model/OrderDetailPrice.java
  44. 21 5
      src/main/java/com/uas/platform/b2b/erp/model/ProductSample.java
  45. 11 5
      src/main/java/com/uas/platform/b2b/erp/model/Purchase.java
  46. 29 2
      src/main/java/com/uas/platform/b2b/erp/model/PurchaseNotify.java
  47. 0 8
      src/main/java/com/uas/platform/b2b/erp/model/PurchaseProdInOutDetail.java
  48. 2 1
      src/main/java/com/uas/platform/b2b/erp/model/PurchaseReply.java
  49. 3 2
      src/main/java/com/uas/platform/b2b/erp/model/Quotation.java
  50. 6 4
      src/main/java/com/uas/platform/b2b/erp/model/QuotationDetail.java
  51. 4 4
      src/main/java/com/uas/platform/b2b/erp/model/SaleDownChangeDetail.java
  52. 3 2
      src/main/java/com/uas/platform/b2b/erp/model/SaleOut.java
  53. 2 4
      src/main/java/com/uas/platform/b2b/erp/model/SaleProdInOutDownDetail.java
  54. 10 0
      src/main/java/com/uas/platform/b2b/erp/service/MakeService.java
  55. 2 0
      src/main/java/com/uas/platform/b2b/erp/service/PurchaseNotifyService.java
  56. 6 1
      src/main/java/com/uas/platform/b2b/erp/service/PurchaseQuaMRBService.java
  57. 11 4
      src/main/java/com/uas/platform/b2b/erp/service/PurchaseService.java
  58. 3 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/APCheckServiceImpl.java
  59. 17 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/AutOrderServiceImpl.java
  60. 2 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/BarLabelServiceImpl.java
  61. 5 3
      src/main/java/com/uas/platform/b2b/erp/service/impl/ErpLogServiceImpl.java
  62. 25 17
      src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java
  63. 48 12
      src/main/java/com/uas/platform/b2b/erp/service/impl/MakeProdInOutServiceImpl.java
  64. 52 11
      src/main/java/com/uas/platform/b2b/erp/service/impl/MakeServiceImpl.java
  65. 3 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/OutsourceServiceImpl.java
  66. 35 6
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseChangeServiceImpl.java
  67. 3 3
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseForecastServiceImpl.java
  68. 23 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseNotifyServiceImpl.java
  69. 81 46
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseProdInOutServiceImpl.java
  70. 9 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseQuaMRBServiceImpl.java
  71. 51 21
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseSampleServiceImpl.java
  72. 59 26
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java
  73. 6 4
      src/main/java/com/uas/platform/b2b/erp/service/impl/QuotationDownServiceImpl.java
  74. 3 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/QuotationServiceImpl.java
  75. 3 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/SaleDownChangeServiceImpl.java
  76. 6 4
      src/main/java/com/uas/platform/b2b/erp/service/impl/SaleDownServiceImpl.java
  77. 12 8
      src/main/java/com/uas/platform/b2b/erp/service/impl/SaleNotifyDownServiceImpl.java
  78. 3 2
      src/main/java/com/uas/platform/b2b/erp/support/ErpBufferedLogger.java
  79. 3 2
      src/main/java/com/uas/platform/b2b/event/SaveEvent.java
  80. 3 2
      src/main/java/com/uas/platform/b2b/event/SaveReleaseEvent.java
  81. 4 2
      src/main/java/com/uas/platform/b2b/filter/AccessTokenInterceptor.java
  82. 4 2
      src/main/java/com/uas/platform/b2b/filter/AppAccessInterceptor.java
  83. 4 11
      src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java
  84. 30 22
      src/main/java/com/uas/platform/b2b/filter/SecurityInterceptor.java
  85. 3 2
      src/main/java/com/uas/platform/b2b/filter/SignatureInterceptor.java
  86. 96 0
      src/main/java/com/uas/platform/b2b/listener/GlobalExceptionHandler.java
  87. 0 31
      src/main/java/com/uas/platform/b2b/listener/MessageListener.java
  88. 4 3
      src/main/java/com/uas/platform/b2b/model/CommunalLog.java
  89. 15 12
      src/main/java/com/uas/platform/b2b/model/Enterprise.java
  90. 15 10
      src/main/java/com/uas/platform/b2b/model/EnterpriseInfo.java
  91. 160 0
      src/main/java/com/uas/platform/b2b/model/ErrorLog.java
  92. 182 0
      src/main/java/com/uas/platform/b2b/model/ErrorLogDetail.java
  93. 169 0
      src/main/java/com/uas/platform/b2b/model/NotExistOrders.java
  94. 42 2
      src/main/java/com/uas/platform/b2b/model/NotExistProduct.java
  95. 11 1
      src/main/java/com/uas/platform/b2b/model/OrderType.java
  96. 4 3
      src/main/java/com/uas/platform/b2b/model/PublicInquiryItemInfo.java
  97. 0 3
      src/main/java/com/uas/platform/b2b/model/PurchaseApCheckItemInfo.java
  98. 0 1
      src/main/java/com/uas/platform/b2b/model/PurchaseApCheckTodo.java
  99. 4 3
      src/main/java/com/uas/platform/b2b/model/PurchaseInquiryDetail.java
  100. 4 3
      src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java

+ 7 - 1
src/main/java/com/uas/platform/b2b/controller/InvitationRecordController.java

@@ -4,12 +4,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.model.EnterpriseBaseInfo;
 import com.uas.platform.b2b.model.InvitationRecord;
+import com.uas.platform.b2b.publicapi.service.InviteRecordService;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.InvitationRecordService;
 import com.uas.platform.b2b.support.SysConf;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
-import com.uas.platform.b2b.v2.service.InviteRecordService;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
@@ -28,6 +28,12 @@ import org.springframework.web.bind.annotation.RestController;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 邀请注册记录接口
+ * 
+ * @author hejq
+ * @date 2018-07-16 15:42
+ */
 @RestController
 @RequestMapping("/invitationrecord")
 public class InvitationRecordController {

+ 2 - 1
src/main/java/com/uas/platform/b2b/core/support/ApplicationContextRegister.java

@@ -11,7 +11,8 @@ public class ApplicationContextRegister implements ApplicationContextAware {
 
 	private static Logger logger = Logger.getLogger(ApplicationContextRegister.class);
 
-	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+	@Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 		ContextUtils.setApplicationContext(applicationContext);
 		logger.debug("ApplicationContext registed");
 	}

+ 21 - 14
src/main/java/com/uas/platform/b2b/core/util/DateUtils.java

@@ -79,31 +79,37 @@ public class DateUtils {
 		Calendar calendar1 = Calendar.getInstance();
 		calendar1.setTime(dateParam1);
 		calendar1.clear(Calendar.MILLISECOND);
-		if (compareType >= COMPARE_SECOND)
-			calendar1.clear(Calendar.SECOND);
-		if (compareType >= COMPARE_MINUTE)
-			calendar1.clear(Calendar.MINUTE);
+		if (compareType >= COMPARE_SECOND) {
+            calendar1.clear(Calendar.SECOND);
+        }
+		if (compareType >= COMPARE_MINUTE) {
+            calendar1.clear(Calendar.MINUTE);
+        }
 		if (compareType >= COMPARE_HOUR) {
 			calendar1.clear(Calendar.HOUR_OF_DAY);
 			calendar1.clear(Calendar.HOUR);
 			calendar1.clear(Calendar.AM_PM);
 		}
-		if (compareType >= COMPARE_DAY)
-			calendar1.clear(Calendar.DAY_OF_MONTH);
+		if (compareType >= COMPARE_DAY) {
+            calendar1.clear(Calendar.DAY_OF_MONTH);
+        }
 		Calendar calendar2 = Calendar.getInstance();
 		calendar2.setTime(dateParam2);
 		calendar2.clear(Calendar.MILLISECOND);
-		if (compareType >= COMPARE_SECOND)
-			calendar2.clear(Calendar.SECOND);
-		if (compareType >= COMPARE_MINUTE)
-			calendar2.clear(Calendar.MINUTE);
+		if (compareType >= COMPARE_SECOND) {
+            calendar2.clear(Calendar.SECOND);
+        }
+		if (compareType >= COMPARE_MINUTE) {
+            calendar2.clear(Calendar.MINUTE);
+        }
 		if (compareType >= COMPARE_HOUR) {
 			calendar2.clear(Calendar.HOUR_OF_DAY);
 			calendar2.clear(Calendar.HOUR);
 			calendar2.clear(Calendar.AM_PM);
 		}
-		if (compareType >= COMPARE_DAY)
-			calendar2.clear(Calendar.DAY_OF_MONTH);
+		if (compareType >= COMPARE_DAY) {
+            calendar2.clear(Calendar.DAY_OF_MONTH);
+        }
 		return calendar1.compareTo(calendar2);
 	}
 
@@ -178,8 +184,9 @@ public class DateUtils {
 	 * @return
 	 */
 	public static Integer addMonth(Date date, int increase) {
-		if (date == null)
-			date = new Date();
+		if (date == null) {
+            date = new Date();
+        }
 		Calendar calendar = new GregorianCalendar();
 		calendar.setTime(date);
 		calendar.add(Calendar.MONTH, increase);

+ 9 - 6
src/main/java/com/uas/platform/b2b/core/util/PathUtils.java

@@ -24,8 +24,9 @@ public class PathUtils {
 	 * @return
 	 */
 	public static String getClassPath() {
-		if (classPath == null)
-			setClassPath();
+		if (classPath == null) {
+            setClassPath();
+        }
 		return classPath;
 	}
 
@@ -35,8 +36,9 @@ public class PathUtils {
 	 * @return
 	 */
 	public static String getAppPath() {
-		if (appPath == null)
-			setAppPath();
+		if (appPath == null) {
+            setAppPath();
+        }
 		return appPath;
 	}
 
@@ -46,8 +48,9 @@ public class PathUtils {
 	 * @return
 	 */
 	public static String getFilePath() {
-		if (filePath == null)
-			setFilePath();
+		if (filePath == null) {
+            setFilePath();
+        }
 		return filePath;
 	}
 

+ 9 - 6
src/main/java/com/uas/platform/b2b/core/util/ThreadUtils.java

@@ -98,8 +98,9 @@ public class ThreadUtils {
 
 		public Runner<T> tasks(List<T> params) {
 			if (!CollectionUtils.isEmpty(params)) {
-				for (T param : params)
-					task(param);
+				for (T param : params) {
+                    task(param);
+                }
 			}
 			return this;
 		}
@@ -169,8 +170,9 @@ public class ThreadUtils {
 
 		public Caller<V, T> tasks(List<T> params) {
 			if (!CollectionUtils.isEmpty(params)) {
-				for (T param : params)
-					task(param);
+				for (T param : params) {
+                    task(param);
+                }
 			}
 			return this;
 		}
@@ -247,8 +249,9 @@ public class ThreadUtils {
 
 		public Executor tasks(List<Runnable> runnables) {
 			if (!CollectionUtils.isEmpty(runnables)) {
-				for (Runnable runnable : runnables)
-					task(runnable);
+				for (Runnable runnable : runnables) {
+                    task(runnable);
+                }
 			}
 			return this;
 		}

+ 2 - 2
src/main/java/com/uas/platform/b2b/dao/BarPackageDao.java

@@ -22,8 +22,8 @@ public interface BarPackageDao extends JpaSpecificationExecutor<BarPackage>, Jpa
 	
 	/**
 	 * 通过发送状态和客户uu查询数据  
-	 * @param sendstatus
-	 * @param sendstatus
+	 * @param sendStatus
+	 * @param custUU
 	 * @return
 	 */
 	public List<BarPackage> findBySendStatusAndCustUU(short sendStatus,Long custUU);

+ 0 - 2
src/main/java/com/uas/platform/b2b/dao/CommonDao.java

@@ -135,6 +135,4 @@ public class CommonDao {
 		insertActor.executeBatch(sqlSource);
 	}
 
-
-
 }

+ 15 - 0
src/main/java/com/uas/platform/b2b/dao/ErrorLogDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.ErrorLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 平台错误日志记录
+ *
+ * Created by hejq on 2018-06-20.
+ */
+@Repository
+public interface ErrorLogDao extends JpaRepository<ErrorLog, Long>, JpaSpecificationExecutor<ErrorLog> {
+}

+ 15 - 0
src/main/java/com/uas/platform/b2b/dao/ErrorLogDetailDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.ErrorLogDetail;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 日志详情
+ *
+ * Created by hejq on 2018-06-22.
+ */
+@Repository
+public interface ErrorLogDetailDao extends JpaSpecificationExecutor<ErrorLogDetail>, JpaRepository<ErrorLogDetail, Long> {
+}

+ 0 - 2
src/main/java/com/uas/platform/b2b/dao/MakeOrderChangeDao.java

@@ -20,6 +20,4 @@ public interface MakeOrderChangeDao extends JpaSpecificationExecutor<MakeOrderCh
 	 */
 	public List<MakeOrderChange> findByEnUUAndCode(Long enUU, String code);
 	
-
-
 }

+ 41 - 0
src/main/java/com/uas/platform/b2b/dao/NotExistOrdersDao.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.NotExistOrders;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * 平台不存在订单数据库操作
+ *
+ * Created by hejq on 2018-06-19.
+ */
+@Repository
+public interface NotExistOrdersDao extends JpaRepository<NotExistOrders, Long>, JpaSpecificationExecutor<NotExistOrders> {
+
+    /**
+     * 通过企业UU和下载状态查询单据
+     *
+     * @param enUU 企业UU
+     * @param status 下载状态
+     * @param type 单据类型
+     * @return
+     */
+    List<NotExistOrders> findByEnUUAndStatusAndType(Long enUU, Integer status, String type);
+
+    /**
+     * 更新下载状态
+     *
+     * @param id id
+     */
+    @Modifying
+    @Transactional
+    @Query("update NotExistOrders set status = 203 where id = :id")
+    void updateStatus(@Param("id") Long id);
+}

+ 0 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseApBillOutTodoDao.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2b.dao;
 
 import com.uas.platform.b2b.model.PurchaseApBillOutTodo;
-import com.uas.platform.b2b.model.PurchaseApCheckTodo;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 

+ 1 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseNoticeDao.java

@@ -162,6 +162,7 @@ public interface PurchaseNoticeDao extends JpaSpecificationExecutor<PurchaseNoti
 	 * @param noticeId 发货提醒id
 	 * @param status 状态
 	 */
+	@Transactional
     @Modifying(clearAutomatically = true)
 	@Query("update PurchaseNotice set status = :status where id = :noticeId")
 	void updateStatus(@Param("noticeId") Long noticeId, @Param("status") short status);

+ 1 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderAllDao.java

@@ -45,7 +45,7 @@ public interface PurchaseOrderAllDao extends JpaSpecificationExecutor<PurchaseOr
 	 */
 	@Query("from PurchaseOrderAll where vendUU = :vendUU and sendStatus = :sendStatus and status <> 311")
 	public List<PurchaseOrderAll> findByVendUUAndSendStatus(@Param("vendUU") long vendUU, @Param("sendStatus") short sendStatus);
-	
+
 	/**
 	 * 根据截止日期获取
 	 * @param formDate

+ 13 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderChangeDao.java

@@ -44,9 +44,21 @@ public interface PurchaseOrderChangeDao extends JpaSpecificationExecutor<Purchas
 	 *            上传到卖家ERP的状态
 	 * @return
 	 */
-	@Query("from PurchaseOrderChange r where r.vendUU = :vendUU and r.sendStatus = :sendStatus")
+	@Query("from PurchaseOrderChange r where r.vendUU = :vendUU and r.sendStatus = :sendStatus and r.erpId is not null")
 	public List<PurchaseOrderChange> findByVendUUAndSendStatus(@Param("vendUU") long vendUU, @Param("sendStatus") short sendStatus);
 
+	/**
+	 * 卖家按上传状态查找变更单(买家b2b)
+	 *
+	 * @param vendUU
+	 *            卖方企业ID
+	 * @param sendStatus
+	 *            上传到卖家ERP的状态
+	 * @return
+	 */
+	@Query("from PurchaseOrderChange r where r.vendUU = :vendUU and r.sendStatus = :sendStatus and r.erpId is null")
+	public List<PurchaseOrderChange> findByVendUUAndSendStatusAndErpId(@Param("vendUU") long vendUU, @Param("sendStatus") short sendStatus);
+
 	/**
 	 * 卖家按回复信息上传状态查找变更单
 	 * 

+ 18 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java

@@ -3,12 +3,19 @@ package com.uas.platform.b2b.dao;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import javax.transaction.Transactional;
 import java.util.List;
 
+/**
+ * 采购订单
+ *
+ * @author US50
+ */
 @Repository
 public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder>, JpaRepository<PurchaseOrder, Long> {
 
@@ -85,4 +92,15 @@ public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder
 	 * @return
 	 */
 	List<PurchaseOrder> findByEnUUAndAndErpId(Long uu, Long id);
+
+	/**
+	 * 通过id更新采购单状态
+	 *
+	 * @param status 状态
+	 * @param id id
+	 */
+	@Modifying
+	@Transactional(rollbackOn = Exception.class)
+	@Query("update PurchaseOrder set status = :status where id = :id")
+	void updatePurchaseStatus(@Param("status") Short status, @Param("id") Long id);
 }

+ 0 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseProofingItemDoneDao.java

@@ -9,5 +9,4 @@ import com.uas.platform.b2b.model.PurchaseProofingItemDone;
 @Repository
 public interface PurchaseProofingItemDoneDao extends JpaSpecificationExecutor<PurchaseProofingItemDone>, JpaRepository<PurchaseProofingItemDone, Long> {
 
-
 }

+ 0 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseTenderErpDao.java

@@ -11,5 +11,4 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface PurchaseTenderErpDao extends JpaSpecificationExecutor<PurchaseTenderErp>,JpaRepository<PurchaseTenderErp, Long> {
 
-
 }

+ 0 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseTenderProdDao.java

@@ -11,5 +11,4 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface PurchaseTenderProdDao extends JpaSpecificationExecutor<PurchaseTenderProd>,JpaRepository<PurchaseTenderProd, Long> {
 
-
 }

+ 1 - 0
src/main/java/com/uas/platform/b2b/dao/ResourceDao.java

@@ -13,6 +13,7 @@ import com.uas.platform.b2b.model.Resource;
 public interface ResourceDao extends JpaRepository<Resource, Long> {
 	
 	@OrderBy("id")
+	@Override
 	public List<Resource> findAll();
 
 }

+ 25 - 0
src/main/java/com/uas/platform/b2b/dao/SaleOrderItemDao.java

@@ -0,0 +1,25 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.SaleOrderItem;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 只保存明细
+ * Created by hejq on 2018-06-19.
+ */
+@Repository
+public interface SaleOrderItemDao extends JpaSpecificationExecutor<SaleOrderItem>, JpaRepository<SaleOrderItem, Long> {
+
+    /**
+     * 通过主表id和明细序号查询单据是否存在
+     *
+     * @param puId 主表id
+     * @param number 明细序号
+     * @return
+     */
+    List<SaleOrderItem> findByPuIdAndNumber(Long puId, Short number);
+}

+ 0 - 1
src/main/java/com/uas/platform/b2b/dao/SaleTenderDao.java

@@ -15,7 +15,6 @@ import java.util.List;
 @Repository
 public interface SaleTenderDao extends JpaSpecificationExecutor<SaleTender>,JpaRepository<SaleTender, Long> {
 
-
     SaleTender findByEnUUAndVendUUAndCode(Long enUU, Long vendUU, String code);
 
     List<SaleTender> findByEnUUAndCode(Long enUU, String code);

+ 0 - 1
src/main/java/com/uas/platform/b2b/dao/SaleTenderItemDao.java

@@ -11,5 +11,4 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface SaleTenderItemDao extends JpaSpecificationExecutor<SaleTenderItem>,JpaRepository<SaleTenderItem, Long> {
 
-
 }

+ 2 - 1
src/main/java/com/uas/platform/b2b/dao/UserDao.java

@@ -26,10 +26,11 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	public List<User> findUserByUserTel(String userTel);
 
 	/**
-	 * 按名字查询当前企业的用户信息
+	 * 按企业ID和个人ID查找个人
 	 * 
 	 * @param userName
 	 * @param enUU
+	 * @param userUU
 	 * @return
 	 */
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })

+ 1 - 0
src/main/java/com/uas/platform/b2b/data/support/DSUtils.java

@@ -72,6 +72,7 @@ public class DSUtils {
 		String currSrc = SpObserver.getSp();
 		ExecutorService executor = Executors.newSingleThreadExecutor();
 		FutureTask<Boolean> future = new FutureTask<Boolean>(new Callable<Boolean>() {
+			@Override
 			public Boolean call() {
 				SpObserver.putSp(ds.getId());
 				jdbcTemplate.execute("select 1 from dual");

+ 14 - 7
src/main/java/com/uas/platform/b2b/data/support/MultiDataSource.java

@@ -24,15 +24,18 @@ public class MultiDataSource extends DruidDataSource implements DataSource, Appl
 	private DruidDataSource dataSource = null;
 	private Properties connectionProperties = null;
 
-	public DruidPooledConnection getConnection() throws SQLException {
+	@Override
+    public DruidPooledConnection getConnection() throws SQLException {
 		return getDataSource().getConnection();
 	}
 
-	public Connection getConnection(String arg0, String arg1) throws SQLException {
+	@Override
+    public Connection getConnection(String arg0, String arg1) throws SQLException {
 		return getDataSource().getConnection(arg0, arg1);
 	}
 
-	public PrintWriter getLogWriter() {
+	@Override
+    public PrintWriter getLogWriter() {
 		return getDataSource().getLogWriter();
 	}
 
@@ -44,19 +47,23 @@ public class MultiDataSource extends DruidDataSource implements DataSource, Appl
 		this.connectionProperties = connectionProperties;
 	}
 
-	public int getLoginTimeout() {
+	@Override
+    public int getLoginTimeout() {
 		return getDataSource().getLoginTimeout();
 	}
 
-	public void setLogWriter(PrintWriter arg0) throws SQLException {
+	@Override
+    public void setLogWriter(PrintWriter arg0) throws SQLException {
 		getDataSource().setLogWriter(arg0);
 	}
 
-	public void setLoginTimeout(int arg0) {
+	@Override
+    public void setLoginTimeout(int arg0) {
 		getDataSource().setLoginTimeout(arg0);
 	}
 
-	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+	@Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 		this.applicationContext = applicationContext;
 	}
 

+ 2 - 2
src/main/java/com/uas/platform/b2b/erp/controller/DeputyOrderDownController.java

@@ -80,7 +80,7 @@ public class DeputyOrderDownController {
 	@ResponseBody
 	public void downloadStatus(@RequestParam("data") String data) throws UnsupportedEncodingException {
 		String jsonStr = URLDecoder.decode(data, "UTF-8");
-		String idStr[] = jsonStr.split(",");
+		String[] idStr = jsonStr.split(",");
 		for (String id : idStr) {
 			if (id != null) {
 				DeputyOrder deOrder = deputyOrderDao.findOne(Long.valueOf(id));
@@ -289,7 +289,7 @@ public class DeputyOrderDownController {
 	@ResponseBody
 	public void updateDeleteLogs(@RequestParam("data") String data) throws UnsupportedEncodingException {
 		String jsonStr = URLDecoder.decode(data, "UTF-8");
-		String idStr[] = jsonStr.split(",");
+		String[] idStr = jsonStr.split(",");
 		for (String id : idStr) {
 			if (id != null) {
 				DeOrderDeleteLog log = deOrderDeleteLogDao.findOne(Long.valueOf(id));

+ 85 - 0
src/main/java/com/uas/platform/b2b/erp/controller/NotExistOrderController.java

@@ -0,0 +1,85 @@
+package com.uas.platform.b2b.erp.controller;
+
+import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.model.NotExistOrders;
+import com.uas.platform.b2b.service.NotExistOrderService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.OrderType;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Status;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.net.URLDecoder;
+import java.util.List;
+
+/**
+ * 查询平台不存在的单据信息
+ *
+ * Created by hejq on 2018-06-19.
+ */
+@RequestMapping("/erp/notExistOrders")
+@RestController
+public class NotExistOrderController {
+
+    private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
+
+    @Autowired
+    private NotExistOrderService orderService;
+
+    /**
+     * 获取平台不存在的单据信息,采购单明细
+     */
+    @RequestMapping(value = "/saleItem", method = RequestMethod.GET)
+    public List<NotExistOrders> findNotExistSaleItem() {
+        List<NotExistOrders> orders = orderService.findByEnUUAndStatusAndType(SystemSession.getUser().getEnterprise().getUu(),
+                Status.NOT_UPLOAD.value(), OrderType.saleItem.name());
+        logger.log("查询未上传订单", "查询未上传采购单明细", orders.size());
+        return orders;
+    }
+
+    /**
+     * 根据返回id更新明细下载状态
+     *
+     * @throws Exception
+     */
+    @RequestMapping(value = "/back", method = RequestMethod.POST)
+    @ResponseBody
+    public void updateNotExistSaleItemStatus(@RequestParam("data") String data) throws Exception {
+        orderService.updateDownloadStatus(URLDecoder.decode(data, "UTF-8").split(","));
+        logger.log("采购订单", "ERP获取平台未上传单据返回更新下载状态", URLDecoder.decode(data, "UTF-8").split(",").length);
+    }
+
+    /**
+     * 获取平台不存在的单据信息,采购单明细
+     */
+    @RequestMapping(value = "/saleMain", method = RequestMethod.GET)
+    public List<NotExistOrders> findNotExistSaleMain() {
+        List<NotExistOrders> orders = orderService.findByEnUUAndStatusAndType(SystemSession.getUser().getEnterprise().getUu(),
+                Status.NOT_UPLOAD.value(), OrderType.saleItem.name());
+        logger.log("查询未上传订单", "查询未上传采购单", orders.size());
+        return orders;
+    }
+
+    /**
+     * 获取平台不存在的单据信息,委外单明细
+     */
+    @RequestMapping(value = "/makeItem", method = RequestMethod.GET)
+    public List<NotExistOrders> findNotExistMakeItem() {
+        List<NotExistOrders> orders = orderService.findByEnUUAndStatusAndType(SystemSession.getUser().getEnterprise().getUu(),
+                Status.NOT_UPLOAD.value(), OrderType.makeItem.name());
+        logger.log("查询未上传订单", "查询未上传委外单明细", orders.size());
+        return orders;
+    }
+
+    /**
+     * 获取平台不存在的单据信息,采购单明细
+     */
+    @RequestMapping(value = "/makeMain", method = RequestMethod.GET)
+    public List<NotExistOrders> findNotExistMakeMain() {
+        List<NotExistOrders> orders = orderService.findByEnUUAndStatusAndType(SystemSession.getUser().getEnterprise().getUu(),
+                Status.NOT_UPLOAD.value(), OrderType.saleItem.name());
+        logger.log("查询未上传订单", "查询未上传委外单", orders.size());
+        return orders;
+    }
+}

+ 1 - 142
src/main/java/com/uas/platform/b2b/erp/controller/ProdController.java

@@ -1,18 +1,12 @@
 package com.uas.platform.b2b.erp.controller;
 
 import com.uas.platform.b2b.erp.model.Prod;
-import com.uas.platform.b2b.erp.model.ProductSaler;
-import com.uas.platform.b2b.erp.service.ProdService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.model.NotExistProduct;
-import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.service.NotExistProductService;
-import com.uas.platform.b2b.service.ProductService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.logging.BufferedLoggerManager;
-import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
-import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -21,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
@@ -37,147 +30,13 @@ import java.util.List;
 @RequestMapping("/erp/product")
 public class ProdController {
 
-	@Autowired
-	private ProdService prodService;
-
-	@Autowired
-	private ProductService productService;
-
 	@Autowired
     private NotExistProductService notExistProductService;
 
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
-	/**
-	 * 将ERP的产品资料写到平台
-	 *
-	 * @param data
-	 * @return
-	 * @throws UnsupportedEncodingException
-	 */
-	@RequestMapping(method = RequestMethod.POST)
-	@ResponseBody
-	public void saveProducts(@RequestParam("data") String data) throws Exception {
-		String jsonStr = URLDecoder.decode(data, "UTF-8");
-		List<Prod> prods = FlexJsonUtils.fromJsonArray(jsonStr, Prod.class);
-		productService.save(prodService.convertProduct(prods));
-		logger.log("物料资料", "上传物料资料", prods.size());
-	}
-
-	/**
-	 * 定时任务更新物料信息
-	 *
-	 * @param data
-	 * @return
-	 * @throws UnsupportedEncodingException
-	 */
-	@RequestMapping(value = "/cycleupdate", method = RequestMethod.POST)
-	@ResponseBody
-	public void updateProducts(@RequestParam("data") String data) throws Exception {
-		String jsonStr = URLDecoder.decode(data, "UTF-8");
-		List<Prod> prods = FlexJsonUtils.fromJsonArray(jsonStr, Prod.class);
-		productService.save(prodService.convertProduct(prods));
-		logger.log("物料资料", "定时任务更新物料资料", prods.size());
-	}
-
-	/**
-	 * 将平台更新的ERP的物料数据回传回ERP
-	 *
-	 * @return
-	 */
-	@RequestMapping(value = "/backtouas", method = RequestMethod.GET)
-	@ResponseBody
-	public List<Prod> getProds() {
-		List<Prod> prods = new ArrayList<Prod>();
-		List<Product> products = productService.findBySourceAppAndDownloadstatus("ERP", Status.NOT_UPLOAD.value());
-		if (!CollectionUtils.isEmpty(products)) {
-			for (Product product : products) {
-				Prod prod = new Prod();
-				prod.setPr_uuid(product.getCmpUuId());
-				prod.setPr_id(product.getSourceId());
-				prod.setB2b_id(product.getId());
-				prods.add(prod);
-			}
-		}
-		return prods;
-	}
-
-	/**
-	 * 更新下载成功的状态
-	 *
-	 * @param data
-	 * @throws UnsupportedEncodingException
-	 */
-	@RequestMapping(value = "/refreshDownloadstatus", method = RequestMethod.POST)
-	@ResponseBody
-	public void refreshDownloadstatus(@RequestParam("data") String data) throws Exception {
-		productService.onProductDownSuccess(URLDecoder.decode(data, "UTF-8").split(","));
-	}
-
-	/**
-	 * UAS端禁用物料时调用此接口使B2B也禁用此物料
-	 * 通过物料编码(code)
-	 *
-	 * @param data 禁用的物料单号
-	 */
-	@RequestMapping(value = "/updateB2bEnabled", method = RequestMethod.POST)
-	@ResponseBody
-	public int updateB2bEnabled(@RequestParam("data") String data) throws Exception {
-		String code = URLDecoder.decode(data, "UTF-8");
-		Short b2bDisabled = Constant.YES;
-		return productService.updateB2bEnabled(code, b2bDisabled);
-	}
-
-	/**
-	 * UAS端反禁用物料接口
-	 * 通过物料编码(code)
-	 *
-	 * @param data 反禁用的物料单号
-	 */
-	@RequestMapping(value = "/updateB2bEnabled/audited", method = RequestMethod.POST)
-	@ResponseBody
-	public int updateB2bEnabledAudited(@RequestParam("data") String data) throws Exception {
-		String code = URLDecoder.decode(data, "UTF-8");
-		Short b2bDisabled = Constant.NO;
-		return productService.updateB2bEnabled(code, b2bDisabled);
-	}
-
-	/**
-	 * ERP个人物料同步到平台
-	 *
-	 * @author hejq
-	 * @date 2018-01-12 19:11
-	 * @param data
-	 * @throws UnsupportedEncodingException
-	 */
-	@RequestMapping(value = "/produser", method = RequestMethod.POST)
-	@ResponseBody
-	public void updateProdSaler(@RequestParam("data") String data) throws Exception {
-		String jsonStr = URLDecoder.decode(data, "UTF-8");
-        List<ProductSaler> productSalers = FlexJsonUtils.fromJsonArray(jsonStr, ProductSaler.class);
-        productService.updateProdSaler(productSalers);
-        logger.log("物料资料", "上传个人物料资料", productSalers.size());
-	}
-
-    /**
-     * ERP个人物料删除同步状态到平台
-     *
-     * @author hejq
-     * @date 2018-01-12 19:11
-     * @param data
-     * @throws UnsupportedEncodingException
-     */
-    @RequestMapping(value = "/produser/quit", method = RequestMethod.POST)
-    @ResponseBody
-    public void uploadProductSalerForCancel(@RequestParam("data") String data) throws Exception {
-        String jsonStr = URLDecoder.decode(data, "UTF-8");
-        List<ProductSaler> productSalers = FlexJsonUtils.fromJsonArray(jsonStr, ProductSaler.class);
-        productService.quitProdSaler(productSalers);
-        logger.log("物料资料", "ERP取消个人物料同步到平台", productSalers.size());
-    }
-
     /**
-     * 获取未上传的物料信息
+     * 获取未下载的物料信息
      * @return
      */
     @RequestMapping(value = "/notExistProds", method = RequestMethod.GET)

+ 21 - 4
src/main/java/com/uas/platform/b2b/erp/controller/PurchaseController.java

@@ -1,12 +1,11 @@
 package com.uas.platform.b2b.erp.controller;
 
-import com.uas.platform.b2b.erp.model.MessageLog;
-import com.uas.platform.b2b.erp.model.Purchase;
-import com.uas.platform.b2b.erp.model.PurchaseDetailEnd;
-import com.uas.platform.b2b.erp.model.PurchaseReply;
+import com.uas.platform.b2b.erp.model.*;
 import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.openapi.model.SaleItem;
 import com.uas.platform.b2b.service.PurchaseOrderService;
+import com.uas.platform.b2b.service.SaleOrderItemService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +36,9 @@ public class PurchaseController {
 	@Autowired
 	private PurchaseOrderService purchaseOrderService;
 
+	@Autowired
+    private SaleOrderItemService itemService;
+
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	/**
@@ -136,4 +138,19 @@ public class PurchaseController {
     public void onPrintSendSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
         purchaseOrderService.onPrintSendSuccess(URLDecoder.decode(data, "UTF-8").split(","));
     }
+
+    /**
+     * 将未上传的采购明细上传到平台
+     *
+     * @param data
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/item", method = RequestMethod.POST)
+    @ResponseBody
+    public void saveSaleItem(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<PurchaseDetail> details = FlexJsonUtils.fromJsonArray(jsonStr, PurchaseDetail.class);
+        itemService.save(itemService.covert(details));
+        logger.log("采购单", "上传采购单明细", details.size());
+    }
 }

+ 2 - 2
src/main/java/com/uas/platform/b2b/erp/controller/PurchaseNotifyController.java

@@ -58,9 +58,9 @@ public class PurchaseNotifyController {
 		String jsonStr = URLDecoder.decode(data, "UTF-8");
 		List<PurchaseNotify> notifies = FlexJsonUtils.fromJsonArray(jsonStr, PurchaseNotify.class);
 		List<PurchaseNotice> noticeList = purchaseNotifyService.convertPurchaseNotify(notifies);
-		purchaseNoticeService.save(noticeList);
+		noticeList = purchaseNoticeService.save(noticeList);
 		logger.log("送货提醒", "上传送货提醒", notifies.size());
-		return purchaseNotifyService.getB2bId(notifies);
+		return purchaseNotifyService.getB2bIdByNotices(noticeList);
 	}
 
 	/**

+ 5 - 0
src/main/java/com/uas/platform/b2b/erp/controller/PurchaseProdInOutController.java

@@ -3,7 +3,9 @@ package com.uas.platform.b2b.erp.controller;
 import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
 import com.uas.platform.b2b.erp.model.PurchaseProdInOut;
 import com.uas.platform.b2b.erp.service.PurchaseProdInOutService;
+import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.model.PurchaseAcceptItem;
 import com.uas.platform.b2b.service.*;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
@@ -47,6 +49,9 @@ public class PurchaseProdInOutController {
 	@Autowired
 	private PurchaseReturnService returnService;
 
+	@Autowired
+	private PurchaseService purchaseService;
+
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	/**

+ 2 - 2
src/main/java/com/uas/platform/b2b/erp/controller/PurchaseQuaMRBController.java

@@ -37,7 +37,7 @@ public class PurchaseQuaMRBController {
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	/**
-	 * 将ERP的采购变更单写到平台
+	 * 将ERP的MRB单据上传到平台
 	 * 
 	 * @param data
 	 * @return
@@ -49,7 +49,7 @@ public class PurchaseQuaMRBController {
 		String jsonStr = URLDecoder.decode(data, "UTF-8");
 		List<PurchaseQuaMRB> quaMRBs = FlexJsonUtils.fromJsonArray(jsonStr, PurchaseQuaMRB.class);
 		purchaseMRBService.save(purchaseQuaMRBService.convertMRBs(quaMRBs));
-		logger.log("采购变更单", "上传采购验退单", quaMRBs.size());
+		logger.log("MRB单", "上传MRB单", quaMRBs.size());
 		return purchaseQuaMRBService.getB2bId(quaMRBs);
 	}
 

+ 25 - 1
src/main/java/com/uas/platform/b2b/erp/controller/SaleDownChangeController.java

@@ -38,7 +38,7 @@ public class SaleDownChangeController {
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	/**
-	 * 卖家ERP从平台获取未回复的采购变更单
+	 * 卖家ERP从平台获取待上传的采购变更单
 	 * 
 	 * @return
 	 */
@@ -78,6 +78,18 @@ public class SaleDownChangeController {
 		logger.log("客户采购变更单", "上传客户采购变更单的回复信息", replies.size());
 	}
 
+	/**
+	 *将卖家ERP的变更单回复信息写到平台,并按信息修改采购单(买家为b2b用户)
+	 */
+	@RequestMapping(value = "/reply/b2b", method = RequestMethod.POST)
+	@ResponseBody
+	public void  saveChangeRepliesB2b(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<SaleDownChangeReply> replies = FlexJsonUtils.fromJsonArray(jsonStr, SaleDownChangeReply.class);
+		purchaseOrderChangeService.saveb2b(replies);
+		logger.log("客户采购变更单", "下载b2b客户采购变更单的回复信息", replies.size());
+	}
+
 	/**
 	 * 卖家ERP从平台获取在平台回复的记录
 	 * 
@@ -103,4 +115,16 @@ public class SaleDownChangeController {
 		purchaseOrderChangeService.onSaleDownChangeReplySuccess(URLDecoder.decode(data, "UTF-8").split(","));
 	}
 
+	/**
+	 * 卖家ERP从平台获取待上传的采购变更单(买方b2b)
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/b2b",method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleDownChange> getOrderChangesB2b() {
+		List<SaleDownChange> changes = saleDownChangeService.convertPurchaseOrderChange(purchaseOrderChangeService.findNotUploadOrderChangeB2b());
+		logger.log("客户采购变更单", "下载客户采购变更单", changes.size());
+		return changes;
+	}
 }

+ 10 - 4
src/main/java/com/uas/platform/b2b/erp/controller/VendorRecommendController.java

@@ -15,7 +15,7 @@ import java.util.List;
 
 /**
  * 供应商推荐
- * @author  dongbw
+ * Created by dongbw
  * 18/01/18 14:00.
  */
 @RestController
@@ -38,7 +38,9 @@ public class VendorRecommendController {
      */
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public Page<VendorRecommend> getVendorRecommend (Long enUU, String productMatchCondition, String enterpriseMatchCondition, int page, int size) {
-        return vendorService.getVendorRecommend(enUU, productMatchCondition, enterpriseMatchCondition, page, size);
+        Page<VendorRecommend> vendorRecommendPage = vendorService.getVendorRecommend(enUU, productMatchCondition, enterpriseMatchCondition, page, size);
+//        logger.log("供应商推荐","获取当前企业推荐供应商:" + enUU, vendorRecommendPage.getNumberOfElements());
+        return vendorRecommendPage;
     }
 
     /**
@@ -50,7 +52,9 @@ public class VendorRecommendController {
      */
     @RequestMapping(value = "/product/associate", method = RequestMethod.GET)
     public List<Product> getProductAssociate (String field, String condition) {
-        return vendorService.getProductAssociate(field, condition);
+        List<Product> products = vendorService.getProductAssociate(field, condition);
+//        logger.log("供应商推荐","根据条件获取物料型号和品牌值对", products.size());
+        return products;
     }
 
     /**
@@ -65,6 +69,8 @@ public class VendorRecommendController {
      */
     @RequestMapping(value = "/detail", method = RequestMethod.GET)
     public Page<Product> getVendorRecommendDetail(int page, int size, Long enUU, Long vendUU, String productMatchCondition, String whereCondition) {
-        return vendorService.getProductsByVendorRecommend(page, size, enUU, vendUU, productMatchCondition, whereCondition);
+        Page<Product> productPage = vendorService.getProductsByVendorRecommend(page, size, enUU, vendUU, productMatchCondition, whereCondition);
+//        logger.log("供应商推荐","获取当前企业推荐供应商:" + enUU, productPage.getNumberOfElements());
+        return productPage;
     }
 }

+ 60 - 0
src/main/java/com/uas/platform/b2b/erp/exception/ExceptionNote.java

@@ -0,0 +1,60 @@
+package com.uas.platform.b2b.erp.exception;
+
+/**
+ * 异常分类信息
+ *
+ * @author hejq
+ * @date 2018-07-03
+ */
+public enum ExceptionNote {
+
+    /**
+     * 委外单未找到
+     */
+    MAKE_NOTFOUND("委外单"),
+
+    /**
+     * 采购单主表未找到
+     */
+    SALE_NOTFOUND("采购单主表"),
+
+    /**
+     * 采购单明细未找到
+     */
+    SALEITEM_NOTFOUND("采购单明细"),
+
+    /**
+     * 采购单物料未找到
+     */
+    SALE_PRODUCT_NOTFOUND("采购单物料"),
+
+    /**
+     * 委外单物料未找到
+     */
+    MAKE_PRODUCT_NOTFOUND("委外单物料"),
+
+    /**
+     * 询价单物料未找到
+     */
+    INQUIRY_PRODUCT_NOTFOUND("询价单物料"),
+
+    /**
+     * 打样申请单物料未找到
+     */
+    PROOF_PRODUCT_NOTFOUND("打样申请单物料"),
+
+    /**
+     * 采购变更单变更物料未找到
+     */
+    PURC_CHANGE_PRODUCT_NOTFOUND("采购变更单变更物料");
+
+    private final String phrase;
+
+    ExceptionNote(String phrase) {
+        this.phrase = phrase;
+    }
+
+    public String getPhrase() {
+        return this.phrase;
+    }
+}

+ 34 - 0
src/main/java/com/uas/platform/b2b/erp/exception/NotFoundUtils.java

@@ -0,0 +1,34 @@
+package com.uas.platform.b2b.erp.exception;
+
+
+import com.uas.platform.core.exception.NotFoundException;
+
+
+/**
+ * 单据未找到异常信息
+ *
+ * @author hejq
+ * @date 2018-07-02
+ */
+public class NotFoundUtils {
+
+    /**
+     * 物料未找到
+     *
+     * @param paramString 异常信息
+     * @param sign 标志
+     */
+    public static void ProductNotFound(String paramString, String sign) {
+        throw new NotFoundException(String.format("%s未找到", new Object[]{paramString}), new Throwable(sign));
+    }
+
+    /**
+     * 单据未找到
+     *
+     * @param paramString 异常信息
+     * @param sign 标志
+     */
+    public static void OrderNotFound(String paramString, String sign) {
+        throw new NotFoundException(String.format("%s未找到", new Object[]{paramString}), new Throwable(sign));
+    }
+}

+ 0 - 13
src/main/java/com/uas/platform/b2b/erp/model/APCheckDetail.java

@@ -4,19 +4,6 @@ import com.uas.platform.b2b.model.PurchaseApCheckItem;
 
 public class APCheckDetail {
 	
-//	private Integer apd_number; // 明细行号
-//	private Long apd_prid;// 客户物料ID #
-//	private String apd_ordercode; // 客户出入库单号
-//	private String apd_orderclass; // 客户出入库类型 #
-//	private Long apd_orderdetno; // 客户出入库序号 #
-//	private Double apd_price; // 单价
-//	private Double apd_checkqty; // 对账数量
-//	private Double apd_amount; // 本次对账金额
-//	private Double apd_custcheckqty; // 客户确认数量 #
-//	private String apd_remark; // 备注
-//	private Long apd_id;// id 
-//	private Long apd_apid; // 关联Id 
-//	private Integer apd_status; // 对账状态 #
     private Short ad_detno; // 明细行号
 	private Long ad_prid;// 客户物料ID #
 	private String ad_inoutno; // 客户出入库单号

+ 6 - 2
src/main/java/com/uas/platform/b2b/erp/model/AcceptNotify.java

@@ -10,6 +10,9 @@ import java.util.*;
 
 /**
  * 买家ERP的收料通知单
+ *
+ * @author hejq
+ * @date 2018-06-28 17:18
  */
 public class AcceptNotify {
 
@@ -165,8 +168,9 @@ public class AcceptNotify {
 		send.setCode(this.an_sendcode == null ? String.valueOf(System.currentTimeMillis()) : this.an_sendcode);
 		Set<SaleSendItem> items = new HashSet<SaleSendItem>();
 		if (!CollectionUtils.isEmpty(details)) {
-			for (AcceptNotifyDetail detail : details)
-				items.add(detail.convert());
+			for (AcceptNotifyDetail detail : details) {
+                items.add(detail.convert());
+            }
 		}
 		send.setSendItems(items);
 		return send;

+ 5 - 3
src/main/java/com/uas/platform/b2b/erp/model/ErpLog.java

@@ -180,15 +180,17 @@ public class ErpLog extends BufferedLogable implements Serializable {
 		this.enUU = SystemSession.getUser().getEnterprise().getUu();
 		this.title = title;
 		this.message = message;
-		this.time = new Date().getTime();
+		this.time = System.currentTimeMillis();
 		this.total = total;
 		this.userUU = SystemSession.getUser().getUserUU();
 		this.ip = SystemSession.getUser().getIp();
 	}
 
-	public void bufferedLog(String bufferedMessage) {
+	@Override
+    public void bufferedLog(String bufferedMessage) {
+		Integer arraySize = 7;
 		String[] strArray = bufferedMessage.split(separator);
-		if (strArray.length == 7) {
+		if (strArray.length == arraySize) {
 			this.time = Long.parseLong(strArray[0]);
 			this.ip = strArray[1];
 			this.enUU = Long.parseLong(strArray[2]);

+ 8 - 3
src/main/java/com/uas/platform/b2b/erp/model/InquiryDetail.java

@@ -17,7 +17,12 @@ import java.util.*;
  */
 public class InquiryDetail {
 
-	private Long b2b_id_id;
+    /**
+     * 自动询价
+     */
+    private static String AUTO_INQUIRY = "自动询价";
+
+    private Long b2b_id_id;
 	private short id_detno;
 	private String id_prodcode;
 	private String id_currency;
@@ -349,7 +354,7 @@ public class InquiryDetail {
 				files.add(new RemoteFile(attach));
 			}
 		}
-		if ("自动询价".equals(item.getInquiry().getRemark())) {
+		if (AUTO_INQUIRY.equals(item.getInquiry().getRemark())) {
             this.id_quto = 1;
         }
 	}
@@ -416,7 +421,7 @@ public class InquiryDetail {
                 files.add(new RemoteFile(attach));
             }
         }
-        if ("自动询价".equals(item.getInquiry().getRemark())) {
+        if (AUTO_INQUIRY.equals(item.getInquiry().getRemark())) {
             this.id_quto = 1;
         }
 	}

+ 120 - 26
src/main/java/com/uas/platform/b2b/erp/model/Make.java

@@ -13,34 +13,128 @@ import com.uas.platform.core.model.Status;
  * ERP系统的委外加工单
  * 
  * @author suntg
- * 
  */
 public class Make {
 
-	private Long ma_id;// id
-	private String ma_code;// 委外编号
-	private Date ma_date;// 单据日期
-	private String ma_tasktype;// 单据类型
-	private Date ma_requiredate;// 需求日期
-	private Long ve_uu;// 供应商UU号
-	private String ma_prodcode;// 物料编号
-	private Double ma_qty;// 需求数量
-	private Double ma_makeqty;// 已生产数
-	private String ma_kind;// 工单类型
-	private Double ma_price;// 加工单价
-	private Double ma_total;// 加工金额
-	private String ma_currency;// 币别
-	private Float ma_rate;// 汇率
-	private Float ma_taxrate;// 税率
-	private String ma_shipaddresscode;// 收货地址
-	private String ma_payments;// 付款方式
-	private String ma_recorder;// 录入人
-	private Date ma_planbegindate;// 计划开工日期
-	private Date ma_planenddate;// 计划完工日期
-	private String ma_auditman;// 审核人
-	private String ma_remark;// 备注
-	private String ma_factory;// 送货工厂
-	private List<MakeMaterial> materials;// 用料明细
+	/**
+	 * id
+	 */
+	private Long ma_id;
+
+	/**
+	 * 委外编号
+	 */
+	private String ma_code;
+
+	/**
+	 * 单据日期
+	 */
+	private Date ma_date;
+
+	/**
+	 * 单据类型
+	 */
+	private String ma_tasktype;
+
+	/**
+	 * 需求日期
+	 */
+	private Date ma_requiredate;
+
+	/**
+	 * 供应商UU号
+	 */
+	private Long ve_uu;
+
+	/**
+	 * 物料编号
+	 */
+	private String ma_prodcode;
+
+	/**
+	 * 需求数量
+	 */
+	private Double ma_qty;
+
+	/**
+	 * 已生产数
+	 */
+	private Double ma_makeqty;
+
+	/**
+	 * 工单类型
+	 */
+	private String ma_kind;
+
+	/**
+	 * 加工单价
+	 */
+	private Double ma_price;
+
+	/**
+	 * 加工金额
+	 */
+	private Double ma_total;
+
+	/**
+	 * 币别
+	 */
+	private String ma_currency;
+
+	/**
+	 * 汇率
+	 */
+	private Float ma_rate;
+
+	/**
+	 * 税率
+	 */
+	private Float ma_taxrate;
+
+	/**
+	 * 收货地址
+	 */
+	private String ma_shipaddresscode;
+
+	/**
+	 * 付款方式
+	 */
+	private String ma_payments;
+
+	/**
+	 * 录入人
+	 */
+	private String ma_recorder;
+
+	/**
+	 * 计划开工日期
+	 */
+	private Date ma_planbegindate;
+
+	/**
+	 * 计划完工日期
+	 */
+	private Date ma_planenddate;
+
+	/**
+	 * 审核人
+	 */
+	private String ma_auditman;
+
+	/**
+	 * 备注
+	 */
+	private String ma_remark;
+
+	/**
+	 * 送货工厂
+	 */
+	private String ma_factory;
+
+	/**
+	 * 用料明细
+	 */
+	private List<MakeMaterial> materials;
 
 	public String getMa_factory() {
 		return ma_factory;
@@ -242,7 +336,7 @@ public class Make {
 		make.setComplete(ma_planenddate);
 		make.setCurrency(ma_currency);
 		make.setDate(ma_date);
-		make.setDelivery(ma_date);
+		make.setDelivery(ma_requiredate);
 		make.setEnd(Constant.NO);
 		make.setEnUU(SystemSession.getUser().getEnterprise().getUu());
 		make.setEnterprise(new EnterpriseInfo(SystemSession.getUser().getEnterprise()));

+ 70 - 0
src/main/java/com/uas/platform/b2b/erp/model/OrderDetailPrice.java

@@ -0,0 +1,70 @@
+package com.uas.platform.b2b.erp.model;
+
+import java.math.BigDecimal;
+
+/**
+ * 订单价格更新
+ *
+ * Created by hejq on 2018-06-28.
+ */
+public class OrderDetailPrice {
+
+    /**
+     * 主键id
+     */
+    private Long id;
+
+    /**
+     * 价格
+     */
+    private Double price;
+
+    /**
+     * 税率
+     */
+    private BigDecimal taxrate;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public BigDecimal getTaxrate() {
+        return taxrate;
+    }
+
+    public void setTaxrate(BigDecimal taxrate) {
+        this.taxrate = taxrate;
+    }
+
+    /**
+     * 封装采购价格信息
+     *
+     * @param id 采购明细id
+     * @param price 采购价格
+     * @param taxrate 税率
+     */
+    public OrderDetailPrice(Long id, Double price, Double taxrate) {
+        this.id = id;
+        this.price = price;
+        this.taxrate = new java.math.BigDecimal(taxrate);
+    }
+
+    /**
+     * 无参构造
+     */
+    public OrderDetailPrice() {
+    }
+
+}

+ 21 - 5
src/main/java/com/uas/platform/b2b/erp/model/ProductSample.java

@@ -10,7 +10,7 @@ import java.util.List;
 import java.util.Set;
 
 /**
- * 买家ERP系统的采购询价
+ * 买家ERP系统的打样申请
  * 
  * @author yingp
  * 
@@ -23,15 +23,31 @@ public class ProductSample {
 	private Date ps_indate;
 	private Long ps_appmanuu;
 	private String ps_prodcode;
-	private String ps_isfree;// 是否收费
+
+	/**
+	 * 是否收费
+	 */
+	private String ps_isfree;
 	private Date ps_delivery;
 	private String ps_envrequire;
 	private String ps_scope;
 	private String ps_remark;
-	private String ps_attach;// 附件
-	private List<Attach> attaches;// 附件
+
+	/**
+	 * 附件
+	 */
+	private String ps_attach;
+
+	/**
+	 * 附件
+	 */
+	private List<Attach> attaches;
 	private List<ProductSampleDetail> details;
-	private Long ps_b2bid;// B2Bid
+
+	/**
+	 * b2bID
+	 */
+	private Long ps_b2bid;
 
 	public Long getPs_id() {
 		return ps_id;

+ 11 - 5
src/main/java/com/uas/platform/b2b/erp/model/Purchase.java

@@ -355,7 +355,8 @@ public class Purchase {
 		user.setUserName(this.em_name);
 		user.setUserEmail(this.em_email);
 		order.setUser(user);
-		if (this.em_uu != null) {// ERP单据中采购员存在UU号
+		// ERP单据中采购员存在UU号
+		if (this.em_uu != null) {
 			order.setUserUU(this.em_uu);
 		}
 		order.setPayments(this.pu_payments);
@@ -365,13 +366,18 @@ public class Purchase {
 		order.setStatus((short) Status.NOT_REPLY.value());
 		order.setSendStatus((short) Status.NOT_UPLOAD.value());
 		order.setType(this.pu_kind);
-		order.setVendUU(this.ve_uu);// 设为单据中供应商UU
-		order.setVendUserUU(this.ve_contactuu);// 设为ERP中单据供应商联系人UU
+		// 设为单据中供应商UU
+		order.setVendUU(this.ve_uu);
+		// 设为ERP中单据供应商联系人UU
+		order.setVendUserUU(this.ve_contactuu);
 		order.setAuditor(this.pu_auditman);
-		order.setReceiveName(this.pu_receivename);// 应付供应商
+		// 应付供应商
+		order.setReceiveName(this.pu_receivename);
 		order.setReceiveCode(this.pu_receivecode);
-		order.setDisplay(Constant.YES);// 设为未查看
+		// 设为未查看
+		order.setDisplay(Constant.YES);
 		order.setErpId(this.pu_id);
+		order.setSource("UAS");
 		if (!CollectionUtils.isEmpty(this.purchaseDetails)) {
 			Set<PurcOrderInfoItem> items = new HashSet<PurcOrderInfoItem>();
 			for (PurchaseDetail detail : this.purchaseDetails) {

+ 29 - 2
src/main/java/com/uas/platform/b2b/erp/model/PurchaseNotify.java

@@ -16,17 +16,44 @@ import java.util.Date;
  */
 public class PurchaseNotify {
 
+	/**
+	 * 原id,erp id
+	 */
 	private long pn_id;
+	/**
+	 * 供应商UU号
+	 */
 	private long ve_uu;
+	/**
+	 * 录入日期
+	 */
 	private Date pn_indate;
+	/**
+	 * 需求数量
+	 */
 	private Double pn_qty;
+	/**
+	 * 要求发货日期
+	 */
 	private Date pn_delivery;
+	/**
+	 * 订单编号
+	 */
 	private String pn_ordercode;
+	/**
+	 * 订单明细序号
+	 */
 	private Short pn_orderdetno;
+	/**
+	 * 备注
+	 */
 	private String pn_remark;
+	/**
+	 * 已发货数量
+	 */
 	private Double pn_endqty;
-	private Double pr_zxbzs;// 物料最小包装数
-	private Long pn_b2bid; //b2bid
+	private Double pr_zxbzs; // 物料最小包装数
+	private Long pn_b2bid; // b2bid
 
 	public long getPn_id() {
 		return pn_id;

+ 0 - 8
src/main/java/com/uas/platform/b2b/erp/model/PurchaseProdInOutDetail.java

@@ -162,14 +162,6 @@ public class PurchaseProdInOutDetail {
 		returnItem.setWhname(this.pd_whname);
 		returnItem.setOrderCode(this.pd_ordercode);
         returnItem.setOrderDetno(this.pd_orderdetno);
-		if (StringUtils.hasText(this.pd_ordercode)) {
-			PurchaseOrder order = new PurchaseOrder();
-			order.setCode(this.pd_ordercode);
-			PurchaseOrderItem orderItem = new PurchaseOrderItem();
-			orderItem.setNumber(this.pd_orderdetno);
-			orderItem.setOrder(order);
-			returnItem.setOrderItem(orderItem);
-		}
 		return returnItem;
 	}
 

+ 2 - 1
src/main/java/com/uas/platform/b2b/erp/model/PurchaseReply.java

@@ -129,7 +129,8 @@ public class PurchaseReply implements Serializable{
 		setPr_pucode(orderReply.getOrderItem().getOrder().getCode());
 		setPr_pddetno(orderReply.getOrderItem().getNumber());
 		setB2b_pr_id(orderReply.getId());
-		setPr_recorder(orderReply.getRecorder());//recorder录入人
+		//recorder录入人
+		setPr_recorder(orderReply.getRecorder());
 		setPr_type(orderReply.getType());
 		setPr_id(orderReply.getErpId());
 	}

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/model/Quotation.java

@@ -177,8 +177,9 @@ public class Quotation {
 		quotation.setEnvironment(this.qu_environment);
 		Set<SaleQuotationItem> quotationItems = new HashSet<SaleQuotationItem>();
 		if (!CollectionUtils.isEmpty(this.details)) {
-			for (QuotationDetail detail : this.details)
-				quotationItems.add(detail.convert());
+			for (QuotationDetail detail : this.details) {
+                quotationItems.add(detail.convert());
+            }
 		}
 		quotation.setQuotationItems(quotationItems);
 		quotation.setErpId(this.qu_id);

+ 6 - 4
src/main/java/com/uas/platform/b2b/erp/model/QuotationDetail.java

@@ -148,8 +148,9 @@ public class QuotationDetail {
 		item.setCustProductCode(this.qd_custprodcode);
 		Set<SaleQuotationPrice> prices = new HashSet<SaleQuotationPrice>();
 		if (!CollectionUtils.isEmpty(this.dets)) {
-			for (QuotationDetailDet det : this.dets)
-				prices.add(det.convert());
+			for (QuotationDetailDet det : this.dets) {
+                prices.add(det.convert());
+            }
 		}
 		item.setPrices(prices);
 		return item;
@@ -167,8 +168,9 @@ public class QuotationDetail {
 		this.qd_zxdl = item.getMinOrderQty();
 		List<QuotationDetailDet> detailDets = new ArrayList<QuotationDetailDet>();
 		if(! CollectionUtils.isEmpty(item.getPrices())){
-			for(SaleQuotationPrice price : item.getPrices())
-				detailDets.add(new QuotationDetailDet(price));
+			for(SaleQuotationPrice price : item.getPrices()) {
+                detailDets.add(new QuotationDetailDet(price));
+            }
 		}
 		this.dets = detailDets;
 	}

+ 4 - 4
src/main/java/com/uas/platform/b2b/erp/model/SaleDownChangeDetail.java

@@ -118,10 +118,10 @@ public class SaleDownChangeDetail {
 
 	public SaleDownChangeDetail(PurchaseOrderChangeItem changeItem) {
 		this.scd_detno = changeItem.getNumber();
-		this.scd_newcustprodcode = changeItem.getNewProduct().getCode();
-		this.scd_newcustproddetail = changeItem.getNewProduct().getTitle();
-		this.scd_newcustprodspec = changeItem.getNewProduct().getSpec();
-		this.scd_newcustprodunit = changeItem.getNewProduct().getUnit();
+		this.scd_newcustprodcode = changeItem.getNewProduct() != null ?changeItem.getNewProduct().getCode() : null;
+		this.scd_newcustproddetail = changeItem.getNewProduct() != null ?changeItem.getNewProduct().getTitle() : null;
+		this.scd_newcustprodspec = changeItem.getNewProduct() != null ?changeItem.getNewProduct().getSpec() : null;
+		this.scd_newcustprodunit = changeItem.getNewProduct() != null ?changeItem.getNewProduct().getUnit() : null;
 		this.scd_newdelivery = changeItem.getNewDelivery();
 		this.scd_newprice = changeItem.getNewPrice();
 		this.scd_newqty = changeItem.getNewQty();

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/model/SaleOut.java

@@ -156,8 +156,9 @@ public class SaleOut {
 			for (SaleOutDetail detail : this.details) {
 				SaleSendItem item = detail.convert();
 				// 如果存在关联的送货提醒,则需要下达到买家
-				if (item.getNoticeId() != null)
-					send.setSendStatus((short) Status.NOT_UPLOAD.value());
+				if (item.getNoticeId() != null) {
+                    send.setSendStatus((short) Status.NOT_UPLOAD.value());
+                }
 				items.add(item);
 			}
 		}

+ 2 - 4
src/main/java/com/uas/platform/b2b/erp/model/SaleProdInOutDownDetail.java

@@ -123,10 +123,8 @@ public class SaleProdInOutDownDetail {
 		this.pd_batchcode = returnItem.getBatchCode();
 		this.pd_detno = returnItem.getNumber();
 		this.pd_outqty = returnItem.getQty();
-		if (returnItem.getOrderItem() != null) {
-			this.pd_ordercode = returnItem.getOrderItem().getOrder().getCode();
-			this.pd_orderdetno = returnItem.getOrderItem().getNumber();
-		}
+		this.pd_ordercode = returnItem.getOrderCode();
+		this.pd_orderdetno = returnItem.getOrderDetno();
 		this.pd_orderprice = returnItem.getOrderPrice();
 		this.pd_remark = returnItem.getRemark();
 		this.pd_taxrate = returnItem.getTaxrate();

+ 10 - 0
src/main/java/com/uas/platform/b2b/erp/service/MakeService.java

@@ -5,6 +5,7 @@ import java.util.List;
 import com.uas.platform.b2b.erp.model.Make;
 import com.uas.platform.b2b.erp.model.MakeEnd;
 import com.uas.platform.b2b.erp.model.MakeReply;
+import com.uas.platform.b2b.erp.model.OrderDetailPrice;
 import com.uas.platform.b2b.model.MakeOrder;
 import com.uas.platform.b2b.model.MakeOrderReply;
 
@@ -33,4 +34,13 @@ public interface MakeService {
 	 */
 	List<MakeOrder> convertMakeEnd(List<MakeEnd> ends);
 
+	/**
+	 * 更新委外单价格
+	 *
+	 * @param detailPriceList 出入库单据
+	 * @param type 类型
+	 * @author hejq
+	 * @date 2018-06-28 16:57
+	 */
+    void refreshPrice(List<OrderDetailPrice> detailPriceList, String type);
 }

+ 2 - 0
src/main/java/com/uas/platform/b2b/erp/service/PurchaseNotifyService.java

@@ -78,4 +78,6 @@ public interface PurchaseNotifyService {
 	 * @return
 	 */
 	List<PurchaseNotify> getB2bId(List<PurchaseNotify> notifyList);
+
+	List<PurchaseNotify> getB2bIdByNotices(List<PurchaseNotice> notices);
 }

+ 6 - 1
src/main/java/com/uas/platform/b2b/erp/service/PurchaseQuaMRBService.java

@@ -5,12 +5,17 @@ import com.uas.platform.b2b.model.PurchaseMRB;
 
 import java.util.List;
 
+/**
+ * MRB单
+ *
+ * @author hejq
+ */
 public interface PurchaseQuaMRBService {
 
 	/**
 	 * 将ERP系统的MRB单,转为平台的MRB单
 	 * 
-	 * @param changes
+	 * @param quaMRBs MRB单
 	 * @return
 	 */
 	List<PurchaseMRB> convertMRBs(List<PurchaseQuaMRB> quaMRBs);

+ 11 - 4
src/main/java/com/uas/platform/b2b/erp/service/PurchaseService.java

@@ -2,10 +2,7 @@ package com.uas.platform.b2b.erp.service;
 
 import java.util.List;
 
-import com.uas.platform.b2b.erp.model.MessageLog;
-import com.uas.platform.b2b.erp.model.Purchase;
-import com.uas.platform.b2b.erp.model.PurchaseDetailEnd;
-import com.uas.platform.b2b.erp.model.PurchaseReply;
+import com.uas.platform.b2b.erp.model.*;
 import com.uas.platform.b2b.model.PrintLog;
 import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
@@ -60,4 +57,14 @@ public interface PurchaseService {
 	 * @return
 	 */
     List<Purchase> getB2bId(List<Purchase> purchaseList);
+
+    /**
+	 * 更新采购单价格
+	 *
+	 * @param detailPriceList 出入库单据
+     * @param type 类型
+     * @author hejq
+     * @date 2018-06-28 15:37
+	 */
+    void refreshPrice(List<OrderDetailPrice> detailPriceList, String type);
 }

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/APCheckServiceImpl.java

@@ -22,8 +22,9 @@ public class APCheckServiceImpl implements APCheckService {
 	@Override
 	public List<APCheck> convertApCheck(List<PurchaseApCheck> apCheck) {
 		List<APCheck> APChecks = new ArrayList<APCheck>();
-		for (PurchaseApCheck order : apCheck)
-			APChecks.add(new APCheck(order));
+		for (PurchaseApCheck order : apCheck) {
+            APChecks.add(new APCheck(order));
+        }
 		return APChecks;
 	}
 

+ 17 - 1
src/main/java/com/uas/platform/b2b/erp/service/impl/AutOrderServiceImpl.java

@@ -77,6 +77,22 @@ public class AutOrderServiceImpl implements AutOrderService {
      */
     private final String USER_TYPE = "user";
 
+    /**
+     * 中文年
+     */
+    private final String YEAR_CH_CHARACTER = "年";
+
+    /**
+     * 中文月
+     */
+    private final String MONTH_CH_CHARACTER = "月";
+
+    /**
+     * 中文日
+     */
+    private final String DAY_CH_CHARACTER = "日";
+
+
     /**
      * 保存订单信息
      *
@@ -230,7 +246,7 @@ public class AutOrderServiceImpl implements AutOrderService {
             } else if (delivery.matches(TIME_PATTERN_2)) {
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyymmdd");
                 return sdf.parse(delivery);
-            } else if (delivery.contains("年") || delivery.contains("月") || delivery.contains("日")) {
+            } else if (delivery.contains(YEAR_CH_CHARACTER) || delivery.contains(MONTH_CH_CHARACTER) || delivery.contains(DAY_CH_CHARACTER)) {
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd");
                 return sdf.parse(delivery);
             } else if (delivery.matches(TIME_PATTERN_3)) {

+ 2 - 1
src/main/java/com/uas/platform/b2b/erp/service/impl/BarLabelServiceImpl.java

@@ -18,7 +18,8 @@ public class BarLabelServiceImpl implements BarLabelService {
 	@Autowired
 	BarLabelDao barLabelDao;
 
-	public List<BarLabel> convertBarLabel(List<Label> labels) {
+	@Override
+    public List<BarLabel> convertBarLabel(List<Label> labels) {
 		List<BarLabel> barLabels = new ArrayList<BarLabel>();
 		for (Label label : labels) {
 			BarLabel barLabel = label.convent();

+ 5 - 3
src/main/java/com/uas/platform/b2b/erp/service/impl/ErpLogServiceImpl.java

@@ -52,11 +52,13 @@ public class ErpLogServiceImpl implements ErpLogService {
 			if(filter.getFromDate() != null){
 				pageInfo.expression(PredicateUtils.gte("time", new Long(filter.getFromDate()), false));
 			}
-			if(filter.getEndDate() != null)
-				pageInfo.expression(PredicateUtils.lte("time", new Long(filter.getEndDate()), false));
+			if(filter.getEndDate() != null) {
+                pageInfo.expression(PredicateUtils.lte("time", new Long(filter.getEndDate()), false));
+            }
 		}
 		Page<ErpLog> erpLog = erpLogDao.findAll(new Specification<ErpLog>() {
-			public Predicate toPredicate(Root<ErpLog> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+			@Override
+            public Predicate toPredicate(Root<ErpLog> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		},pageInfo);

+ 25 - 17
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -1,7 +1,9 @@
 package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
@@ -11,12 +13,14 @@ import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
-import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.b2b.temporary.model.OrderType;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
+import org.apache.axis.utils.StringUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +29,11 @@ import org.springframework.stereotype.Service;
 
 import java.util.*;
 
+/**
+ * 采购询价
+ *
+ * @author hejq
+ */
 @Service
 public class InquiryServiceImpl implements InquiryService {
 
@@ -56,10 +65,7 @@ public class InquiryServiceImpl implements InquiryService {
 	private VendorService vendorService;
 
 	@Autowired
-    private NotExistProductDao notExistProductDao;
-
-	@Autowired
-    private PurchaseInquiryTempDao tempDao;
+    private NotExistProductService notExistProductService;
 
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
@@ -68,12 +74,14 @@ public class InquiryServiceImpl implements InquiryService {
 	@Override
 	public List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries) {
 		List<PurchaseInquiryItemTemp> tempList = new ArrayList<PurchaseInquiryItemTemp>();
-		final String appId = "uas";// 应用来源
+        // 应用来源
+		final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		for (Inquiry inquiry : inquiries) {
 			// 先查看是否已存在
 			List<PurchaseInquiry> existInquiries = purchaseInquiryDao.findByEnUUAndCode(enUU, inquiry.getIn_code());
-			if (existInquiries.size() == 0) {// 不存在才继续,存在不作操作
+            // 不存在才继续,存在不作操作
+			if (existInquiries.size() == 0) {
 				PurchaseInquiry purchaseInquiry = inquiry.convert();
 				// 如果记录人UU在b2b找不到,设置为null
 				if (null != purchaseInquiry.getRecorderUU()) {
@@ -83,8 +91,11 @@ public class InquiryServiceImpl implements InquiryService {
 					}
 				}
 				if (!CollectionUtils.isEmpty(purchaseInquiry.getInquiryItems())) {
+                    List<NotExistProduct> productList = new ArrayList<>();
+                    String sign = "";
 					for (PurchaseInquiryItem item : purchaseInquiry.getInquiryItems()) {
-						item.setErpDate(new Date());// 存储时间
+						// 存储时间
+						item.setErpDate(new Date(System.currentTimeMillis()));
 						Vendor vendor = null;
 						// 不存在先设置
 						if (item.getUserUU() == null || item.getUserUU() == 0) {
@@ -113,15 +124,10 @@ public class InquiryServiceImpl implements InquiryService {
 								item.setProduct(products.get(0));
 								item.setProductId(products.get(0).getId());
 							} else {
-								List<NotExistProduct> productList = notExistProductDao.findByEnuuAndCode(enUU, product.getCode());
-								if (org.springframework.util.CollectionUtils.isEmpty(productList)) {
-									notExistProductDao.save(new NotExistProduct(product.getCode(), enUU, "inquiry", inquiry.getIn_code()));
-								} else {
-									NotExistProduct prod = productList.get(0);
-									prod.setStatus(Status.NOT_UPLOAD.value());
-									notExistProductDao.save(prod);
+								if (StringUtils.isEmpty(sign)) {
+									sign = StringUtil.uuid();
 								}
-								throw new NotFoundException("企业UU【" + enUU + "】,物料编号【" + product.getCode() + "】,来源【" + inquiry.getIn_code() + "】");
+                                productList.add(new NotExistProduct(product.getCode(), enUU, OrderType.inquiry.name(), inquiry.getIn_code(), item.getNumber(), sign));
 							}
 							item.setInquiry(purchaseInquiry);
 							PurchaseInquiryTemp temp = new PurchaseInquiryTemp();
@@ -132,7 +138,9 @@ public class InquiryServiceImpl implements InquiryService {
 							tempList.add(itemTemp);
 						}
 					}
-
+					if (!CollectionUtils.isEmpty(productList)) {
+					    notExistProductService.batchSave(productList, ExceptionNote.INQUIRY_PRODUCT_NOTFOUND.getPhrase(), sign);
+                    }
 				}
 			}
 		}

+ 48 - 12
src/main/java/com/uas/platform/b2b/erp/service/impl/MakeProdInOutServiceImpl.java

@@ -1,14 +1,18 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.MakeAcceptDao;
 import com.uas.platform.b2b.dao.MakeOrderDao;
 import com.uas.platform.b2b.dao.MakeReturnDao;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
 import com.uas.platform.b2b.erp.model.MakeProdInOut;
 import com.uas.platform.b2b.erp.service.MakeProdInOutService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.NotExistOrderService;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.core.model.Constant;
+import org.apache.axis.utils.StringUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,6 +22,12 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
+/**
+ * 委外验收单
+ *
+ * @author hejq
+ * @date 2018-07-03 10:39
+ */
 @Service
 public class MakeProdInOutServiceImpl implements MakeProdInOutService {
 	@Autowired
@@ -32,6 +42,9 @@ public class MakeProdInOutServiceImpl implements MakeProdInOutService {
 	@Autowired
 	private MakeReturnDao makeReturnDao;
 
+	@Autowired
+	private NotExistOrderService orderService;
+
 	/**
 	 * 将ERP委外验收单,转为平台的客户委外验收单
 	 * 
@@ -48,20 +61,31 @@ public class MakeProdInOutServiceImpl implements MakeProdInOutService {
 			Enterprise ventor = enterprisedao.findEnterpriseByUu(accept.getVendUU());
 			// 判断委外验收单和供应商UU是否存在
 			if (accept2.size() == 0 && ventor != null) {
+				List<NotExistOrders> ordersList = new ArrayList<>();
+				String sign = "";
 				for (Iterator<MakeAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
 					MakeAcceptItem item = it.next();
 					List<MakeOrder> makeOrders = makeOrderDao.findByEnUUAndCode(enUU, item.getOrder().getCode());
-					if (makeOrders.size() > 0) {// 验收对应的委外加工单存在
-						item.setOrder(makeOrders.get(0));// 对应的加工单set进去
+					// 验收对应的委外加工单存在
+					if (makeOrders.size() > 0) {
+						// 对应的加工单set进去
+						item.setOrder(makeOrders.get(0));
 						item.setOrderId(makeOrders.get(0).getId());
-						item.setAccept(accept);// 设置主记录
+						// 设置主记录
+						item.setAccept(accept);
 						item.setErpDate(new Date());
 						acceptItems.add(item);
 					} else {
-						it.remove();
-                        throw new NotFoundException(item.getOrder().getCode() + "对应的委外单不存在");
+						if (StringUtils.isEmpty(sign)) {
+							sign = StringUtil.uuid();
+						}
+						ordersList.add(new NotExistOrders(enUU, item.getOrder().getCode(),
+                                com.uas.platform.b2b.temporary.model.OrderType.makeMain.name(), Constant.NO, sign));
 					}
 				}
+				if (!CollectionUtils.isEmpty(ordersList)) {
+                    orderService.batchSave(ordersList, ExceptionNote.MAKE_NOTFOUND.getPhrase(), sign);
+                }
 			}
 		}
 		return acceptItems;
@@ -92,19 +116,31 @@ public class MakeProdInOutServiceImpl implements MakeProdInOutService {
 			Enterprise vendor = enterprisedao.findEnterpriseByUu(returnn.getVendUU());
 			// 采购验收单不存在,供应商UU号存在对应供应商
 			if (returns2.size() == 0 && vendor != null) {
-				for (Iterator<MakeReturnItem> it = returnn.getReturnItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
+                // 设置明细对应的采购单明细
+                List<NotExistOrders> ordersList = new ArrayList<>();
+                String sign = "";
+				for (Iterator<MakeReturnItem> it = returnn.getReturnItems().iterator(); it.hasNext();) {
 					MakeReturnItem returnItem = it.next();
 					List<MakeOrder> makeOrders = makeOrderDao.findByEnUUAndCode(enUU, returnItem.getOrder().getCode());
-					if (makeOrders.size() > 0) {// 对应的采购单存在
-						returnItem.setOrder(makeOrders.get(0));// 对应的采购单明细set进去
+                    // 对应的采购单存在
+					if (makeOrders.size() > 0) {
+                        // 对应的采购单明细set进去
+						returnItem.setOrder(makeOrders.get(0));
 						returnItem.setOrderId(makeOrders.get(0).getId());
-						returnItem.setReturn(returnn);// 设置主记录
+                        // 设置主记录
+						returnItem.setReturn(returnn);
 						returnItem.setErpDate(new Date());
 						returnItems.add(returnItem);
 					} else {
-						it.remove();
-						throw new NotFoundException(returnItem.getOrder().getCode() + "对应的委外单不存在");
+					    if (StringUtils.isEmpty(sign)) {
+					        sign = StringUtil.uuid();
+                        }
+                        ordersList.add(new NotExistOrders(enUU, returnItem.getOrder().getCode(),
+                                com.uas.platform.b2b.temporary.model.OrderType.makeMain.name(), Constant.NO, sign));
 					}
+					if (!CollectionUtils.isEmpty(ordersList)) {
+					    orderService.batchSave(ordersList, ExceptionNote.MAKE_NOTFOUND.getPhrase(), sign);
+                    }
 				}
 			}
 		}

+ 52 - 11
src/main/java/com/uas/platform/b2b/erp/service/impl/MakeServiceImpl.java

@@ -1,23 +1,28 @@
 package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.MakeOrderDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.core.util.StringUtil;
+import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
 import com.uas.platform.b2b.erp.model.Make;
 import com.uas.platform.b2b.erp.model.MakeEnd;
 import com.uas.platform.b2b.erp.model.MakeReply;
+import com.uas.platform.b2b.erp.model.OrderDetailPrice;
 import com.uas.platform.b2b.erp.service.MakeService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.event.MakeOrderEndReleaseEvent;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.b2b.temporary.model.OrderType;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -41,16 +46,27 @@ public class MakeServiceImpl implements MakeService {
 	@Autowired
 	private VendorService vendorService;
 
+	@Autowired
+    private CommonDao commonDao;
+
+	@Autowired
+	private NotExistProductService notExistProductService;
+
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
 	@Override
 	public List<MakeOrder> convertMakes(List<Make> makes) {
 		List<MakeOrder> makeOrders = new ArrayList<MakeOrder>();
-        final String appId = "uas";// 应用来源
+		// 应用来源
+        final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		for (Make make : makes) {
 			List<MakeOrder> orders = makeOrderDao.findByEnUUAndCode(enUU, make.getMa_code());
 			Enterprise vendor = enterpriseDao.findEnterpriseByUu(make.getVe_uu());
 			List<Product> products = productDao.findByEnUUAndCode(enUU, make.getMa_prodcode());
-			if (!CollectionUtils.isEmpty(products)) {
+            List<NotExistProduct> notExistProducts = new ArrayList<>();
+            String sign = "";
+            if (!CollectionUtils.isEmpty(products)) {
 				if (orders.size() == 0 && vendor != null) {
 					MakeOrder makeOrder = make.convert();
 					Product product = products.get(0);
@@ -61,7 +77,8 @@ public class MakeServiceImpl implements MakeService {
 					if (CollectionUtils.isEmpty(vendors)) {
 						vend = addVendor(make);
 						if (null != vend) {
-							vendorService.addPartnerShipRecord(vend, appId); // 添加合作伙伴
+							// 添加合作伙伴
+							vendorService.addPartnerShipRecord(vend, appId);
 						}
 					} else {
 						vend = vendors.get(0);
@@ -72,8 +89,14 @@ public class MakeServiceImpl implements MakeService {
 					makeOrders.add(makeOrder);
 				}
 			} else {
-				throw new NotFoundException(enUU + ",[" + make.getMa_prodcode() + "]对应的物料不存在,关联委外单[" + make.getMa_code() + "]");
+				if (StringUtils.isEmpty(sign)) {
+					sign = StringUtil.uuid();
+				}
+				notExistProducts.add(new NotExistProduct(make.getMa_prodcode(), enUU, OrderType.make.name(), make.getMa_code(), Constant.NO, sign));
 			}
+			if (!CollectionUtils.isEmpty(notExistProducts)) {
+                notExistProductService.batchSave(notExistProducts, ExceptionNote.MAKE_PRODUCT_NOTFOUND.getPhrase(), sign);
+            }
 		}
 		return makeOrders;
 	}
@@ -89,8 +112,9 @@ public class MakeServiceImpl implements MakeService {
 			throw new IllegalArgumentException("委外订单增加供应商错误,供应商UU号参数错误");
 		} else {
 			Enterprise vend = enterpriseDao.findOne(vendUU);
-			if (vend == null)
-				throw new IllegalArgumentException("委外订单增加供应商错误,供应商UU号参数错误");
+			if (vend == null) {
+                throw new IllegalArgumentException("委外订单增加供应商错误,供应商UU号参数错误");
+            }
 			Vendor vendor = new Vendor();
 			vendor.setMyEnUU(SystemSession.getUser().getEnterprise().getUu());
 			vendor.setMyEnterprise(SystemSession.getUser().getEnterprise());
@@ -131,4 +155,21 @@ public class MakeServiceImpl implements MakeService {
 		return makeOrders;
 	}
 
+	/**
+	 * 更新委外单价格
+	 *
+	 * @param detailPriceList 出入库单据
+	 * @param type            类型
+	 * @author hejq
+	 * @date 2018-06-28 16:57
+	 */
+	@Override
+	public void refreshPrice(List<OrderDetailPrice> detailPriceList, String type) {
+        logger.log("更新委外单价格", "ERP单据:" + type + ",大小:" + detailPriceList.size());
+        for (OrderDetailPrice detailPrice : detailPriceList) {
+            String sql = "update make$orders set ma_price = " + detailPrice.getPrice() + ", ma_taxrate = " + detailPrice.getTaxrate()
+                    + " where ma_id = " + detailPrice.getId();
+            commonDao.getJdbcTemplate().update(sql);
+        }
+	}
 }

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/OutsourceServiceImpl.java

@@ -24,8 +24,9 @@ public class OutsourceServiceImpl implements OutsourceService {
 	@Override
 	public List<SaleDown> convertMakeOrder(List<MakeOrder> orders) {
 		List<SaleDown> sales = new ArrayList<SaleDown>();
-		for (MakeOrder order : orders)
-			sales.add(new SaleDown(order));
+		for (MakeOrder order : orders) {
+            sales.add(new SaleDown(order));
+        }
 		return sales;
 	}
 

+ 35 - 6
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseChangeServiceImpl.java

@@ -1,11 +1,18 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
 import com.uas.platform.b2b.erp.model.PurchaseChange;
 import com.uas.platform.b2b.erp.model.PurchaseChangeReply;
 import com.uas.platform.b2b.erp.service.PurchaseChangeService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.*;
+import com.uas.platform.b2b.temporary.model.OrderType;
+import com.uas.platform.core.model.Constant;
+import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -14,6 +21,12 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+/**
+ * 采购变更新增变更物料信息判断
+ *
+ * @author hejq
+ * @date 2018-07-05 17:43
+ */
 @Service
 public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 
@@ -32,6 +45,9 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 	@Autowired
 	private PurchaseOrderChangeItemDao purchaseOrderChangeItemDao;
 
+	@Autowired
+    private NotExistProductService productService;
+
 	@Override
 	public List<PurchaseOrderChangeItem> convertPurchaseChange(List<PurchaseChange> changes) {
 		List<PurchaseOrderChangeItem> changeItems = new ArrayList<PurchaseOrderChangeItem>();
@@ -43,15 +59,19 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 					change.getPc_code());
 			// 原采购单需存在,变更单不存在
 			if (orders.size() > 0 && orderChanges.size() == 0) {
-				convertOrderInfo(orderChange, orders.get(0));// 赋值原单据信息字段
+				// 赋值原单据信息字段
+				convertOrderInfo(orderChange, orders.get(0));
 				if (!CollectionUtils.isEmpty(orderChange.getOrderChangeItems())) {
+				    List<NotExistProduct> productList = new ArrayList<>();
+				    String uuid = "";
 					for (PurchaseOrderChangeItem item : orderChange.getOrderChangeItems()) {
 						item.setErpDate(new Date());
 						// 取订单明细ID
 						List<PurchaseOrderItem> orderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(enUU,
 								orderChange.getOrderCode(), item.getOrderItemNumber());
 						if (orderItems.size() > 0) {
-							convertOrderItemInfo(item, orderItems.get(0));// 赋值原单据信息字段
+							// 赋值原单据信息字段
+							convertOrderItemInfo(item, orderItems.get(0));
 						}
 						// 取平台的产品ID
 						Product newProduct = item.getNewProduct();
@@ -60,10 +80,18 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 						if (products.size() > 0) {
 							item.setNewProduct(products.get(0));
 							item.setNewProductId(products.get(0).getId());
-						}
+						} else {
+						    if (StringUtils.isEmpty(uuid)) {
+						        uuid = StringUtil.uuid();
+                            }
+                            productList.add(new NotExistProduct(newProduct.getCode(), enUU, OrderType.purcorderChange.name(),
+                                    change.getPc_code(), Constant.NO, uuid));
+                        }
 						item.setOrderChange(orderChange);
 					}
-
+					if (!CollectionUtils.isEmpty(productList)) {
+                        productService.batchSave(productList, ExceptionNote.PURC_CHANGE_PRODUCT_NOTFOUND.getPhrase(), uuid);
+                    }
 					changeItems.addAll(orderChange.getOrderChangeItems());
 				}
 			}
@@ -74,8 +102,9 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 	@Override
 	public List<PurchaseChangeReply> convertPurchaseOrderChangeReply(List<PurchaseOrderChange> changes) {
 		List<PurchaseChangeReply> replies = new ArrayList<PurchaseChangeReply>();
-		for (PurchaseOrderChange change : changes)
-			replies.add(new PurchaseChangeReply(change));
+		for (PurchaseOrderChange change : changes) {
+            replies.add(new PurchaseChangeReply(change));
+        }
 		return replies;
 	}
 

+ 3 - 3
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseForecastServiceImpl.java

@@ -176,9 +176,9 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 			vendor.setCustswitch(Constant.YES);
 			vendor.setVendswitch(Constant.YES);
 			if (forecastItem.getOrder().getUserUU() != null
-					&& userDao.findOne(forecastItem.getOrder().getUserUU()) != null)
-				vendor.setMyUserUU(forecastItem.getOrder().getUserUU());
-			else {
+					&& userDao.findOne(forecastItem.getOrder().getUserUU()) != null) {
+                vendor.setMyUserUU(forecastItem.getOrder().getUserUU());
+            } else {
 				vendor.setMyUserUU(SystemSession.getUser().getUserUU());
 			}
 			vendor.setVendorEnterprise(enterprise);

+ 23 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseNotifyServiceImpl.java

@@ -182,8 +182,9 @@ public class PurchaseNotifyServiceImpl implements PurchaseNotifyService {
 	@Override
 	public List<AcceptNotify> convertSaleSend(List<SaleSend> sends) {
 		List<AcceptNotify> accepts = new ArrayList<AcceptNotify>();
-		for (SaleSend send : sends)
-			accepts.add(new AcceptNotify(send));
+		for (SaleSend send : sends) {
+            accepts.add(new AcceptNotify(send));
+        }
 		return accepts;
 	}
 
@@ -279,4 +280,24 @@ public class PurchaseNotifyServiceImpl implements PurchaseNotifyService {
         }
 		return notifyList;
 	}
+
+	/**
+	 * 通过已经保存的notice获取notify的b2bId
+	 * @param notices
+	 * @return
+	 */
+	@Override
+	public List<PurchaseNotify> getB2bIdByNotices(List<PurchaseNotice> notices) {
+		List<PurchaseNotify> purchaseNotifies = new ArrayList<PurchaseNotify>();
+		if (CollectionUtils.isNotEmpty(notices)) {
+			for (PurchaseNotice notice : notices) {
+				PurchaseNotify purchaseNotify = new PurchaseNotify();
+				purchaseNotify.setPn_b2bid(notice.getId());
+				purchaseNotify.setPn_id(notice.getSourceId());
+				purchaseNotify.setVe_uu(notice.getVendUU());
+				purchaseNotifies.add(purchaseNotify);
+			}
+		}
+		return purchaseNotifies;
+	}
 }

+ 81 - 46
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseProdInOutServiceImpl.java

@@ -1,13 +1,18 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
+import com.uas.platform.b2b.erp.model.OrderDetailPrice;
 import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
 import com.uas.platform.b2b.erp.model.PurchaseProdInOut;
 import com.uas.platform.b2b.erp.service.PurchaseProdInOutService;
+import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.ps.ProductUtils;
+import com.uas.platform.b2b.service.NotExistOrderService;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.core.exception.NotFoundException;
+import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -42,6 +47,12 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 	@Autowired
 	private ProductDao productDao;
 
+	@Autowired
+	private NotExistOrderService orderService;
+
+	@Autowired
+    private PurchaseService purchaseService;
+
 	@Override
 	public List<PurchaseAcceptItem> convertProdInOuts(List<PurchaseProdInOut> prodInOuts) throws Exception {
 		List<PurchaseAcceptItem> acceptItems = new ArrayList<PurchaseAcceptItem>();
@@ -52,34 +63,44 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 			Enterprise vendor = enterpriseDao.findEnterpriseByUu(accept.getVendUU());
 			// 采购验收单不存在,供应商UU号存在对应供应商
 			if (accepts2.size() == 0 && vendor != null) {
-				for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
+				// 设置明细对应的采购单明细
+                List<NotExistOrders> ordersList = new ArrayList<>();
+                String sign = "";
+				for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
 					PurchaseAcceptItem item = it.next();
 					if (item.getOrderItem() != null) {
 						List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
 								.findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
 										item.getOrderItem().getNumber());
-						if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
-							item.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
+						// 对应的采购单存在
+						if (purchaseOrderItems.size() > 0) {
+							// 对应的采购单明细set进去
+							item.setOrderItem(purchaseOrderItems.get(0));
 							item.setOrderItemId(purchaseOrderItems.get(0).getId());
-							item.setAccept(accept);// 设置主记录
+							// 设置主记录
+							item.setAccept(accept);
 							item.setErpDate(new Date());
 							item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
 							item.setProdId(purchaseOrderItems.get(0).getProductId());
 							acceptItems.add(item);
 						} else {
-							throw new NotFoundException(enUU + ",采购验收单对应的采购单[" + item.getOrderItem().getOrder().getCode() + "]第[" + item.getOrderItem().getNumber() + "]行明细不存在");
+							if (StringUtils.isEmpty(sign)) {
+							    sign = StringUtil.uuid();
+                            }
+                            ordersList.add(new NotExistOrders(enUU, item.getOrderItem().getOrder().getCode(),
+                                    com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), sign));
 						}
 					} else {
 						List<Product> prod = productDao.findByEnUUAndCode(enUU, item.getProdcode());
 						if (prod.size() > 0) {
 							item.setProduct(prod.get(0));
 							item.setProdId(prod.get(0).getId());
-						} else {// 物料不存在先进行存储
+						} else {
+						    // 物料不存在先进行存储
 							Product product = new Product();
 							product.setCode(item.getProdcode());
 							product.setEnUU(enUU);
 							Long proId = ProductUtils.updateOne(product);
-//							item.setProduct(product);
 							item.setProdId(proId);
 						}
 						item.setAccept(accept);
@@ -87,6 +108,9 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 						acceptItems.add(item);
 					}
 				}
+				if (!CollectionUtils.isEmpty(ordersList)) {
+				    orderService.batchSave(ordersList, ExceptionNote.SALEITEM_NOTFOUND.getPhrase(), sign);
+                }
 			} else if (accepts2.size() > 0 && vendor != null) {
 				Set<PurchaseAcceptItem> haditems = accepts2.get(0).getAcceptItems();
 				List<String> haditemsBatchCode = new ArrayList<String>();
@@ -94,8 +118,8 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 					PurchaseAcceptItem hadItem = itHaditems.next();
 					haditemsBatchCode.add(hadItem.getBatchCode());
 				}
-
-				for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
+				// 设置明细对应的采购单明细
+				for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
 					PurchaseAcceptItem item = it.next();
 					if (haditemsBatchCode.contains(item.getBatchCode())) {
 						//已上传的明细不要
@@ -105,13 +129,13 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 							List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
 									.findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
 											item.getOrderItem().getNumber());
-
-							if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
-								item.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
+							// 对应的采购单存在
+							if (purchaseOrderItems.size() > 0) {
+								// 对应的采购单明细set进去
+								item.setOrderItem(purchaseOrderItems.get(0));
 								item.setOrderItemId(purchaseOrderItems.get(0).getId());
-
-								item.setAccept(accepts2.get(0));// 设置主记录
-
+								// 设置主记录
+								item.setAccept(accepts2.get(0));
 								item.setErpDate(new Date());
 								item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
 								item.setProdId(purchaseOrderItems.get(0).getProductId());
@@ -124,7 +148,8 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 							if (prod.size() > 0) {
 								item.setProduct(prod.get(0));
 								item.setProdId(prod.get(0).getId());
-							} else {// 物料不存在先进行存储
+							} else {
+								// 物料不存在先进行存储
 								Product product = new Product();
 								product.setCode(item.getProdcode());
 								product.setEnUU(enUU);
@@ -132,8 +157,6 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 								item.setProduct(product);
 								item.setProdId(proId);
 							}
-
-
 							item.setAccept(accepts2.get(0));
 							item.setErpDate(new Date());
 							acceptItems.add(item);
@@ -155,36 +178,32 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 			Enterprise vendor = enterpriseDao.findEnterpriseByUu(returnn.getVendUU());
 			// 采购验收单不存在,供应商UU号存在对应供应商
 			if (returns2.size() == 0 && vendor != null) {
-				for (PurchaseReturnItem returnItem : returnn.getReturnItems()) {// 设置明细对应的采购单明细
-					if (returnItem.getOrderItem() != null) {
+				// 设置明细对应的采购单明细
+				for (PurchaseReturnItem returnItem : returnn.getReturnItems()) {
+					if (null != returnItem.getOrderDetno() && null != returnItem.getOrderCode()) {
 						List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
-								.findByEnUUAndOrderCodeAndNumber(enUU, returnItem.getOrderItem().getOrder().getCode(),
-										returnItem.getOrderItem().getNumber());
-						if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
-							returnItem.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
+								.findByEnUUAndOrderCodeAndNumber(enUU, returnItem.getOrderCode(), returnItem.getOrderDetno());
+						// 对应的采购单存在
+						if (purchaseOrderItems.size() > 0) {
 							returnItem.setOrderItemId(purchaseOrderItems.get(0).getId());
-							returnItem.setProduct(purchaseOrderItems.get(0).getProduct());
 							returnItem.setProdId(purchaseOrderItems.get(0).getProductId());
 							returnItem.setProdCode(purchaseOrderItems.get(0).getProduct().getCode());
-						} else {
-							// 如果采购单号不存在,设置为空值
-							returnItem.getOrderItem().getOrder().setCode(null);
 						}
 					} else {
 						List<Product> prod = productDao.findByEnUUAndCode(enUU, returnItem.getProdCode());
 						if (prod.size() > 0) {
-							returnItem.setProduct(prod.get(0));
 							returnItem.setProdId(prod.get(0).getId());
-						} else {// 物料不存在先进行存储
+						} else {
+							// 物料不存在先进行存储
 							Product product = new Product();
 							product.setCode(returnItem.getProdCode());
 							product.setEnUU(enUU);
 							Long proId = ProductUtils.updateOne(product);
-//							returnItem.setProduct(product);
 							returnItem.setProdId(proId);
 						}
 					}
-					returnItem.setPurchaseReturn(returnn);// 设置主记录
+					// 设置主记录
+					returnItem.setPurchaseReturn(returnn);
 					returnItem.setErpDate(new Date());
 					returnItems.add(returnItem);
 				}
@@ -201,17 +220,21 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 			PurchaseBadIn badIn = prodInOut.conventToBadIn();
 			List<PurchaseBadIn> badIns = purchaseBadInDao.findByEnUUAndCode(enUU, badIn.getCode());
 			Enterprise vendor = enterpriseDao.findEnterpriseByUu(badIn.getVendUU());
-			// 采购验收单不存在,供应商UU号存在对应供应商
+			// 不良品入库单不存在,供应商UU号存在对应供应商
 			if (badIns.size() == 0 && vendor != null) {
-				for (Iterator<PurchaseBadInItem> it = badIn.getBadInItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
+                // 设置明细对应的采购单明细
+				for (Iterator<PurchaseBadInItem> it = badIn.getBadInItems().iterator(); it.hasNext();) {
 					PurchaseBadInItem badInItem = it.next();
 					List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(
 							enUU, badInItem.getOrderItem().getOrder().getCode(), badInItem.getOrderItem().getNumber());
-					if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
-						badInItem.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
+                    // 对应的采购单存在
+					if (purchaseOrderItems.size() > 0) {
+                        // 对应的采购单明细set进去
+						badInItem.setOrderItem(purchaseOrderItems.get(0));
 						badInItem.setOrderItemId(purchaseOrderItems.get(0).getId());
-						badInItem.setBadIn(badIn);// 设置主记录
-						badInItem.setErpDate(new Date());
+                        // 设置主记录
+						badInItem.setBadIn(badIn);
+						badInItem.setErpDate(new Date(System.currentTimeMillis()));
 						badInItems.add(badInItem);
 					} else {
 						it.remove();
@@ -233,16 +256,20 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 			// 不良品出库单不存在,供应商UU号存在对应供应商
 			if (badOuts.size() == 0 && vendor != null) {
 				if (badOut.getBadOutItems() != null) {
-					for (Iterator<PurchaseBadOutItem> it = badOut.getBadOutItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
+                    // 设置明细对应的采购单明细
+					for (Iterator<PurchaseBadOutItem> it = badOut.getBadOutItems().iterator(); it.hasNext();) {
 						PurchaseBadOutItem badOutItem = it.next();
 						List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(
 								enUU, badOutItem.getOrderItem().getOrder().getCode(),
 								badOutItem.getOrderItem().getNumber());
-						if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
-							badOutItem.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
+                        // 对应的采购单存在
+						if (purchaseOrderItems.size() > 0) {
+                            // 对应的采购单明细set进去
+							badOutItem.setOrderItem(purchaseOrderItems.get(0));
 							badOutItem.setOrderItemId(purchaseOrderItems.get(0).getId());
-							badOutItem.setBadOut(badOut);// 设置主记录
-							badOutItem.setErpDate(new Date());
+                            // 设置主记录
+							badOutItem.setBadOut(badOut);
+							badOutItem.setErpDate(new Date(System.currentTimeMillis()));
 							badOutItems.add(badOutItem);
 						} else {
 							it.remove();
@@ -320,17 +347,25 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 	@Override
 	public List<PurchaseAcceptItem> convertPirceForProdIn(List<ProdInOutRefreshPrice> prodInOuts) {
 		List<PurchaseAcceptItem> acceptItems = new ArrayList<PurchaseAcceptItem>();
-		if(!CollectionUtils.isEmpty(prodInOuts)) {
-			for(ProdInOutRefreshPrice prod : prodInOuts) {
+		List<OrderDetailPrice> detailPriceList = new ArrayList<>();
+		if (!CollectionUtils.isEmpty(prodInOuts)) {
+			for (ProdInOutRefreshPrice prod : prodInOuts) {
 				PurchaseAcceptItem acceptItem = purchaseAcceptItemDao.findByEnUUAndCodeAndNumber(
 						SystemSession.getUser().getEnterprise().getUu(), prod.getPbu_inoutno(), prod.getPbu_pdno());
 				if (null != acceptItem) {
 					acceptItem.setOrderPrice(prod.getPbu_orderprice());
 					acceptItem.setTaxrate(prod.getPbu_taxrate());
 					acceptItems.add(acceptItem);
+					if (null != acceptItem.getOrderItemId()) {
+                        detailPriceList.add(new OrderDetailPrice(acceptItem.getOrderItemId(), acceptItem.getOrderPrice(), acceptItem.getTaxrate()));
+					}
 				}
 			}
 		}
+		// 更新对应的采购单信息
+		if (!CollectionUtils.isEmpty(detailPriceList)) {
+            purchaseService.refreshPrice(detailPriceList, OrderType.saleaccept.name());
+        }
 		return acceptItems;
 	}
 

+ 9 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseQuaMRBServiceImpl.java

@@ -19,6 +19,11 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+/**
+ * MRB单
+ *
+ * @author US50
+ */
 @Service
 public class PurchaseQuaMRBServiceImpl implements PurchaseQuaMRBService {
 
@@ -45,13 +50,15 @@ public class PurchaseQuaMRBServiceImpl implements PurchaseQuaMRBService {
 			// 采购验收单不存在,供应商UU号存在对应供应商
 			if (purchaseMRBs.size() == 0 && vendor != null) {
 				List<PurchaseBadIn> badIns = purchaseBadInDao.findByEnUUAndCode(enUU, mrb.getBadIn().getCode());
-				if (badIns.size() > 0) {// 存在对应的不良品入库单
+                // 存在对应的不良品入库单
+				if (badIns.size() > 0) {
 					mrb.setBadIn(badIns.get(0));
 					mrb.setBadInId(badIns.get(0).getId());
 				}
 				List<PurchaseOrderItem> orderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(enUU,
 						mrb.getOrderItem().getOrder().getCode(), mrb.getOrderItem().getNumber());
-				if (orderItems.size() > 0) {// 存在对应的采购单明细
+                // 存在对应的采购单明细
+				if (orderItems.size() > 0) {
 					mrb.setOrderItem(orderItems.get(0));
 					mrb.setOrderItemId(orderItems.get(0).getId());
 					mrb.setErpDate(new Date());

+ 51 - 21
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseSampleServiceImpl.java

@@ -1,14 +1,18 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
 import com.uas.platform.b2b.erp.model.ProductSample;
 import com.uas.platform.b2b.erp.model.ProductSampleApproval;
 import com.uas.platform.b2b.erp.service.PurchaseSampleService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.b2b.temporary.model.OrderType;
 import com.uas.platform.core.model.Constant;
+import org.apache.axis.utils.StringUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -17,6 +21,11 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+/**
+ * 打样申请单
+ *
+ * @author hejq
+ */
 @Service
 public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 
@@ -41,53 +50,68 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 	@Autowired
 	private VendorService vendorService;
 
+	@Autowired
+    private NotExistProductService notExistProductService;
+
 	@Override
 	public List<PurchaseProofingItem> convertProofing(List<ProductSample> samples) {
 		List<PurchaseProofingItem> proofingItems = new ArrayList<PurchaseProofingItem>();
-		final String appId = "uas";// 应用来源
+		// 应用来源
+		final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		for (ProductSample sample : samples) {
 			List<PurchaseProofing> proofingList = purchaseProofingDao.findByEnUUAndCode(enUU, sample.getPs_code());
 			List<Product> products = productDao.findByEnUUAndCode(enUU, sample.getPs_prodcode());
+			List<NotExistProduct> productList = new ArrayList<>();
+			String sign = "";
 			if (!CollectionUtils.isEmpty(products)) {
-				if (proofingList.size() == 0) {// 平台中不存在的单据&&物料已经上传到平台
+				// 平台中不存在的单据&&物料已经上传到平台
+				if (proofingList.size() == 0) {
 					PurchaseProofing proofing = sample.convert();
 					if (!CollectionUtils.isEmpty(proofing.getProofingItems())) {
 						Long userUU = proofing.getUserUU();
 						if (userUU != null) {
 							List<User> users = userDao.findByEnUUAndUserUU(enUU, userUU);
-							if (users.size() > 0)
-								userUU = users.get(0).getUserUU();
-							else
-								userUU = SystemSession.getUser().getUserUU();
-						} else
-							userUU = SystemSession.getUser().getUserUU();
+							if (users.size() > 0) {
+                                userUU = users.get(0).getUserUU();
+                            } else {
+                                userUU = SystemSession.getUser().getUserUU();
+                            }
+						} else {
+                            userUU = SystemSession.getUser().getUserUU();
+                        }
 						// 单据中能获取到申请人的uu号,并且有效则为申请人,否则为企业管理员
 						proofing.setUserUU(userUU);
 						proofing.setUser(null);
 						proofing.setProduct(products.get(0));
 						proofing.setProductId(products.get(0).getId());
-						for (PurchaseProofingItem proofingItem : proofing.getProofingItems()) {// 对明细遍历
+                        // 对明细遍历
+						for (PurchaseProofingItem proofingItem : proofing.getProofingItems()) {
 							proofingItem.setProofing(proofing);
 							List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(enUU, proofingItem.getVendUU());
 							Vendor vendor = null;
-							if (vendors.size() == 0) {// 供应商列表中不存在供应商关系
-								vendor = addVendor(proofingItem);// 增加供应商关系
+                            // 供应商列表中不存在供应商关系
+							if (vendors.size() == 0) {
+                                // 增加供应商关系
+								vendor = addVendor(proofingItem);
 								if (null != vendor) {
 									vendorService.addPartnerShipRecord(vendor, appId);
 								}
 							} else {
 								vendor = vendors.get(0);
 							}
-							if (vendor != null) {// 供应商uu号不为非法的值
+                            // 供应商uu号不为非法的值
+							if (vendor != null) {
 								// 如果明细中客户联系人UU号为空或者UU号不存在对应的用户,则设为供应商资料中的供应商联系人(可能为空)
 								if (proofingItem.getVendUserUU() != null) {
 									List<User> vendUsers = userDao.findByEnUUAndUserUU(vendor.getVendEnUU(),
 											proofingItem.getVendUserUU());
-									if (vendUsers.size() == 0)
-										proofingItem.setVendUserUU(vendor.getVendUserUU());
-								} else
-									proofingItem.setVendUserUU(vendor.getVendUserUU());
+									if (vendUsers.size() == 0) {
+                                        proofingItem.setVendUserUU(vendor.getVendUserUU());
+                                    }
+								} else {
+                                    proofingItem.setVendUserUU(vendor.getVendUserUU());
+                                }
 								proofingItem.setErpDate(new Date(System.currentTimeMillis()));
 								proofingItem.setDate(new Date(System.currentTimeMillis()));
 								proofingItems.add(proofingItem);
@@ -96,9 +120,14 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 					}
 				}
 			} else {
-				throw new NotFoundException(sample.getPs_prodcode() + ",物料不存在,企业UU:" + SystemSession.getUser().getEnterprise().getUu());
+			    if (StringUtils.isEmpty(sign)) {
+			        sign = StringUtil.uuid();
+                }
+                productList.add(new NotExistProduct(sample.getPs_prodcode(), enUU, OrderType.proof.name(), sample.getPs_code(), Constant.NO, sign));
 			}
-
+			if (!CollectionUtils.isEmpty(productList)) {
+                notExistProductService.batchSave(productList, ExceptionNote.PROOF_PRODUCT_NOTFOUND.getPhrase(), sign);
+            }
 		}
 		return proofingItems;
 	}
@@ -137,8 +166,9 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 			if (sampleApproval.getPa_venduu() != null) {
 				List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(SystemSession.getUser().getEnterprise().getUu(),
 						sampleApproval.getPa_venduu());
-				if (vendors.size() > 0)
-					proofingApprovals.add(sampleApproval.convert());
+				if (vendors.size() > 0) {
+                    proofingApprovals.add(sampleApproval.convert());
+                }
 			}
 		}
 		return proofingApprovals;

+ 59 - 26
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java

@@ -1,20 +1,21 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
-import com.uas.platform.b2b.erp.model.MessageLog;
-import com.uas.platform.b2b.erp.model.Purchase;
-import com.uas.platform.b2b.erp.model.PurchaseDetailEnd;
-import com.uas.platform.b2b.erp.model.PurchaseReply;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
+import com.uas.platform.b2b.erp.model.*;
 import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
-import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.b2b.temporary.model.OrderType;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
+import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -23,6 +24,11 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+/**
+ * 采购单接
+ *
+ * @author hejq
+ */
 @Service
 public class PurchaseServiceImpl implements PurchaseService {
 
@@ -51,49 +57,60 @@ public class PurchaseServiceImpl implements PurchaseService {
 	private VendorService vendorService;
 
 	@Autowired
-    private NotExistProductDao notExistProductDao;
+    private NotExistProductService notExistProductService;
+
+	@Autowired
+    private CommonDao commonDao;
 
 	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	@Override
 	public List<PurcOrderInfoItem> convertPurchase(List<Purchase> purchases) {
 		List<PurcOrderInfoItem> orderItems = new ArrayList<PurcOrderInfoItem>();
-        final String appId = "uas";// 应用来源
+		// 应用来源
+        final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		for (Purchase purchase : purchases) {
 			// 先查看是否已存在
 			List<PurchaseOrder> orders = purchaseOrderDao.findByEnUUAndCode(enUU, purchase.getPu_code());
 			if (CollectionUtils.isEmpty(orders)) {
-				PurchaseOrderInfo order = purchase.convert();// 将order的UserUU
-																// set 为em_uu
+				PurchaseOrderInfo order = purchase.convert();
+				// 将order的UserUU set 为em_uu
 				List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(order.getEnUU(), order.getVendUU());
 				Vendor vendor = null;
-				if (vendors.size() == 0) {// 供应商资料在平台上不存在
-					vendor = addVendor(order);// 添加企业的供应商资料
+				if (vendors.size() == 0) {
+					// 供应商资料在平台上不存在 添加企业的供应商资料
+					vendor = addVendor(order);
 					if (null != vendor) {
-						vendorService.addPartnerShipRecord(vendor, appId);// 添加企业圈合作伙伴关系
+						// 添加企业圈合作伙伴关系
+						vendorService.addPartnerShipRecord(vendor, appId);
 					}
 				} else {// 供应商资料在平台上存在
 					vendor = vendors.get(0);
-					if (order.getVendUserUU() == null || order.getVendUserUU() == 0)// 单据不包含供应商联系人UU号&&供应商列表中有供应商联系人
-					{
-						order.setVendUserUU(vendor.getVendUserUU());// 将供应商列表中的联系人设为单据的供应商联系人
+					// 单据不包含供应商联系人UU号&&供应商列表中有供应商联系人
+					if (order.getVendUserUU() == null || order.getVendUserUU() == 0) {
+						// 将供应商列表中的联系人设为单据的供应商联系人
+						order.setVendUserUU(vendor.getVendUserUU());
 					}
 					if (order.getUserUU() == null || order.getUserUU() == 0) {
 						order.setUserUU(SystemSession.getUser().getUserUU());
 					}
 				}
-				if (vendor != null && !CollectionUtils.isEmpty(order.getOrderItems())) {// 平台中存在供应商的UU&&单据有明细行
+				// 平台中存在供应商的UU&&单据有明细行
+				if (vendor != null && !CollectionUtils.isEmpty(order.getOrderItems())) {
 					if (order.getUserUU() != null) {
 						List<User> myUsers = userDao.findByEnUUAndUserUU(
 								SystemSession.getUser().getEnterprise().getUu(), order.getUserUU());
 						if (myUsers.size() > 0) {
 							order.setUserUU(myUsers.get(0).getUserUU());
-						} else {// 单据所属用户UU号不属于客户企业时设为企业管理员
+						} else {
+							// 单据所属用户UU号不属于客户企业时设为企业管理员
 							order.setUserUU(SystemSession.getUser().getEnterprise().getEnAdminuu());
 						}
 					}
 					order.setUser(null);
+					List<NotExistProduct> productList = new ArrayList<>();
+					String sign = "";
 					for (PurcOrderInfoItem item : order.getOrderItems()) {
 						item.setOrder(order);
 						item.setStatus((short) Status.NOT_REPLY.value());
@@ -106,17 +123,15 @@ public class PurchaseServiceImpl implements PurchaseService {
 							item.setErpDate(new Date());
 							orderItems.add(item);
 						} else {
-						    List<NotExistProduct> productList = notExistProductDao.findByEnuuAndCode(enUU, product.getCode());
-						    if (CollectionUtils.isEmpty(productList)) {
-                                notExistProductDao.save(new NotExistProduct(product.getCode(), enUU, "purchase", purchase.getPu_code()));
-                            } else {
-                                NotExistProduct prod = productList.get(0);
-                                prod.setStatus(Status.NOT_UPLOAD.value());
-                                notExistProductDao.save(prod);
-                            }
-							throw new NotFoundException("企业UU【" + enUU + "】,物料编号【" + product.getCode() + "】,来源【" + purchase.getPu_code() + "】");
+							if (StringUtils.isEmpty(sign)) {
+								sign = StringUtil.uuid();
+							}
+							productList.add(new NotExistProduct(product.getCode(), enUU, OrderType.purchase.name(), purchase.getPu_code(), Constant.NO, sign));
 						}
 					}
+					if (!CollectionUtils.isEmpty(productList)) {
+						notExistProductService.batchSave(productList, ExceptionNote.SALE_PRODUCT_NOTFOUND.getPhrase(), sign);
+					}
 				}
 			}
 		}
@@ -262,4 +277,22 @@ public class PurchaseServiceImpl implements PurchaseService {
 		}
 		return purchaseList;
 	}
+
+    /**
+     * 更新采购单价格
+     *
+     * @param detailPriceList 出入库单据
+     * @param type            类型
+     * @author hejq
+     * @date 2018-06-28 15:37
+     */
+    @Override
+    public void refreshPrice(List<OrderDetailPrice> detailPriceList, String type) {
+        logger.log("更新采购单价格", "ERP单据:" + type + ",大小:" + detailPriceList.size());
+        for (OrderDetailPrice detailPrice : detailPriceList) {
+            String sql = "update purc$orderitems set pd_price = " + detailPrice.getPrice() + ", pd_taxrate = " + detailPrice.getTaxrate()
+                    + " where pd_id = " + detailPrice.getId();
+            commonDao.getJdbcTemplate().update(sql);
+        }
+    }
 }

+ 6 - 4
src/main/java/com/uas/platform/b2b/erp/service/impl/QuotationDownServiceImpl.java

@@ -39,8 +39,9 @@ public class QuotationDownServiceImpl implements QuotationDownService {
 	public List<QuotationDown> convertInquiryReply(List<PurchaseInquiryItem> inquiryItems) {
 		List<QuotationDown> downs = new ArrayList<QuotationDown>();
 		if (!CollectionUtils.isEmpty(inquiryItems)) {
-			for (PurchaseInquiryItem item : inquiryItems)
-				downs.add(new QuotationDown(item));
+			for (PurchaseInquiryItem item : inquiryItems) {
+                downs.add(new QuotationDown(item));
+            }
 		}
 		return downs;
 	}
@@ -49,8 +50,9 @@ public class QuotationDownServiceImpl implements QuotationDownService {
 	public List<QuotationDownDecide> convertInquiryReplyDecide(List<PurchaseInquiryItem> inquiryItems) {
 		List<QuotationDownDecide> decides = new ArrayList<QuotationDownDecide>();
 		if (!CollectionUtils.isEmpty(inquiryItems)) {
-			for (PurchaseInquiryItem item : inquiryItems)
-				decides.add(new QuotationDownDecide(item));
+			for (PurchaseInquiryItem item : inquiryItems) {
+                decides.add(new QuotationDownDecide(item));
+            }
 		}
 		return decides;
 	}

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/QuotationServiceImpl.java

@@ -116,8 +116,9 @@ public class QuotationServiceImpl implements QuotationService {
 	public List<QuotationDecide> convertQuotationDecide(List<SaleQuotationItem> quotationItems) {
 		List<QuotationDecide> decides = new ArrayList<QuotationDecide>();
 		if (!CollectionUtils.isEmpty(quotationItems)) {
-			for (SaleQuotationItem item : quotationItems)
-				decides.add(new QuotationDecide(item));
+			for (SaleQuotationItem item : quotationItems) {
+                decides.add(new QuotationDecide(item));
+            }
 		}
 		return decides;
 	}

+ 3 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/SaleDownChangeServiceImpl.java

@@ -16,8 +16,9 @@ public class SaleDownChangeServiceImpl implements SaleDownChangeService {
 	@Override
 	public List<SaleDownChange> convertPurchaseOrderChange(List<PurchaseOrderChange> orderChanges) {
 		List<SaleDownChange> changes = new ArrayList<SaleDownChange>();
-		for (PurchaseOrderChange orderChange : orderChanges)
-			changes.add(new SaleDownChange(orderChange));
+		for (PurchaseOrderChange orderChange : orderChanges) {
+            changes.add(new SaleDownChange(orderChange));
+        }
 		return changes;
 	}
 

+ 6 - 4
src/main/java/com/uas/platform/b2b/erp/service/impl/SaleDownServiceImpl.java

@@ -25,8 +25,9 @@ public class SaleDownServiceImpl implements SaleDownService {
 	@Override
 	public List<SaleDown> convertPurchaseOrder(List<PurchaseOrderAll> orders) {
 		List<SaleDown> sales = new ArrayList<SaleDown>();
-		for (PurchaseOrderAll order : orders)
-			sales.add(new SaleDown(order));
+		for (PurchaseOrderAll order : orders) {
+            sales.add(new SaleDown(order));
+        }
 		return sales;
 	}
 
@@ -58,8 +59,9 @@ public class SaleDownServiceImpl implements SaleDownService {
 	public List<SaleDownDetailEnd> convertOrderItemEnd(List<PurchaseOrderItem> orderItems) {
 		List<SaleDownDetailEnd> ends = new ArrayList<SaleDownDetailEnd>();
 		if (!CollectionUtils.isEmpty(orderItems)) {
-			for (PurchaseOrderItem orderItem : orderItems)
-				ends.add(new SaleDownDetailEnd(orderItem));
+			for (PurchaseOrderItem orderItem : orderItems) {
+                ends.add(new SaleDownDetailEnd(orderItem));
+            }
 		}
 		return ends;
 	}

+ 12 - 8
src/main/java/com/uas/platform/b2b/erp/service/impl/SaleNotifyDownServiceImpl.java

@@ -31,8 +31,9 @@ public class SaleNotifyDownServiceImpl implements SaleNotifyDownService {
 	public List<SaleNotifyDown> convertPurchaseNotice(List<PurchaseNotice> notices) {
 		List<SaleNotifyDown> downs = new ArrayList<SaleNotifyDown>();
 		if (!CollectionUtils.isEmpty(notices)) {
-			for (PurchaseNotice notice : notices)
-				downs.add(new SaleNotifyDown(notice));
+			for (PurchaseNotice notice : notices) {
+                downs.add(new SaleNotifyDown(notice));
+            }
 		}
 		return downs;
 	}
@@ -61,8 +62,9 @@ public class SaleNotifyDownServiceImpl implements SaleNotifyDownService {
 							orderItem = purchaseOrderItemDao.findOne(item.getOrderItemId());
 							item.setOrderItem(orderItem);
 						}
-						if (orderItem != null)
-							sendItems.add(item);
+						if (orderItem != null) {
+                            sendItems.add(item);
+                        }
 					}
 				}
 			}
@@ -74,8 +76,9 @@ public class SaleNotifyDownServiceImpl implements SaleNotifyDownService {
 	public List<SaleOut> convertSaleSend(List<SaleSend> sends) {
 		List<SaleOut> outs = new ArrayList<SaleOut>();
 		if (!CollectionUtils.isEmpty(sends)) {
-			for (SaleSend send : sends)
-				outs.add(new SaleOut(send));
+			for (SaleSend send : sends) {
+                outs.add(new SaleOut(send));
+            }
 		}
 		return outs;
 	}
@@ -84,8 +87,9 @@ public class SaleNotifyDownServiceImpl implements SaleNotifyDownService {
 	public List<SaleNotifyDownEnd> convertPurchaseNoticeEnd(List<PurchaseNotice> notices) {
 		List<SaleNotifyDownEnd> ends = new ArrayList<SaleNotifyDownEnd>();
 		if (!CollectionUtils.isEmpty(notices)) {
-			for (PurchaseNotice notice : notices)
-				ends.add(new SaleNotifyDownEnd(notice));
+			for (PurchaseNotice notice : notices) {
+                ends.add(new SaleNotifyDownEnd(notice));
+            }
 		}
 		return ends;
 	}

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

@@ -30,8 +30,9 @@ public class ErpBufferedLogger extends BufferedLogger<ErpLog> {
 	 */
 	public void log(String title, String message, int total) {
 		// 有数据量才记录
-		if (total > 0)
-			log(new ErpLog(title, message, total));
+		if (total > 0) {
+            log(new ErpLog(title, message, total));
+        }
 	}
 
 }

+ 3 - 2
src/main/java/com/uas/platform/b2b/event/SaveEvent.java

@@ -43,8 +43,9 @@ public abstract class SaveEvent<S, T> extends ApplicationEvent {
 
 		}
 		List<S> splitList = new ArrayList<S>();
-		for (T saved : savedList)
-			splitList.addAll(split(saved));
+		for (T saved : savedList) {
+            splitList.addAll(split(saved));
+        }
 		return splitList;
 	}
 

+ 3 - 2
src/main/java/com/uas/platform/b2b/event/SaveReleaseEvent.java

@@ -38,8 +38,9 @@ public abstract class SaveReleaseEvent<S, T> extends ApplicationEvent {
 	 */
 	public final List<S> release() {
 		List<S> releaseList = new ArrayList<S>();
-		for (T saved : savedList)
-			releaseList.add(release(saved));
+		for (T saved : savedList) {
+            releaseList.add(release(saved));
+        }
 		return releaseList;
 	}
 

+ 4 - 2
src/main/java/com/uas/platform/b2b/filter/AccessTokenInterceptor.java

@@ -34,6 +34,8 @@ public class AccessTokenInterceptor extends HandlerInterceptorAdapter {
 
 	private static final String access_token_param = "access_token";
 
+	private static final String user_param = "user";
+
 	private static final Logger logger = Logger.getLogger(AccessSignatureInterceptor.class);
 
 	@Autowired
@@ -48,8 +50,8 @@ public class AccessTokenInterceptor extends HandlerInterceptorAdapter {
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 		HttpSession session = request.getSession();
-		if (session.getAttribute("user") != null) {
-			session.setAttribute("user", null);
+		if (session.getAttribute(user_param) != null) {
+			session.setAttribute(user_param, null);
 			SystemSession.clear();
 		}
 		String access_token = request.getParameter(access_token_param);

+ 4 - 2
src/main/java/com/uas/platform/b2b/filter/AppAccessInterceptor.java

@@ -38,6 +38,8 @@ public class AppAccessInterceptor extends HandlerInterceptorAdapter {
 
 	private static final String USER_TEL = "user_tel";
 
+	private static final String user_param = "user";
+
 	private static final Logger logger = Logger.getLogger(AccessSignatureInterceptor.class);
 
 	@Autowired
@@ -52,8 +54,8 @@ public class AppAccessInterceptor extends HandlerInterceptorAdapter {
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 		HttpSession session = request.getSession();
-		if (session.getAttribute("user") != null) {
-			session.setAttribute("user", null);
+		if (session.getAttribute(user_param) != null) {
+			session.setAttribute(user_param, null);
 			SystemSession.clear();
 		}
 		String enUUString = request.getParameter(EN_UU);

+ 4 - 11
src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java

@@ -17,7 +17,6 @@ import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
 import com.uas.sso.entity.UserAccount;
-import com.uas.sso.entity.UserView;
 import com.uas.sso.web.spring.AbstractSSOInterceptor;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
@@ -106,14 +105,7 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 		SystemSession.clear();
 		User user = (User) request.getSession().getAttribute("user");
 		if (user == null) {
-			user = getUserByAccessToken(request);
-			if (user != null) {
-				user.setIp(AgentUtils.getIp(request));
-				request.getSession().setAttribute("user", user);
-				setGrantedAuthorities(user);
-			} else {
-				user = autoLogin(request);
-			}
+			user = autoLogin(request);
 		}
 		if (user != null) {
 			SystemSession.setUser(user);
@@ -253,8 +245,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 	 * @throws IllegalArgumentException
 	 */
 	public Collection<ConfigAttribute> getAttributes(HttpServletRequest request) throws IllegalArgumentException {
-		if (resourceMap == null)
-			loadResourceDefine();
+		if (resourceMap == null) {
+            loadResourceDefine();
+        }
 
 		for (Iterator<String> iter = resourceMap.keySet().iterator(); iter.hasNext();) {
 			String resourceKey = iter.next();

+ 30 - 22
src/main/java/com/uas/platform/b2b/filter/SecurityInterceptor.java

@@ -107,7 +107,8 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 	 * @throws IOException
 	 * @throws ServletException
 	 */
-	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+	@Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
 		HttpServletRequest httpRequest = (HttpServletRequest) request;
 		HttpServletResponse httpResponse = (HttpServletResponse) response;
 		clearSession();
@@ -120,10 +121,11 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 		// 判断session的用户信息是否与Authentication一致
 		if (user == null) {// 未登录则要求登录
 			if (!SecurityConstant.AUTHENTICATION_URL.equals(httpRequest.getServletPath())) {
-				if (httpRequest.getHeader("Accept").contains("application/json"))
-					httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-				else
-					httpResponse.sendRedirect(httpRequest.getContextPath() + SecurityConstant.LOGIN_URL);
+				if (httpRequest.getHeader("Accept").contains("application/json")) {
+                    httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+                } else {
+                    httpResponse.sendRedirect(httpRequest.getContextPath() + SecurityConstant.LOGIN_URL);
+                }
 			}
 			return;
 		}
@@ -133,10 +135,11 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 			logger.error(String.format("用户信息%s@%s与Authentication信息%s@%s不一致", user.getUserUU(), user.getIp(), authentication.getName(),
 					AgentUtils.getIp(httpRequest)));
 			clearSession();
-			if (httpRequest.getContentType().contains("application/json"))
-				httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-			else
-				httpResponse.sendRedirect(httpRequest.getContextPath() + SecurityConstant.LOGIN_URL);
+			if (httpRequest.getContentType().contains("application/json")) {
+                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+            } else {
+                httpResponse.sendRedirect(httpRequest.getContextPath() + SecurityConstant.LOGIN_URL);
+            }
 			return;
 		}
 		if (user.isSys()) {// 超级用户无需验证权限
@@ -160,7 +163,8 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 	/**  
      *   
      */
-	public void destroy() {
+	@Override
+    public void destroy() {
 	}
 
 	/**
@@ -183,7 +187,8 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 		this.securityMetadataSource = securityMetadataSource;
 	}
 
-	public void init(FilterConfig filterConfig) throws ServletException {
+	@Override
+    public void init(FilterConfig filterConfig) throws ServletException {
 
 	}
 
@@ -194,9 +199,9 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 	 */
 	private void logSession(HttpServletRequest request) {
 		Object user = request.getSession().getAttribute("user");
-		if (user != null)
-			SystemSession.setUser((User) user);
-		else {// login by remember-me
+		if (user != null) {
+            SystemSession.setUser((User) user);
+        } else {// login by remember-me
 				// spring remember-me通过客户端的SPRING_SECURITY_REMEMBER_ME_COOKIE和数据库的PERSISTENT_LOGINS匹配
 			Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
 			if (authentication != null && authentication.isAuthenticated()
@@ -220,8 +225,9 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 		if (authedUser.getEnterprises().size() > 1) {
 			SigninLog log = signinLogService.findLast(authedUser.getUserUU());
 			authedUser.setCurrentEnterprise(log.getEnUU());
-		} else
-			authedUser.setCurrentEnterprise();
+		} else {
+            authedUser.setCurrentEnterprise();
+        }
 		Set<Role> roles = authedUser.getRoles();
 		if (!authedUser.isSys() && !CollectionUtils.isEmpty(roles)) {
 			for (Role role : roles) {
@@ -287,10 +293,11 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 				SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
 				request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY,
 						SecurityContextHolder.getContext());
-				if (enUU != null)
-					checkEnterprise(user, enUU);
-				else
-					user.setCurrentEnterprise();
+				if (enUU != null) {
+                    checkEnterprise(user, enUU);
+                } else {
+                    user.setCurrentEnterprise();
+                }
 				user.setIp(AgentUtils.getIp(request));
 				request.getSession().setAttribute("user", user);
 			} else
@@ -348,8 +355,9 @@ public class SecurityInterceptor extends AbstractSecurityInterceptor implements
 				break;
 			}
 		}
-		if (!choosed)
-			throw new UsernameNotFoundException("企业与用户不匹配");
+		if (!choosed) {
+            throw new UsernameNotFoundException("企业与用户不匹配");
+        }
 	}
 
 	private Set<GrantedAuthority> getGrantedAuthorities(User user) {

+ 3 - 2
src/main/java/com/uas/platform/b2b/filter/SignatureInterceptor.java

@@ -24,8 +24,9 @@ public class SignatureInterceptor extends HandlerInterceptorAdapter {
 		if (sign != null) {
 			String urlMessage = request.getRequestURL() + "?"
 					+ request.getQueryString().substring(0, request.getQueryString().indexOf(signatureParam) - 1);
-			if (sign.equals(HmacUtils.encode(urlMessage)))
-				return true;
+			if (sign.equals(HmacUtils.encode(urlMessage))) {
+                return true;
+            }
 		}
 		response.setStatus(HttpStatus.FORBIDDEN.value());
 		return false;

+ 96 - 0
src/main/java/com/uas/platform/b2b/listener/GlobalExceptionHandler.java

@@ -0,0 +1,96 @@
+package com.uas.platform.b2b.listener;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.dao.ErrorLogDao;
+import com.uas.platform.b2b.dao.ErrorLogDetailDao;
+import com.uas.platform.b2b.model.ErrorLog;
+import com.uas.platform.b2b.model.ErrorLogDetail;
+import com.uas.platform.b2b.support.SysConf;
+import com.uas.platform.b2b.temporary.model.ExceptionMsg;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.util.AgentUtils;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.apache.http.protocol.HTTP;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 全局异常监听
+ *
+ * Created by hejq on 2018-06-20.
+ */
+@ControllerAdvice
+@Component
+public class GlobalExceptionHandler {
+
+    @Autowired
+    private ErrorLogDao logDao;
+
+    @Autowired
+    private ErrorLogDetailDao detailDao;
+
+    /**
+     * B2B接口地址
+     */
+    private final String B2B_URL = ContextUtils.getBean(SysConf.class).getB2b();
+
+    /**
+     * accessID uu号
+     */
+    private final static String idParam = "access_id";
+
+    /**
+     * 加密串
+     */
+    private final static String signatureParam = "_signature";
+
+    /**
+     * data数据
+     */
+    private final static String dataParam = "data";
+
+    /**
+     * 监控异常,存储方便查看
+     *
+     * @param request 请求
+     * @param e 异常
+     * @param response 响应
+     * @return
+     */
+    @ResponseBody
+    @ExceptionHandler(value = Exception.class)
+    public HttpServletResponse defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
+        String jsonStr = JSON.toJSONString(e.getStackTrace());
+        List<ExceptionMsg> msgList = FlexJsonUtils.fromJsonArray(jsonStr, ExceptionMsg.class);
+        List<ExceptionMsg> msgs = new ArrayList<>();
+        for (ExceptionMsg msg : msgList) {
+            if (msg.getClassName().contains(ExceptionMsg.B2BPROGRAMNAME)) {
+                msgs.add(msg);
+            }
+        }
+        String url = B2B_URL + request.getServletPath();
+        Short needRead = Constant.NO;
+        if (url.contains(ExceptionMsg.ERPACCESSURL)) {
+            needRead = Constant.YES;
+        }
+        String access = request.getParameter(signatureParam);
+        String data = request.getParameter(dataParam);
+        ErrorLog log = logDao.save(new ErrorLog(JSON.toJSONString(msgs), e.toString(), url, e.getCause().getMessage()));
+        if (!StringUtils.isEmpty(log.getId())) {
+            detailDao.save(new ErrorLogDetail(log.getId(), AgentUtils.getIp(request), needRead, StringUtils.isEmpty(data) ? "" : URLDecoder.decode(data, HTTP.UTF_8), access));
+        }
+        return response;
+    }
+}

+ 0 - 31
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -187,18 +187,8 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
                 if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
                     List<Vendor> vendors;
                     // 判断提前,防止客户方收到过多单据提示消息
-//					if (release.getToVendor() == Constant.YES) { // 消息接收方为供应商,查找供应商表方式不同
                     vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
                     // 不添加供应商联系人
-//                    if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
-//                        userUUs.add(vendors.get(0).getVendUserUU());
-//                    }
-//					} else { // 消息接收方为客户,查找供应商表方式不同
-//						vendors = vendorDao.findByMyEnUUAndVendUU(detail.getVendUU(), release.getEnUU());
-//						if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getMyUserUU())) {
-//							userUUs.add(vendors.get(0).getMyUserUU());
-//						}
-//					}
                     // 查找被分配客户的业务员
                     if (!CollectionUtils.isEmpty(vendors)) {
                         Long vendorId = vendors.get(0).getId();
@@ -259,30 +249,9 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
                 PagingRelease release = detail.getPagingRelease();
                 if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
                     if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05加,避免客户方用户收到太多消息
-                        // 添加管理员
-//					List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
-//					if (!CollectionUtils.isEmpty(roles)) {
-//						List<User> admins = userDao.findByRole(roles.get(0).getId());
-//						for (User admin : admins) {
-//							if (!userUUs.contains(admin.getUserUU())) {
-//								userUUs.add(admin.getUserUU());
-//							}
-//						}
-//					}
                         List<Vendor> vendors;
                         // 判断提前,防止客户方收到过多单据提示消息
-//					if (release.getToVendor() == Constant.YES) { // 消息接收方为供应商,查找供应商表方式不同
                         vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
-                        // 不添加供应商联系人
-//                        if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
-//                            userUUs.add(vendors.get(0).getVendUserUU());
-//                        }
-//					} else { // 消息接收方为客户,查找供应商表方式不同
-//						vendors = vendorDao.findByMyEnUUAndVendUU(detail.getVendUU(), release.getEnUU());
-//						if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getMyUserUU())) {
-//							userUUs.add(vendors.get(0).getMyUserUU());
-//						}
-//					}
                         // 查找有权限的用户
                         if (!CollectionUtils.isEmpty(vendors)) {
                             Long vendorId = vendors.get(0).getId();

+ 4 - 3
src/main/java/com/uas/platform/b2b/model/CommunalLog.java

@@ -145,7 +145,7 @@ public class CommunalLog extends BufferedLogable implements Serializable {
         this.enUU = enUU;
         this.title = title;
         this.message = message;
-        this.time = new Date().getTime();
+        this.time = System.currentTimeMillis();
         this.detail = detail;
     }
 
@@ -153,7 +153,7 @@ public class CommunalLog extends BufferedLogable implements Serializable {
         this.enUU = enUU;
         this.title = title;
         this.message = message;
-        this.time = new Date().getTime();
+        this.time = System.currentTimeMillis();
         this.detail = detail;
         this.userUU = userUU;
     }
@@ -173,8 +173,9 @@ public class CommunalLog extends BufferedLogable implements Serializable {
 
     @Override
     public void bufferedLog(String bufferedMessage) {
+        Integer arraySize = 9;
         String[] strArray = bufferedMessage.split(separator);
-        if (strArray.length == 9) {
+        if (strArray.length == arraySize) {
             this.time = Long.parseLong(strArray[0]);
             this.ip = strArray[1];
             this.enUU = Long.parseLong(strArray[2]);

+ 15 - 12
src/main/java/com/uas/platform/b2b/model/Enterprise.java

@@ -30,8 +30,6 @@ public class Enterprise implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-//	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "enterprises_gen")
-//	@SequenceGenerator(name = "enterprises_gen", sequenceName = "enterprises_seq", allocationSize = 1)
 	@Column(name = "en_uu")
 	private Long uu;
 
@@ -677,18 +675,23 @@ public class Enterprise implements Serializable {
 
 	@Override
 	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
+		if (this == obj) {
+            return true;
+        }
+		if (obj == null) {
+            return false;
+        }
+		if (getClass() != obj.getClass()) {
+            return false;
+        }
 		Enterprise other = (Enterprise) obj;
 		if (uu == null) {
-			if (other.uu != null)
-				return false;
-		} else if (!uu.equals(other.uu))
-			return false;
+			if (other.uu != null) {
+                return false;
+            }
+		} else if (!uu.equals(other.uu)) {
+            return false;
+        }
 		return true;
 	}
 

+ 15 - 10
src/main/java/com/uas/platform/b2b/model/EnterpriseInfo.java

@@ -110,18 +110,23 @@ public class EnterpriseInfo implements Serializable {
 
 	@Override
 	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
+		if (this == obj) {
+            return true;
+        }
+		if (obj == null) {
+            return false;
+        }
+		if (getClass() != obj.getClass()) {
+            return false;
+        }
 		EnterpriseInfo other = (EnterpriseInfo) obj;
 		if (uu == null) {
-			if (other.uu != null)
-				return false;
-		} else if (!uu.equals(other.uu))
-			return false;
+			if (other.uu != null) {
+                return false;
+            }
+		} else if (!uu.equals(other.uu)) {
+            return false;
+        }
 		return true;
 	}
 	

+ 160 - 0
src/main/java/com/uas/platform/b2b/model/ErrorLog.java

@@ -0,0 +1,160 @@
+package com.uas.platform.b2b.model;
+
+import com.uas.platform.b2b.support.SystemSession;
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 记录平台接口报错异常
+ *
+ * Created by hejq on 2018-06-20.
+ */
+@Table(name = "log$error")
+@Entity
+public class ErrorLog implements Serializable {
+
+    /**
+     * default serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "log_id")
+    private Long id;
+
+    /**
+     * 请求地址
+     */
+    @Column(name = "log_url")
+    private String url = "";
+
+    /**
+     * 错误消息
+     */
+    @Length(max = 2000)
+    @Column(name = "log_msg")
+    private String msg = "";
+
+    /**
+     * 错误详情
+     */
+    @Lob
+    @Column(name = "log_detail", columnDefinition = "text")
+    private String detail = "";
+
+    /**
+     * 记录时间
+     */
+    @Column(name = "log_date")
+    private Date date = new Date(System.currentTimeMillis());
+
+    /**
+     * 企业UU
+     */
+    @Column(name = "log_enuu")
+    private Long enUU = 0L;
+
+    /**
+     * 企业名称
+     */
+    @Column(name = "log_enname")
+    private String enName = "";
+
+    /**
+     * 标识
+     */
+    @Column(name = "log_uuid")
+    private String uuid = "";
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String getDetail() {
+        return detail;
+    }
+
+    public void setDetail(String detail) {
+        this.detail = detail;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public ErrorLog() {}
+
+    /**
+     * 新增错误日志
+     *
+     * @param detail 错误详情
+     * @param msg 错误消息
+     * @param url 访问路径
+     */
+    public ErrorLog(String detail, String msg, String url, String uuid) {
+        User user = SystemSession.getUser();
+        if (null != user) {
+            this.enUU = user.getEnterprise().getUu();
+            this.enName = user.getEnterprise().getEnName();
+        }
+        this.detail = detail;
+        this.msg = msg;
+        this.url = url;
+        this.uuid = uuid;
+    }
+}

+ 182 - 0
src/main/java/com/uas/platform/b2b/model/ErrorLogDetail.java

@@ -0,0 +1,182 @@
+package com.uas.platform.b2b.model;
+
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.Status;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * 日志详情,记录一些不需要一直展示的数据
+ *
+ * Created by hejq on 2018-06-22.
+ */
+@Entity
+@Table(name = "log$error$detail")
+public class ErrorLogDetail implements Serializable {
+
+    /**
+     * default serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "log_id")
+    private Long id;
+
+    /**
+     * 用户UU
+     */
+    @Column(name = "log_useruu")
+    private Long userUU = 0L;
+
+    /**
+     * 用户姓名
+     */
+    @Column(name = "log_username")
+    private String userName = "";
+
+    /**
+     * ip地址
+     */
+    @Column(name = "log_ip")
+    private String ip = "";
+
+    /**
+     * 是否需要阅读
+     * <pre>
+     *     1: 是
+     *     0: 否
+     * </pre>
+     */
+    @Column(name = "log_needread")
+    private Short needRead = Constant.NO;
+
+    /**
+     * 请求参数
+     */
+    @Lob
+    @Column(name = "log_parameters")
+    private String parameters;
+
+    /**
+     * 加密信息
+     */
+    @Column(name = "log_access")
+    private String access;
+
+    /**
+     * 处理状态
+     * <pre>
+     *     210: 未阅读
+     *     211: 已阅读
+     * </pre>
+     */
+    @Column(name = "log_status")
+    private Integer status = Status.NOT_READ.value();
+
+    /**
+     * ErrorLog ID
+     */
+    @Column(name = "log_logid")
+    private Long logId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getIp() {
+        return ip;
+    }
+
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+
+    public Short getNeedRead() {
+        return needRead;
+    }
+
+    public void setNeedRead(Short needRead) {
+        this.needRead = needRead;
+    }
+
+    public String getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(String parameters) {
+        this.parameters = parameters;
+    }
+
+    public String getAccess() {
+        return access;
+    }
+
+    public void setAccess(String access) {
+        this.access = access;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Long getLogId() {
+        return logId;
+    }
+
+    public void setLogId(Long logId) {
+        this.logId = logId;
+    }
+
+    public ErrorLogDetail() {}
+
+    /**
+     * 封装错误日志详情
+     *
+     * @param logId
+     * @param ip
+     * @param needRead
+     */
+    public ErrorLogDetail(Long logId, String ip, Short needRead, String parameter, String access) {
+        this.logId = logId;
+        this.ip = ip;
+        this.needRead = needRead;
+        this.parameters = parameter;
+        this.access = access;
+        User user = SystemSession.getUser();
+        if (null != user) {
+            this.userUU = user.getUserUU();
+            this.userName = user.getUserName();
+        }
+    }
+}

+ 169 - 0
src/main/java/com/uas/platform/b2b/model/NotExistOrders.java

@@ -0,0 +1,169 @@
+package com.uas.platform.b2b.model;
+
+import com.uas.platform.core.model.Status;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 记录验收单等查询对应采购单明细不存在的单号,序号
+ *
+ * Created by hejq on 2018-06-19.
+ */
+@Table(name = "erp$orders")
+@Entity
+public class NotExistOrders implements Serializable {
+
+    /**
+     * default serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Column(name = "or_id")
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    /**
+     * 单据编号
+     */
+    @Column(name = "or_code")
+    private String code;
+
+    /**
+     * 企业UU
+     */
+    @Column(name = "or_enuu")
+    private Long enUU;
+
+    /**
+     * 明细序号,默认0
+     */
+    @Column(name = "or_detno")
+    private Short detno = 0;
+
+    /**
+     * 记录日期
+     */
+    @Column(name = "or_date")
+    private Date date;
+
+    /**
+     * 处理状态
+     * <pre>
+     *     202: 待下载
+     *     203: 已下载
+     * </pre>
+     */
+    @Column(name = "or_status")
+    private Integer status;
+
+    /**
+     * 单据类型
+     * <pre>
+     *     saleItem: 销售订单明细
+     *     makeItem: 委外订单明细
+     *     saleMain: 销售订单
+     *     makeMain: 委外订单
+     * </pre>
+     */
+    @Column(name = "or_type")
+    private String type;
+
+    /**
+     * 标识,用于查询信息
+     */
+    @Column(name = "or_sign")
+    private String sign;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public Short getDetno() {
+        return detno;
+    }
+
+    public void setDetno(Short detno) {
+        this.detno = detno;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+    public NotExistOrders() {
+
+    }
+
+    /**
+     * 构建不存在单据信息
+     *
+     * @param enUU 企业UU
+     * @param code 单据编号
+     * @param type 类型
+     * @param detno 明细编号
+     * @param sign 标识
+     */
+    public NotExistOrders(Long enUU, String code, String type, Short detno, String sign) {
+        this.enUU = enUU;
+        this.code = code;
+        this.detno = detno;
+        this.type = type;
+        this.status = Status.NOT_UPLOAD.value();
+        this.date = new Date(System.currentTimeMillis());
+        this.sign = sign;
+    }
+}

+ 42 - 2
src/main/java/com/uas/platform/b2b/model/NotExistProduct.java

@@ -67,6 +67,18 @@ public class NotExistProduct implements Serializable {
     @Column(name = "pr_sourcecode")
     private String sourceCode;
 
+    /**
+     * 明细序号
+     */
+    @Column(name = "pr_detno")
+    private Short detno = 0;
+
+    /**
+     * 标识符,能通过异常查询出来
+     */
+    @Column(name = "pr_sign")
+    private String sign;
+
     public Long getId() {
         return id;
     }
@@ -123,17 +135,45 @@ public class NotExistProduct implements Serializable {
         this.sourceCode = sourceCode;
     }
 
+    public Short getDetno() {
+        return detno;
+    }
+
+    public void setDetno(Short detno) {
+        this.detno = detno;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
     public NotExistProduct() {
 
     }
 
-    public NotExistProduct(String code, Long enuu, String source, String sourceCode) {
+    /**
+     * 新构建记录不存在物料信息实体
+     *
+     * @param code 物料编号
+     * @param enUU 企业UU
+     * @param source 来源
+     * @param sourceCode 来源编号
+     * @param detno 如果是明细,存序号,默认为0
+     * @param sign 标记,能通过异常查询出来
+     */
+    public NotExistProduct(String code, Long enUU, String source, String sourceCode, Short detno, String sign) {
         this.code = code;
-        this.enuu = enuu;
+        this.enuu = enUU;
         this.source = source;
         this.sourceCode = sourceCode;
         this.date = new Date(System.currentTimeMillis());
         this.status = Status.NOT_UPLOAD.value();
+        this.detno = detno;
+        this.sign = sign;
     }
 
     @Override

+ 11 - 1
src/main/java/com/uas/platform/b2b/model/OrderType.java

@@ -54,7 +54,17 @@ public enum OrderType {
 	/**
 	 * {@code 110应收对账单}
 	 */
-	apcheck(110, "应收对账单");
+	apcheck(110, "应收对账单"),
+
+	/**
+	 * {@code 111 委外验退单}
+	 */
+	makereturn(111, "委外验退单"),
+
+	/**
+	 * {@code 112 委外验收单}
+	 */
+	makeaccpet(112, "委外验收单");
 
 	private OrderType(int value, String phrase) {
 		this.value = value;

+ 4 - 3
src/main/java/com/uas/platform/b2b/model/PublicInquiryItemInfo.java

@@ -621,9 +621,10 @@ public class PublicInquiryItemInfo implements Serializable {
 	public String replyDescription() {
 		if (!CollectionUtils.isEmpty(this.replies)) {
 			StringBuffer sb = new StringBuffer();
-			for (PublicInquiryReply reply : this.replies)
-				sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice())
-						.append(";");
+			for (PublicInquiryReply reply : this.replies) {
+                sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice())
+                        .append(";");
+            }
 			return sb.toString();
 		}
 		return null;

+ 0 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseApCheckItemInfo.java

@@ -1,8 +1,5 @@
 package com.uas.platform.b2b.model;
 
-import com.alibaba.fastjson.annotation.JSONField;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.sym.Name;
 
 import javax.persistence.*;
 import java.io.Serializable;

+ 0 - 1
src/main/java/com/uas/platform/b2b/model/PurchaseApCheckTodo.java

@@ -13,7 +13,6 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
 import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.Where;

+ 4 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryDetail.java

@@ -653,9 +653,10 @@ public class PurchaseInquiryDetail {
 	public String replyDescription() {
 		if (!CollectionUtils.isEmpty(this.replies)) {
 			StringBuffer sb = new StringBuffer();
-			for (PurchaseInquiryReply reply : this.replies)
-				sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice())
-						.append(";");
+			for (PurchaseInquiryReply reply : this.replies) {
+                sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice())
+                        .append(";");
+            }
 			return sb.toString();
 		}
 		return null;

+ 4 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java

@@ -653,9 +653,10 @@ public class PurchaseInquiryItem {
 	public String replyDescription() {
 		if (!CollectionUtils.isEmpty(this.replies)) {
 			StringBuffer sb = new StringBuffer();
-			for (PurchaseInquiryReply reply : this.replies)
-				sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice())
-						.append(";");
+			for (PurchaseInquiryReply reply : this.replies) {
+                sb.append("分段数:").append(reply.getLapQty()).append(",").append("价格:").append(reply.getPrice())
+                        .append(";");
+            }
 			return sb.toString();
 		}
 		return null;

Некоторые файлы не были показаны из-за большого количества измененных файлов