Browse Source

Merge branch 'dev' of ssh://10.10.101.21/source/platform-b2b into feature-excel

wangmh 8 years ago
parent
commit
ea2e708aee
100 changed files with 3882 additions and 1384 deletions
  1. 1 0
      pom.xml
  2. 34 25
      src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java
  3. 6 11
      src/main/java/com/uas/platform/b2b/controller/CartController.java
  4. 18 33
      src/main/java/com/uas/platform/b2b/controller/DeputyOrderController.java
  5. 36 6
      src/main/java/com/uas/platform/b2b/controller/ProductController.java
  6. 22 34
      src/main/java/com/uas/platform/b2b/controller/PublicQueryController.java
  7. 19 3
      src/main/java/com/uas/platform/b2b/controller/PurcProductController.java
  8. 23 21
      src/main/java/com/uas/platform/b2b/controller/PurchaseTenderController.java
  9. 23 12
      src/main/java/com/uas/platform/b2b/controller/RoleController.java
  10. 17 22
      src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java
  11. 7 7
      src/main/java/com/uas/platform/b2b/controller/UserController.java
  12. 37 0
      src/main/java/com/uas/platform/b2b/core/util/SplitArray.java
  13. 22 0
      src/main/java/com/uas/platform/b2b/dao/DeOrderDeleteLogDao.java
  14. 9 1
      src/main/java/com/uas/platform/b2b/dao/EnterpriseDao.java
  15. 1 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseNoticeDao.java
  16. 22 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderCartDao.java
  17. 22 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseTenderDao.java
  18. 15 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseTenderErpDao.java
  19. 24 3
      src/main/java/com/uas/platform/b2b/dao/RoleDao.java
  20. 5 0
      src/main/java/com/uas/platform/b2b/dao/SaleTenderDao.java
  21. 9 0
      src/main/java/com/uas/platform/b2b/dao/SaleTenderErpDao.java
  22. 63 28
      src/main/java/com/uas/platform/b2b/erp/controller/DeputyOrderDownController.java
  23. 2 0
      src/main/java/com/uas/platform/b2b/erp/controller/InquiryController.java
  24. 29 18
      src/main/java/com/uas/platform/b2b/erp/controller/InquiryDownController.java
  25. 3 1
      src/main/java/com/uas/platform/b2b/erp/controller/RelationshipController.java
  26. 37 16
      src/main/java/com/uas/platform/b2b/erp/controller/TenderController.java
  27. 12 3
      src/main/java/com/uas/platform/b2b/erp/controller/UserSpaceDetailController.java
  28. 28 0
      src/main/java/com/uas/platform/b2b/erp/model/B2BCustomer.java
  29. 42 0
      src/main/java/com/uas/platform/b2b/erp/model/B2BVendor.java
  30. 10 0
      src/main/java/com/uas/platform/b2b/erp/model/Inquiry.java
  31. 26 13
      src/main/java/com/uas/platform/b2b/erp/model/PurchaseTenderErp.java
  32. 174 7
      src/main/java/com/uas/platform/b2b/erp/model/SaleTenderErp.java
  33. 11 4
      src/main/java/com/uas/platform/b2b/erp/service/TenderService.java
  34. 3 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/ARCheckServiceImpl.java
  35. 3 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryMouldServiceImpl.java
  36. 3 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java
  37. 3 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/MakeServiceImpl.java
  38. 10 15
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseAPBillServiceImpl.java
  39. 6 2
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseForecastServiceImpl.java
  40. 3 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseSampleServiceImpl.java
  41. 5 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java
  42. 3 1
      src/main/java/com/uas/platform/b2b/erp/service/impl/QuotationServiceImpl.java
  43. 158 58
      src/main/java/com/uas/platform/b2b/erp/service/impl/TenderServiceImpl.java
  44. 4 4
      src/main/java/com/uas/platform/b2b/event/SaleQuotationDecideReleaseEvent.java
  45. 3 3
      src/main/java/com/uas/platform/b2b/event/SaleQuotationInvalidReleaseEvent.java
  46. 53 49
      src/main/java/com/uas/platform/b2b/listener/MessageListener.java
  47. 4 1
      src/main/java/com/uas/platform/b2b/model/Cart.java
  48. 129 0
      src/main/java/com/uas/platform/b2b/model/DeOrderDeleteLog.java
  49. 90 19
      src/main/java/com/uas/platform/b2b/model/Enterprise.java
  50. 6 2
      src/main/java/com/uas/platform/b2b/model/EnterpriseDetail.java
  51. 3 1
      src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java
  52. 482 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderCart.java
  53. 331 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderCartItem.java
  54. 25 0
      src/main/java/com/uas/platform/b2b/model/PurchaseTender.java
  55. 21 5
      src/main/java/com/uas/platform/b2b/model/QueriableMember.java
  56. 4 4
      src/main/java/com/uas/platform/b2b/model/SaleQuotationDone.java
  57. 81 25
      src/main/java/com/uas/platform/b2b/model/SaleTender.java
  58. 14 1
      src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java
  59. 10 0
      src/main/java/com/uas/platform/b2b/service/ProductService.java
  60. 1 1
      src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java
  61. 9 5
      src/main/java/com/uas/platform/b2b/service/PurchaseTenderService.java
  62. 16 2
      src/main/java/com/uas/platform/b2b/service/RoleService.java
  63. 25 22
      src/main/java/com/uas/platform/b2b/service/SaleQuotationService.java
  64. 29 29
      src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java
  65. 29 37
      src/main/java/com/uas/platform/b2b/service/impl/CartServiceImpl.java
  66. 25 0
      src/main/java/com/uas/platform/b2b/service/impl/ProductServiceImpl.java
  67. 27 6
      src/main/java/com/uas/platform/b2b/service/impl/PurcOrderServiceImpl.java
  68. 12 12
      src/main/java/com/uas/platform/b2b/service/impl/PurcProductServiceImpl.java
  69. 23 57
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java
  70. 59 20
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseTenderServiceImpl.java
  71. 11 0
      src/main/java/com/uas/platform/b2b/service/impl/RoleServiceImpl.java
  72. 3 4
      src/main/java/com/uas/platform/b2b/service/impl/SOAPConsoleServiceImpl.java
  73. 39 37
      src/main/java/com/uas/platform/b2b/service/impl/SaleQuotationServiceImpl.java
  74. 7 1
      src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java
  75. 13 0
      src/main/java/com/uas/platform/b2b/support/MessageConf.java
  76. 55 0
      src/main/java/com/uas/platform/b2b/temporary/model/DecideTender.java
  77. 10 0
      src/main/java/com/uas/platform/b2b/temporary/model/TenderContactInfo.java
  78. 54 0
      src/main/java/com/uas/platform/b2b/temporary/model/UserSpaceDetail.java
  79. 1 0
      src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java
  80. 12 7
      src/main/java/com/uas/platform/b2b/v2/service/impl/EnterpriseServiceImpl.java
  81. 2 1
      src/main/resources/dev/message.properties
  82. 2 1
      src/main/resources/prod/message.properties
  83. 3 3
      src/main/resources/test/account.properties
  84. 2 1
      src/main/resources/test/message.properties
  85. 4 0
      src/main/webapp/WEB-INF/web.xml
  86. 70 0
      src/main/webapp/resources/data/profession.json
  87. BIN
      src/main/webapp/resources/img/all/dot.png
  88. 380 237
      src/main/webapp/resources/js/index/app.js
  89. 13 1
      src/main/webapp/resources/js/index/services/Account.js
  90. 8 0
      src/main/webapp/resources/js/index/services/Purc.js
  91. 13 0
      src/main/webapp/resources/tpl/error/index.html
  92. 606 387
      src/main/webapp/resources/tpl/index/approvalFlow/enterprise.html
  93. 1 1
      src/main/webapp/resources/tpl/index/approvalFlow/user.html
  94. 5 1
      src/main/webapp/resources/tpl/index/baseInfo/customersInfo.html
  95. 1 1
      src/main/webapp/resources/tpl/index/baseInfo/enMenu.html
  96. 12 8
      src/main/webapp/resources/tpl/index/baseInfo/myRequest.html
  97. 12 8
      src/main/webapp/resources/tpl/index/baseInfo/newPartner.html
  98. 12 27
      src/main/webapp/resources/tpl/index/baseInfo/searchresult.html
  99. 5 1
      src/main/webapp/resources/tpl/index/baseInfo/servicerInfo.html
  100. 5 1
      src/main/webapp/resources/tpl/index/baseInfo/vendorsInfo.html

+ 1 - 0
pom.xml

@@ -307,6 +307,7 @@
 		<dependency>
 			<groupId>com.uas.search</groupId>
 			<artifactId>search-api-b2b</artifactId>
+			<version>0.1.9-SNAPSHOT</version>
 		</dependency>
 		<!-- dfs on dubbo -->
 		<dependency>

+ 34 - 25
src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java

@@ -1,27 +1,5 @@
 package com.uas.platform.b2b.controller;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.ResponseStatus;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.alibaba.fastjson.JSONObject;
 import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.model.Enterprise;
@@ -50,6 +28,22 @@ import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * 基础资料设置<br>
@@ -85,6 +79,11 @@ public class BaseInfoController {
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_issale", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -115,6 +114,11 @@ public class BaseInfoController {
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_issale", Constant.YES);
 		pageParams.getFilters().put("pr_standard", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -144,6 +148,11 @@ public class BaseInfoController {
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_issale", Constant.YES);
 		pageParams.getFilters().put("pr_standard", Constant.NO);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -159,7 +168,7 @@ public class BaseInfoController {
 		logger.log("查看产品", SystemSession.getUser().getUserName() + "查看了产品信息(全部)");
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isSale", Constant.YES);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -172,7 +181,7 @@ public class BaseInfoController {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isSale", Constant.YES);
 		pageInfo.filter("standard", Constant.YES);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -185,7 +194,7 @@ public class BaseInfoController {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isSale", Constant.YES);
 		pageInfo.filter("standard", Constant.NO);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**

+ 6 - 11
src/main/java/com/uas/platform/b2b/controller/CartController.java

@@ -1,16 +1,5 @@
 package com.uas.platform.b2b.controller;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
@@ -30,6 +19,12 @@ import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 购物车

+ 18 - 33
src/main/java/com/uas/platform/b2b/controller/DeputyOrderController.java

@@ -1,42 +1,10 @@
 package com.uas.platform.b2b.controller;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.manage.service.MasterService;
-import com.uas.platform.b2b.model.AccessToken;
-import com.uas.platform.b2b.model.DeputyEnterprise;
-import com.uas.platform.b2b.model.DeputyHisVendors;
-import com.uas.platform.b2b.model.DeputyLastOrderKeywords;
-import com.uas.platform.b2b.model.DeputyOrder;
-import com.uas.platform.b2b.model.DeputyOrderKeywords;
-import com.uas.platform.b2b.model.DeputyOrdersLog;
-import com.uas.platform.b2b.model.DeputyPaymentCompany;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AccessTokenService;
 import com.uas.platform.b2b.service.DeputyOrderService;
@@ -60,6 +28,22 @@ import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
 import com.uas.sso.common.util.HttpUtil.ResponseWrap;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 代采订单
@@ -668,6 +652,7 @@ public class DeputyOrderController {
 			ResponseWrap res = com.uas.sso.common.util.HttpUtil.doGet(redirectUrl.toString());
 			if (!res.isSuccess())
 				map.put("error", "暂未获取到相关数据");
+			System.out.println(res.getContent());
 			JSONObject jsonObject = JSONObject.parseObject(res.getContent());
 			if (jsonObject != null) {
 				String nodeStr = URLDecoder.decode(jsonObject.getString("nodes"), "UTF-8");

+ 36 - 6
src/main/java/com/uas/platform/b2b/controller/ProductController.java

@@ -87,6 +87,11 @@ public class ProductController {
 		logger.log("查看物料", SystemSession.getUser().getUserName() + "查看了物料信息(全部)");
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -116,6 +121,11 @@ public class ProductController {
 		pageParams.setKeywordSearchColumns(keywordSearchColumns);
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_standard", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -143,6 +153,11 @@ public class ProductController {
 		keywordSearchColumns.add("pr_code");
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_standard", Constant.NO);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -160,7 +175,7 @@ public class ProductController {
 	@ResponseBody
 	public SPage<Product> getProductInfo(PageParams params, String keyword) {
 		PageInfo pageInfo = new PageInfo(params);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -175,7 +190,7 @@ public class ProductController {
 	public SPage<Product> getProductInfoStandard(PageParams params, String keyword) {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("standard", Constant.YES);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -190,7 +205,7 @@ public class ProductController {
 	public SPage<Product> getProductInfoNonStandard(PageParams params, String keyword) {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("standard", Constant.NO);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -352,6 +367,11 @@ public class ProductController {
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_matchstatus", Status.SUBMITTED.value());
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		sortList.add(new Sort("pr_matchsize", true, Type.LONG, new Long(1)));
@@ -369,6 +389,11 @@ public class ProductController {
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_matchstatus", Status.SUBMITTED.value());
 		pageParams.getFilters().put("pr_issale", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		sortList.add(new Sort("pr_matchsize", true, Type.LONG, new Long(1)));
@@ -386,6 +411,11 @@ public class ProductController {
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_matchstatus", Status.SUBMITTED.value());
 		pageParams.getFilters().put("pr_ispurchase", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		sortList.add(new Sort("pr_matchsize", true, Type.LONG, new Long(1)));
@@ -402,7 +432,7 @@ public class ProductController {
 		logger.log("查看产品", SystemSession.getUser().getUserName() + "查看了物料信息(全部)");
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("matchstatus", Status.SUBMITTED.value());
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -415,7 +445,7 @@ public class ProductController {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isSale", Constant.YES);
 		pageInfo.filter("matchstatus", Status.SUBMITTED.value());
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -428,7 +458,7 @@ public class ProductController {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isPurchase", Constant.YES);
 		pageInfo.filter("matchstatus", Status.SUBMITTED.value());
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**

+ 22 - 34
src/main/java/com/uas/platform/b2b/controller/PublicQueryController.java

@@ -1,39 +1,9 @@
 package com.uas.platform.b2b.controller;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.model.AccessToken;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.EnterpriseDetail;
-import com.uas.platform.b2b.model.QueriableMember;
-import com.uas.platform.b2b.model.QueriableUser;
-import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.AccessTokenService;
 import com.uas.platform.b2b.service.EnterpriseService;
 import com.uas.platform.b2b.service.MonthProdioService;
@@ -42,6 +12,19 @@ import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.util.StringUtil;
 import com.uas.platform.core.util.encry.Md5Utils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.*;
 
 /**
  * 对可信任第三方公开的资料查询接口
@@ -112,7 +95,7 @@ public class PublicQueryController {
 	 */
 	@RequestMapping(value = "/batch/members", method = RequestMethod.GET)
 	@ResponseBody
-	public Map<String, Object> queryEnterprises(@RequestParam("data") String data) throws UnsupportedEncodingException {
+	public Map<String, Map<String, Object>> queryEnterprises(@RequestParam("data") String data) throws UnsupportedEncodingException {
 		if (!StringUtils.isEmpty(data)) {
 			List<String> accounts = null;
 			// data = URLDecoder.decode(data, "UTF-8");
@@ -125,10 +108,15 @@ public class PublicQueryController {
 			}
 			List<Object[]> backInfo = enterpriseService.findByEnNames(accounts);
 			Map<String, Object> infos = new HashMap<String, Object>();
+			Map<String, Map<String, Object>> map = new HashMap<>();
 			for (Object[] objs : backInfo) {
-				infos.put(objs[1].toString(), objs[0]);
+				infos.put("uu", objs[0]);
+				infos.put("businessCode", objs[2]);
+				infos.put("address", objs[3]);
+				infos.put("corporation", objs[4]);
+				map.put(objs[1].toString(), infos);
 			}
-			return infos;
+			return map;
 		}
 		return null;
 	}

+ 19 - 3
src/main/java/com/uas/platform/b2b/controller/PurcProductController.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.controller;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -126,6 +127,11 @@ public class PurcProductController {
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_ispurchase", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -156,6 +162,11 @@ public class PurcProductController {
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_ispurchase", Constant.YES);
 		pageParams.getFilters().put("pr_standard", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -184,6 +195,11 @@ public class PurcProductController {
 		pageParams.getFilters().put("pr_enuu", SystemSession.getUser().getEnterprise().getUu());
 		pageParams.getFilters().put("pr_ispurchase", Constant.YES);
 		pageParams.getFilters().put("pr_standard", Constant.NO);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
@@ -199,7 +215,7 @@ public class PurcProductController {
 		logger.log("查看产品", SystemSession.getUser().getUserName() + "查看了物料信息(全部)");
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isPurchase", Constant.YES);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -212,7 +228,7 @@ public class PurcProductController {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isPurchase", Constant.YES);
 		pageInfo.filter("standard", Constant.YES);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**
@@ -225,7 +241,7 @@ public class PurcProductController {
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("isPurchase", Constant.YES);
 		pageInfo.filter("standard", Constant.NO);
-		return productService.findProductInfoByPageInfo(pageInfo, keyword);
+		return productService.findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
 	}
 
 	/**

+ 23 - 21
src/main/java/com/uas/platform/b2b/controller/PurchaseTenderController.java

@@ -2,7 +2,11 @@ package com.uas.platform.b2b.controller;
 
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.erp.model.SaleTenderErp;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.PurchaseTender;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseTenderService;
 import com.uas.platform.b2b.service.UserService;
@@ -39,7 +43,6 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * 招标单
@@ -114,24 +117,13 @@ public class PurchaseTenderController {
     /**
      * 供应商投标
      *
-     * @param enBaseInfo  投标企业信息
-     * @param tenderItems 投标明细
      *
      */
     @RequestMapping(value = "/reply", method = RequestMethod.POST)
     @ResponseBody
-    public ResponseEntity<String> replyTender(String tenderItems, String enBaseInfo, String attaches) {
-        tenderItems = "[".concat(tenderItems);
-        tenderItems = tenderItems.concat("]");
-        List<SaleTenderItem> saleTenderItems = FlexJsonUtils.fromJsonArray(tenderItems, SaleTenderItem.class);
-        EnterpriseBaseInfo vendor = FlexJsonUtils.fromJson(enBaseInfo, EnterpriseBaseInfo.class);
-        List<Attach> saleTenderAttaches = new ArrayList<>();
-        if (attaches != null && !Objects.equals(attaches, "")) {
-            attaches = "[".concat(attaches);
-            attaches = attaches.concat("]");
-            saleTenderAttaches = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
-        }
-        purchaseTenderService.reply(saleTenderItems, vendor, saleTenderAttaches);
+    public ResponseEntity<String> replyTender(@RequestBody String saleTender) {
+        SaleTenderErp saleTender1 = FlexJsonUtils.fromJson(saleTender, SaleTenderErp.class);
+        purchaseTenderService.reply(saleTender1);
 //        logger.log("供应商投标", "供应商对招标单进行投标",  "供应商名称" + saleTenderItems.get(0).getSaleTender().getEnterpriseBaseInfo().getEnName() + ",招标单号: "+ saleTenderItems.get(0).getTenderProd().getTender().getCode());
         return new ResponseEntity<String>(HttpStatus.OK);
     }
@@ -157,10 +149,23 @@ public class PurchaseTenderController {
      */
     @RequestMapping(value = "/getSaleTenderDetail/{tenderId}", method = RequestMethod.GET)
     @ResponseBody
-    public SaleTender getSaleTenderDetail(@PathVariable("tenderId") Long tenderId) {
+    public ModelMap getSaleTenderDetail(@PathVariable("tenderId") Long tenderId) {
         return purchaseTenderService.findMySaleTenderDetailByTenderId(tenderId);
     }
 
+    /**
+     * 查看供应商投标单详情
+     *
+     * @param vendUU 供应商UU
+     * @param tenderId 招标单id
+     *
+     */
+    @RequestMapping(value = "/getVendorSaleTenderDetail/{vendUU}/{tenderId}", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getVendorSaleTenderDetail(@PathVariable("vendUU") Long vendUU, @PathVariable("tenderId") Long tenderId) {
+        return purchaseTenderService.findVendorSaleTenderDetailByTenderId(vendUU, tenderId);
+    }
+
 
     /**
      * 公开招标转投标单
@@ -254,7 +259,6 @@ public class PurchaseTenderController {
         pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getUu());
         pageParams.getFilters().put("pt_ispublish", Constant.YES);
         pageParams.getFilters().put("pt_result", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
         return searchService.searchPurcTenderIds(keyword, pageParams);
     }
 
@@ -283,10 +287,9 @@ public class PurchaseTenderController {
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
         pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getUu());
         pageParams.getFilters().put("pt_ispublish", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
         pageParams.getFilters().put("pt_overdue", Constant.YES);
         pageParams.getFilters().put("pt_result", Constant.NO);
-        pageParams.getFilters().put("pt_status", "待评标");
+//        pageParams.getFilters().put("pt_status", "待评标");
         return searchService.searchPurcTenderIds(keyword, pageParams);
     }
 
@@ -315,7 +318,6 @@ public class PurchaseTenderController {
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
         pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu());
         pageParams.getFilters().put("st_ispublish", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
         pageParams.getFilters().put("st_overdue", Constant.NO);
         pageParams.getFilters().put("st_status", "已投标");
         return searchService.searchSaleTenderIds(keyword, pageParams);

+ 23 - 12
src/main/java/com/uas/platform/b2b/controller/RoleController.java

@@ -1,22 +1,18 @@
 package com.uas.platform.b2b.controller;
 
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
 import com.uas.platform.b2b.model.Role;
 import com.uas.platform.b2b.service.RoleService;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 账户管理--角色
@@ -71,4 +67,19 @@ public class RoleController {
 		logger.log("角色", "删除角色", role.getDuty(), role.getDesc(), role.getId());
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
+
+	/**
+	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/currentRole", method =  RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getCurrentRoles(){
+		return roleService.getCurrentRoles();
+	}
+
+	@RequestMapping(value = "/isManager", method =  RequestMethod.GET)
+	@ResponseBody
+	public ModelMap isManager(){return  roleService.isManager(); }
 }

+ 17 - 22
src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java

@@ -1,24 +1,5 @@
 package com.uas.platform.b2b.controller;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.ResponseStatus;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.model.FileUpload;
@@ -44,6 +25,19 @@ import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * 卖家对询价单的操作
@@ -706,15 +700,16 @@ public class SaleInquiryController {
 
 	/**
 	 *  上传附件
-	 *  @param itemId
+	 *  @param json
 	 * @param uploadItem
 	 * @return
 	 * @throws Exception
 	 */
 	@RequestMapping(value = "/addAttach", method = RequestMethod.POST)
 	@ResponseBody
-	public ModelMap addItemAttaches(Long itemId, FileUpload uploadItem) throws Exception{
-		return purchaseInquiryService.addAttaches(itemId, uploadItem);
+	public ModelMap addItemAttaches(String item, FileUpload uploadItem) throws Exception{
+		PurchaseInquiryItem inquiryItem = JSON.parseObject(item, PurchaseInquiryItem.class);
+		return purchaseInquiryService.addAttaches(inquiryItem, uploadItem);
 	}
 
 	/**

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

@@ -198,13 +198,13 @@ public class UserController {
 	 * 
 	 * @return
 	 */
-	@RequestMapping(method = RequestMethod.PUT)
-	public ResponseEntity<String> saveUser(@RequestBody String json, HttpServletRequest request) {
-		User user = FlexJsonUtils.fromJson(json, User.class);
-		user = userService.updateUserInfo(user);
-		if (user != null) {
-			logger.log("用户信息", "修改用户信息,UU:" + user.getUserUU());
-			if (SystemSession.getUser().getUserUU().equals(user.getUserUU()))
+			@RequestMapping(method = RequestMethod.PUT)
+			public ResponseEntity<String> saveUser(@RequestBody String json, HttpServletRequest request) {
+				User user = FlexJsonUtils.fromJson(json, User.class);
+				user = userService.updateUserInfo(user);
+				if (user != null) {
+					logger.log("用户信息", "修改用户信息,UU:" + user.getUserUU());
+					if (SystemSession.getUser().getUserUU().equals(user.getUserUU()))
 				request.getSession().setAttribute("user", user);
 		}
 		return new ResponseEntity<String>(HttpStatus.OK);

+ 37 - 0
src/main/java/com/uas/platform/b2b/core/util/SplitArray.java

@@ -0,0 +1,37 @@
+package com.uas.platform.b2b.core.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by wangmh and hejq on 2017/8/29.
+ */
+public class SplitArray{
+
+    /**
+     * SQL查询in表达式中最大的数量
+     */
+    public final static int QUERY_MAX_NUMBER = 1000;
+
+    /**
+     * 集合大小拆分
+     * @param ary
+     * @param subSize
+     * @return
+     */
+    public static <T> List<List<T>> splitAry(List<T> ary, int subSize) {
+        int count = ary.size() % subSize == 0 ? ary.size() / subSize: ary.size() / subSize + 1;
+        List<List<T>> subAryList = new ArrayList<List<T>>();
+        for (int i = 0; i < count; i++) {
+            int index = i * subSize;
+            List<T> list = new ArrayList<T>();
+            int j = 0;
+            while (j < subSize && index < ary.size()) {
+                list.add(ary.get(index++));
+                j++;
+            }
+            subAryList.add(list);
+        }
+        return subAryList;
+    }
+}

+ 22 - 0
src/main/java/com/uas/platform/b2b/dao/DeOrderDeleteLogDao.java

@@ -0,0 +1,22 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.DeOrderDeleteLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface DeOrderDeleteLogDao
+		extends JpaRepository<DeOrderDeleteLog, Long>, JpaSpecificationExecutor<DeOrderDeleteLog> {
+
+	/**
+	 * 通过代采企业uu和下载状态查询删除日志
+	 * 
+	 * @param deputyuu
+	 * @param status
+	 * @return
+	 */
+	List<DeOrderDeleteLog> findByDeputyuuAndStatus(Long deputyuu, Integer status);
+}

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

@@ -49,7 +49,7 @@ public interface EnterpriseDao extends JpaSpecificationExecutor<Enterprise>,JpaR
 	 * @param names
 	 * @return
 	 */
-	@Query("select e.uu,e.enName from Enterprise e where e.enName IN (:names)")
+	@Query("select e.uu,e.enName,e.enBussinessCode,e.enAddress,e.enCorporation from Enterprise e where e.enName IN (:names)")
 	public List<Object[]> findByEnNames(@Param("names") List<String> names);
 
 	/**
@@ -88,4 +88,12 @@ public interface EnterpriseDao extends JpaSpecificationExecutor<Enterprise>,JpaR
 	 */
 	public EnterpriseInfo findEnterpriseInfoByUu(Long uu);
 
+	/**
+	 * 通过营业执照和名称找企业
+	 * @param enBussinessCode
+	 * @param enName
+	 * @return
+	 */
+	List<Enterprise> findByEnBussinessCodeAndEnName(String enBussinessCode, String enName);
+
 }

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

@@ -136,6 +136,6 @@ public interface PurchaseNoticeDao extends JpaSpecificationExecutor<PurchaseNoti
 	 * @Param ids 未读单据id
 	 * @return
 	 */
-	@Query("select count(p), p.status from PurchaseNotice p where p.id in :ids and (p.end is null or p.end = 0) group by p.status")
+	@Query("select count(p), p.status from PurchaseNotice p where p.id in :ids and (p.end is null or p.end = 0) and p.waiting=0 group by p.status")
 	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
 }

+ 22 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderCartDao.java

@@ -0,0 +1,22 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.PurchaseOrderCart;
+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 2017-09-01.
+ */
+@Repository
+public interface PurchaseOrderCartDao extends JpaRepository<PurchaseOrderCart, Long>, JpaSpecificationExecutor<PurchaseOrderCart> {
+
+    /**
+     * 查询当前企业的购物车信息
+     *
+     * @return
+     */
+    List<PurchaseOrderCart> findByEnUUAndStatus(Long enUU, Short status);
+}

+ 22 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseTenderDao.java

@@ -3,11 +3,15 @@ package com.uas.platform.b2b.dao;
 import com.uas.platform.b2b.model.PurchaseTender;
 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 org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Created by dongbw on 17/03/07 14:10.
@@ -35,4 +39,22 @@ public interface PurchaseTenderDao extends JpaSpecificationExecutor<PurchaseTend
     @Query("select count(p) from SaleTender p where p.ptId in :ids and p.overdue <> 1 and p.status = '待投标' and p.vendUU = :vendUU and p.isPublish = 1")
     public Integer getTenterCount(@Param("ids") List<Long> ids, @Param("vendUU") Long vendUU);
 
+    /**
+     * 全包定标时,修改招标单
+     * @param tenderIds
+     * @param modified
+     */
+    @Modifying@Transactional
+    @Query("update PurchaseTender p set p.modified = :modified,p.auditStatus = 0 where p.id in :tenderIds")
+    void updateTenderDecide(@Param("tenderIds") Set<Long> tenderIds, @Param("modified") Date modified);
+
+    /**
+     * 全包定标时,修改投标明细
+     * @param applyStatus
+     * @param reason
+     * @param saleTenderId
+     */
+    @Modifying@Transactional
+    @Query("update SaleTenderItem s set s.applyStatus = :applyStatus,s.description = :reason where s.saleTender.id = :saleTenderId")
+    void updateSaleTenderItemDecide(@Param("applyStatus") Short applyStatus, @Param("reason") String reason, @Param("saleTenderId") Long saleTenderId);
 }

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

@@ -0,0 +1,15 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.erp.model.PurchaseTenderErp;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created by dongbw
+ */
+@Repository
+public interface PurchaseTenderErpDao extends JpaSpecificationExecutor<PurchaseTenderErp>,JpaRepository<PurchaseTenderErp, Long> {
+
+
+}

+ 24 - 3
src/main/java/com/uas/platform/b2b/dao/RoleDao.java

@@ -1,13 +1,12 @@
 package com.uas.platform.b2b.dao;
 
-import java.util.List;
-
+import com.uas.platform.b2b.model.Role;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2b.model.Role;
+import java.util.List;
 
 @Repository
 public interface RoleDao extends JpaRepository<Role, Long> {
@@ -44,4 +43,26 @@ public interface RoleDao extends JpaRepository<Role, Long> {
 	public int getCountByEnUUAndDesc(@Param("enUU") long enUU, @Param("desc") String desc);
 
     List<Role> findByEnUUAndIssys(Long vendUU, short yes);
+
+	/**
+	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理<br>
+	 *
+	 * 分配客户需要
+	 *
+	 * @param enuu
+	 * @param useruu
+	 * @return
+	 */
+    @Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enuu and u.user_uu = :useruu and (r.role_name = 'ROLE_ADMIN' or r.role_name = 'ROLE_SALEMANAGER')",nativeQuery = true)
+    Double findByEnuuAndUseruu(@Param("enuu") Long enuu, @Param("useruu") Long useruu);
+
+	/**
+	 * 是否是当前企业的管理员(只有管理员才能设置权限)
+	 *
+	 * @param enuu
+	 * @param useruu
+	 * @return
+	 */
+	@Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enuu and u.user_uu = :useruu and r.role_name = 'ROLE_ADMIN'",nativeQuery = true)
+	Double findByEnuuAndUserUU(@Param("enuu") Long enuu, @Param("useruu") Long useruu);
 }

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

@@ -25,4 +25,9 @@ public interface SaleTenderDao extends JpaSpecificationExecutor<SaleTender>,JpaR
 
 	@Query("select t from SaleTender t where t.ptId = :tenderId and t.vendUU = :vendUU")
     SaleTender findByPtId(@Param("tenderId")Long tenderId, @Param("vendUU")Long vendUU);
+
+    List<SaleTender> findByEnUUAndCodeAndStatus(Long enUU, String code, String status);
+
+    @Query(value = "select count(*) from sale$tender t where t.st_enuu = :enUU and t.st_code = :code and t.st_status <> :status", nativeQuery = true)
+    Integer findNumOfBIdEn(@Param("enUU")Long enUU, @Param("code")String code, @Param("status")String status);
 }

+ 9 - 0
src/main/java/com/uas/platform/b2b/dao/SaleTenderErpDao.java

@@ -11,4 +11,13 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface SaleTenderErpDao extends JpaSpecificationExecutor<SaleTenderErp>,JpaRepository<SaleTenderErp, Long> {
 
+    /**
+     * 根据招标单id和供应商uu获取当前投标单
+     * @param tenderId
+     * @param vendUU
+     * @return
+     */
+    SaleTenderErp findByPtIdAndVendUU(Long tenderId, Long vendUU);
+
+    SaleTenderErp findByCodeAndEnUUAndVendUU(String code, Long enUU, Long vendUU);
 }

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

@@ -1,38 +1,35 @@
 package com.uas.platform.b2b.erp.controller;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.dao.DeOrderDeleteLogDao;
 import com.uas.platform.b2b.dao.DeputyOrderDao;
 import com.uas.platform.b2b.dao.DeputyOrdersLogDao;
 import com.uas.platform.b2b.dao.DeputyPaymentCompanyDao;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.mobile.dao.DeputyEnterpriseDao;
-import com.uas.platform.b2b.model.DeputyEnterprise;
-import com.uas.platform.b2b.model.DeputyOrder;
-import com.uas.platform.b2b.model.DeputyOrdersLog;
-import com.uas.platform.b2b.model.DeputyPaymentCompany;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.DeputyOrderService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Status;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * ERP下载平台的代采订单
- * 
+ *
  * @author hejq
  * @time 创建时间:2017年3月24日
  */
@@ -57,9 +54,12 @@ public class DeputyOrderDownController {
 	@Autowired
 	private DeputyOrdersLogDao deputyOrdersLogDao;
 
+	@Autowired
+	private DeOrderDeleteLogDao deOrderDeleteLogDao;
+
 	/**
 	 * 买家ERP从平台获取代采订单
-	 * 
+	 *
 	 * @return
 	 */
 	@RequestMapping(method = RequestMethod.GET)
@@ -69,10 +69,10 @@ public class DeputyOrderDownController {
 		logger.log("代采定单", "下载客户的代采订单", deOrders.size());
 		return deOrders;
 	}
-	
+
 	/**
 	 * 将已存入的数据id返回,更新下载状态
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -95,7 +95,7 @@ public class DeputyOrderDownController {
 
 	/**
 	 * 更新维护付款企业信息
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -148,7 +148,7 @@ public class DeputyOrderDownController {
 
 	/**
 	 * 将重复的数据返回,保存记录
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -174,7 +174,7 @@ public class DeputyOrderDownController {
 
 	/**
 	 * 代采订单传输日志
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -203,7 +203,7 @@ public class DeputyOrderDownController {
 
 	/**
 	 * ERP审核不通过的单据传回来更新状态
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -234,7 +234,7 @@ public class DeputyOrderDownController {
 
 	/**
 	 * ERP审核通过的单据传回来更新状态
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -244,8 +244,9 @@ public class DeputyOrderDownController {
 		String codeStr = URLDecoder.decode(data, "UTF-8");
 		List<DeputyOrder> orders = JSONObject.parseArray(codeStr, DeputyOrder.class);
 		List<DeputyOrder> deOrders = new ArrayList<DeputyOrder>();
-		if (CollectionUtils.isEmpty(orders)) {
+		if (!CollectionUtils.isEmpty(orders)) {
 			for (DeputyOrder order : orders) {
+				// 发现ERP很多没有fromcode,所以更新为salecode
 				DeputyOrder deOrder = deputyOrderDao.findByCodeAndDeputyuuAndDownloadstatus(order.getCode(),
 						SystemSession.getUser().getEnterprise().getUu(), "已下载");
 				if (deOrder != null) {
@@ -260,4 +261,38 @@ public class DeputyOrderDownController {
 
 	}
 
+	/**
+	 * 获取客户删除订单的记录,同步到ERP进行删除处理
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/deletelogs", method = RequestMethod.GET)
+	public List<DeOrderDeleteLog> getLogs() {
+		List<DeOrderDeleteLog> logs = deOrderDeleteLogDao
+				.findByDeputyuuAndStatus(SystemSession.getUser().getEnterprise().getUu(), Status.NOT_UPLOAD.value());
+		logger.log("代采定单", "下载客户订单删除记录", logs.size());
+		return logs;
+	}
+
+	/**
+	 * 获取客户删除订单的记录,同步到ERP进行删除处理
+	 *
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/deletelogs/back", method = RequestMethod.POST)
+	public void updateDeleteLogs(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		String idStr[] = jsonStr.split(",");
+		for (String id : idStr) {
+			if (id != null) {
+				DeOrderDeleteLog log = deOrderDeleteLogDao.findOne(Long.valueOf(id));
+				if (null != log) {
+					log.setStatus(Status.DOWNLOADED.value());
+					log.setDate(new Date());
+					deOrderDeleteLogDao.save(log);
+				}
+			}
+		}
+	}
 }

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

@@ -1,6 +1,7 @@
 
 package com.uas.platform.b2b.erp.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
@@ -96,6 +97,7 @@ public class InquiryController {
 	@ResponseBody
 	public List<InquiryDetail> getReply() {
 		List<InquiryDetail> details = inquiryService.convertPurchaseInquiryReply(purchaseInquiryService.findNotUploadReply());
+		System.out.println(JSON.toJSON(details));
 		logger.log("询价单", "下载询价单报价结果", details.size());
 		return details;
 	}

+ 29 - 18
src/main/java/com/uas/platform/b2b/erp/controller/InquiryDownController.java

@@ -1,16 +1,5 @@
 package com.uas.platform.b2b.erp.controller;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.service.InquiryService;
@@ -19,13 +8,23 @@ import com.uas.platform.b2b.service.SaleQuotationService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.ArrayUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.List;
 
 /**
  * 对买家ERP的数据接口<br>
  * 买家接收供应商的主动报价
- * 
+ *
  * @author yingp
- * 
+ *
  */
 @Controller
 @RequestMapping("/erp/purchase/quotation")
@@ -41,7 +40,7 @@ public class InquiryDownController {
 
 	/**
 	 * 买家ERP从平台获取主动报价
-	 * 
+	 *
 	 * @return
 	 */
 	@RequestMapping(method = RequestMethod.GET)
@@ -54,7 +53,7 @@ public class InquiryDownController {
 
 	/**
 	 * 平台的主动报价传到买家ERP之后,修改平台里面的主动报价的上传状态
-	 * 
+	 *
 	 * @return
 	 * @throws UnsupportedEncodingException
 	 */
@@ -82,7 +81,7 @@ public class InquiryDownController {
 
 	/**
 	 * 买家ERP(不)采纳了价格之后,修改平台里面的主动报价的状态
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
@@ -97,14 +96,26 @@ public class InquiryDownController {
 
 	/**
 	 * 买家在收到报价信息后,点击提交按钮后,状态传至平台
-	 * 
+	 *
 	 * @param data
 	 * @throws UnsupportedEncodingException
 	 */
 	@RequestMapping(value = "/checking", method = RequestMethod.POST)
 	@ResponseBody
 	public void checkInquiry(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		saleQuotationService.check(ArrayUtils.convertStringToNumberArray(URLDecoder.decode(data, "UTF-8"), Long.class));
+	}
+
+	/**
+	 * 买家在收到报价信息后,点击提交按钮后,状态传至平台
+	 *
+	 * @param data
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/rechecking", method = RequestMethod.POST)
+	@ResponseBody
+	public void reCheckInquiry(@RequestParam("data") String data) throws UnsupportedEncodingException {
 		saleQuotationService
-				.check(ArrayUtils.convertStringToNumberArray(URLDecoder.decode(data, "UTF-8"), Long.class));
+				.recheck(ArrayUtils.convertStringToNumberArray(URLDecoder.decode(data, "UTF-8"), Long.class));
 	}
 }

+ 3 - 1
src/main/java/com/uas/platform/b2b/erp/controller/RelationshipController.java

@@ -46,7 +46,9 @@ public class RelationshipController {
 				if (vendors.size() == 0) {// 供应商资料在平台上不存在
 					Vendor vendor = addVendor(otheruu, enUU);// 添加企业的供应商资料
 					// 添加企业圈合作伙伴资料
-					addPartnerShipRecord(vendor);
+					if (null != vendor) {
+						addPartnerShipRecord(vendor);
+					}
 				}
 			} else {
 				ok = false;

+ 37 - 16
src/main/java/com/uas/platform/b2b/erp/controller/TenderController.java

@@ -10,6 +10,7 @@ import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.DecideTender;
 import com.uas.platform.b2b.temporary.model.TenderContactInfo;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageParams;
@@ -124,30 +125,23 @@ public class TenderController {
     /**
      * 供应商投标
      *
-     * @param enBaseInfo  投标企业信息
-     * @param tenderItems 投标明细
+     * @param saleTender  投标单
+     * @param attaches 投标附件
      */
     @RequestMapping(value = "/reply", method = RequestMethod.POST)
     @ResponseBody
-    public ModelMap replyTender(String tenderItems, String enBaseInfo, String attaches, String saleTenderId) throws UnsupportedEncodingException {
-        EnterpriseBaseInfo vendor = new EnterpriseBaseInfo();
-        List<SaleTenderItem> saleTenderItems = new ArrayList<>();
-        if (null != tenderItems && !"".equals(tenderItems)) {
-            tenderItems = URLDecoder.decode(tenderItems, "UTF-8");
-            tenderItems = "[".concat(tenderItems);
-            tenderItems = tenderItems.concat("]");
-            saleTenderItems = FlexJsonUtils.fromJsonArray(tenderItems, SaleTenderItem.class);
-        }
-        if (null != enBaseInfo && !"".equals(enBaseInfo)) {
-            enBaseInfo = URLDecoder.decode(enBaseInfo, "UTF-8");
-            vendor = FlexJsonUtils.fromJson(enBaseInfo, EnterpriseBaseInfo.class);
+    public ModelMap replyTender(String saleTender, String attaches) throws UnsupportedEncodingException {
+        SaleTender saleTender1 = new SaleTender();
+        if (null != saleTender && !"".equals(saleTender)) {
+            saleTender = URLDecoder.decode(saleTender, "UTF-8");
+            saleTender1 = FlexJsonUtils.fromJson(saleTender, SaleTender.class);
         }
         if (null != attaches && !"".equals(attaches)) {
             attaches = URLDecoder.decode(attaches, "UTF-8");
             List<Attach> saleTenderAttaches = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
-            return tenderService.reply(saleTenderItems, vendor, saleTenderAttaches, Long.valueOf(saleTenderId));
+            return tenderService.reply(saleTender1, saleTenderAttaches);
         }
-        return tenderService.reply(saleTenderItems, vendor, Long.valueOf(saleTenderId));
+        return tenderService.reply(saleTender1);
     }
 
     /**
@@ -788,4 +782,31 @@ public class TenderController {
     public ModelMap decideInAdvance(Long id) {
         return tenderService.decideInAdvance(id);
     }
+
+    /**
+     * 获取招标单供应商列表
+     */
+    @RequestMapping(value = "/thisVendors", method = RequestMethod.GET)
+    public ModelMap getThisVendors (Long id) {
+        return tenderService.getSaleTenderVendors(id);
+    }
+
+
+    /**
+     * 短信通知接口
+     */
+    @RequestMapping(value = "/message/mobile", method = RequestMethod.POST)
+    public ModelMap sendMobileMessage (Long id) {
+        return tenderService.sendMobileMessage(id);
+    }
+
+    /**
+     * 全包类型评标
+     */
+    @RequestMapping(value = "/decide/all", method = RequestMethod.POST)
+    public ModelMap decideTenderAll (String data) throws UnsupportedEncodingException {
+        data = URLDecoder.decode(data, "UTF-8");
+        List<DecideTender> decideTenders = FlexJsonUtils.fromJsonArray(data, DecideTender.class);
+        return tenderService.decideTenderAll(decideTenders);
+    }
 }

+ 12 - 3
src/main/java/com/uas/platform/b2b/erp/controller/UserSpaceDetailController.java

@@ -8,6 +8,7 @@ import com.uas.platform.b2b.erp.model.B2BVendor;
 import com.uas.platform.b2b.erp.model.PageInfo;
 import com.uas.platform.b2b.model.InvitationRecord;
 import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.User;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AddPartnerService;
 import com.uas.platform.b2b.service.InvitationRecordService;
@@ -58,7 +59,7 @@ public class UserSpaceDetailController {
 	private UserService userService;
 
 	/**
-	 * 添加合作伙伴
+	 * 获取添加合作伙伴数据
 	 * 
 	 * @return
 	 * @throws UnsupportedEncodingException
@@ -110,8 +111,16 @@ public class UserSpaceDetailController {
 			} else {
 				pageParams.getFilters().put("in_enuu", SystemSession.getUser().getEnterprise().getUu());
 			}
-			if (pageInfo.getUseruu() != null && ifSelf == 1) { // 只看自己就加入自己uu过滤,查看所有就加入已激活状态,只显示已注册邀请。
-				pageParams.getFilters().put("in_useruu", pageInfo.getUseruu());
+			if (ifSelf == 1) { // 只看自己就加入自己uu过滤,查看所有就加入已激活状态,只显示已注册邀请。
+				if (pageInfo.getUseruu() != null) {
+					// 如果传入的uu在本企业找不到角色,就返回空
+					User user = userService.findUserByEnUUAndUserUU(SystemSession.getUser().getEnterprise().getUu(), pageInfo.getUseruu());
+					if (null == user) {
+						return records;
+					} else {
+						pageParams.getFilters().put("in_useruu", pageInfo.getUseruu());
+					}
+				}
 			} else {
 				pageParams.getFilters().put("in_active", Constant.YES);
 			}

+ 28 - 0
src/main/java/com/uas/platform/b2b/erp/model/B2BCustomer.java

@@ -61,6 +61,16 @@ public class B2BCustomer {
      */
     private Short customerswitch;
 
+    /**
+     * 行业
+     */
+    private String cu_industry;
+
+    /**
+     * 经营范围
+     */
+    private String cu_mainbusiness;
+
     public B2BCustomer(Vendor vendor) {
         this.setB2b_vendor_id(vendor.getId());
         this.setCustomerswitch(vendor.getCustswitch());
@@ -70,6 +80,8 @@ public class B2BCustomer {
             this.setCu_shortname(vendor.getMyEnterprise().getEnShortname());
             this.setCu_businesscode(vendor.getMyEnterprise().getEnBussinessCode());
             this.setCu_tel(vendor.getMyEnterprise().getEnTel());
+            this.setCu_mainbusiness(vendor.getMyEnterprise().getTags());
+            this.setCu_industry(vendor.getMyEnterprise().getProfession());
         }
         this.setCu_uu(String.valueOf(vendor.getMyEnUU()));
         if (vendor.getVendorUser() != null) {
@@ -172,4 +184,20 @@ public class B2BCustomer {
     public void setCustomerswitch(Short customerswitch) {
         this.customerswitch = customerswitch;
     }
+
+    public String getCu_industry() {
+        return cu_industry;
+    }
+
+    public void setCu_industry(String cu_industry) {
+        this.cu_industry = cu_industry;
+    }
+
+    public String getCu_mainbusiness() {
+        return cu_mainbusiness;
+    }
+
+    public void setCu_mainbusiness(String cu_mainbusiness) {
+        this.cu_mainbusiness = cu_mainbusiness;
+    }
 }

+ 42 - 0
src/main/java/com/uas/platform/b2b/erp/model/B2BVendor.java

@@ -56,6 +56,11 @@ public class B2BVendor {
      */
     private String ve_uu;
 
+    /**
+     * 供应商邮箱
+     */
+    private String ve_email;
+
     /**
      * B2B vendorId
      */
@@ -71,6 +76,16 @@ public class B2BVendor {
      */
     private Short servicerSwitch;
 
+    /**
+     * 经营范围
+     */
+    private String ve_businessrange;
+
+    /**
+     * 行业
+     */
+    private String ve_industry;
+
     public B2BVendor(Vendor vendor) {
         this.setB2b_vendor_id(vendor.getId());
         this.setVendorSwitch(vendor.getVendswitch());
@@ -81,10 +96,13 @@ public class B2BVendor {
             this.setVe_shortname(vendor.getVendorEnterprise().getEnShortname());
             this.setVe_webserver(vendor.getVendorEnterprise().getEnBussinessCode());
             this.setVe_tel(vendor.getVendorEnterprise().getEnTel());
+            this.setVe_industry(vendor.getVendorEnterprise().getProfession());
+            this.setVe_businessrange(vendor.getVendorEnterprise().getTags());
         }
         this.setVe_uu(String.valueOf(vendor.getVendEnUU()));
         if (vendor.getVendorUser() != null) {
             this.setVe_contact(vendor.getVendorUser().getUserName());
+            this.setVe_email(vendor.getVendorUser().getUserEmail());
         }
     }
 
@@ -191,4 +209,28 @@ public class B2BVendor {
     public void setServicerSwitch(Short servicerSwitch) {
         this.servicerSwitch = servicerSwitch;
     }
+
+    public String getVe_email() {
+        return ve_email;
+    }
+
+    public void setVe_email(String ve_email) {
+        this.ve_email = ve_email;
+    }
+
+    public String getVe_businessrange() {
+        return ve_businessrange;
+    }
+
+    public void setVe_businessrange(String ve_businessrange) {
+        this.ve_businessrange = ve_businessrange;
+    }
+
+    public String getVe_industry() {
+        return ve_industry;
+    }
+
+    public void setVe_industry(String ve_industry) {
+        this.ve_industry = ve_industry;
+    }
 }

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

@@ -27,6 +27,7 @@ public class Inquiry {
 	private String in_remark;
 	private String in_pricetype;
 	private List<InquiryDetail> details;
+	private String in_kind; //询价类型
 	/**
 	 * 主动报价时,平台的主动报价单SaleQuotation的ID
 	 */
@@ -154,6 +155,14 @@ public class Inquiry {
 		this.attaches = attaches;
 	}
 
+	public String getIn_kind() {
+		return in_kind;
+	}
+
+	public void setIn_kind(String in_kind) {
+		this.in_kind = in_kind;
+	}
+
 	/**
 	 * 转为平台的采购询价
 	 * 
@@ -172,6 +181,7 @@ public class Inquiry {
 		inquiry.setEnvironment(this.in_environment);
 		inquiry.setSourceId(this.in_id);
 		inquiry.setPriceType(this.in_pricetype);
+		inquiry.setInquirytype(this.in_kind);
 		inquiry.setIsOpen(Constant.NO); // erp传过来的询价单,默认为非公开
 		if (!CollectionUtils.isEmpty(this.details)) {
 			Set<PurchaseInquiryItem> inquiryItems = new HashSet<PurchaseInquiryItem>();

+ 26 - 13
src/main/java/com/uas/platform/b2b/erp/model/PurchaseTenderErp.java

@@ -4,19 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.Set;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 import com.uas.platform.b2b.model.Attach;
 import com.uas.platform.b2b.model.Enterprise;
@@ -181,6 +169,15 @@ public class PurchaseTenderErp implements Serializable {
     @Column(name = "pt_auditstatus")
     private Short auditStatus;
 
+    /**
+     * 是否全包 (1为全包,0为部分供料)
+     */
+    @Column(name = "pt_ifall")
+    private Short ifAll;
+
+    @Transient
+    private Short bidEnNum;
+
     public Long getId() {
         return id;
     }
@@ -372,6 +369,22 @@ public class PurchaseTenderErp implements Serializable {
     public void setAuditStatus(Short auditStatus) {
         this.auditStatus = auditStatus;
     }
+
+    public Short getIfAll() {
+        return ifAll;
+    }
+
+    public void setIfAll(Short ifAll) {
+        this.ifAll = ifAll;
+    }
+
+    public Short getBidEnNum() {
+        return bidEnNum;
+    }
+
+    public void setBidEnNum(Short bidEnNum) {
+        this.bidEnNum = bidEnNum;
+    }
 }
 
 

+ 174 - 7
src/main/java/com/uas/platform/b2b/erp/model/SaleTenderErp.java

@@ -54,17 +54,49 @@ public class SaleTenderErp implements Serializable {
     private Date date;
 
     /**
-     * 招标方联系人
+     * 供应商联系人
      */
     @Column(name = "st_user")
     private String user;
 
     /**
-     * 招标方联系人电话
+     * 供应商联系人uu
+     */
+    @Column(name = "st_useruu")
+    private Long useruu;
+
+    /**
+     * 联系人
+     */
+    @OneToOne
+    @JoinColumn(name = "st_useruu", insertable = false, updatable = false)
+    private UserBaseInfo userInfo;
+
+    /**
+     * 招标发起人uu
+     */
+    @Column(name = "st_recorderuu")
+    private Long recorderuu;
+
+    /**
+     * 招标发起人
+     */
+    @OneToOne(cascade = CascadeType.REFRESH )
+    @JoinColumn(name = "st_recorderuu", insertable = false, updatable = false)
+    private UserBaseInfo recorder;
+
+    /**
+     * 供应商联系人电话
      */
     @Column(name = "st_usertel")
     private String userTel;
 
+    /**
+     * 供应商联系人邮箱
+     */
+    @Column(name = "st_useremail")
+    private String userEmail;
+
     /**
      * 招标企业uu
      */
@@ -144,11 +176,6 @@ public class SaleTenderErp implements Serializable {
     @Column(name = "st_status")
     private String status;
 
-//    /**
-//     * 招标附件
-//     */
-//    private Set<Attach> tenderAttaches;
-
     /**
      * 投标附件
      */
@@ -183,6 +210,50 @@ public class SaleTenderErp implements Serializable {
     @Column(name = "st_auditstatus")
     private Short auditStatus;
 
+    /**
+     * 招标单id(消息跳转url用)
+     */
+    @Column(name = "st_ptid")
+    private Long ptId;
+
+    /**
+     * 是否已过期,根据enddate判断,为视图虚拟列 0 未过期,1已过期
+     * @param tender
+     */
+    @Column(name = "st_overdue", insertable = false, updatable = false)
+    private Short overdue;
+
+    /**
+     * 是否已过期,根据publishdate判断,为视图虚拟列 0 未公布,1已公布
+     * @param tender
+     */
+    @Column(name = "st_result", insertable = false, updatable = false)
+    private Short result;
+
+    /**
+     * 是否全包 (1为全包,0为部分供料)
+     */
+    @Column(name = "st_ifall")
+    private Short ifAll;
+
+    /**
+     * 总项目周期(天)
+     */
+    @Column(name = "st_cycle")
+    private Long cycle;
+
+    /**
+     * 金额总计(全包模式用)
+     */
+    @Column(name = "st_totalmoney")
+    private Double totalMoney;
+
+    /**
+     * 税率(% 全包模式用)
+     */
+    @Column(name = "st_taxrate")
+    private Integer taxrate;
+
 
     public Long getId() {
         return id;
@@ -383,4 +454,100 @@ public class SaleTenderErp implements Serializable {
     public void setAuditStatus(Short auditStatus) {
         this.auditStatus = auditStatus;
     }
+
+    public Short getIfAll() {
+        return ifAll;
+    }
+
+    public Long getCycle() {
+        return cycle;
+    }
+
+    public void setCycle(Long cycle) {
+        this.cycle = cycle;
+    }
+
+    public void setIfAll(Short ifAll) {
+        this.ifAll = ifAll;
+    }
+
+    public Double getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(Double totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+    public Integer getTaxrate() {
+        return taxrate;
+    }
+
+    public void setTaxrate(Integer taxrate) {
+        this.taxrate = taxrate;
+    }
+
+    public Long getUseruu() {
+        return useruu;
+    }
+
+    public void setUseruu(Long useruu) {
+        this.useruu = useruu;
+    }
+
+    public UserBaseInfo getUserInfo() {
+        return userInfo;
+    }
+
+    public void setUserInfo(UserBaseInfo userInfo) {
+        this.userInfo = userInfo;
+    }
+
+    public Long getRecorderuu() {
+        return recorderuu;
+    }
+
+    public void setRecorderuu(Long recorderuu) {
+        this.recorderuu = recorderuu;
+    }
+
+    public UserBaseInfo getRecorder() {
+        return recorder;
+    }
+
+    public void setRecorder(UserBaseInfo recorder) {
+        this.recorder = recorder;
+    }
+
+    public String getUserEmail() {
+        return userEmail;
+    }
+
+    public void setUserEmail(String userEmail) {
+        this.userEmail = userEmail;
+    }
+
+    public Long getPtId() {
+        return ptId;
+    }
+
+    public void setPtId(Long ptId) {
+        this.ptId = ptId;
+    }
+
+    public Short getOverdue() {
+        return overdue;
+    }
+
+    public void setOverdue(Short overdue) {
+        this.overdue = overdue;
+    }
+
+    public Short getResult() {
+        return result;
+    }
+
+    public void setResult(Short result) {
+        this.result = result;
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.erp.service;
 
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.temporary.model.DecideTender;
 import com.uas.platform.b2b.temporary.model.TenderContactInfo;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.ui.ModelMap;
@@ -32,13 +33,13 @@ public interface TenderService {
      * 投标
      *
      *
-     * @param tenderItems
-     * @param enBaseInfo
+     * @param saleTender
+     * @param attaches
      * @return
      */
-    ModelMap reply(List<SaleTenderItem> tenderItems, EnterpriseBaseInfo enBaseInfo, List<Attach> attaches, Long saleTenderId);
+    ModelMap reply(SaleTender saleTender ,List<Attach> attaches);
 
-    ModelMap reply(List<SaleTenderItem> saleTenderItems, EnterpriseBaseInfo vendor, Long aLong);
+    ModelMap reply(SaleTender saleTender);
 
     /**
      * 采购方定标操作
@@ -181,4 +182,10 @@ public interface TenderService {
     ModelMap publishTender(Long id);
 
     ModelMap decideInAdvance(Long id);
+
+    ModelMap getSaleTenderVendors(Long id);
+
+    ModelMap sendMobileMessage(Long id);
+
+    ModelMap decideTenderAll(List<DecideTender> decideTenders);
 }

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

@@ -48,7 +48,9 @@ public class ARCheckServiceImpl implements ARCheckService {
 					List<Vendor> existVendors = vendorDao.findByMyEnUUAndVendUU(arCheck.getAc_custuu(), vendUU);
 					if (CollectionUtils.isEmpty(existVendors)) {// 不存在供应商关系,增加供应商关系
 						Vendor vendor = addVendor(customer);
-						addPartnerShipRecord(vendor); // 添加合作伙伴关系
+						if (null != vendor) {
+							addPartnerShipRecord(vendor); // 添加合作伙伴关系
+						}
 					}
 					SaleARCheck saleARCheck = arCheck.convert();
 					if (!CollectionUtils.isEmpty(saleARCheck.getItems())) {

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

@@ -57,7 +57,9 @@ public class InquiryMouldServiceImpl implements InquiryMouldService {
 					}
 				} else {
 					vendor = addVendor(purchaseInquiryMould);
-					addPartnerShipRecord(vendor); // 添加合作伙伴关系
+					if (null != vendor) {
+						addPartnerShipRecord(vendor); // 添加合作伙伴关系
+					}
 				}
 				if (vendor != null) {
 					for (PurchaseInquiryMouldItem item : purchaseInquiryMould.getInquiryMouldItems()) {

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

@@ -71,7 +71,9 @@ public class InquiryServiceImpl implements InquiryService {
 							// 添加供应商资料
 							vendor = addVendor(item);
 							// 添加合作伙伴关系
-							addPartnerShipRecord(vendor);
+							if (null != vendor) {
+								addPartnerShipRecord(vendor);
+							}
 						}
 						if (vendor != null) {
 							item.setInquiry(purchaseInquiry);

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

@@ -56,7 +56,9 @@ public class MakeServiceImpl implements MakeService {
 				Vendor vend = new Vendor();
 				if (CollectionUtils.isEmpty(vendors)) {
 					vend = addVendor(make);
-					addPartnerShipRecord(vend); // 添加合作伙伴
+					if (null != vend) {
+						addPartnerShipRecord(vend); // 添加合作伙伴
+					}
 				} else {
 					vend = vendors.get(0);
 				}

+ 10 - 15
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseAPBillServiceImpl.java

@@ -1,26 +1,21 @@
 package com.uas.platform.b2b.erp.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.ProductDao;
 import com.uas.platform.b2b.dao.PurchaseApBillDao;
 import com.uas.platform.b2b.erp.model.PurchaseAPBill;
 import com.uas.platform.b2b.erp.model.PurchaseAPBillDetail;
 import com.uas.platform.b2b.erp.service.PurchaseAPBillService;
-import com.uas.platform.b2b.model.ApbillAdjustment;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurchaseApBill;
-import com.uas.platform.b2b.model.PurchaseApBillItem;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
 
 @Service
 public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
@@ -93,7 +88,7 @@ public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
 						adjust.setProdcode(product.getCode());
 						adjust.setQty(detail.getAbd_qty());
 						adjust.setThischeckqty(detail.getAbd_thisvoqty());
-						adjust.setOrderprice(detail.getAbd_thisvoprice());
+						adjust.setOrderprice(detail.getAbd_price());
 						adjust.setOrdercode(detail.getAbd_ordercode());
 						adjust.setOrderdetno(detail.getAbd_orderdetno());
 						adjust.setTaxrate(detail.getAbd_taxrate());

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

@@ -58,7 +58,9 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 							Vendor vendor = null;
 							if (vendors.size() == 0) {
 								vendor = addVendor(item);
-								addPartnerShipRecord(vendor); // 添加合作伙伴关系
+								if (null != vendor) {
+									addPartnerShipRecord(vendor); // 添加合作伙伴关系
+								}
 							} else {
 								vendor = vendors.get(0);
 							}
@@ -143,7 +145,9 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 							Vendor vendor = null;
 							if (vendors.size() == 0) {
 								vendor = addVendor(item);
-								addPartnerShipRecord(vendor);
+								if (null != vendor) {
+									addPartnerShipRecord(vendor);
+								}
 							} else {
 								vendor = vendors.get(0);
 							}

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

@@ -65,7 +65,9 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 						Vendor vendor = null;
 						if (vendors.size() == 0) {// 供应商列表中不存在供应商关系
 							vendor = addVendor(proofingItem);// 增加供应商关系
-							addPartnerShipRecord(vendor);
+							if (null != vendor) {
+								addPartnerShipRecord(vendor);
+							}
 						} else {
 							vendor = vendors.get(0);
 						}

+ 5 - 1
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java

@@ -59,7 +59,9 @@ public class PurchaseServiceImpl implements PurchaseService {
 				Vendor vendor = null;
 				if (vendors.size() == 0) {// 供应商资料在平台上不存在
 					vendor = addVendor(order);// 添加企业的供应商资料
-					addPartnerShipRecord(vendor);// 添加企业圈合作伙伴关系
+					if (null != vendor) {
+						addPartnerShipRecord(vendor);// 添加企业圈合作伙伴关系
+					}
 				} else {// 供应商资料在平台上存在
 					vendor = vendors.get(0);
 					if (order.getVendUserUU() == null || order.getVendUserUU() == 0)// 单据不包含供应商联系人UU号&&供应商列表中有供应商联系人
@@ -139,6 +141,8 @@ public class PurchaseServiceImpl implements PurchaseService {
 		Vendor vendor = new Vendor();
 		vendor.setMyEnUU(order.getEnUU());
 		vendor.setMyEnterprise(SystemSession.getUser().getEnterprise());
+		// 默认开启供应商
+		vendor.setVendswitch(Constant.YES);
 		// 买方用户(联系人)
 		// 1、单据存在买方用户UU号:买方企业存在对应uu号的用户,设为该用户;买方企业不存在对应uu号的用户,供应商和单据设为当前用户(管理员)
 		// 2、单据不存在买方用户UU号:供应商和单据设为当前用户(管理员)

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

@@ -70,7 +70,9 @@ public class QuotationServiceImpl implements QuotationService {
 					}
 				} else {// 不存在对应的供应商资料,增加供应商关系
 					vendor = addVendor(saleQuotation);
-					addPartnerShipRecord(vendor); // 添加供应商关系同时增加合作伙伴关系记录
+					if (null != vendor) {
+						addPartnerShipRecord(vendor); // 添加供应商关系同时增加合作伙伴关系记录
+					}
 				}
 				if (vendor != null && vendor.getMyEnUU() != null) {
 					if (!CollectionUtils.isEmpty(saleQuotation.getQuotationItems())) {

+ 158 - 58
src/main/java/com/uas/platform/b2b/erp/service/impl/TenderServiceImpl.java

@@ -4,17 +4,19 @@ import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.model.B2BVendor;
 import com.uas.platform.b2b.erp.model.SaleTenderErp;
 import com.uas.platform.b2b.erp.service.TenderService;
 import com.uas.platform.b2b.event.PurchaseTenderDecideReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseTenderSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.AttachService;
+import com.uas.platform.b2b.support.MessageConf;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.b2b.temporary.model.PartnershipRecord;
-import com.uas.platform.b2b.temporary.model.PurcTenderProd;
-import com.uas.platform.b2b.temporary.model.TenderContactInfo;
+import com.uas.platform.b2b.temporary.model.*;
 import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.apache.commons.lang3.time.DateUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -30,6 +32,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -83,6 +86,14 @@ public class TenderServiceImpl implements TenderService {
     @Autowired
     private UserOrderDao userOrderDao;
 
+    @Autowired
+    private MessageConf messageConf;
+
+    /**
+     * 短信接口
+     */
+    final String messageUrl = "http://message.ubtob.com/sms/send";
+
     /**
      *  发布和保存
      * @param purchaseTender
@@ -371,6 +382,7 @@ public class TenderServiceImpl implements TenderService {
                 if (null == saleTender) { // 不存在投标单说明未转投标单,进行新增投标单操作
                     saleTender = new SaleTender(tender);
                     saleTender.setVendUU(vendUU);
+                    saleTender.setUserEmail(SystemSession.getUser().getUserEmail());
                     saleTender.setUseruu(SystemSession.getUser().getUserUU());
                     saleTender.setUser(SystemSession.getUser().getUserName());
                     saleTender.setUserTel(SystemSession.getUser().getUserTel());
@@ -505,6 +517,7 @@ public class TenderServiceImpl implements TenderService {
             }
         }
         map.put("success", true);
+        map.put("ifOpen", tender.getIfOpen());
         return map;
     }
 
@@ -532,8 +545,8 @@ public class TenderServiceImpl implements TenderService {
             List<SaleTender> saleTenders = saleTenderDao.findByEnUUAndCode(tender.getEnUU(), tender.getCode());
             List<SaleTender> saveList = new ArrayList<>();
             for (SaleTender saleTender : saleTenders) {
-                saleTender.setPublishDate(backupTime);
-                saleTender.setStatus("待评标");
+                saleTender.setEndDate(backupTime);
+//                saleTender.setStatus("待评标");
                 saveList.add(saleTender);
             }
             saleTenderDao.save(saveList);
@@ -542,6 +555,61 @@ public class TenderServiceImpl implements TenderService {
         return map;
     }
 
+    @Override
+    public ModelMap getSaleTenderVendors(Long id) {
+        ModelMap map = new ModelMap();
+        PurchaseTender tender = purchaseTenderDao.findOne(id);
+        List<SaleTender> saleTenders = saleTenderDao.findByEnUUAndCode(tender.getEnUU(), tender.getCode());
+        List<B2BVendor> vendors = new ArrayList<>();
+        for (SaleTender saleTender : saleTenders) {
+            List<Vendor> vendor = vendorDao.findByMyEnUUAndVendUU(tender.getEnUU(), saleTender.getVendUU());
+            if (!CollectionUtils.isEmpty(vendor)) {
+                B2BVendor b2BVendor = new B2BVendor(vendor.get(0));
+                b2BVendor.setVe_email(saleTender.getUserEmail());
+                b2BVendor.setVe_contact(saleTender.getUser());
+                vendors.add(b2BVendor);
+            }
+        }
+        tender.setPurchaseTenderProds(new HashSet<PurchaseTenderProd>());
+        map.put("vendors", vendors);
+        map.put("tender", tender);
+        return map;
+    }
+
+    @Override
+    public ModelMap sendMobileMessage(Long id) {
+        ModelMap map = new ModelMap();
+        PurchaseTender tender = purchaseTenderDao.findOne(id);
+        List<SaleTender> saleTenders = saleTenderDao.findByEnUUAndCode(tender.getEnUU(), tender.getCode());
+        for (SaleTender saleTender : saleTenders) {
+            try {
+                SmsMessage sms = new SmsMessage();
+                List<Object> obj = new ArrayList<>();
+                // 招标方
+                obj.add(saleTender.getEnUU());
+                obj.add(saleTender.getEnterprise().getEnName());
+//                obj.add(saleTender.getRecorder().getUserName());
+                obj.add(saleTender.getEnterpriseBaseInfo().getEnName());
+                obj.add(saleTender.getCode());
+                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String date = dateFormat.format(saleTender.getDate());
+                System.out.println(date);
+                obj.add(date);
+                sms.setParams(obj);
+                sms.setReceiver(saleTender.getUserTel());
+                sms.setTemplateId(messageConf.getMsgTenderForB2B());
+                HttpUtil.sendPost(messageUrl, FlexJsonUtils.toJsonDeep(sms));
+            } catch (Exception e) {
+                map.put("error", "发送知会短信失败,单号:" + tender.getCode());
+                e.printStackTrace();
+            }
+        }
+        if (null == map.get("error")) {
+            map.put("success", true);
+        }
+        return map;
+    }
+
     /**
      * 发布或保存方法(针对保存的单据)
      *
@@ -674,7 +742,9 @@ public class TenderServiceImpl implements TenderService {
                                 Vendor vendor = null;
                                 if (vendors.size() == 0) {// 供应商列表中不存在供应商关系
                                     vendor = addVendor(saleTender);// 增加供应商关系
-                                    addPartnerShipRecord(vendor);
+                                    if (null != vendor) {
+                                        addPartnerShipRecord(vendor);
+                                    }
                                 } else {
                                     vendor = vendors.get(0);
                                 }
@@ -975,24 +1045,22 @@ public class TenderServiceImpl implements TenderService {
     /**
      * 投标
      *
-     * @param tenderItems
-     * @param enBaseInfo
+     * @param saleTender
+     * @param attaches
      * @return
      */
     @Override
-    public ModelMap reply(List<SaleTenderItem> tenderItems, EnterpriseBaseInfo enBaseInfo, List<Attach> attaches, Long saleTenderId) {
-        if (null != enBaseInfo && null != enBaseInfo.getUu()) {
-            enterpriseBaseInfoDao.save(enBaseInfo);
-        }
-        SaleTender saleTender = saleTenderDao.findOne(saleTenderId);
+    public ModelMap reply(SaleTender saleTender, List<Attach> attaches) {
+        SaleTender oldSaleTender = saleTenderDao.findOne(saleTender.getId());
         Set<Attach> attachSet = new HashSet<>();
-//        saleTender.setBidAttaches(attachSet); // 先清掉关联关系
-//        saleTenderDao.save(saleTender);
-        if (tenderItems.size() > 0) {
-//            saleTender.setStatus("已投标"); // 现在审核时修改状态
-            saleTender.setModified(new Date());
-            // 提交时设置为0,审核后改为1
-            saleTender.setAuditStatus(Constant.NO);
+        oldSaleTender.setModified(new Date());
+        // 提交时设置为0,审核后改为1
+        oldSaleTender.setAuditStatus(Constant.NO);
+        oldSaleTender.setCycle(saleTender.getCycle());
+        oldSaleTender.setTaxrate(saleTender.getTaxrate());
+        oldSaleTender.setTotalMoney(saleTender.getTotalMoney());
+        if (null != saleTender.getEnterpriseBaseInfo()) {
+            oldSaleTender.setEnterpriseBaseInfo(saleTender.getEnterpriseBaseInfo());
         }
         List<Attach> attachList = new ArrayList<>();
         for (Attach attach : attaches) {
@@ -1007,11 +1075,10 @@ public class TenderServiceImpl implements TenderService {
             attachList = attachDao.save(attachList);
             attachSet.addAll(attachList);
         }
-//        attachSet.addAll(attaches);
-        saleTender.setBidAttaches(attachSet);
-        saleTenderDao.save(saleTender);
-        if (tenderItems.size() > 0 ) {
-            for (SaleTenderItem tenderItem : tenderItems) {
+        oldSaleTender.setBidAttaches(attachSet);
+        saleTenderDao.save(oldSaleTender);
+        if (saleTender.getSaleTenderItems().size() > 0 ) {
+            for (SaleTenderItem tenderItem : saleTender.getSaleTenderItems()) {
                 SaleTenderItem saleTenderItem = saleTenderItemDao.findOne(tenderItem.getId());
                 // 需要修改见索引主表中的字段来触发索引更新
                 saleTenderItem.getTenderProd().getTender().setModified(new Date());
@@ -1030,29 +1097,30 @@ public class TenderServiceImpl implements TenderService {
     /**
      * 投标(未修改附件)
      *
-     * @param tenderItems
-     * @param enBaseInfo
+     * @param saleTender
      * @return
      */
     @Override
-    public ModelMap reply(List<SaleTenderItem> tenderItems, EnterpriseBaseInfo enBaseInfo, Long saleTenderId) {
-        if (null != enBaseInfo && null != enBaseInfo.getUu()) {
-            enterpriseBaseInfoDao.save(enBaseInfo);
-        }
-        SaleTender saleTender = saleTenderDao.findOne(saleTenderId);
-        if (tenderItems.size() > 0) {
-//            saleTender.setStatus("已投标");
-            saleTender.setModified(new Date());
-            // 提交时设置为0,审核后改为1
-            saleTender.setAuditStatus(Constant.NO);
+    public ModelMap reply(SaleTender saleTender) {
+        SaleTender oldSaleTender = saleTenderDao.findOne(saleTender.getId());
+        EnterpriseBaseInfo enterpriseBaseInfo = saleTender.getEnterpriseBaseInfo();
+        if (null != enterpriseBaseInfo) {
+            enterpriseBaseInfoDao.save(enterpriseBaseInfo);
+            oldSaleTender.setEnterpriseBaseInfo(enterpriseBaseInfo);
         }
-        saleTenderDao.save(saleTender);
-        if (tenderItems.size() > 0 ) {
-            for (SaleTenderItem tenderItem : tenderItems) {
+        oldSaleTender.setModified(new Date());
+        // 提交时设置为0,审核后改为1
+        oldSaleTender.setAuditStatus(Constant.NO);
+        oldSaleTender.setCycle(saleTender.getCycle());
+        oldSaleTender.setTaxrate(saleTender.getTaxrate());
+        oldSaleTender.setTotalMoney(saleTender.getTotalMoney());
+        saleTenderDao.save(oldSaleTender);
+        if (!CollectionUtils.isEmpty(saleTender.getSaleTenderItems())) {
+            for (SaleTenderItem tenderItem : saleTender.getSaleTenderItems()) {
                 SaleTenderItem saleTenderItem = saleTenderItemDao.findOne(tenderItem.getId());
                 // 需要修改见索引主表中的字段来触发索引更新
                 saleTenderItem.getTenderProd().getTender().setModified(new Date());
-//                saleTenderItem.getTenderProd().getTender().setStatus("待评标");
+//                saleTenderItem.getTenderProd().getTender().setStatus("待评标");  //审核时修改状态
                 saleTenderItem.setPrice(tenderItem.getPrice());
                 saleTenderItem.setTaxrate(tenderItem.getTaxrate());
                 saleTenderItem.setCycle(tenderItem.getCycle());
@@ -1073,23 +1141,8 @@ public class TenderServiceImpl implements TenderService {
      */
     @Override
     public ModelMap decide(List<SaleTenderItem> saleTenderItems) {
-		// Set<SaleTender> saleTenders = new HashSet<>();
-//        for (SaleTenderItem tenderItem : saleTenderItems) {
-//            tenderItem = saleTenderItemDao.findOne(tenderItem.getId());
-//            if (tenderItem.getApplyStatus() != null && tenderItem.getApplyStatus() == Constant.YES) {
-//                isApply = true; // 只要有定标的明细,就确认状态为已结标
-//                tenderItem.getSaleTender().setStatus("已结标");
-//                saleTenders.add(tenderItem.getSaleTender());
-//            }
-//        }
-//        saleTenderDao.save(saleTenders);
         SaleTenderItem tenderItem = saleTenderItemDao.findOne(saleTenderItems.get(0).getId());
         PurchaseTender tender = tenderItem.getTenderProd().getTender();
-//        if (isApply) {
-//            tender.setStatus("已结标");
-//        } else {
-//            tender.setStatus("流标");
-//        }
         tender.setModified(new Date());
         // 提交时设为0,审核后改为1
         tender.setAuditStatus(Constant.NO);
@@ -1113,12 +1166,59 @@ public class TenderServiceImpl implements TenderService {
                 saleTenders.add(item.getSaleTender());
             }
         }
-        // 定标时,给供应商产生消息
-        ContextUtils.publishEvent(new PurchaseTenderDecideReleaseEvent(saleTenders));
+        try {
+            // 定标时,给供应商产生消息
+            ContextUtils.publishEvent(new PurchaseTenderDecideReleaseEvent(saleTenders));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         ModelMap map = new ModelMap();
         map.put("success", true);
         return map;
     }
 
+    /**
+     * 全包类型招标单定标
+     * @param decideTenders
+     * @return
+     */
+    @Override
+    public ModelMap decideTenderAll(List<DecideTender> decideTenders) {
+        ModelMap map = new ModelMap();
+        if (!CollectionUtils.isEmpty(decideTenders)) {
+            Set<Long> saleTenderIds = new HashSet<>();
+            Set<Long> tenderIds = new HashSet<>();
+            List<SaleTender> eventList = new ArrayList<>();
+            for (DecideTender decideTender : decideTenders) {
+                SaleTender saleTender = saleTenderDao.findOne(decideTender.getSaleTenderId());
+                if (null != saleTender) {
+//                    PurchaseTender tender = purchaseTenderDao.findOne(saleTender.getPtId());
+//                    if (null != tender) {
+//                        tender.setModified(new Date());
+//                        // 提交时设为0,审核后改为1
+//                        tender.setAuditStatus(Constant.NO);
+//                    }
+                    tenderIds.add(saleTender.getPtId());
+                    purchaseTenderDao.updateSaleTenderItemDecide(decideTender.getApplyStatus(), decideTender.getReason(), decideTender.getSaleTenderId());
+                    if (!saleTenderIds.contains(saleTender.getId())) {
+                        saleTenderIds.add(saleTender.getId());
+                        eventList.add(saleTender);
+                    }
+                }
+            }
+            purchaseTenderDao.updateTenderDecide(tenderIds, new Date());
+            map.put("success", true);
+            try {
+                // 定标时,给供应商产生消息
+                ContextUtils.publishEvent(new PurchaseTenderDecideReleaseEvent(eventList));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            map.put("success", "参数为空");
+        }
+        return map;
+    }
+
 }
 

+ 4 - 4
src/main/java/com/uas/platform/b2b/event/SaleQuotationDecideReleaseEvent.java

@@ -37,8 +37,8 @@ public class SaleQuotationDecideReleaseEvent extends SaveReleaseEvent<PagingRele
             emUU = 1L;
         }
         String emName = "操作员";
-        if (item.getQuotation().getUser() != null) {
-            emName = quotation.getUser().getUserName();
+        if (item.getQuotation().getCustUser() != null) {
+            emName = quotation.getCustUser().getUserName();
         }
         Long enUU = quotation.getCustUU();
         Date date = new Date();
@@ -58,9 +58,9 @@ public class SaleQuotationDecideReleaseEvent extends SaveReleaseEvent<PagingRele
         Short orderStatus = quotation.getStatus();
         String context;
         if (item.getAgreed() == Constant.YES) {
-            context = quotation.getEnterprise().getEnName() + "的" + emName + "采纳了您的报价(" + codeValue + ")!";
+            context = quotation.getCust().getEnName() + "的" + emName + "采纳了您的报价(" + codeValue + ")!";
         } else {
-            context = quotation.getEnterprise().getEnName() + "的" + emName + "未采纳您的报价(" + codeValue + ")!";
+            context = quotation.getCust().getEnName() + "的" + emName + "未采纳您的报价(" + codeValue + ")!";
         }
 
         PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type,

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

@@ -37,8 +37,8 @@ public class SaleQuotationInvalidReleaseEvent extends SaveReleaseEvent<PagingRel
             emUU = 1L;
         }
         String emName = "操作员";
-        if (quotation.getUser() != null) {
-            emName = quotation.getUser().getUserName();
+        if (quotation.getCustUser() != null) {
+            emName = quotation.getCustUser().getUserName();
         }
         Long enUU = quotation.getCustUU();
         Date date = new Date();
@@ -56,7 +56,7 @@ public class SaleQuotationInvalidReleaseEvent extends SaveReleaseEvent<PagingRel
         Long sourceId = quotation.getId();
         String url = "sale/quotation/" + quotation.getId();
         Short orderStatus = quotation.getStatus();
-        String context = quotation.getEnterprise().getEnName() + "的" + emName + "作废了您的主动报价单(" + codeValue + ")!";
+        String context = quotation.getCust().getEnName() + "的" + emName + "作废了您的主动报价单(" + codeValue + ")!";
         PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type,
                 isReply, category, table, sourceId, orderStatus, toVendor, url);
         Long vendUU = quotation.getEnUU();

+ 53 - 49
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -55,65 +55,69 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 				userUUs.add(detail.getVendUserUU());
 			}
 			PagingRelease release = detail.getPagingRelease();
-			if (null != detail.getVendUU() && null != release.getEnUU()) {
-				// 添加管理员
-				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) { // 消息接收方为供应商,查找供应商表方式不同
+			if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
+				if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05 dongbw加,避免客户方用户收到太多消息
+					// 添加管理员 2017-08-25 10:18:36  注释
+//					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;
+					// 判断提前,防止客户方收到过多单据提示消息  2017年8月24日 16:19:26 注 dongbw
+//					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();
-					List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
-					if (!CollectionUtils.isEmpty(distributes)) {
-						// 去掉已将权限转移的管理员
-						Set<Long> leaderUUs = new HashSet<>();
-						for (Distribute distribute : distributes) {
-							if (null != distribute.getIsTransfer() && distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
-									&& !leaderUUs.contains(distribute.getLeaderUU())) {
-								leaderUUs.add(distribute.getLeaderUU());
+//					} 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();
+						List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
+						if (!CollectionUtils.isEmpty(distributes)) {
+							// 去掉已将权限转移的管理员
+							Set<Long> leaderUUs = new HashSet<>();
+							for (Distribute distribute : distributes) {
+								if (null != distribute.getIsTransfer() && distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
+										&& !leaderUUs.contains(distribute.getLeaderUU())) {
+									leaderUUs.add(distribute.getLeaderUU());
+								}
 							}
-						}
-						for (Distribute distribute : distributes) {
-							if (!userUUs.contains(distribute.getUserUU()) && !leaderUUs.contains(distribute.getUserUU())) {
-								userUUs.add(distribute.getUserUU());
+							for (Distribute distribute : distributes) {
+								if (!userUUs.contains(distribute.getUserUU()) && !leaderUUs.contains(distribute.getUserUU())) {
+									userUUs.add(distribute.getUserUU());
+								}
 							}
 						}
 					}
-				}
-				// 新增消息
-				System.out.println(userUUs.toString());
-				for (Long userUU : userUUs) {
-                    try { //去除userUU为空值的情况
-						if (null != userUU) {
-							User user = userDao.findOne(userUU);
-							if (null != user) {
-								PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
-								pagingReleaseDetail.setPagingRelease(release);
-								otherReleaseDetails.add(pagingReleaseDetail);
+					// 新增消息
+					for (Long userUU : userUUs) {
+						try { //去除userUU为空值的情况
+							if (null != userUU) {
+								User user = userDao.findOne(userUU);
+								if (null != user) {
+									PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
+									pagingReleaseDetail.setPagingRelease(release);
+									otherReleaseDetails.add(pagingReleaseDetail);
+								}
 							}
+						} catch (RuntimeException e) {
+							e.getStackTrace();
 						}
-                    } catch (RuntimeException e){
-                        e.getStackTrace();
-                    }
-                }
+					}
+				} else { // 发送给客户方的,直接添加消息到保存列表
+					otherReleaseDetails.add(detail);
+				}
 			}
 		}
         otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);

+ 4 - 1
src/main/java/com/uas/platform/b2b/model/Cart.java

@@ -1,5 +1,7 @@
 package com.uas.platform.b2b.model;
 
+import org.hibernate.annotations.Where;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Set;
@@ -167,7 +169,8 @@ public class Cart implements Serializable {
 	/**
 	 * 购物车明细
 	 */
-	@OneToMany(mappedBy = "cart", cascade = { CascadeType.REFRESH }, fetch = FetchType.EAGER)
+	@OneToMany(mappedBy = "cart",  cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+			CascadeType.MERGE }, fetch = FetchType.EAGER)
 	@OrderBy("number")
 	private Set<CartDetail> cartDetails;
 

+ 129 - 0
src/main/java/com/uas/platform/b2b/model/DeOrderDeleteLog.java

@@ -0,0 +1,129 @@
+package com.uas.platform.b2b.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * 代采订单的删除记录(为了同步到ERP进行删除)
+ * 
+ * @author hejq
+ * @time 创建时间:2017年8月18日
+ */
+@Entity
+@Table(name = "purc$deorderdeletelog")
+public class DeOrderDeleteLog implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$deorderdeletelog_gen")
+	@SequenceGenerator(name = "purc$deorderdeletelog_gen", sequenceName = "purc$deorderdeletelog_seq", allocationSize = 1)
+	@Column(name = "de_id")
+	private Long id;
+	
+	/**
+	 * 代采企业uu号
+	 */
+	@Column(name = "de_deputyuu")
+	private Long deputyuu;
+
+	/**
+	 * 订单编号
+	 */
+	@Column(name = "de_code")
+	private String code;
+
+	/**
+	 * 当前企业uu
+	 */
+	@Column(name = "de_enuu")
+	private Long enuu;
+
+	/**
+	 * 操作人uu
+	 */
+	@Column(name = "de_useruu")
+	private Long useruu;
+
+	/**
+	 * 操作日期
+	 */
+	@Column(name = "de_date")
+	private Date date;
+
+	/**
+	 * 下载状态<br>
+	 * 202 待下载<br>
+	 * 203 已下载
+	 */
+	@Column(name = "de_status")
+	private Integer status;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getDeputyuu() {
+		return deputyuu;
+	}
+
+	public void setDeputyuu(Long deputyuu) {
+		this.deputyuu = deputyuu;
+	}
+
+	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 Long getUseruu() {
+		return useruu;
+	}
+
+	public void setUseruu(Long useruu) {
+		this.useruu = useruu;
+	}
+
+	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;
+	}
+
+}

+ 90 - 19
src/main/java/com/uas/platform/b2b/model/Enterprise.java

@@ -2,29 +2,16 @@
  */
 package com.uas.platform.b2b.model;
 
-import java.io.Serializable;
-import java.util.Date;
-
-import javax.persistence.Cacheable;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.NotNull;
-
+import com.alibaba.fastjson.annotation.JSONField;
+import com.uas.platform.core.model.Constant;
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
 
-import com.alibaba.fastjson.annotation.JSONField;
-import com.uas.platform.core.model.Constant;
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 企业信息
@@ -139,6 +126,12 @@ public class Enterprise implements Serializable {
 	@Column(name = "en_businesscode")
 	private String enBussinessCode;
 
+	/**
+	 * 营业执照号服务器路径,账户中心同步时同步过来
+	 */
+	@Column(name = "en_businesscodeimg")
+	private String businesscodeimg;
+
 	/**
 	 * 营业执照图片路径id
 	 */
@@ -252,6 +245,37 @@ public class Enterprise implements Serializable {
 	@Column(name = "en_prodpurc")
 	private Short prodpurc;
 
+	/**
+	 * 行业
+	 */
+	@Column(name = "en_profession")
+	private String profession;
+
+	/**
+	 * 主营业务
+	 */
+	@Column(name = "en_tags")
+	private String tags;
+
+	/**
+	 * 联系人
+	 */
+	@Column(name = "en_contactman")
+	private String contactMan;
+
+	/**
+	 * 联系人电话
+	 */
+	@Column(name = "en_contacttel")
+	private String contactTel;
+
+	/**
+	 * 联系人邮箱
+	 */
+	@Column(name = "en_contactemail")
+	private String contactEmail;
+
+
 	public String getEnManagement() {
 		return enManagement;
 	}
@@ -679,4 +703,51 @@ public class Enterprise implements Serializable {
 		this.prodpurc = prodpurc;
 	}
 
+	public String getBusinesscodeimg() {
+		return businesscodeimg;
+	}
+
+	public void setBusinesscodeimg(String businesscodeimg) {
+		this.businesscodeimg = businesscodeimg;
+	}
+
+	public String getProfession() {
+		return profession;
+	}
+
+	public void setProfession(String profession) {
+		this.profession = profession;
+	}
+
+	public String getTags() {
+		return tags;
+	}
+
+	public void setTags(String tags) {
+		this.tags = tags;
+	}
+
+	public String getContactMan() {
+		return contactMan;
+	}
+
+	public void setContactMan(String contactMan) {
+		this.contactMan = contactMan;
+	}
+
+	public String getContactTel() {
+		return contactTel;
+	}
+
+	public void setContactTel(String contactTel) {
+		this.contactTel = contactTel;
+	}
+
+	public String getContactEmail() {
+		return contactEmail;
+	}
+
+	public void setContactEmail(String contactEmail) {
+		this.contactEmail = contactEmail;
+	}
 }

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

@@ -1,11 +1,11 @@
 package com.uas.platform.b2b.model;
 
+import org.springframework.util.CollectionUtils;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.springframework.util.CollectionUtils;
-
 
 /**
  * 企业信息明细对外查询接口的模型
@@ -22,6 +22,8 @@ public class EnterpriseDetail {
 	private String management; //经营模式
 	private String products;  //主营产品
 	private String infos;
+	private String businessCode; // 营业执照
+	private String corporation; // 法人代表
 	public String getName() {
 		return name;
 	}
@@ -82,6 +84,8 @@ public class EnterpriseDetail {
 		this.management=enterprise.getEnManagement();
 		this.products=enterprise.getEnProducts();
 		this.infos=enterprise.getEnInfo();
+		this.businessCode = enterprise.getEnBussinessCode();
+		this.corporation = enterprise.getEnCorporation();
 		
 	}
 

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

@@ -605,7 +605,9 @@ public class PurchaseInquiryItem {
 							&& (this.inquiry.getCheck() == null || this.inquiry.getCheck() != Constant.YES)
 							&& this.agreed == null));
 		}
-		return this.status == Status.NOT_REPLY.value();
+		return this.status == Status.NOT_REPLY.value() || (this.status == Status.REPLIED.value()
+				&& (this.inquiry.getCheck() == null || this.inquiry.getCheck() != Constant.YES)
+				&& this.agreed == null);
 	}
 
     public static List<PurchaseInquiryItem> distinct(List<PurchaseInquiryItem> purcitems) {

+ 482 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderCart.java

@@ -0,0 +1,482 @@
+package com.uas.platform.b2b.model;
+
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.Set;
+
+/**
+ * 平台里面,以供应商的角度来查看采购订单 <br>
+ * 级联采购明细<br>
+ * 已结案采购单
+ * 
+ * @author yingp
+ * 
+ */
+@Table(name = "purc$orders", indexes = { @Index(name = "purc$orders_date", columnList = "pu_date") })
+@Where(clause = "pu_status = 311")
+@Entity
+public class PurchaseOrderCart {
+
+	@Id
+	@Column(name = "pu_id")
+	private Long id;
+
+	/**
+	 * 采购企业UU
+	 */
+	@Column(name = "pu_enuu")
+	private Long enUU;
+
+	/**
+	 * 采购企业
+	 */
+	@OneToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
+	@JoinColumn(name = "pu_enuu", insertable = false, updatable = false)
+	private EnterpriseInfo enterprise;
+
+	/**
+	 * 采购单所属采购员
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "pu_useruu", insertable = false, updatable = false)
+	private UserBaseInfo user;
+
+	/**
+	 * 采购单所属采购员UU
+	 */
+	@Column(name = "pu_useruu")
+	private Long userUU;
+
+	/**
+	 * 采购单号
+	 */
+	@Column(name = "pu_code")
+	private String code;
+
+	/**
+	 * 采购类型
+	 */
+	@Column(name = "pu_type")
+	private String type;
+
+	/**
+	 * 单据归属日期
+	 */
+	@Column(name = "pu_date")
+	private Date date;
+
+	/**
+	 * 录单人
+	 */
+	@Column(name = "pu_recorder")
+	private String recorder;
+
+	/**
+	 * 审核人
+	 */
+	@Column(name = "pu_auditor")
+	private String auditor;
+
+	/**
+	 * 供应商UU
+	 */
+	@Column(name = "pu_venduu")
+	private Long vendUU;
+
+	/**
+	 * 供应商联系人UU
+	 */
+	@Column(name = "pu_venduseruu")
+	private Long vendUserUU;
+
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "pu_shipaddress")
+	private String shipAddress;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "pu_remark")
+	private String remark;
+
+	/**
+	 * 付款币种
+	 */
+	@Column(name = "pu_currency")
+	private String currency;
+
+	/**
+	 * 汇率
+	 */
+	@Column(name = "pu_rate")
+	private Float rate;
+
+	/**
+	 * 付款方式
+	 */
+	@Column(name = "pu_payments")
+	private String payments;
+
+	/**
+	 * 处理状态(已回复、未回复),全部回复后改为已回复
+	 */
+	@Column(name = "pu_status")
+	private Short status;
+
+	/**
+	 * 从平台传到供应商ERP的状态
+	 */
+	@Column(name = "pu_sendstatus")
+	private Short sendStatus;
+
+	/**
+	 * 采购单明细
+	 */
+	@OneToMany(mappedBy = "order", cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+			CascadeType.MERGE }, fetch = FetchType.EAGER)
+	@OrderBy("number")
+	private Set<PurchaseOrderCartItem> orderItems;
+
+	/**
+	 * 1表示该采购单的明细至少有一条结案的情况
+	 */
+	@Column(name = "pu_end")
+	private Short end;
+	
+	/**
+	 * 显示状态(0 已查看 , 1 未查看, 2 置顶)
+	 */
+	@Column(name = "pu_display")
+	private Short display;
+
+	public Short getCustPrint() {
+		return custPrint;
+	}
+
+	public void setCustPrint(Short custPrint) {
+		this.custPrint = custPrint;
+	}
+
+	/**
+	 * 打印次数(供应商)
+	 */
+	@Column(name = "pu_print")
+	private Short print;
+
+	/**
+	 * 打印次数(采购方)
+	 */
+	@Column(name = "pu_custprint")
+	private Short custPrint;
+
+	/**
+	 * 应付供应商名称
+	 */
+	@Column(name = "pu_receivename")
+	private String receiveName;
+
+	/**
+	 * 客户公司名称
+	 */
+	@Column(name = "pu_cop")
+	private String cop;
+
+	/**
+	 * 应付供应商编号
+	 */
+	@Column(name = "pu_receivecode")
+	private String receiveCode;
+	
+	/**
+	 * 供应商名称
+	 */
+	@Transient
+	private String enName;
+
+	@Column(name = "pu_purpose")
+	private String purpose; // 用途,
+
+	@Column(name = "pu_arcustcode")
+	private String arCustCode; // 买家应收客户,
+
+	@Column(name = "pu_shcustcode")
+	private String shCustCode; // 收货客户,
+
+	@Column(name = "pu_refcode")
+	private String refCode; // 销售单号
+
+	@Column(name = "pu_custcode")
+	private String custCode; // 客户编号,
+
+	@Column(name = "pu_custname")
+	private String custName; // 客户名称。
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	public String getArCustCode() {
+		return arCustCode;
+	}
+
+	public void setArCustCode(String arCustCode) {
+		this.arCustCode = arCustCode;
+	}
+
+	public String getShCustCode() {
+		return shCustCode;
+	}
+
+	public void setShCustCode(String shCustCode) {
+		this.shCustCode = shCustCode;
+	}
+
+	public String getRefCode() {
+		return refCode;
+	}
+
+	public void setRefCode(String refCode) {
+		this.refCode = refCode;
+	}
+
+	public String getCustCode() {
+		return custCode;
+	}
+
+	public void setCustCode(String custCode) {
+		this.custCode = custCode;
+	}
+
+	public String getCustName() {
+		return custName;
+	}
+
+	public void setCustName(String custName) {
+		this.custName = custName;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public EnterpriseInfo getEnterprise() {
+		return enterprise;
+	}
+
+	public void setEnterprise(EnterpriseInfo enterprise) {
+		this.enterprise = enterprise;
+	}
+
+	public UserBaseInfo getUser() {
+		return user;
+	}
+
+	public void setUser(UserBaseInfo user) {
+		this.user = user;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public String getRecorder() {
+		return recorder;
+	}
+
+	public void setRecorder(String recorder) {
+		this.recorder = recorder;
+	}
+
+	public String getAuditor() {
+		return auditor;
+	}
+
+	public void setAuditor(String auditor) {
+		this.auditor = auditor;
+	}
+
+	public Long getVendUU() {
+		return vendUU;
+	}
+
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+
+	public Long getVendUserUU() {
+		return vendUserUU;
+	}
+
+	public void setVendUserUU(Long vendUserUU) {
+		this.vendUserUU = vendUserUU;
+	}
+
+	public String getShipAddress() {
+		return shipAddress;
+	}
+
+	public void setShipAddress(String shipAddress) {
+		this.shipAddress = shipAddress;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getCurrency() {
+		return currency;
+	}
+
+	public void setCurrency(String currency) {
+		this.currency = currency;
+	}
+
+	public Float getRate() {
+		return rate;
+	}
+
+	public void setRate(Float rate) {
+		this.rate = rate;
+	}
+
+	public String getPayments() {
+		return payments;
+	}
+
+	public void setPayments(String payments) {
+		this.payments = payments;
+	}
+
+	public Short getStatus() {
+		return status;
+	}
+
+	public void setStatus(Short status) {
+		this.status = status;
+	}
+
+	public Short getSendStatus() {
+		return sendStatus;
+	}
+
+	public void setSendStatus(Short sendStatus) {
+		this.sendStatus = sendStatus;
+	}
+
+	public Set<PurchaseOrderCartItem> getOrderItems() {
+		return orderItems;
+	}
+
+	public void setOrderItems(Set<PurchaseOrderCartItem> orderItems) {
+		this.orderItems = orderItems;
+	}
+
+	public Short getEnd() {
+		return end;
+	}
+
+	public void setEnd(Short end) {
+		this.end = end;
+	}
+
+	public Short getDisplay() {
+		if(this.display == null) this.display = 0;
+		return display;
+	}
+
+	public void setDisplay(Short display) {
+		this.display = display;
+	}
+
+	public Short getPrint() {
+		return print;
+	}
+
+	public void setPrint(Short print) {
+		this.print = print;
+	}
+
+	public String getReceiveName() {
+		return receiveName;
+	}
+
+	public void setReceiveName(String receiveName) {
+		this.receiveName = receiveName;
+	}
+
+	public String getReceiveCode() {
+		return receiveCode;
+	}
+
+	public void setReceiveCode(String receiveCode) {
+		this.receiveCode = receiveCode;
+	}
+
+	public String getEnName() {
+		return enName;
+	}
+
+	public void setEnName(String enName) {
+		this.enName = enName;
+	}
+
+	public String getCop() {
+		return cop;
+	}
+
+	public void setCop(String cop) {
+		this.cop = cop;
+	}
+}

+ 331 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderCartItem.java

@@ -0,0 +1,331 @@
+package com.uas.platform.b2b.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Table(name = "purc$orderitems")
+@Entity
+public class PurchaseOrderCartItem {
+
+	@Id
+	@Column(name = "pd_id")
+	private Long id;
+
+	/**
+	 * 序号
+	 */
+	@Column(name = "pd_number")
+	private Short number;
+
+	/**
+	 * 采购订单
+	 */
+	@ManyToOne(cascade = CascadeType.ALL, optional = true)
+	@JoinColumn(name = "pd_puid", nullable = false)
+	private PurchaseOrderCart order;
+
+	/**
+	 * 产品ID
+	 */
+	@Column(name = "pd_prid")
+	private Long productId;
+
+	/**
+	 * 产品
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "pd_prid", insertable = false, updatable = false)
+	private Product product;
+
+	/**
+	 * 数量
+	 */
+	@Column(name = "pd_qty")
+	private Double qty;
+
+	/**
+	 * 已回复的数量
+	 */
+	@Column(name = "pd_replyqty")
+	private Double replyQty;
+
+	/**
+	 * (最近一次)回复的交期
+	 */
+	@Column(name = "pd_replydelivery")
+	private Date replyDelivery;
+
+	/**
+	 * (最近一次)回复的备注
+	 */
+	@Column(name = "pd_replyremark")
+	private String replyRemark;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "pd_remark")
+	private String remark;
+
+	/**
+	 * 送货工厂
+	 */
+	@Column(name = "pd_factory")
+	private String factory;
+
+	/**
+	 * 供应商规格
+	 */
+	@Column(name = "pd_vendspec")
+	private String vendspec;
+
+	public String getVendspec() {
+		return vendspec;
+	}
+
+	public void setVendspec(String vendspec) {
+		this.vendspec = vendspec;
+	}
+
+	/**
+	 * 含税单价
+	 */
+	@Column(name = "pd_price")
+	private Double price;
+
+	/**
+	 * 税率
+	 */
+	@Column(name = "pd_taxrate")
+	private Float taxrate;
+
+	/**
+	 * 处理状态(已回复、未回复),全部回复后改为已回复
+	 */
+	@Column(name = "pd_status", insertable = false, updatable = false)
+	private Short status;
+
+	/**
+	 * 含税金额
+	 */
+	@Column(name = "pd_amount", insertable = false, updatable = false)
+	private Double amount;
+
+	/**
+	 * 不含税单价
+	 */
+	@Column(name = "pd_notaxprice", insertable = false, updatable = false)
+	private Double noTaxPrice;
+
+	/**
+	 * 不含税金额
+	 */
+	@Column(name = "pd_notaxamount", insertable = false, updatable = false)
+	private Double noTaxAmount;
+
+	/**
+	 * 交货日期
+	 */
+	@Column(name = "pd_delivery")
+	private Date delivery;
+
+	/**
+	 * 客户已验收数量
+	 */
+	@Column(name = "pd_acceptqty")
+	private Double acceptQty;
+
+	/**
+	 * 客户验退数量
+	 */
+	@Column(name = "pd_returnqty")
+	private Double returnQty;
+
+	/**
+	 * 关键词查询相关
+	 */
+	@Transient
+	private Boolean key;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Short getNumber() {
+		return number;
+	}
+
+	public void setNumber(Short number) {
+		this.number = number;
+	}
+
+	public Long getProductId() {
+		return productId;
+	}
+
+	public void setProductId(Long productId) {
+		this.productId = productId;
+	}
+
+	public Product getProduct() {
+		return product;
+	}
+
+	public void setProduct(Product product) {
+		this.product = product;
+	}
+
+	public Double getQty() {
+		return qty;
+	}
+
+	public void setQty(Double qty) {
+		this.qty = qty;
+	}
+
+	public Double getReplyQty() {
+		return replyQty;
+	}
+
+	public void setReplyQty(Double replyQty) {
+		this.replyQty = replyQty;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Double getPrice() {
+		return price;
+	}
+
+	public void setPrice(Double price) {
+		this.price = price;
+	}
+
+	public Float getTaxrate() {
+		return taxrate;
+	}
+
+	public void setTaxrate(Float taxrate) {
+		this.taxrate = taxrate;
+	}
+
+	public Double getAmount() {
+		return amount;
+	}
+
+	public void setAmount(Double amount) {
+		this.amount = amount;
+	}
+
+	public Double getNoTaxPrice() {
+		return noTaxPrice;
+	}
+
+	public void setNoTaxPrice(Double noTaxPrice) {
+		this.noTaxPrice = noTaxPrice;
+	}
+
+	public Double getNoTaxAmount() {
+		return noTaxAmount;
+	}
+
+	public void setNoTaxAmount(Double noTaxAmount) {
+		this.noTaxAmount = noTaxAmount;
+	}
+
+	public Date getDelivery() {
+		return delivery;
+	}
+
+	public void setDelivery(Date delivery) {
+		this.delivery = delivery;
+	}
+
+	public Date getReplyDelivery() {
+		return replyDelivery;
+	}
+
+	public void setReplyDelivery(Date replyDelivery) {
+		this.replyDelivery = replyDelivery;
+	}
+
+	public String getReplyRemark() {
+		return replyRemark;
+	}
+
+	public void setReplyRemark(String replyRemark) {
+		this.replyRemark = replyRemark;
+	}
+
+	public Short getStatus() {
+		return status;
+	}
+
+	public void setStatus(Short status) {
+		this.status = status;
+	}
+
+	@JsonIgnore
+	@JSONField(serialize = false)
+	public PurchaseOrderCart getOrder() {
+		return order;
+	}
+
+	public void setOrder(PurchaseOrderCart order) {
+		this.order = order;
+	}
+
+	public Double getAcceptQty() {
+		return acceptQty;
+	}
+
+	public void setAcceptQty(Double acceptQty) {
+		this.acceptQty = acceptQty;
+	}
+
+	public Double getReturnQty() {
+		return returnQty;
+	}
+
+	public void setReturnQty(Double returnQty) {
+		this.returnQty = returnQty;
+	}
+
+	public Boolean getKey() {
+		return key;
+	}
+
+	public void setKey(Boolean key) {
+		this.key = key;
+	}
+
+	public String getFactory() {
+		return factory;
+	}
+
+	public void setFactory(String factory) {
+		this.factory = factory;
+	}
+
+	public double getBalance() {
+		double qtyNum, returnQtyNum, acceptQtyNum;
+		qtyNum = qty == null ? 0 : qty;
+		returnQtyNum = returnQty == null ? 0 : returnQty;
+		acceptQtyNum = acceptQty == null ? 0 : acceptQty;
+		return qtyNum + returnQtyNum - acceptQtyNum;
+	}
+}

+ 25 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseTender.java

@@ -189,6 +189,15 @@ public class PurchaseTender implements Serializable {
     @Column(name = "pt_auditstatus")
     private Short auditStatus;
 
+    /**
+     * 是否全包 (1为全包,0为部分供料)
+     */
+    @Column(name = "pt_ifall")
+    private Short ifAll;
+
+    @Transient
+    private Short bidEnNum;
+
     public Long getId() {
         return id;
     }
@@ -404,6 +413,22 @@ public class PurchaseTender implements Serializable {
     public void setAuditStatus(Short auditStatus) {
         this.auditStatus = auditStatus;
     }
+
+    public Short getBidEnNum() {
+        return bidEnNum;
+    }
+
+    public void setBidEnNum(Short bidEnNum) {
+        this.bidEnNum = bidEnNum;
+    }
+
+    public Short getIfAll() {
+        return ifAll;
+    }
+
+    public void setIfAll(Short ifAll) {
+        this.ifAll = ifAll;
+    }
 }
 
 

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

@@ -1,11 +1,11 @@
 package com.uas.platform.b2b.model;
 
+import org.springframework.util.CollectionUtils;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.springframework.util.CollectionUtils;
-
 /**
  * 企业信息对外查询接口的模型
  * 
@@ -18,6 +18,8 @@ public class QueriableMember {
 	private String shortName;
 	private Long uu;
 	private String address;
+	private String businessCode; // 营业执照
+	private String corporation; // 法人代表
 
 	public String getName() {
 		return name;
@@ -51,15 +53,29 @@ public class QueriableMember {
 		this.address = address;
 	}
 
-	public QueriableMember() {
+    public String getBusinessCode() {
+        return businessCode;
+    }
 
-	}
+    public void setBusinessCode(String businessCode) {
+        this.businessCode = businessCode;
+    }
+
+    public String getCorporation() {
+        return corporation;
+    }
+
+    public void setCorporation(String corporation) {
+        this.corporation = corporation;
+    }
 
-	public QueriableMember(Enterprise enterprise) {
+    public QueriableMember(Enterprise enterprise) {
 		this.name = enterprise.getEnName();
 		this.shortName = enterprise.getEnShortname();
 		this.uu = enterprise.getUu();
 		this.address = enterprise.getEnAddress();
+		this.corporation = enterprise.getEnCorporation();
+		this.businessCode = enterprise.getEnBussinessCode();
 	}
 
 	public static List<EnterpriseDetail> getMembers(Collection<Enterprise> enterprises) {

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

@@ -24,17 +24,17 @@ import org.hibernate.annotations.Where;
  * 平台里面,供应商发起的主动报价单<br>
  * (以供应商的视角)
  *  存在根据截止日期判断是否过期,所以采用视图
- * 
+ *
  * @author yingp
- * 
+ *
  */
 @Table(name = "v$sale$quotation")
-@Where(clause = "(qu_status = 101 or qu_status = 311) and qu_agreed is null")
+@Where(clause = "(qu_status = 101 or qu_status = 311) and qu_agreed is null and qu_overdue = 0")
 @Entity
 public class SaleQuotationDone implements Serializable {
 
 	/**
-	 * 
+	 *
 	 */
 	private static final long serialVersionUID = 1L;
 

+ 81 - 25
src/main/java/com/uas/platform/b2b/model/SaleTender.java

@@ -1,29 +1,14 @@
 package com.uas.platform.b2b.model;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.uas.platform.b2b.temporary.model.TenderContactInfo;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Set;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import com.uas.platform.b2b.temporary.model.TenderContactInfo;
-
 /**
  * 投标单主表 (uas招标需要投标状态根据公布结果时间判断,用视图处理,
  *            投标单保存时,报错此处不允许虚拟列,所以这个实体还是用投标单表)
@@ -88,7 +73,7 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
      */
     @OneToOne
     @JoinColumn(name = "st_useruu", insertable = false, updatable = false)
-    private User userInfo;
+    private UserBaseInfo userInfo;
 
     /**
      * 招标发起人uu
@@ -109,6 +94,12 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
     @Column(name = "st_usertel")
     private String userTel;
 
+    /**
+     * 供应商联系人邮箱
+     */
+    @Column(name = "st_useremail")
+    private String userEmail;
+
     /**
      * 招标企业uu
      */
@@ -241,6 +232,30 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
     @Column(name = "st_result", insertable = false, updatable = false)
     private Short result;
 
+    /**
+     * 是否全包 (1为全包,0为部分供料)
+     */
+    @Column(name = "st_ifall")
+    private Short ifAll;
+
+    /**
+     * 总项目周期(天 全包模式用)
+     */
+    @Column(name = "st_cycle")
+    private Long cycle;
+
+    /**
+     * 金额总计(全包模式用)
+     */
+    @Column(name = "st_totalmoney")
+    private Double totalMoney;
+
+    /**
+     * 税率(% 全包模式用)
+     */
+    @Column(name = "st_taxrate")
+    private Integer taxrate;
+
     public SaleTender(PurchaseTender tender) {
         this.setCode(tender.getCode());
         this.setCertificate(tender.getCertificate());
@@ -261,6 +276,7 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
         this.setEnUU(tender.getEnUU());
         this.setRecorderuu(tender.getUseruu());
         this.setPtId(tender.getId());
+        this.setIfAll(tender.getIfAll());
     }
 
     public SaleTender(PurchaseTender tender, TenderContactInfo contactInfo) {
@@ -284,8 +300,10 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
         this.setUserTel(contactInfo.getContactTel());
         this.setUser(contactInfo.getContact());
         this.setUseruu(contactInfo.getContactUU());
+        this.setUserEmail(contactInfo.getContactEmail());
         this.setRecorderuu(tender.getUseruu());
         this.setPtId(tender.getId());
+        this.setIfAll(tender.getIfAll());
     }
 
     public SaleTender() {
@@ -388,13 +406,11 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
         this.useruu = useruu;
     }
 
-    @JsonIgnore
-    @JSONField(serialize = false)
-    public User getUserInfo() {
+    public UserBaseInfo getUserInfo() {
         return userInfo;
     }
 
-    public void setUserInfo(User userInfo) {
+    public void setUserInfo(UserBaseInfo userInfo) {
         this.userInfo = userInfo;
     }
 
@@ -556,4 +572,44 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
     public void setResult(Short result) {
         this.result = result;
     }
+
+    public String getUserEmail() {
+        return userEmail;
+    }
+
+    public void setUserEmail(String userEmail) {
+        this.userEmail = userEmail;
+    }
+
+    public Short getIfAll() {
+        return ifAll;
+    }
+
+    public void setIfAll(Short ifAll) {
+        this.ifAll = ifAll;
+    }
+
+    public Long getCycle() {
+        return cycle;
+    }
+
+    public void setCycle(Long cycle) {
+        this.cycle = cycle;
+    }
+
+    public Double getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(Double totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+    public Integer getTaxrate() {
+        return taxrate;
+    }
+
+    public void setTaxrate(Integer taxrate) {
+        this.taxrate = taxrate;
+    }
 }

+ 14 - 1
src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java

@@ -16,6 +16,7 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.model.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -536,7 +537,16 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	@Override
 	public SPage<PurchaseNotice> searchPurchaseNoticeIds(String keyword, PageParams pageParams) {
 		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$NOTICE, pageParams);
-		List<PurchaseNotice> content = purchaseNoticeDao.findAll(idsPage.getContent());
+		List<PurchaseNotice> content = new ArrayList<PurchaseNotice>();
+		if(idsPage.getContent().size()<=1000){
+			content = purchaseNoticeDao.findAll(idsPage.getContent());
+		}else{
+			List<List<Long>> subAry = SplitArray.splitAry(idsPage.getContent(), SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> obj : subAry) {
+				List<PurchaseNotice> notices = purchaseNoticeDao.findAll(obj);
+				content.addAll(notices);
+			}
+		}
 		sortByProperty(content, PurchaseNotice.class, "id", idsPage.getContent());
 		return toSPage(idsPage, content);
 	}
@@ -860,6 +870,9 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 		List<PurchaseTender> tenderList = new ArrayList<>();
 		for (PurchaseTender tender : content) {
 			tender.setPurchaseTenderProds(prods); // erp查看列表只返回主表信息
+			// 已投标企业统计
+			Integer saleTenders = saleTenderDao.findNumOfBIdEn(tender.getEnUU(), tender.getCode(), "待投标");
+			tender.setBidEnNum(Short.valueOf(String.valueOf(saleTenders)));
 			tenderList.add(tender);
 		}
 		sortByProperty(tenderList, PurchaseTender.class, "id", idsPage.getContent());

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

@@ -172,6 +172,16 @@ public interface ProductService {
 	 */
 	public SPage<Product> findProductInfoByPageInfo(PageInfo pageInfo, String keyword);
 
+	/**
+	 * 分页查找客户物料(全部未禁用)
+	 *
+	 * @param pageInfo
+	 * @param keyword
+	 *            查找关键词
+	 * @return
+	 */
+	public SPage<Product> findB2bEnabledProductInfoByPageInfo(PageInfo pageInfo, String keyword);
+
 	List<Long> getUnreadIds(String category);
 
 	void setReadByOrder(String category, Long[] sourceId);

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

@@ -245,7 +245,7 @@ public interface PurchaseInquiryService {
 	 * @return
 	 */
     List<PurchaseInquiryItem> findNotUploadInquiryReplyInvalid();
-    ModelMap addAttaches(Long itemId, FileUpload uploadItem) throws Exception;
+    ModelMap addAttaches(PurchaseInquiryItem item, FileUpload uploadItem) throws Exception;
 
 	/**
 	 * 统计单据各个状态为阅读的数量

+ 9 - 5
src/main/java/com/uas/platform/b2b/service/PurchaseTenderService.java

@@ -1,6 +1,10 @@
 package com.uas.platform.b2b.service;
 
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.erp.model.SaleTenderErp;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.PurchaseTender;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.temporary.model.TenderContactInfo;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
@@ -35,11 +39,9 @@ public interface PurchaseTenderService {
      * 投标
      *
      *
-     * @param tenderItems
-     * @param enBaseInfo
      * @return
      */
-    void reply(List<SaleTenderItem> tenderItems, EnterpriseBaseInfo enBaseInfo, List<Attach> attaches);
+    void reply(SaleTenderErp saleTender);
 
 //    /**
 //     * 根据id获取投标单
@@ -204,5 +206,7 @@ public interface PurchaseTenderService {
 
     SPage<PurchaseTender> findAllBySaleTenderPageInfo(PageInfo pageInfo, SearchFilter filter);
 
-    SaleTender findMySaleTenderDetailByTenderId(Long tenderId);
+    ModelMap findMySaleTenderDetailByTenderId(Long tenderId);
+
+    ModelMap findVendorSaleTenderDetailByTenderId(Long vendUU, Long tenderId);
 }

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

@@ -1,8 +1,9 @@
 package com.uas.platform.b2b.service;
 
-import java.util.List;
-
 import com.uas.platform.b2b.model.Role;
+import org.springframework.ui.ModelMap;
+
+import java.util.List;
 
 public interface RoleService {
 
@@ -50,4 +51,17 @@ public interface RoleService {
 	 */
 	public void delete(long id);
 
+	/**
+	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理
+	 *
+	 * @return
+	 */
+	public ModelMap getCurrentRoles();
+
+	/**
+	 * 判断是否是当前企业的管理员
+	 *
+	 * @return
+	 */
+	ModelMap isManager();
 }

+ 25 - 22
src/main/java/com/uas/platform/b2b/service/SaleQuotationService.java

@@ -1,33 +1,29 @@
 package com.uas.platform.b2b.service;
 
-import java.util.List;
-
 import com.uas.platform.b2b.erp.model.Inquiry;
-import com.uas.platform.b2b.model.SaleQuotation;
-import com.uas.platform.b2b.model.SaleQuotationAll;
-import com.uas.platform.b2b.model.SaleQuotationDone;
-import com.uas.platform.b2b.model.SaleQuotationItem;
-import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
 
+import java.util.List;
+
 public interface SaleQuotationService {
 
 	/**
 	 * 批量保存主动报价
-	 * 
+	 *
 	 * @param items
 	 *            主动报价明细
 	 * @return
 	 */
 	public void save(List<SaleQuotationItem> items);
-	
+
 	/**
 	 * 保存主动报价 - 用于在平台上录入
 	 * @param item
 	 */
 	public SaleQuotationItem save(SaleQuotationItem item);
-	
+
 	/**
 	 * 获取明细
 	 * @param id
@@ -37,49 +33,49 @@ public interface SaleQuotationService {
 
 	/**
 	 * 未传到买家ERP的主动报价
-	 * 
+	 *
 	 * @return
 	 */
 	public List<SaleQuotation> findNotUploadQuotation();
 
 	/**
 	 * 未回传到卖家ERP的主动报价
-	 * 
+	 *
 	 * @return
 	 */
 	public List<SaleQuotation> findNotBackQuotation();
 
 	/**
 	 * 主动报价成功传到买家之后
-	 * 
+	 *
 	 * @param idArray
 	 */
 	public void onQuotationUploadSuccess(String[] idArray);
 
 	/**
 	 * 主动报价成功回传到卖家之后
-	 * 
+	 *
 	 * @param idArray
 	 */
 	public void onQuotationBackSuccess(String[] idArray);
 
 	/**
 	 * 主动报价信息(不)采纳之后,写到平台
-	 * 
+	 *
 	 * @param quotationItems
 	 */
 	public void onReplyDecide(List<SaleQuotationItem> quotationItems);
 
 	/**
 	 * 查找所有待上传到卖家ERP的主动报价的采纳结果
-	 * 
+	 *
 	 * @return
 	 */
 	List<SaleQuotationItem> findNotUploadQuotationDecide();
 
 	/**
 	 * 平台的主动报价的采纳结果传到供应商ERP之后,修改平台里面的采纳结果上传状态
-	 * 
+	 *
 	 * @param idArray
 	 */
 	public void onQuotationDecideDownSuccess(String[] idArray);
@@ -94,19 +90,19 @@ public interface SaleQuotationService {
 
 	/**
 	 * 查询待回复的询价单
-	 * 
+	 *
 	 * @return
 	 */
 	public Long getInquiryTodo();
 
 	/**
 	 * 删除
-	 * 
+	 *
 	 * @param id
 	 */
 	public void deleteById(Long id);
 
-    void onReplyInvalid(List<Inquiry> inquiries);
+	void onReplyInvalid(List<Inquiry> inquiries);
 
 	List<SaleQuotation> findNotUploadQuotationReplyInvalid();
 
@@ -116,17 +112,24 @@ public interface SaleQuotationService {
 
 	/**
 	 * erp主动报价单提交后更新平台状态,给用户提示
-	 * 
+	 *
 	 * @param ids
 	 */
 	public void check(Long[] ids);
 
 	/**
 	 * 重新处理已提交的单据,将待审批的归纳到已提交里面
-	 * 
+	 *
 	 * @param pageInfo
 	 * @param filter
 	 * @return
 	 */
 	public SPage<SaleQuotationDone> findDoneByPageInfo(PageInfo pageInfo, SearchFilter filter);
+
+	/**
+	 * erp主动报价反提交单据状态更新到平台,给用户提示
+	 *
+	 * @param ids
+	 */
+	public void recheck(Long[] ids);
 }

+ 29 - 29
src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java

@@ -3,33 +3,8 @@ package com.uas.platform.b2b.service.impl;
 import com.uas.account.entity.RequsetStatus;
 import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
-import com.uas.platform.b2b.dao.ComponentDao;
-import com.uas.platform.b2b.dao.DistributeDao;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.dao.ProductMatchResultDao;
-import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
-import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
-import com.uas.platform.b2b.dao.RoleDao;
-import com.uas.platform.b2b.dao.UserBaseInfoDao;
-import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.dao.UserOrderDao;
-import com.uas.platform.b2b.dao.VendorDao;
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.model.Component;
-import com.uas.platform.b2b.model.Distribute;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.EnterpriseInfo;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.ProductMatchResult;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
-import com.uas.platform.b2b.model.Role;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.model.UserBaseInfo;
-import com.uas.platform.b2b.model.UserOrders;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.BaseInfoService;
@@ -105,6 +80,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 
 	@Autowired
 	private PurchaseOrderAllDao purchaseOrderAllDao;
+
 	
 	/**
 	 * 批量导入物料资料
@@ -226,6 +202,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 					if (product.getStandard() == null) {
 						product.setStandard(Constant.NO);
 					}
+					product.setErpDate(new Date());
 					productsInfo.add(product);
 					modelMap.put("total", total);
 					modelMap.put("products", productsInfo);
@@ -346,6 +323,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 				prodInfo.setStandard(Constant.NO);
 			}
 		}
+		prodInfo.setErpDate(new Date());
 		prodInfo = productDao.save(prodInfo);
 //		saveUserOrders(prodInfo);
 		map.put("success", "更新成功");
@@ -402,6 +380,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 			}
 			prodInfo.setEnUU(SystemSession.getUser().getEnterprise().getUu());
 			prodInfo.setSourceApp("B2B");
+			prodInfo.setErpDate(new Date());
 			prodInfo = productDao.save(prodInfo);
 //			saveUserOrders(prodInfo);
 			map.put("id", prodInfo.getId());
@@ -521,6 +500,13 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 		if (!CollectionUtils.isEmpty(details.getContent())) {
 			for (com.uas.account.entity.UserSpaceDetail detail : details.getContent()) {
 				UserSpaceDetail spacetDetail = new UserSpaceDetail();
+				if (null != detail.getBusinessCode() && !"None".equals(detail.getBusinessCode())) {
+					List<Enterprise> enterprises = enterpriseDao.findByEnBussinessCodeAndEnName(detail.getBusinessCode(), detail.getName());
+					// 根据营业执照和企业名找到唯一企业时,才设置
+					if (enterprises.size() == 1) {
+						spacetDetail.setUu(enterprises.get(0).getUu());
+					}
+				}
 				spacetDetail.setAddress(detail.getAddress());
 				spacetDetail.setAdminEmail(detail.getAdminEmail());
 				spacetDetail.setAdminName(detail.getAdminName());
@@ -547,6 +533,11 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 				spacetDetail.setTel(detail.getTel());
 				spacetDetail.setType(detail.getType());
 				spacetDetail.setUrl(detail.getUrl());
+				spacetDetail.setContactEmail(detail.getContactEmail());
+				spacetDetail.setContactTel(detail.getContactTel());
+				spacetDetail.setContactMan(detail.getContactMan());
+				spacetDetail.setProfession(detail.getProfession());
+				spacetDetail.setTags(detail.getTags());
 				RequsetStatus request = AccountUtils.getStatusByCustUidAndVendUid(spacetDetail.getBusinessCode(),
 						SystemSession.getUser().getEnterprise().getEnBussinessCode());
 				if (request != null) {
@@ -609,7 +600,6 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 		order.setRemark(neworder.getRemark());
 		order.setVenduser(neworder.getVenduser());
 		order.setVendusertel(neworder.getVendusertel());
-		order.setRate(neworder.getRate());
 		order = purchaseOrderAllDao.save(order);
         order.setDisplay(Constant.YES);
         saveUserOrders(order);
@@ -630,7 +620,12 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 					orderDetail.setNumber(i);
 					orderDetail.setPuid(order.getId());
 					orderDetail.setPrice(Double.valueOf(orderitem.getPrice()));
-					orderDetail.setTaxrate(orderitem.getTaxrate());
+					// 这里根据币别设置税率信息,非RMB全部设置0
+					if(!order.getCurrency().equals("RMB")) {
+						orderDetail.setTaxrate((float) 0);
+					} else {
+						orderDetail.setTaxrate(orderitem.getTaxrate());
+					}
 				} else {
 					orderDetail = purchaseOrderAllItemDao.findOne(orderitem.getId());
 					orderDetail.setRemark(orderitem.getRemark());
@@ -736,6 +731,11 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 	public SPage<ProdInfo> getAllSearchProd(PageParams params, String keyword) throws Exception {
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
 		pageParams.getFilters().put("pr_issale", Constant.YES);
+
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("pr_b2benabled", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+
 		List<Sort> sortList = new ArrayList<>();
 		sortList.add(new Sort("pr_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);

+ 29 - 37
src/main/java/com/uas/platform/b2b/service/impl/CartServiceImpl.java

@@ -1,25 +1,12 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.util.List;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.transaction.Transactional;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.ui.ModelMap;
-
 import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
+import com.uas.platform.b2b.dao.PurchaseOrderCartDao;
 import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurchaseOrderCart;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.service.CartService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -30,6 +17,19 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
 import com.uas.search.b2b.model.SPage;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import javax.transaction.Transactional;
+import java.util.List;
 
 @Service
 @Transactional
@@ -46,6 +46,9 @@ public class CartServiceImpl implements CartService {
 	@Autowired
 	private PurchaseOrderAllDao purchaseOrderAllDao;
 
+	@Autowired
+	private PurchaseOrderCartDao cartDao;
+
 	@Override
 	public SPage<PurchaseOrderAll> getCartList(PageParams params, String keyword) {
 		SPage<PurchaseOrderAll> orders = new SPage<PurchaseOrderAll>();
@@ -87,18 +90,13 @@ public class CartServiceImpl implements CartService {
 	@Override
 	public ModelMap deleteCart(Long id) {
 		ModelMap map = new ModelMap();
-		PurchaseOrderAll purcOrder = purchaseOrderAllDao.findOne(id);
-		if (purcOrder != null && !CollectionUtils.isEmpty(purcOrder.getOrderItems())) {
-			for (PurchaseOrderAllItem detail : purcOrder.getOrderItems()) {
-				purchaseOrderAllItemDao.delete(detail.getId());
-			}
-			purchaseOrderAllDao.delete(id);
-		} else if (purcOrder != null && CollectionUtils.isEmpty(purcOrder.getOrderItems())) {
-			purchaseOrderAllDao.delete(id);
-		} else {
+		// 采用可以级联删除的dao方法,更加快速
+		try {
+			cartDao.delete(id);
+			map.put("success", "删除成功");
+		} catch (Exception e) {
 			map.put("error", "该单据不存在,可能已被删除");
 		}
-		map.put("success", "删除成功");
 		return map;
 	}
 
@@ -118,20 +116,14 @@ public class CartServiceImpl implements CartService {
 	@Override
 	public ModelMap deleteCarts() {
 		ModelMap map = new ModelMap();
-		List<PurchaseOrderAll> orders = purchaseOrderAllDao
-				.findByEnUUAndStatus(SystemSession.getUser().getEnterprise().getUu(), (short) Status.UNAUDIT.value());
+		List<PurchaseOrderCart> orders = cartDao.findByEnUUAndStatus(SystemSession.getUser().getEnterprise().getUu(), (short) Status.UNAUDIT.value());
 		if (!CollectionUtils.isEmpty(orders)) {
-			for (PurchaseOrderAll order : orders) {
-				if (!CollectionUtils.isEmpty(order.getOrderItems())) {
-					for (PurchaseOrderAllItem detail : order.getOrderItems()) {
-						purchaseOrderAllItemDao.delete(detail.getId());
-					}
-				}
+			try {
+				cartDao.delete(orders);
+				map.put("success", "购物车已清空");
+			} catch (Exception e) {
+				map.put("error", "购物车删除失败");
 			}
-			purchaseOrderAllDao.delete(orders);
-			map.put("success", "购物车已清空");
-		} else {
-			map.put("error", "购物车删除失败");
 		}
 		return map;
 	}

+ 25 - 0
src/main/java/com/uas/platform/b2b/service/impl/ProductServiceImpl.java

@@ -427,6 +427,18 @@ public class ProductServiceImpl implements ProductService {
 		return prods;
 	}
 
+	@Override
+	public SPage<Product> findB2bEnabledProductInfoByPageInfo(PageInfo pageInfo, String keyword) {
+		Page<Product> products = findAllB2bEnabledProudctByPageInfo(pageInfo, keyword);
+		SPage<Product> prods = new SPage<Product>();
+		prods.setContent(products.getContent());
+		prods.setPage(products.getNumber());
+		prods.setSize(products.getSize());
+		prods.setTotalElement(products.getTotalElements());
+		prods.setTotalPage(products.getTotalPages());
+		return prods;
+	}
+
 	private Page<Product> findAllProudctByPageInfo(final PageInfo pageInfo, final String keyword) {
 		return productDao.findAll(new Specification<Product>() {
 
@@ -438,6 +450,19 @@ public class ProductServiceImpl implements ProductService {
 		}, pageInfo);
 	}
 
+	private Page<Product> findAllB2bEnabledProudctByPageInfo(final PageInfo pageInfo, final String keyword) {
+		return productDao.findAll(new Specification<Product>() {
+
+			public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+				pageInfo.expression(
+						PredicateUtils.or(PredicateUtils.isNull("b2benabled"), PredicateUtils.eq("b2benabled", Constant.NO, false)));
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
 	/*
 	 * @Override public ModelMap updateByEn() { ModelMap map = new ModelMap();
 	 * List<Product> products =

+ 27 - 6
src/main/java/com/uas/platform/b2b/service/impl/PurcOrderServiceImpl.java

@@ -12,6 +12,7 @@ import com.uas.platform.b2b.temporary.model.Customers;
 import com.uas.platform.b2b.temporary.model.NewPurcOrder;
 import com.uas.platform.b2b.temporary.model.OrderItems;
 import com.uas.platform.b2b.temporary.model.ProductInfo;
+import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
@@ -201,13 +202,33 @@ public class PurcOrderServiceImpl implements PurcOrderService {
 					if (product.getTitle() != null) {
 						modelMap.put("total", total);
 						modelMap.put("success", total - alters.size());
+						//设置默认单位
+						product.setUnit("PCS");
+						//为了同步商城数据标准,标准字段也赋值
+						product.setPcmpcode(product.getCmpCode());
+						// 新增数据时间
+						product.setErpDate(new Date());
+						product.setStandard(Constant.NO);
+						product.setIsPurchase(Constant.YES);
 						// 如果物料不存在,则进行存储
-						List<Product> prods = productDao
-								.findByEnUUAndTitle(SystemSession.getUser().getEnterprise().getUu(), product.getCode());
-						if (CollectionUtils.isEmpty(prods)) {
-							product = productDao.save(product);
-						} else {
-							product = prods.get(0);
+						if(product.getCode() != null) {
+							List<Product> prods = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(), product.getCode());
+							if (CollectionUtils.isEmpty(prods)) {
+								product = productDao.save(product);
+							} else {
+								product = prods.get(0);
+							}
+						} else {// 物料编码不存在
+							List<Product> prods = productDao
+									.findByEnUUAndTitle(SystemSession.getUser().getEnterprise().getUu(), product.getTitle());
+							if (CollectionUtils.isEmpty(prods)) {
+								//生成随机编码
+								SimpleDateFormat sdf = new SimpleDateFormat("yymmddhhmm_sss");
+								product.setCode("prod" + sdf.format(new Date()));
+								product = productDao.save(product);
+							} else {
+								product = prods.get(0);
+							}
 						}
 						productInfo.setId(product.getId());
 						productInfo.setTitle(product.getTitle());

+ 12 - 12
src/main/java/com/uas/platform/b2b/service/impl/PurcProductServiceImpl.java

@@ -1,10 +1,12 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.service.PurcProductService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Constant;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -14,13 +16,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.service.PurcProductService;
-import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.core.model.Constant;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Service
 public class PurcProductServiceImpl implements PurcProductService {
@@ -271,6 +270,7 @@ public class PurcProductServiceImpl implements PurcProductService {
 					if (product.getCode() != null) {
 						products.add(product);
 					}
+					product.setErpDate(new Date());
 					productsInfo.add(product);
 					modelMap.put("total", total);
 					modelMap.put("products", productsInfo);

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

@@ -1,64 +1,14 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.core.util.ThreadUtils;
-import com.uas.platform.b2b.dao.AttachDao;
-import com.uas.platform.b2b.dao.CommonDao;
-import com.uas.platform.b2b.dao.DistributeDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.dao.PurcInquiryItemDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryItemDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryReplyDao;
-import com.uas.platform.b2b.dao.RoleDao;
-import com.uas.platform.b2b.dao.UserBaseInfoDao;
-import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.dao.UserOrderDao;
-import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
 import com.uas.platform.b2b.erp.model.QuotationDownDetail;
-import com.uas.platform.b2b.event.PurchaseInquiryItemDecideReleaseEvent;
-import com.uas.platform.b2b.event.PurchaseInquiryItemInvalidReleaseEvent;
-import com.uas.platform.b2b.event.PurchaseInquiryItemReplyReleaseEvent;
-import com.uas.platform.b2b.event.PurchaseInquiryItemSaveEvent;
-import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.model.Distribute;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurcInquiryItem;
-import com.uas.platform.b2b.model.PurchaseInquiry;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.PurchaseInquiryReply;
-import com.uas.platform.b2b.model.Role;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.model.UserBaseInfo;
-import com.uas.platform.b2b.model.UserOrders;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.event.*;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.PurchaseInquiryService;
@@ -74,6 +24,21 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
 
 
 @Service
@@ -316,8 +281,7 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	}
 
     @Override
-    public ModelMap addAttaches(Long itemId, FileUpload uploadItem) throws Exception {
-		PurchaseInquiryItem inquiryItem = purchaseInquiryItemDao.findOne(itemId);
+    public ModelMap addAttaches(PurchaseInquiryItem inquiryItem, FileUpload uploadItem) throws Exception {
 		ModelMap map = new ModelMap();
 		if (uploadItem.getFile() == null) {
 			map.put("success", "没有附件");
@@ -328,11 +292,13 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 			throw new Exception("文件太大");
 		}
 		attach = attachDao.save(attach);
-		Set<Attach> attachSet = new HashSet<>();
+		// 避免出现无附件的情况
+		Set<Attach> attachSet = inquiryItem.getAttaches() != null ? inquiryItem.getAttaches() : new HashSet<Attach>();
 		attachSet.add(attach);
 		inquiryItem.setAttaches(attachSet);
-		purchaseInquiryItemDao.save(inquiryItem);
+		inquiryItem = purchaseInquiryItemDao.save(inquiryItem);
 		map.put("success", true);
+		map.put("item",inquiryItem);
 		return map;
     }
 

+ 59 - 20
src/main/java/com/uas/platform/b2b/service/impl/PurchaseTenderServiceImpl.java

@@ -3,6 +3,9 @@ package com.uas.platform.b2b.service.impl;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.model.PurchaseTenderErp;
+import com.uas.platform.b2b.erp.model.SaleTenderErp;
+import com.uas.platform.b2b.erp.model.SaleTenderItemErp;
 import com.uas.platform.b2b.event.PurchaseTenderDecideReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseTenderSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
@@ -32,6 +35,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -85,6 +89,12 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
     @Autowired
     private DistributeDao distributeDao;
 
+    @Autowired
+    private SaleTenderErpDao saleTenderErpDao;
+
+    @Autowired
+    private PurchaseTenderErpDao purchaseTenderErpDao;
+
 
     /**
      *  发布或保存(新录入单据)
@@ -437,6 +447,7 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
                         saleTender.setUseruu(SystemSession.getUser().getUserUU());
                         saleTender.setUser(SystemSession.getUser().getUserName());
                         saleTender.setUserTel(SystemSession.getUser().getUserTel());
+                        saleTender.setUserEmail(SystemSession.getUser().getUserEmail());
                         saleTender.setVendUU(vendUU);
                         saleTenderDao.save(saleTender);
                     }
@@ -658,31 +669,41 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
     /**
      * 投标
      *
-     * @param tenderItems  投标明细
-     * @param enBaseInfo  企业投标信息
      */
     @Override
-    public void reply(List<SaleTenderItem> tenderItems, EnterpriseBaseInfo enBaseInfo, List<Attach> attaches) {
-        enterpriseBaseInfoDao.save(enBaseInfo);
-        SaleTenderItem item = saleTenderItemDao.findOne(tenderItems.get(0).getId());
-        SaleTender saleTender = item.getSaleTender();
-        saleTender.setStatus("已投标");
-        saleTender.setModified(new Date());
-        Set<Attach> attachSet = new HashSet<>();
-        attachSet.addAll(attaches);
-        saleTender.setBidAttaches(attachSet);
-        saleTenderDao.save(saleTender);
-        for (SaleTenderItem tenderItem : tenderItems) {
+    public void reply(SaleTenderErp saleTender) {
+        if (null != saleTender.getEnterpriseBaseInfo()) {
+            enterpriseBaseInfoDao.save(saleTender.getEnterpriseBaseInfo());
+        }
+        Double totalMoney = 0d;
+        for (SaleTenderItemErp tenderItem : saleTender.getSaleTenderItems()) {
             SaleTenderItem saleTenderItem = saleTenderItemDao.findOne(tenderItem.getId());
-            // 需要修改索引主表中的字段来触发索引更新
+            // 需要修改建索引主表中的字段来触发索引更新
             saleTenderItem.getTenderProd().getTender().setModified(new Date());
             saleTenderItem.getTenderProd().getTender().setStatus("待评标");
-            saleTenderItem.setPrice(tenderItem.getPrice());
-            saleTenderItem.setTaxrate(tenderItem.getTaxrate());
-            saleTenderItem.setCycle(tenderItem.getCycle());
-            saleTenderItemDao.save(saleTenderItem);
+            if (null != tenderItem.getPrice()) {
+                saleTenderItem.setPrice(tenderItem.getPrice());
+                saleTenderItem.setTaxrate(tenderItem.getTaxrate());
+                saleTenderItem.setCycle(tenderItem.getCycle());
+                SaleTenderItem temp = saleTenderItemDao.findOne(tenderItem.getId());// 传参不包括产品表,所以需要重新查找一次
+                totalMoney = totalMoney + mul(tenderItem.getPrice(), Double.valueOf(temp.getTenderProd().getQty()));
+                saleTenderItemDao.save(saleTenderItem);
+            }
         }
+        SaleTender saleTender1 = saleTenderDao.findOne(saleTender.getId());
+        saleTender1.setStatus("已投标");
+        saleTender1.setModified(new Date());
+        saleTender1.setBidAttaches(saleTender.getBidAttaches());
+        saleTender1.setTotalMoney(totalMoney);
+        saleTender1.setCycle(saleTender.getCycle());
+        saleTender1.setTaxrate(saleTender.getTaxrate());
+        saleTenderDao.save(saleTender1);
+    }
 
+    private static Double mul(Double v1, Double v2) {
+        BigDecimal b1 = new BigDecimal(v1.toString());
+        BigDecimal b2 = new BigDecimal(v2.toString());
+        return b1.multiply(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
     }
 
 
@@ -841,9 +862,27 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
     }
 
     @Override
-    public SaleTender findMySaleTenderDetailByTenderId(Long tenderId) {
+    public ModelMap findMySaleTenderDetailByTenderId(Long tenderId) {
+        ModelMap map = new ModelMap();
         Long vendUU = SystemSession.getUser().getEnterprise().getUu();
-        return saleTenderDao.findByPtId(tenderId, vendUU);
+        PurchaseTenderErp tender = purchaseTenderErpDao.findOne(tenderId);
+        SaleTenderErp saleTender = saleTenderErpDao.findByPtIdAndVendUU(tenderId, vendUU);
+        map.put("tender", tender);
+        map.put("saleTender", saleTender);
+        return map;
+    }
+
+    @Override
+    public ModelMap findVendorSaleTenderDetailByTenderId(Long vendUU, Long tenderId) {
+        ModelMap map = new ModelMap();
+        PurchaseTenderErp tender = purchaseTenderErpDao.findOne(tenderId);
+        SaleTenderErp saleTender = saleTenderErpDao.findByPtIdAndVendUU(tenderId, vendUU);
+        if (null == saleTender) {
+            saleTender = saleTenderErpDao.findByCodeAndEnUUAndVendUU(tender.getCode(), tender.getEnUU(), vendUU);
+        }
+        map.put("tender", tender);
+        map.put("saleTender", saleTender);
+        return map;
     }
 }
 

+ 11 - 0
src/main/java/com/uas/platform/b2b/service/impl/RoleServiceImpl.java

@@ -11,6 +11,7 @@ import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.Constant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
 import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 
@@ -86,4 +87,14 @@ public class RoleServiceImpl implements RoleService {
 		delete(findById(id));
 	}
 
+	@Override
+	public ModelMap getCurrentRoles() {
+		return new ModelMap("count", roleDao.findByEnuuAndUseruu(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU()));
+	}
+
+	@Override
+	public ModelMap isManager() {
+		return new ModelMap("isManager", roleDao.findByEnuuAndUserUU(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU()) > 0 ? true : false);
+	}
+
 }

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

@@ -13,8 +13,6 @@ import com.uas.sso.common.encrypt.base64.Base64;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
-import sun.misc.BASE64Decoder;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -1201,9 +1199,10 @@ public class SOAPConsoleServiceImpl implements SOAPConsoleService {
         byte[] b = null;
         String result = null;
         if (s != null) {
-            BASE64Decoder decoder = new BASE64Decoder();
+            //BASE64Decoder decoder = new BASE64Decoder();
             try {
-                b = decoder.decodeBuffer(s);
+                //b = decoder.decodeBuffer(s);
+                b = Base64.decode(s);
                 result = new String(b, "GB2312");
             } catch (Exception e) {
                 e.printStackTrace();

+ 39 - 37
src/main/java/com/uas/platform/b2b/service/impl/SaleQuotationServiceImpl.java

@@ -1,36 +1,12 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.dao.CommonDao;
-import com.uas.platform.b2b.dao.PagingReleaseCountDao;
-import com.uas.platform.b2b.dao.SaleQuotationAllDao;
-import com.uas.platform.b2b.dao.SaleQuotationDao;
-import com.uas.platform.b2b.dao.SaleQuotationDoneDao;
-import com.uas.platform.b2b.dao.SaleQuotationItemDao;
+import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.event.SaleQuotationDecideReleaseEvent;
 import com.uas.platform.b2b.event.SaleQuotationInvalidReleaseEvent;
 import com.uas.platform.b2b.event.SaleQuotationSaveEvent;
-import com.uas.platform.b2b.model.SaleQuotation;
-import com.uas.platform.b2b.model.SaleQuotationAll;
-import com.uas.platform.b2b.model.SaleQuotationDone;
-import com.uas.platform.b2b.model.SaleQuotationItem;
-import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.SaleQuotationService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.exception.NotFoundException;
@@ -38,6 +14,19 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.SPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Service
 public class SaleQuotationServiceImpl implements SaleQuotationService {
@@ -47,7 +36,7 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 
 	@Autowired
 	private SaleQuotationDao saleQuotationDao;
-	
+
 	@Autowired
 	private SaleQuotationAllDao saleQuotationAllDao;
 	@Autowired
@@ -87,6 +76,7 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 	@Override
 	public void onReplyDecide(List<SaleQuotationItem> quotationItems) {
 		saleQuotationItemDao.save(quotationItems);
+		saleQuotationDao.save(quotationItems.get(0).getQuotation());
 		ContextUtils.publishEvent(new SaleQuotationDecideReleaseEvent(quotationItems));
 	}
 
@@ -123,7 +113,7 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		saveEvent(list);// 保存触发相应的动作(关键词库、推送)
 		return newItem;
 	}
-	
+
 	/**
 	 * 保存主动报价触发的事件(关键词库、推送)
 	 * @param items
@@ -146,7 +136,7 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 
 	@Override
 	public SPage<SaleQuotationAll> findAllDetailByPageInfo(final PageInfo pageInfo,
-			final String keyword, final SearchFilter filter) {
+														   final String keyword, final SearchFilter filter) {
 		SPage<SaleQuotationAll> quos = new SPage<SaleQuotationAll>();
 		if (filter != null) {
 			if (!CollectionUtils.isEmpty(filter.getDistribute()))
@@ -171,8 +161,8 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 
 	@Override
 	public List<SaleQuotation> findNotBackQuotation() {
-		return saleQuotationDao.findByEnUUAndStatusAndBackStatus(SystemSession.getUser().getEnterprise().getUu(), 
-					(short) Status.SUBMITTED.value(), (short) Status.NOT_UPLOAD.value());
+		return saleQuotationDao.findByEnUUAndStatusAndBackStatus(SystemSession.getUser().getEnterprise().getUu(),
+				(short) Status.SUBMITTED.value(), (short) Status.NOT_UPLOAD.value());
 	}
 
 	@Override
@@ -205,11 +195,11 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		}
 	}
 
-    @Override
-    public void onReplyInvalid(List<Inquiry> inquiries) {
+	@Override
+	public void onReplyInvalid(List<Inquiry> inquiries) {
 		List<SaleQuotation> saveQuotations = new ArrayList<>();
-        for (Inquiry inquiry : inquiries) {
-        	if (inquiry.getB2b_qu_id() != null) {
+		for (Inquiry inquiry : inquiries) {
+			if (inquiry.getB2b_qu_id() != null) {
 				SaleQuotation quotation = saleQuotationDao.findOne(inquiry.getB2b_qu_id());
 				quotation.setStatus((short)Status.DISABLED.value());
 				quotation.setInvalidSendStatus((short) Status.NOT_UPLOAD.value()); // 获取作废信息时,更新SAAS作废上传状态为待上传
@@ -218,7 +208,7 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		}
 		ContextUtils.publishEvent(new SaleQuotationInvalidReleaseEvent(saveQuotations));
 		saleQuotationDao.save(saveQuotations);
-    }
+	}
 
 	@Override
 	public List<SaleQuotation> findNotUploadQuotationReplyInvalid() {
@@ -255,6 +245,17 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		}
 	}
 
+	@Override
+	public void recheck(Long[] ids) {
+		for (Long id : ids) {
+			SaleQuotation quotation = saleQuotationDao.findOne(id);
+			if (quotation != null) {
+				quotation.setStatus((short) Status.INPUTTING.value());
+				saleQuotationDao.save(quotation);
+			}
+		}
+	}
+
 	@Override
 	public SPage<SaleQuotationDone> findDoneByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
 		SPage<SaleQuotationDone> quos = new SPage<SaleQuotationDone>();
@@ -268,7 +269,7 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		}
 		Page<SaleQuotationDone> quotations = saleQuotationDoneDao.findAll(new Specification<SaleQuotationDone>() {
 			public Predicate toPredicate(Root<SaleQuotationDone> root, CriteriaQuery<?> query,
-					CriteriaBuilder builder) {
+										 CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
@@ -279,4 +280,5 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		quos.setTotalPage(quotations.getTotalPages());
 		return quos;
 	}
+
 }

+ 7 - 1
src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

@@ -196,6 +196,12 @@ public class UserServiceImpl implements UserService {
 			newUser.setUserIdcode(user.getUserIdcode());
 			newUser.setEnterprise(SystemSession.getUser().getEnterprise());
 			newUser.setIp(SystemSession.getUser().getIp());
+			//只需要基本信息同步到账户中心
+			try {
+				postToAccountCenter(newUser);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
 			// 修改用户角色,只对用户的当前企业的角色进行修改
 			if (!CollectionUtils.isEmpty(user.getRoles())) {
 				Set<Role> existRoles = newUser.getRoles();
@@ -209,7 +215,7 @@ public class UserServiceImpl implements UserService {
 						}
 					}
 				} else {
-					existRoles = new HashSet<Role>();
+					existRoles = new HashSet<>();
 				}
 				for(Role role : user.getRoles()) {
 					existRoles.add(role);

+ 13 - 0
src/main/java/com/uas/platform/b2b/support/MessageConf.java

@@ -26,6 +26,12 @@ public class MessageConf {
 	@Value("#{message.tplAfterBeAddedtoB2B}")
 	private String tplAfterBeAddedtoB2B;
 
+	/**
+	 * 短信模板id:发布招标单短信通知模版id
+	 */
+	@Value("#{message.msgTenderForB2B}")
+	private String msgTenderForB2B;
+
 	public String getTplInvitationForB2B() {
 		return tplInvitationForB2B;
 	}
@@ -50,4 +56,11 @@ public class MessageConf {
 		this.tplAfterBeAddedtoB2B = tplAfterBeAddedtoB2B;
 	}
 
+	public String getMsgTenderForB2B() {
+		return msgTenderForB2B;
+	}
+
+	public void setMsgTenderForB2B(String msgTenderForB2B) {
+		this.msgTenderForB2B = msgTenderForB2B;
+	}
 }

+ 55 - 0
src/main/java/com/uas/platform/b2b/temporary/model/DecideTender.java

@@ -0,0 +1,55 @@
+package com.uas.platform.b2b.temporary.model;
+
+import java.io.Serializable;
+
+/**
+ * 全包类型评标临时实体
+ * Created by dongbw
+ * 17/08/25 13:42.
+ */
+public class DecideTender implements Serializable{
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 投标单id
+     */
+    private Long saleTenderId;
+
+    /**
+     * 原因
+     */
+    private String reason;
+
+    /**
+     * 定标状态  1 定标  0  不定标
+     */
+    private Short applyStatus;
+
+    public Long getSaleTenderId() {
+        return saleTenderId;
+    }
+
+    public void setSaleTenderId(Long saleTenderId) {
+        this.saleTenderId = saleTenderId;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public Short getApplyStatus() {
+        return applyStatus;
+    }
+
+    public void setApplyStatus(Short applyStatus) {
+        this.applyStatus = applyStatus;
+    }
+}

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

@@ -14,6 +14,8 @@ public class TenderContactInfo {
 
     private Long contactUU;
 
+    private String contactEmail;
+
     public Long getUu() {
         return uu;
     }
@@ -45,4 +47,12 @@ public class TenderContactInfo {
     public void setContactUU(Long contactUU) {
         this.contactUU = contactUU;
     }
+
+    public String getContactEmail() {
+        return contactEmail;
+    }
+
+    public void setContactEmail(String contactEmail) {
+        this.contactEmail = contactEmail;
+    }
 }

+ 54 - 0
src/main/java/com/uas/platform/b2b/temporary/model/UserSpaceDetail.java

@@ -48,6 +48,13 @@ public class UserSpaceDetail implements Serializable {
 	private String area;
 	private String industry;
 	private String domain;
+	private String contactMan;
+	private String contactTel;
+	private String contactEmail;
+	private String profession;
+	private String tags;
+
+	private Long uu;
 
 	@NotEmpty(message = "{us.admin.name.null}")
 	private String adminName;
@@ -457,4 +464,51 @@ public class UserSpaceDetail implements Serializable {
 		this.current = current;
 	}
 
+	public String getProfession() {
+		return profession;
+	}
+
+	public void setProfession(String profession) {
+		this.profession = profession;
+	}
+
+	public String getTags() {
+		return tags;
+	}
+
+	public void setTags(String tags) {
+		this.tags = tags;
+	}
+
+	public String getContactMan() {
+		return contactMan;
+	}
+
+	public void setContactMan(String contactMan) {
+		this.contactMan = contactMan;
+	}
+
+	public String getContactTel() {
+		return contactTel;
+	}
+
+	public void setContactTel(String contactTel) {
+		this.contactTel = contactTel;
+	}
+
+	public String getContactEmail() {
+		return contactEmail;
+	}
+
+	public void setContactEmail(String contactEmail) {
+		this.contactEmail = contactEmail;
+	}
+
+	public Long getUu() {
+		return uu;
+	}
+
+	public void setUu(Long uu) {
+		this.uu = uu;
+	}
 }

+ 1 - 0
src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java

@@ -84,6 +84,7 @@ public class EnterpriseController {
 		if (enterprise != null) {
 			enterprise.setEnName(userSpaceDetail.getName());
 			enterprise.setEnShortname(userSpaceDetail.getShortName());
+			enterprise.setEnAddress(userSpaceDetail.getAddress());
 			try {
 				enterpriseService.save(enterprise);
 				return "success";

+ 12 - 7
src/main/java/com/uas/platform/b2b/v2/service/impl/EnterpriseServiceImpl.java

@@ -1,12 +1,5 @@
 package com.uas.platform.b2b.v2.service.impl;
 
-import java.util.Date;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import com.uas.account.entity.UserSpace;
 import com.uas.account.entity.UserSpaceDetail;
 import com.uas.platform.b2b.dao.EnterpriseDao;
@@ -15,6 +8,12 @@ import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.User;
 import com.uas.platform.b2b.v2.service.EnterpriseService;
 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 java.util.Date;
+import java.util.List;
 
 @Service("v2.EnterpriseService")
 public class EnterpriseServiceImpl implements EnterpriseService {
@@ -35,6 +34,7 @@ public class EnterpriseServiceImpl implements EnterpriseService {
 		}
 
 		enterprise.setEnAddress(detail.getAddress());
+		enterprise.setBusinesscodeimg(detail.getBusinessCodeImage());
 		enterprise.setEnAdminEmail(detail.getAdminEmail());
 		enterprise.setEnAdminName(detail.getAdminName());
 		enterprise.setEnAdminTel(detail.getAdminTel());
@@ -51,6 +51,11 @@ public class EnterpriseServiceImpl implements EnterpriseService {
 		enterprise.setEnType(detail.getType());
 		enterprise.setEnUrl(detail.getUrl());
 		enterprise.setLogUrl(detail.getLogoImage());
+		enterprise.setProfession(detail.getProfession());
+		enterprise.setTags(detail.getTags());
+		enterprise.setContactMan(detail.getContactMan());
+		enterprise.setContactTel(detail.getContactTel());
+		enterprise.setContactEmail(detail.getContactEmail());
 		enterprise = enterpriseDao.save(enterprise);
 
 		if (isNew) {

+ 2 - 1
src/main/resources/dev/message.properties

@@ -1,3 +1,4 @@
 tplInvitationForB2B=e472f874-0579-4ca2-9bb8-2635109dc7f3
 msgInvitationForB2B=73c513f8-7423-49c4-b57c-50a63bd8a0af
-tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
+tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
+msgTenderForB2B=f9e29b6f-4116-4d33-9bde-048aa037f8c6

+ 2 - 1
src/main/resources/prod/message.properties

@@ -1,3 +1,4 @@
 tplInvitationForB2B=e472f874-0579-4ca2-9bb8-2635109dc7f3
 msgInvitationForB2B=73c513f8-7423-49c4-b57c-50a63bd8a0af
-tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
+tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
+msgTenderForB2B=f9e29b6f-4116-4d33-9bde-048aa037f8c6

+ 3 - 3
src/main/resources/test/account.properties

@@ -1,7 +1,7 @@
 ### account center config, 
-account.us.save.url=http://10.10.100.133/api/userspace
-account.user.save.url=http://10.10.100.133/api/user
-account.user.getPartners.url = http://10.10.100.133/api/partners
+account.us.save.url=http://113.105.74.135:8001/api/userspace
+account.user.save.url=http://113.105.74.135:8001/api/user
+account.user.getPartners.url = http://113.105.74.135:8001/api/partners
 account.user.getContactPage.url=http://113.105.74.135:8001/business/groups
 
 ### sso config

+ 2 - 1
src/main/resources/test/message.properties

@@ -1,3 +1,4 @@
 tplInvitationForB2B=e472f874-0579-4ca2-9bb8-2635109dc7f3
 msgInvitationForB2B=73c513f8-7423-49c4-b57c-50a63bd8a0af
-tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
+tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
+msgTenderForB2B=f9e29b6f-4116-4d33-9bde-048aa037f8c6

+ 4 - 0
src/main/webapp/WEB-INF/web.xml

@@ -130,4 +130,8 @@
 		<filter-name>cors</filter-name>
 		<url-pattern>/*</url-pattern>
 	</filter-mapping>
+	<error-page>
+		<error-code>404</error-code>
+		<location>/static/tpl/error/index.html</location>
+	</error-page>
 </web-app>

+ 70 - 0
src/main/webapp/resources/data/profession.json

@@ -0,0 +1,70 @@
+{"IT|通信|电子|互联网":[
+  "互联网/电子商务",
+  "计算机软件",
+  "IT服务(系统/数据/维护)",
+  "电子技术/半导体/集成电路",
+  "计算机硬件",
+  "通信/电信/网络设备",
+  "通信/电信运营、增值服务",
+  "网络游戏"],
+  "金融业":[
+    "基金/证券/期货/投资",
+    "保险",
+    "银行",
+    "信托/担保/拍卖/典当"],
+  "房地产|建筑业":{
+      "房地产/建筑/建材/工程": [
+        "房地产金融服务类",
+        "房地产工程施工类",
+        "房地产工程货物类"
+      ],
+      "家居/室内设计/装饰装潢": "家居/室内设计/装饰装潢",
+      "物业管理/商业中心": "物业管理/商业中心"
+  },
+  "商业服务":[
+    "专业服务/咨询(财会/法律/人力资源等)",
+    "广告/会展/公关",
+    "中介服务",
+    "检验/认证",
+    "外包服务"],
+  "贸易|批发|零售|租赁业":[
+    "快速消费品(食品/饮料/烟酒/日化)",
+    "耐用消费品(服饰/纺织/皮革/家具/家电)",
+    "贸易/进出口",
+    "零售/批发",
+    "租赁服务"],
+  "文体教育|工艺美术":[
+    "教育/培训/院校",
+    "礼品/玩具/工艺美术/收藏品/奢侈品"],
+  "生产|加工|制造":[
+    "汽车/摩托车",
+    "大型设备/机电设备/重工业",
+    "加工制造(原料加工/模具)",
+    "仪器仪表及工业自动化",
+    "印刷/包装/造纸",
+    "办公用品及设备",
+    "医药/生物工程",
+    "医疗设备/器械",
+    "航空/航天研究与制造"],
+  "交通|运输|物流|仓储":[
+    "交通/运输",
+    "物流/仓储"],
+  "服务业":[
+    "医疗/护理/美容/保健/卫生服务",
+    "酒店/餐饮",
+    "旅游/度假"],
+  "文化|传媒|娱乐|体育":[
+    "媒体/出版/影视/文化传播",
+    "娱乐/体育/休闲"],
+  "能源|矿产|环保":[
+    "能源/矿产/采掘/冶炼",
+    "石油/石化/化工",
+    "电气/电力/水利",
+    "环保"],
+  "政府|非盈利机构":[
+    "政府/公共事业/非盈利机构",
+    "学术/科研"],
+  "农|林|牧|渔|其他":[
+    "农/林/牧/渔",
+    "跨领域经营",
+    "其他"]}

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


File diff suppressed because it is too large
+ 380 - 237
src/main/webapp/resources/js/index/app.js


+ 13 - 1
src/main/webapp/resources/js/index/services/Account.js

@@ -39,5 +39,17 @@ define([ 'ngResource' ], function() {
 				method: 'GET'
 			}
 		})
-	}]);
+	}]).factory('CurrentRole', ['$resource', function($resource) {
+        return $resource('account/role', {}, {
+            //当前企业对应的角色是否是销售经理或管理员
+            roles: {
+                url: 'account/role/currentRole',
+                method: 'GET'
+            },
+			isManager: {
+            	url: 'account/role/isManager',
+				mehtod: 'GET'
+			}
+        })
+    }]);
 });

+ 8 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -532,6 +532,14 @@ define([ 'ngResource'], function() {
                     tenderId: 'tenderId'
                 }
             },
+            getVendorSaleTenderDetail: {
+                url: 'tender/getVendorSaleTenderDetail/:vendUU/:tenderId',
+                method: 'GET',
+                params: {
+                	vendUU: 'vendUU',
+                    tenderId: 'tenderId'
+                }
+            },
             addItems: {
                 url: 'tender/addItems/:id',
                 method: 'POST',

+ 13 - 0
src/main/webapp/resources/tpl/error/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>404</title>
+</head>
+<body>
+<script type="text/javascript">
+    //去除掉undefined
+    window.location.href=window.location.href.replace('/undefined', '#/index');
+</script>
+</body>
+</html>

+ 606 - 387
src/main/webapp/resources/tpl/index/approvalFlow/enterprise.html

@@ -3,277 +3,421 @@
 </div>
 <link rel="stylesheet" href="static/css/add.css " />
 <style>
-.com_title {
-	width: 100%;
-	margin: 0px auto;
-	height: 40px;
-	line-height: 40px;
-	font-size: 14px;
-	color: #323232;
-	background: #f5f5f5;
-}
-
-.com_title font {
-	color: #327ebe;
-}
-
-.com_head {
-	width: 100%;
-	height: 40px;
-	line-height: 44px;
-	background: url("static/img/approvalFlow/comm_bg01.png") no-repeat left;
-	background-color: #f5f5f5;
-	background-size: 100% 100%;
-}
-
-.com_head span {
-	margin-left: 20px;
-	color: #000;
-	font-size: 14px;
-}
-
-.com_title01 {
-	height: 50px;
-	line-height: 50x;
-	width: 100%;
-	margin: 0 auto;
-	border-bottom: #5078cb 1px dotted;
-}
-
-.com_title01 span {
-	margin-left: 20px;
-	font-size: 14px;
-	line-height: 50px;
-	color: #555;
-	font-weight: bold;
-}
-
-.com_title01 a {
-	margin-right: 20px;
-	line-height: 50px;
-}
-
-#company .com-text {
-	height: 35px;
-	line-height: 35px;
-}
-#company .com-text .title {
-	font-size: 14px;
-	font-weight: inherit;
-	color: #323232;
-	width: 120px;
-	padding-left: 5px;
-}
-
-#company .com-text .content {
-	font-size: 14px;
-	color: #969595;
-}
-
-#company .logo-load {
-	width: 100px;
-	height: 100px;
-	background: url("static/img/purc/upload.png") no-repeat center;
-	display: inline-block;
-	border: #ccc 1px solid;
-	float: left;
-	margin-left: 0;
-}
-
-#company .logo-load input {
-	width: 100px !important;
-	height: 100px;
-	filter: alpha(opacity = 0);
-	-moz-opacity: 0;
-	opacity: 0;
-}
-
-#company .logo-img {
-	height: 100px;
-}
-
-#company .logo-img .well {
-	float: left;
-	width: 100px;
-	height: 100px;
-	background: #fff;
-}
-
-#company .input-group-addon {
-	display: inline-block;
-	height: 26px;
-	width: 50px;
-	float: left;
-	margin-top: 5px;
-}
-
-#company .content {
-	width: 72%;
-	height: 35px;
-	overflow: hidden;
-	text-overflow: ellipsis;
-}
-
-#company .form-control {
-	border: #bfbfbf 1px solid;
-	margin-top: 5px;
-	font-size: 14px;
-	border-radius: 3px;
-}
-
-#company .col-xs-4 p {
-	color: #959595;
-}
-
-#company .col-xs-4 .title {
-	padding: 0;
-}
-
-#company .row-sm {
-	border-bottom: #e8e8e8 1px solid;
-	padding-bottom: 20px;
-}
-#company .com-list .row-sm:hover{
-	border: #d32526 2px solid;
-}
-.bule {
-	color: #327ebe;
-	font-size: 14px;
-	padding-left: 20px;
-}
-
-.save-btn {
-	width: 100%;
-	height: 40px;
-}
-
-.save-btn .btn01 {
-	border: 1px;
-	width: 94px;
-	height: 36px;
-	line-height: 36px;
-	font-size: 14px;
-	display: inline-block;
-	text-align: center;
-	float: right;
-	background: #327ebe;
-	color: #fff;
-	margin-right: 20px;
-}
-
-.com_title01 a.color01 {
-	color: #d32526;
-}
-
-.com_title01 a.color02 {
-	color: #3a89d1;
-}
-
-.com-list .row {
-	position: relative;
-}
-
-.com-list .edit-icon {
-	display: none;
-}
-.com-list .row:hover .edit-icon{
-	display: inline-block;
-}
-.com-list .edit-icon {
-	position: absolute;
-	top: 10px;
-	right: 0;
-	width: 100px !important;
-}
-
-.com-list .content span {
-	font-size: 14px;
-}
-
-.com-list .edit-icon a {
-	width: 42px;
-	height: 24px;
-	display: inline-block;
-	background: #8bc6f7;
-	font-size: 12px;
-	color: #fff;
-	margin: 0 0 0 3px;
-	float: left;
-	border-radius: 1px;
-	line-height: 24px;
-	text-align: center;
-}
-
-.com-list .row:hover {
-	border: #d32526 1px solid;
-}
-
-.com-list .edit-icon a:hover {
-	background: #3a89d1;
-}
-
-.com_title01 a {
-	color: #3a89d1;
-	font-size: 14px;
-	float: right;
-}
-
-.addrs-open a.open,.company-open a.open {
-	float: right;
-}
-
-.addrs-open a.open i ,.company-open a.open i{
-	margin-left: 5px;
-}
-
-.com_title01 {
-	border-top: none;
-}
-
-.com-list {
-	height: 186px;
-	width: 100%;
-	overflow: hidden;
-}
-.input-group-xs>.input-group-addon{
-	border: #bfbfbf 1px solid;
-}
-.com_title01 a span{
-	font-weight: normal;
-	color: #5078cb;
-	margin-right: 3px;
-}
-.address.active,.company.active{
-	height: auto !important;
-}
+	.com_title {
+		width: 100%;
+		margin: 0px auto;
+		height: 40px;
+		line-height: 40px;
+		font-size: 14px;
+		color: #323232;
+		background: #f5f5f5;
+	}
+
+	.com_title font {
+		color: #327ebe;
+	}
+
+	.com_head {
+		width: 100%;
+		height: 40px;
+		line-height: 44px;
+		background: url("static/img/approvalFlow/comm_bg01.png") no-repeat left;
+		background-color: #f5f5f5;
+		background-size: 100% 100%;
+	}
+
+	.com_head span {
+		margin-left: 20px;
+		color: #000;
+		font-size: 14px;
+	}
+
+	.com_title01 {
+		height: 50px;
+		line-height: 50px;
+		width: 100%;
+		margin: 0 auto;
+		border-bottom: #5078cb 1px dotted;
+	}
+
+	.com_title01 span {
+		margin-left: 20px;
+		font-size: 14px;
+		line-height: 50px;
+		color: #555;
+		font-weight: bold;
+	}
+
+	.com_title01 a {
+		margin-right: 20px;
+		line-height: 50px;
+	}
+
+	#company .com-text {
+		height: 35px;
+		line-height: 35px;
+	}
+	#company .com-text .title {
+		font-size: 14px;
+		font-weight: inherit;
+		color: #323232;
+		width: 120px;
+		padding-left: 5px;
+	}
+
+	#company .com-text .content {
+		font-size: 14px;
+		color: #969595;
+	}
+
+	#company .logo-load {
+		width: 100px;
+		height: 100px;
+		background: url("static/img/purc/upload.png") no-repeat center;
+		display: inline-block;
+		border: #ccc 1px solid;
+		float: left;
+		margin-left: 0;
+	}
+
+	#company .logo-load input {
+		width: 100px !important;
+		height: 100px;
+		filter: alpha(opacity = 0);
+		-moz-opacity: 0;
+		opacity: 0;
+	}
+
+	#company .logo-img {
+		height: 100px;
+	}
+
+	#company .logo-img .well {
+		float: left;
+		width: 100px;
+		height: 100px;
+		background: #fff;
+	}
+
+	#company .input-group-addon {
+		display: inline-block;
+		height: 26px;
+		width: 50px;
+		float: left;
+		margin-top: 5px;
+	}
+
+	#company .content {
+		width: 72%;
+		height: 35px;
+		overflow: hidden;
+		text-overflow: ellipsis;
+	}
+
+	#company .form-control {
+		border: #bfbfbf 1px solid;
+		margin-top: 5px;
+		font-size: 14px;
+		border-radius: 3px;
+	}
+
+	#company .col-xs-4 p {
+		color: #959595;
+	}
+
+	#company .col-xs-4 .title {
+		padding: 0;
+	}
+
+	#company .row-sm {
+		border-bottom: #e8e8e8 1px solid;
+		padding-bottom: 20px;
+	}
+	#company .com-list .row-sm:hover{
+		border: #d32526 2px solid;
+	}
+	.bule {
+		color: #327ebe;
+		font-size: 14px;
+		padding-left: 20px;
+	}
+
+	.save-btn {
+		width: 100%;
+		height: 40px;
+	}
+
+	.save-btn .btn01 {
+		border: 1px;
+		width: 94px;
+		height: 36px;
+		line-height: 36px;
+		font-size: 14px;
+		display: inline-block;
+		text-align: center;
+		float: right;
+		background: #327ebe;
+		color: #fff;
+		margin-right: 20px;
+	}
+
+	.com_title01 a.color01 {
+		color: #d32526;
+	}
+
+	.com_title01 a.color02 {
+		color: #3a89d1;
+	}
+
+	.com-list .row {
+		position: relative;
+	}
+
+	.com-list .edit-icon {
+		display: none;
+	}
+	.com-list .row:hover .edit-icon{
+		display: inline-block;
+	}
+	.com-list .edit-icon {
+		position: absolute;
+		top: 10px;
+		right: 0;
+		width: 100px !important;
+	}
+
+	.com-list .content span {
+		font-size: 14px;
+	}
+
+	.com-list .edit-icon a {
+		width: 42px;
+		height: 24px;
+		display: inline-block;
+		background: #8bc6f7;
+		font-size: 12px;
+		color: #fff;
+		margin: 0 0 0 3px;
+		float: left;
+		border-radius: 1px;
+		line-height: 24px;
+		text-align: center;
+	}
+
+	.com-list .row:hover {
+		border: #d32526 1px solid;
+	}
+
+	.com-list .edit-icon a:hover {
+		background: #3a89d1;
+	}
+
+	.com_title01 a {
+		color: #3a89d1;
+		font-size: 14px;
+		float: right;
+	}
+
+	.addrs-open a.open,.company-open a.open {
+		float: right;
+	}
+
+	.addrs-open a.open i ,.company-open a.open i{
+		margin-left: 5px;
+	}
+
+	.com_title01 {
+		border-top: none;
+	}
+
+	.com-list {
+		height: 186px;
+		width: 100%;
+		overflow: hidden;
+	}
+	.input-group-xs>.input-group-addon{
+		border: #bfbfbf 1px solid;
+	}
+	.com_title01 a span{
+		font-weight: normal;
+		color: #5078cb;
+		margin-right: 3px;
+	}
+	.address.active,.company.active{
+		height: auto !important;
+	}
+	.enterprise-area span{
+		margin-right: 5px;
+		font-size: 12px;
+		padding: 0 5px;
+		display: inline-block;
+		border: #5078cb 1px solid;
+		border-radius: 4px;
+		line-height: 25px;
+		color: #5078cb;
+		position: relative;
+		float: left;
+		margin: 5px;
+	}
+	.enterprise-area span i{
+		position: absolute;
+		top: -5px;
+		right: -7px;
+		margin-left: 3px;
+		font-size: 18px;
+		color: #f00;
+		background: #fff;
+		border-radius: 100%;
+		height: 12px;
+	}
+	.enterprise-area span i:hover{
+		cursor: pointer;
+	}
+	.enterprise-area span:first-child{
+		margin-left: 0;
+	}
+	.enterprise-area .form-control{
+		height: 26px;
+		padding: 0 5px;
+		width: 103px;
+		float: left;
+		margin-right: 5px;
+	}
+	#company .add-tag{
+		padding-left: 124px;
+		position: relative;
+	}
+	#company .add-tag input{
+		width: 318px;
+	}
+	#company .add-tag a{
+		width: 75px;
+		height: 34px;
+		position: absolute;
+		top: 5px;
+		left: 363px;
+		line-height: 31px;
+		border: none;
+		background: no-repeat;
+		color: #5078cb;
+		cursor: pointer;
+	}
+	.choose-body {
+		display: table;
+		width: 33.333333%;
+		margin-top: 10px;
+		/*margin-left: 120px;*/
+		padding: 10px;
+		table-layout: fixed;
+		border-collapse: separate;
+		border: 1px solid #ccc;
+		position: relative;
+		background: #fff;
+		z-index: 1000;
+		padding-right: 2px;
+		float: left;
+	}
+
+	.choose-body>.choose-item {
+		display: table-cell;
+	}
+
+	.choose-body>.choose-item>ul {
+		height: 200px;
+		overflow-x: hidden;
+		overflow-y: scroll;
+	}
+
+	.choose-body>.choose-item>ul>li {
+		line-height: 30px;
+		padding-left: 5px;
+		position: relative;
+	}
+
+	.choose-body>.choose-item>ul>li.add {
+		margin: 10px 5px;
+		text-align: center;
+		border: 1px solid #ff7300;
+		color: #ff7300;
+		border-radius: 4px;
+		cursor: pointer;
+	}
+
+	.choose-body>.choose-item>ul>li:hover {
+		background: #f1f1f1;
+	}
+
+	.choose-body>.choose-item>ul>li.active {
+		background: #fff1d0;
+	}
+
+	.choose-body>.choose-item>ul>li.active a {
+		color: #ff7300;
+	}
+
+	.choose-body>.choose-item>ul>li>a {
+		display: block;
+		color: #666666;
+	}
+
+	.choose-body>.choose-item .caret {
+		float: right;
+		margin-top: 14px;
+		margin-right: 8px;
+		border-left: 3px solid;
+		border-right: none;
+		border-top: 3px solid transparent;
+		border-bottom: 3px solid transparent;
+	}
+
+	.choose-body>.choose-item .setting {
+		display: none;
+		position: absolute;
+		right: 20px;
+		top: 1px;
+	}
+
+	.choose-body>.choose-item>ul>li:hover .setting {
+		display: block;
+	}
+	.area-bg{
+		background: url("static/img/all/dot.png") no-repeat right center;
+		background-position: 302px;
+	}
+	.area-list{
+		position: absolute;
+		top: 26px;
+		left: 125px;
+		width: 630px;
+	}
 </style>
 <!--<div class="com_title">设置&gt;企业设置<font>&gt;企业信息</font></div>-->
 <div class="com_head"><span>企业信息</span></div>
-<div class="pane base-info" id="company">
+<div class="pane base-info" id="company" ng-click="hideList()">
 	<div class="com_title01"><span>基本信息</span></div>
 	<div class="pane-body">
 		<div class="row row-sm item">
 			<div class="col-xs-12">
-				<div class="com-text col-xs-6">
-					<span class="title">企业UU号:</span>
-					<div class="content" ng-bind="::enterprise.uu"></div>
-				</div>
 				<div class="com-text col-xs-6">
 					<span class="title">企业名称:</span>
 					<div class="content" ng-bind="::enterprise.enName"></div>
 				</div>
-				<div class="com-text col-xs-6">
-					<span class="title">企业简称:</span>
-					<div class="content" ng-bind="::enterprise.enShortname"></div>
-				</div>
 				<div class="com-text col-xs-6">
 					<span class="title">营业执照号:</span>
 					<div class="content" ng-bind="::enterprise.enBussinessCode"></div>
 				</div>
 				<div class="com-text col-xs-6">
-					<span class="title">注册地区:</span>
+					<span class="title">法定代表人:</span>
+					<div class="content" ng-bind="::enterprise.enCorporation"></div>
+				</div>
+				<div class="com-text col-xs-6">
+					<span class="title">企业地址:</span>
 					<div class="content" ng-bind="::enterprise.enArea"></div>
 				</div>
+				<div class="com-text col-xs-6">
+					<span class="title">企业UU号:</span>
+					<div class="content" ng-bind="::enterprise.uu"></div>
+				</div>
 			</div>
 			<!-- <div class="col-xs-4">
 				<div class="com-text col-xs-12">
@@ -305,9 +449,9 @@
 		</div>
 	</div>
 	<div class="com_title01"><span>详细信息</span>
-		<a ng-show="!connectionEditing" ng-click="connectionEditing = true" class="pull-right text-simple"><i
-			class="fa fa-pencil fa-fw fa-lg"></i>编辑</a>
-		<a ng-show="connectionEditing" ng-click="connectionEditing = false" class="pull-right text-simple color01"><i
+		<a ng-show="!connectionEditing" ng-click="connectionEditing = true;copyData()" class="pull-right text-simple"><i
+				class="fa fa-pencil fa-fw fa-lg"></i>编辑</a>
+		<a ng-show="connectionEditing" ng-click="connectionEditing = false;copyData()" class="pull-right text-simple color01"><i
 				class="fa fa-reply-all fa-fw"></i>取消</a>
 		<a ng-show="connectionEditing" ng-click="updateDetailInfo()" class="pull-right text-simple  color02"><i
 				class="fa fa-save fa-fw"></i>保存</a>
@@ -318,88 +462,162 @@
 			<div class="row row-sm item">
 				<div class="col-xs-12">
 					<div class="com-text col-xs-6">
-						<span class="title">企业官网:</span><a ng-show="!connectionEditing" class="content"
-														   ng-bind="::enterprise.enUrl" href="http://{{::enterprise.enUrl}}"
-														   target="_blank"></a>
+						<span class="title">联系人:</span>
+						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.contactMan"></div>
 						<div class="content" ng-show="connectionEditing">
-							<div class="input-group input-group-xs" style="width: 320px;">
-								<span class="input-group-addon">http://</span>
-								<input required="required" ng-model="enterprise.enUrl" type="text" class="form-control input-xs"  style="width: 270px;" placeholder="企业官方网站网址">
-							</div>
+							<input  ng-model="copyEnterprise.contactMan" type="text" class="form-control input-xs" placeholder="联系人" />
 						</div>
 					</div>
 					<div class="com-text col-xs-6">
-						<span class="title">企业传真</span> 
-						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enFax"></div>
+						<span class="title">联系电话:</span>
+						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.contactTel"></div>
 						<div class="content" ng-show="connectionEditing">
-							<div class="input-group input-group-xs" style="width: 320px;">
-								<input required="required" ng-model="enterprise.enFax" type="text" class="form-control input-xs" placeholder="企业传真信息">
-							</div>
+							<input required="required" ng-model="copyEnterprise.contactTel" type="text" class="form-control input-xs" placeholder="企业电话" />
 						</div>
 					</div>
 				</div>
-			<!-- 	<div class="col-xs-12">
-					<div class="com-text col-xs-6">
-						<span class="title">成立时间:</span>
-						<div class="content" ng-show="connectionEditing">
-							<input required="required" type="text" class="form-control input-xs" placeholder="成立时间" />
-						</div>
-					</div>
-					<div class="com-text col-xs-6">
-						<span class="title">员工人数:</span>
-						<div class="content" ng-show="connectionEditing">
-							<input required="required" type="text" class="form-control input-xs" placeholder="员工人数" />
-						</div>
-					</div>
-				</div> -->
 				<div class="col-xs-12">
 					<div class="com-text col-xs-6">
-						<span class="title">企业电话:</span>
-						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enTel"></div>
+						<span class="title">邮箱:</span>
+						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.contactEmail"></div>
 						<div class="content" ng-show="connectionEditing">
-							<input required="required" ng-model="enterprise.enTel" type="text" class="form-control input-xs" placeholder="企业电话" />
+							<input required="required" ng-model="copyEnterprise.contactEmail" type="text" class="form-control input-xs" placeholder="邮箱" />
 						</div>
 					</div>
 					<div class="com-text col-xs-6">
-						<span class="title">开户银行:</span>
-						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enbank"></div>
+						<span class="title">传真:</span>
+						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enFax"></div>
 						<div class="content" ng-show="connectionEditing">
-							<input required="required" type="text" class="form-control input-xs" placeholder="开户银行" ng-model="enterprise.enbank"/>
+							<div class="input-group input-group-xs" style="width: 320px;">
+								<input required="required" ng-model="copyEnterprise.enFax" type="text" class="form-control input-xs" placeholder="企业传真信息">
+							</div>
 						</div>
 					</div>
 				</div>
 				<div class="col-xs-12">
 					<div class="com-text col-xs-6">
-						<span class="title">员工人数:</span>
-						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.emcount"></div>
+						<span class="title">官网:</span>
+						<a ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enUrl"
+                           href="http://{{::enterprise.enUrl}}"
+						   target="_blank">
+						</a>
 						<div class="content" ng-show="connectionEditing">
-							<input required="required" type="text" class="form-control input-xs" placeholder="员工人数" ng-model="enterprise.emcount"/>
-						</div>
-					</div>
-					<div class="com-text col-xs-6">
-						<span class="title">地址:</span>
-						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enAddress"></div>
-						<div class="content" ng-show="connectionEditing" style="width: 320px;">
-							<input ng-model="enterprise.enAddress" placeholder="详细地址"
-								   class="form-control input-xs" type="text" />
+							<div class="input-group input-group-xs" style="width: 320px;">
+								<span class="input-group-addon">http://</span>
+								<input required="required" ng-model="copyEnterprise.enUrl" type="text" class="form-control input-xs"  style="width: 270px;" placeholder="企业官方网站网址">
+							</div>
 						</div>
 					</div>
 				</div>
-				<div class="col-xs-12">
+				<!--<div class="col-xs-12">-->
+				<!--<div class="com-text col-xs-6">-->
+				<!--<span class="title">企业电话:</span>-->
+				<!--<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enTel"></div>-->
+				<!--<div class="content" ng-show="connectionEditing">-->
+				<!--<input required="required" ng-model="enterprise.enTel" type="text" class="form-control input-xs" placeholder="企业电话" />-->
+				<!--</div>-->
+				<!--</div>-->
+				<!--<div class="com-text col-xs-6">-->
+				<!--<span class="title">开户银行:</span>-->
+				<!--<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enbank"></div>-->
+				<!--<div class="content" ng-show="connectionEditing">-->
+				<!--<input required="required" type="text" class="form-control input-xs" placeholder="开户银行" ng-model="enterprise.enbank"/>-->
+				<!--</div>-->
+				<!--</div>-->
+				<!--</div>-->
+				<!--<div class="col-xs-12">-->
+				<!--<div class="com-text col-xs-6">-->
+				<!--<span class="title">员工人数:</span>-->
+				<!--<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.emcount"></div>-->
+				<!--<div class="content" ng-show="connectionEditing">-->
+				<!--<input required="required" type="text" class="form-control input-xs" placeholder="员工人数" ng-model="enterprise.emcount"/>-->
+				<!--</div>-->
+				<!--</div>-->
+				<!--<div class="com-text col-xs-6">-->
+				<!--<span class="title">地址:</span>-->
+				<!--<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.enAddress"></div>-->
+				<!--<div class="content" ng-show="connectionEditing" style="width: 320px;">-->
+				<!--<input ng-model="enterprise.enAddress" placeholder="详细地址"-->
+				<!--class="form-control input-xs" type="text" />-->
+				<!--</div>-->
+				<!--</div>-->
+				<!--</div>-->
+				<div class="col-xs-12" >
 					<div class="com-text col-xs-6">
 						<span class="title">行业:</span>
-						<div ng-show="!connectionEditing" class="content">
-							{{enterprise.enIndustry=='make'?'制造型':'贸易型'}}
+						<div ng-show="!connectionEditing" class="content" ng-bind="::enterprise.profession">
+							<!--{{enterprise.enIndustry=='make'?'制造型':'贸易型'}}-->
 						</div>
 						<div class="content" ng-show="connectionEditing">
-							<select ng-model="enterprise.enIndustry" placeholder="所属行业"
-									class="form-control input-xs" type="text" style="width: 320px;">
-								<option value="make">制造型</option>
-								<option value="trade">贸易型</option>
-							</select>
+							<input ng-model="copyEnterprise.profession" placeholder="所属行业" ng-mouseenter="isInInput = true"  ng-mouseleave="isInInput = false"
+								   class="area-bg form-control input-xs" type="text" style="width: 320px;"
+									ng-click="selectProfession()">
+								<!--<option value="make">制造型</option>-->
+								<!--<option value="trade">贸易型</option>-->
+
+							</input>
+						</div>
+						<div ng-show="showProfession" ng-mouseenter="isInList = true" ng-mouseleave="isInList = false" class="area-list">
+							<div class="choose-body">
+								<div class="choose-item">
+									<ul class="list-unstyled">
+										<li ng-repeat="(key, value) in profession[0]" ng-class="{active: key == active[0]}">
+											<a ng-click="onItemClick(key, 0, value)">{{key}}
+												<span class="caret" ></span>
+											</a>
+										</li>
+									</ul>
+								</div>
+							</div>
+							<div class="choose-body" ng-show="profession[1]">
+								<div class="choose-item">
+									<ul class="list-unstyled">
+										<li ng-repeat="(key, value) in profession[1]" ng-class="{active: key == active[1]}">
+											<a ng-click="onItemClick(key, 1, value)">{{key}}
+												<span ng-show="!isString(value)" class="caret" ></span>
+											</a>
+										</li>
+									</ul>
+								</div>
+							</div>
+							<div class="choose-body" ng-show="profession[2]" style="border-left:0;">
+								<div class="choose-item">
+									<ul class="list-unstyled">
+										<li ng-repeat="(key, value) in profession[2]" ng-class="{active: key == active[2]}">
+											<a ng-click="onItemClick(key, 2, value)">{{key}}
+												<span ng-show="!isString(value)" class="caret" ></span>
+											</a>
+										</li>
+									</ul>
+								</div>
+							</div>
+							<div class="choose-body" ng-show="professionArray.length > 0" style="border-left:0;">
+								<div class="choose-item">
+									<ul class="list-unstyled">
+										<li ng-repeat="value in professionArray" ng-class="{active: false}">
+											<a ng-click="onItemClick(null, -1, value)">{{value}}</a>
+										</li>
+									</ul>
+								</div>
+							</div>
 						</div>
 					</div>
 				</div>
+				<div class="col-xs-12" style="height: auto">
+					<div class="com-text col-xs-12" style="height: auto">
+						<span class="title">经营范围:</span>
+						<div class="content enterprise-area" style="height: auto" ng-model="::enterprise.tags">
+                            <span ng-if="tags.length == 0" style="background: #5078cb; color: #ffffff">暂无标签</span>
+							<span ng-repeat="tag in tags track by $index">{{tag}}
+								<i class="fa fa-times-circle" ng-show="connectionEditing" ng-click="removeTag(tag)"></i>
+							</span>
+						</div>
+					</div>
+					<div class="com-text col-xs-12 add-tag" ng-show="connectionEditing">
+						<input type="text" ng-model="tag" class="form-control" maxlength="10" placeholder="不大于10个字符"/>
+						<a ng-click="addTag()">+添加标签</a>
+					</div>
+				</div>
 			</div>
 		</form>
 	</div>
@@ -503,7 +721,7 @@
 		</form>
 	</div>
 
-	<div class="com_title01"><span>企业管理员</span>
+	<div class="com_title01"><span>管理员信息</span>
 		<a href="https://account.ubtob.com/changeAdmin/changeAdmin" class="pull-right text-simple" target="_blank"><i class="fa fa-exchange fa-fw fa-lg"></i>更换管理员</a>
 	</div>
 	<div class="pane-body">
@@ -514,10 +732,10 @@
 						<span class="title">姓名:</span>
 						<div class="content" ng-bind="::enterprise.admin.userName">陈虎</div>
 					</div>
-					<div class="com-text col-xs-6">
-						<span class="title">性别:</span>
-						<div class="content">{{enterprise.admin.userSex === 'F' ? '女' : '男'}}</div>
-					</div>
+					<!--<div class="com-text col-xs-6">-->
+					<!--<span class="title">性别:</span>-->
+					<!--<div class="content">{{enterprise.admin.userSex === 'F' ? '女' : '男'}}</div>-->
+					<!--</div>-->
 				</div>
 				<div class="col-xs-12">
 					<div class="com-text col-xs-6">
@@ -660,11 +878,12 @@
 			</form>
 		</div>
 	</div>
-	<div class="com_title01"><span>你拥有的服务</span></div>
+	<div class="com_title01"><span>已开通服务</span></div>
 	<div class="pane-body">
 		<div class="row">
-			<div class="col-xs-6"><a href="http://uas.ubtob.com/#/index" class="bule">B2B商务平台</a></div>
-			<div class="col-xs-6"><a href="http://www.usoftmall.com/" class="bule" target="_blank">优软商城</a></div>
+			<div class="col-xs-4"><a href="http://uas.ubtob.com/#/index" class="bule" title="B2B商务平台">B2B商务平台</a></div>
+			<div class="col-xs-4"><a href="http://www.usoftmall.com/" class="bule" target="_blank" title="优软商城">优软商城</a></div>
+			<div class="col-xs-4"><a href="http://v2.usoftchina.com/uu" class="bule" target="_blank" title="UU互联">UU互联</a></div>
 		</div>
 	</div>
 	<div class="save-btn">
@@ -672,80 +891,80 @@
 	</div>
 </div>
 <div class="bomb-box" style="display: none" id="ship">
-    <form class="box04 box" name="shipAddress" id="shipAddress">
-        <i class="off"><img src="static/img/purc/close.png" alt="" /></i>
-        <p>收货人资料</p>
-        <ul>
-            <li class="line01">
-                <div class="fl">
-                    <span class="fl"><em>*</em>收货人:</span>
-                    <span class="fr"><input type="text" placeholder="填写收货人" ng-model="ship.receiver" required="true"/></span>
-                </div>
-                <div class="fr">
-                    <span class="fl"><em>*</em>手机:</span>
-                    <span class="fr"><input type="text" ng-model="ship.usertel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"/></span>
-                </div>
-            </li>
-            <li class="line01">
-                <div class="fl">
-                    <span class="fl">固定电话<em></em>:</span>
-                    <span class="fr"><input type="text" ng-model="ship.phone"  ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/"/></span>
-                </div>
-                <div class="fr">
-                    <span class="fl">邮箱:</span>
-                    <span class="fr emaill"><input type="text" ng-model="ship.email" ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/"/><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
-                </div>
-            </li>
-            <li class="line02 margin-top40">
-                <div class="fl"><em>*</em>所在地址:</div>
-                <!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
-				 <div class="select fr">
-                    <select required="" class="area-select" ng-model="ship.province" ng-options="key as key for (key,value) in provinces"
-                            ng-change="ship.city='';ship.district='';" required="true">  
-                        <option value="">省</option>  
-                    </select>
-                    <select class="area-select" ng-model="ship.city" ng-options="key as key for (key,value) in provinces[ship.province]"
-                            ng-change="ship.district='';" required="true">  
-                        <option value="">市</option>  
-                    </select>
-                    <select class="area-select" ng-model="ship.district" ng-options="value as value for value in provinces[ship.province][ship.city]" required="true">
-                        <option value="">区</option>  
-                    </select>  
+	<form class="box04 box" name="shipAddress" id="shipAddress">
+		<i class="off"><img src="static/img/purc/close.png" alt="" /></i>
+		<p>收货人资料</p>
+		<ul>
+			<li class="line01">
+				<div class="fl">
+					<span class="fl"><em>*</em>收货人:</span>
+					<span class="fr"><input type="text" placeholder="填写收货人" ng-model="ship.receiver" required="true"/></span>
+				</div>
+				<div class="fr">
+					<span class="fl"><em>*</em>手机:</span>
+					<span class="fr"><input type="text" ng-model="ship.usertel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"/></span>
+				</div>
+			</li>
+			<li class="line01">
+				<div class="fl">
+					<span class="fl">固定电话<em></em>:</span>
+					<span class="fr"><input type="text" ng-model="ship.phone"  ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/"/></span>
 				</div>
-            </li>
-            <li class="line02">
-                <div class="fl"><em>*</em>详细地址:</div>
-                <div class="fr"><input type="text" ng-model="ship.addressdet" required="true"/></div>
-            </li>
-            <li class="line02">
-                <div class="fl">地址别名:</div>
-                <div class="fr address"><input type="text" ng-model="ship.addalias"/><i>建议填写常用名称:家里/父母家/公司</i></div>
-            </li>
-        </ul>
-        <div class="many-file-btn">
-            <button class="btn01" ng-click="saveShipAddress(ship)" ng-disabled="shipAddress.$invalid">保存</button><a class="btn02" ng-click="">取消</a>
-        </div>
-    </form>
+				<div class="fr">
+					<span class="fl">邮箱:</span>
+					<span class="fr emaill"><input type="text" ng-model="ship.email" ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/"/><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
+				</div>
+			</li>
+			<li class="line02 margin-top40">
+				<div class="fl"><em>*</em>所在地址:</div>
+				<!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
+				<div class="select fr">
+					<select required="" class="area-select" ng-model="ship.province" ng-options="key as key for (key,value) in provinces"
+							ng-change="ship.city='';ship.district='';" required="true">
+						<option value="">省</option>
+					</select>
+					<select class="area-select" ng-model="ship.city" ng-options="key as key for (key,value) in provinces[ship.province]"
+							ng-change="ship.district='';" required="true">
+						<option value="">市</option>
+					</select>
+					<select class="area-select" ng-model="ship.district" ng-options="value as value for value in provinces[ship.province][ship.city]" required="true">
+						<option value="">区</option>
+					</select>
+				</div>
+			</li>
+			<li class="line02">
+				<div class="fl"><em>*</em>详细地址:</div>
+				<div class="fr"><input type="text" ng-model="ship.addressdet" required="true"/></div>
+			</li>
+			<li class="line02">
+				<div class="fl">地址别名:</div>
+				<div class="fr address"><input type="text" ng-model="ship.addalias"/><i>建议填写常用名称:家里/父母家/公司</i></div>
+			</li>
+		</ul>
+		<div class="many-file-btn">
+			<button class="btn01" ng-click="saveShipAddress(ship)" ng-disabled="shipAddress.$invalid">保存</button><a class="btn02" ng-click="">取消</a>
+		</div>
+	</form>
 </div>
 <script src="static/lib/jquery/jquery.min.js"></script>
 <script>
-    $(function(){
-        //新增收货地址
-        $(".com_title01 .add-address").click(function(){
-        	document.getElementById('shipAddress').reset();
-            $("#ship").show();
-        });
-        
-        $("#message .add-address").click(function(){
-        	document.getElementById('shipAddress').reset();
-            $("#ship").show();
-        });
-        
-        $(".bomb-box .box04 .off,.box04 .many-file-btn .btn02").click(function(){
-            $(".bomb-box").hide();
-        })
-         $(".bomb-box .box04 .off,.box04 .many-file-btn .btn01").click(function(){
-            $(".bomb-box").hide();
-        })
-    })
+	$(function(){
+		//新增收货地址
+		$(".com_title01 .add-address").click(function(){
+			document.getElementById('shipAddress').reset();
+			$("#ship").show();
+		});
+
+		$("#message .add-address").click(function(){
+			document.getElementById('shipAddress').reset();
+			$("#ship").show();
+		});
+
+		$(".bomb-box .box04 .off,.box04 .many-file-btn .btn02").click(function(){
+			$(".bomb-box").hide();
+		})
+		$(".bomb-box .box04 .off,.box04 .many-file-btn .btn01").click(function(){
+			$(".bomb-box").hide();
+		})
+	})
 </script>

+ 1 - 1
src/main/webapp/resources/tpl/index/approvalFlow/user.html

@@ -455,7 +455,7 @@
 						</td>
 						<!-- 系统管理员无法被编辑限制,因为用户反馈注册用户都是业务员,需要权限来保护隐私,所以拿掉这个限制 -->
 						<!-- ng-show="user.sys && enterprise.enAdminuu != u.userUU" -->
-						<td class="row-operator" >
+						<td class="row-operator" ng-show="isManager">
 							<a class="operator-trigger" href="javascript:void(0);"><i class="fa fa-pencil fa-lg" ng-show="(user.sys && enterprise.enAdminuu != u.userUU) || $data.length == 1"></i></a>
 							<ul class="list-unstyle list-inline operator-menu" ng-show="(user.sys && enterprise.enAdminuu != u.userUU) || $data.length == 1">
 								<li><a ng-click="editUserRole(u)"><i class="fa fa-fw fa-pencil-square-o" style="color: #fff"></i>编辑</a></li>

+ 5 - 1
src/main/webapp/resources/tpl/index/baseInfo/customersInfo.html

@@ -125,7 +125,7 @@
 				<div class="col-xs-9">
 					<div class="search">
 						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="企业名称/营业执照/法人/联系人/企业UU" />
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入企业名称等关键词进行搜索" />
 							<a class="btn input-group-addon" ng-click="onSearch()">搜索</a>
 						</div>
 					</div>
@@ -179,6 +179,10 @@
 								<div class="col-md-3"><span class="text-muted">电话:</span><span ng-bind="::customer.myUser.userTel"></span></div>
 								<div class="col-md-3"><span class="text-muted">邮箱:</span><span ng-bind="::customer.myUser.userEmail"></span></div>
 							</div>
+							<div class="row">
+								<div class="col-md-3"><span class="text-muted">行业:</span><span ng-bind="::customer.myEnterprise.profession"></span></div>
+								<div class="col-md-7"><span class="text-muted">经营范围:</span><span ng-bind="::customer.myEnterprise.tags"></span></div>
+							</div>
 							<div class="row">
 								<div class="col-md-12">
 									<span class="text-muted">企业地址:</span><span ng-bind="::customer.myEnterprise.enAddress"></span>

+ 1 - 1
src/main/webapp/resources/tpl/index/baseInfo/enMenu.html

@@ -11,7 +11,7 @@
 <div class="tab-first" ng-controller="RequestAmountCtrl">
 	<div class="row">
 		<div class="tab-menu">
-			<a type="button" ui-sref="baseInfo.myRequest" ng-class="{'active':status=='vendor' || status=='customer' || status=='partner' && active=='done'}" class="tab-btn">我的合作伙伴</a>
+			<a type="button" ui-sref="baseInfo.myRequest" ng-class="{'active':status=='servicer' || status=='vendor' || status=='customer' || status=='partner' && active=='done'}" class="tab-btn">我的合作伙伴</a>
 			<!-- <a type="button" ui-sref="baseInfo.myRequest" ng-class="{'active':status=='send'}" class="tab-btn">新的合作伙伴<b class="new-dot" ng-if="requestTodo.todo>0"></b></a> -->
 			<a type="button" ui-sref="baseInfo.newPartner" class="tab-btn" ng-class="{'active':status=='add' || status=='invitation' && status!='send' && status!='add' || status=='partner' && active == 'all'}">新的合作伙伴<b class="new-dot" ng-if="requestTodo.todo>0" ></b></a>
 			<!--<a type="button" ui-sref="baseInfo.partner_searchresult" class="tab-btn" ng-class="{'active':status=='add'}">新的合作伙伴</a>-->

+ 12 - 8
src/main/webapp/resources/tpl/index/baseInfo/myRequest.html

@@ -346,7 +346,7 @@
 				<div class="col-xs-9">
 					<div class="search">
 						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="企业名称/营业执照/法人/联系人/企业UU" />
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入企业名称等关键词进行搜索" />
 							<a class="btn input-group-addon" ng-click="onSearch()">搜索</a>
 						</div>
 					</div>
@@ -367,16 +367,20 @@
 		<tr class="height72 order-hd" ng-dblclick="order.$collapsed=!order.$collapsed" ng-class="{'text-bold': order.display>0}">
 			<td class="first" colspan="4">
 				<div class="row">
-					<div ng-if="::request.vendUID" class="col-md-3"><span class="text-muted">营业执照:</span><span ng-bind="::request.vendUID"></span></div>
-					<div ng-if="::request.enterprise.enCorporation" class="col-md-3"><span class="text-muted">法定代表人:</span><span ng-bind="::request.enterprise.enCorporation"></span></div>
-					<div ng-if="::request.enterprise.uu" class="col-md-4"><span class="text-muted">企业UU:</span><span ng-bind="::request.enterprise.uu"></span></div>
+					<div class="col-md-3"><span class="text-muted">营业执照:</span><span ng-bind="::request.vendUID"></span></div>
+					<div class="col-md-3"><span class="text-muted">法定代表人:</span><span ng-bind="::request.enterprise.enCorporation"></span></div>
+					<div class="col-md-4"><span class="text-muted">企业UU:</span><span ng-bind="::request.enterprise.uu"></span></div>
 				</div>
 				<div class="row">
-					<div ng-if="::request.contact.userName" class="col-md-3"><span class="text-muted">联系人:</span><span ng-bind="::request.contact.userName"></span></div>
-					<div ng-if="::request.contact.userTel" class="col-md-3"><span class="text-muted">联系电话:</span><span ng-bind="::request.contact.userTel"></span></div>
-					<div ng-if="::request.contact.userEmail" class="col-md-4"><span class="text-muted">邮箱:</span><span ng-bind="::request.contact.userEmail"></span></div>
+					<div class="col-md-3"><span class="text-muted">联系人:</span><span ng-bind="::request.contact.userName"></span></div>
+					<div class="col-md-3"><span class="text-muted">联系电话:</span><span ng-bind="::request.contact.userTel"></span></div>
+					<div class="col-md-4"><span class="text-muted">邮箱:</span><span ng-bind="::request.contact.userEmail"></span></div>
 				</div>
-				<div ng-if="::request.enterprise.enAddress" class="row col-md-12"><span class="text-muted">企业地址:</span><span ng-bind="::request.enterprise.enAddress"></span></div>
+				<div class="row">
+					<div class="col-md-3"><span class="text-muted">行业:</span><span ng-bind="::request.enterprise.profession"></span></div>
+					<div class="col-md-7"><span class="text-muted">经营范围:</span><span ng-bind="::request.enterprise.tags"></span></div>
+				</div>
+				<div class="row col-md-12"><span class="text-muted">企业地址:</span><span ng-bind="::request.enterprise.enAddress"></span></div>
 			</td>
 			<td class="text-center">
 				<p ng-if="request.statusCode==313 && request.vendor != 1"><a class="btn label-success white" ng-click="addSupplier(request.vendUID)">添加供应商 </a></p>

+ 12 - 8
src/main/webapp/resources/tpl/index/baseInfo/newPartner.html

@@ -344,7 +344,7 @@
                 <div class="col-xs-9">
                     <div class="search">
                         <div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-                            <input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="企业名称/营业执照/法人/联系人/企业UU" />
+                            <input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入企业名称等关键词进行搜索" />
                             <a class="btn input-group-addon" ng-click="onSearch()">搜索</a>
                         </div>
                     </div>
@@ -365,20 +365,24 @@
         <tr class="height72 order-hd" ng-dblclick="order.$collapsed=!order.$collapsed" ng-class="{'text-bold': order.display>0}">
             <td class="first" colspan="4">
                 <div class="row">
-                    <div ng-if="::request.vendUID" class="col-md-3"><span class="text-muted">营业执照:</span><span ng-bind="::request.vendUID"></span></div>
-                    <div ng-if="::request.enterprise.enCorporation" class="col-md-3"><span class="text-muted">法定代表人:</span><span ng-bind="::request.enterprise.enCorporation"></span></div>
-                    <div ng-if="::request.enterprise.uu" class="col-md-4"><span class="text-muted">企业UU:</span><span ng-bind="::request.enterprise.uu"></span></div>
+                    <div class="col-md-3"><span class="text-muted">营业执照:</span><span ng-bind="::request.vendUID"></span></div>
+                    <div class="col-md-3"><span class="text-muted">法定代表人:</span><span ng-bind="::request.enterprise.enCorporation"></span></div>
+                    <div class="col-md-4"><span class="text-muted">企业UU:</span><span ng-bind="::request.enterprise.uu"></span></div>
                 </div>
                 <span class="text-icon" ng-if="request.statusCode==313 && request.method == 1">已通过</span>
                 <span class="text-icon" ng-if="request.statusCode==310 && request.method==1">未通过</span>
                 <span class="text-icon" ng-if="request.statusCode==313 && request.method == 0">已同意</span>
                 <span class="text-icon" ng-if="request.statusCode==310 && request.method==0">已拒绝</span>
                 <div class="row">
-                    <div ng-if="::request.contact.userName" class="col-md-3"><span class="text-muted">联系人:</span><span ng-bind="::request.contact.userName"></span></div>
-                    <div ng-if="::request.contact.userTel" class="col-md-3"><span class="text-muted">联系电话:</span><span ng-bind="::request.contact.userTel"></span></div>
-                    <div ng-if="::request.contact.userEmail" class="col-md-4"><span class="text-muted">邮箱:</span><span ng-bind="::request.contact.userEmail"></span></div>
+                    <div class="col-md-3"><span class="text-muted">联系人:</span><span ng-bind="::request.contact.userName"></span></div>
+                    <div class="col-md-3"><span class="text-muted">联系电话:</span><span ng-bind="::request.contact.userTel"></span></div>
+                    <div class="col-md-4"><span class="text-muted">邮箱:</span><span ng-bind="::request.contact.userEmail"></span></div>
                 </div>
-                <div ng-if="::request.enterprise.enAddress" class="row col-md-12"><span class="text-muted">企业地址:</span><span ng-bind="::request.enterprise.enAddress"></span></div>
+                <div class="row">
+                    <div class="col-md-3"><span class="text-muted">行业:</span><span ng-bind="::request.enterprise.profession"></span></div>
+                    <div class="col-md-7"><span class="text-muted">经营范围:</span><span ng-bind="::request.enterprise.tags"></span></div>
+                </div>
+                <div class="row col-md-12"><span class="text-muted">企业地址:</span><span ng-bind="::request.enterprise.enAddress"></span></div>
             </td>
             <td width="140" class="text-center">
               <p ng-if="request.statusCode==313 && request.vendor == 0"><a class="btn label-success white" ng-click="addSupplier(request.vendUID)">添加供应商 </a></p>

+ 12 - 27
src/main/webapp/resources/tpl/index/baseInfo/searchresult.html

@@ -314,7 +314,7 @@
 				<div class="col-xs-9">
 					<div class="search">
 						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="企业名称/营业执照/法人/联系人/企业UU" />
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="输入企业名称等关键词进行搜索" />
 							<a class="btn input-group-addon" ng-click="onSearch(keyword)">搜索</a>
 						</div>
 					</div>
@@ -325,30 +325,10 @@
 			</div>
 		</div>
 	</div>
-<!--<div class="myReuest search-bg condition block" style="margin-bottom: 0;">
-		<div class="row">
-			<div class="col-xs-5">
-				<div class="search">
-					<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-						<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="输入企业名称、简称、管理员姓名进行搜索" />
-						<div id="searchContainer" class="dropdown-menu">
-						</div>
-						<a class="btn input-group-addon" ng-click="onSearch(keyword)">搜索</a>
-					</div>
-				</div>
-			</div>
-			<div class="col-xs-2">
-				<p>搜索到<em>{{tableParams.total()}}</em>条</p>
-			</div>
-			<div class="invite-right col-xs-5">
-				<p ng-if="tip != null && tableParams.total() > 0" style="float: right;"><a ng-click="invite(tip)" class="text-inverse">立即邀请</a><span class="invite-text">{{tip}}</span>注册优软云</p>
-			</div>
-		</div>
-	</div>-->
 <table class="enterprise-table block" ng-table="tableParams">
 	<tbody ng-repeat="enterprise in $data" class="company-list">
 		<tr class="enterprise-hd" ng-dblclick="enterprise.$collapsed=!enterprise.$collapsed">
-			<td colspan="4"><span ng-bind-html="::enterprise.name| getkey:keyword" class="text-center"></span><span ng-if="::enterprise.shortName != null">(<em ng-bind-html="::enterprise.shortName| getkey:keyword"></em>)</span><img src="static/img/logo/youruanrenzheng.png" id="logo" ng-if="enterprise.status == 313"></td>
+			<td colspan="4"><span ng-bind-html="::enterprise.name| getkey:keyword" class="text-center"></span>&nbsp;<img src="static/img/logo/youruanrenzheng.png" id="logo" ng-if="enterprise.status == 313"></td>
 			<td width="180" class="grey01 text-center" ng-if="enterprise.status != 313">当前企业不是优软云用户</td>
 			<td width="140" class="grey01 text-center" ng-if="enterprise.status == 313">优软云用户</td>
 		</tr>
@@ -356,14 +336,19 @@
 			<td class="product" colspan="4">
 				<div class="row">
 					<span class="col-md-3"><span class="text-muted">营业执照:</span><span ng-bind="::enterprise.businessCode" ></span></span>
-					<span class="col-md-3" ng-if="::enterprise.industry != null"><span class="text-muted">企业类型:</span><span class="text-muted" ng-bind="::enterprise.industry"></span></span>
+					<span class="col-md-3"><span class="text-muted">法定代表人:</span><span ng-bind="::enterprise.corporation" ></span></span>
+					<span class="col-md-3"><span class="text-muted">企业UU:</span><span ng-bind="::enterprise.uu" ></span></span>
 				</div>
 				<div class="row">
-					<span  ng-if="::enterprise.adminName != null" class="col-md-3"><span class="text-muted">管理员:</span><em ng-bind-html="::enterprise.adminName| getkey:keyword"></em></span>
-					<span ng-if="::enterprise.adminTel != null" class="col-md-3"><span class="text-muted">电话:</span>{{::enterprise.adminTel}}</span>
-					<span ng-if="::enterprise.adminEmail != null" class="col-md-5"><span class="text-muted">邮箱:</span>{{::enterprise.adminEmail}}</span>
+					<span class="col-md-3"><span class="text-muted">管理员:</span><em ng-bind-html="::enterprise.adminName| getkey:keyword"></em></span>
+					<span class="col-md-3"><span class="text-muted">电话:</span>{{::enterprise.adminTel}}</span>
+					<span class="col-md-5"><span class="text-muted">邮箱:</span>{{::enterprise.adminEmail}}</span>
 				</div>
-				<div class="row" ng-if="::enterprise.address != null">
+				<div class="row">
+					<span class="col-md-3"><span class="text-muted">行业:</span><span ng-bind="::enterprise.profession"></span></span>
+					<span class="col-md-8"><span class="text-muted">经营范围:</span><span ng-bind="::enterprise.tags"></span></span>
+				</div>
+				<div class="row">
 					<span class="col-md-12"><span class="text-muted">企业地址:</span><span ng-bind="::enterprise.address"></span></span>
 				</div>
 			</td>

+ 5 - 1
src/main/webapp/resources/tpl/index/baseInfo/servicerInfo.html

@@ -159,7 +159,7 @@
 				<div class="col-xs-9">
 					<div class="search">
 						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="企业名称/营业执照/法人/联系人/企业UU" />
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="输入企业名称等关键词进行搜索" />
 							<a class="btn input-group-addon" ng-click="onSearch(keyword)">搜索</a>
 						</div>
 					</div>
@@ -196,6 +196,10 @@
 								<div class="col-md-3"><span class="text-muted">电话:</span><span ng-bind="::vendor.vendorUser.userTel"></span></div>
 								<div class="col-md-3"><span class="text-muted">邮箱:</span><span ng-bind="::vendor.vendorUser.userEmail"></span></div>
 							</div>
+							<div class="row">
+								<div class="col-md-3"><span class="text-muted">行业:</span><span ng-bind="::vendor.vendorEnterprise.profession"></span></div>
+								<div class="col-md-7"><span class="text-muted">经营范围:</span><span ng-bind="::vendor.vendorEnterprise.tags"></span></div>
+							</div>
 							<div class="row">
 								<div class="col-md-12">
 									<span class="text-muted">企业地址:</span><span ng-bind="::vendor.vendorEnterprise.enAddress"></span>

+ 5 - 1
src/main/webapp/resources/tpl/index/baseInfo/vendorsInfo.html

@@ -159,7 +159,7 @@
 				<div class="col-xs-9">
 					<div class="search">
 						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="企业名称/营业执照/法人/联系人/企业UU" />
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="输入企业名称等关键词进行搜索" />
 							<a class="btn input-group-addon" ng-click="onSearch(keyword)">搜索</a>
 						</div>
 					</div>
@@ -198,6 +198,10 @@
 								<div class="col-md-3"><span class="text-muted">电话:</span><span ng-bind="::vendor.vendorUser.userTel"></span></div>
 								<div class="col-md-3"><span class="text-muted">邮箱:</span><span ng-bind="::vendor.vendorUser.userEmail"></span></div>
 							</div>
+							<div class="row">
+								<div class="col-md-3"><span class="text-muted">行业:</span><span ng-bind="::vendor.vendorEnterprise.profession"></span></div>
+								<div class="col-md-7"><span class="text-muted">经营范围:</span><span ng-bind="::vendor.vendorEnterprise.tags"></span></div>
+							</div>
 							<div class="row">
 								<div class="col-md-12">
 									<span class="text-muted">企业地址:</span><span ng-bind="::vendor.vendorEnterprise.enAddress"></span>

Some files were not shown because too many files changed in this diff