Эх сурвалжийг харах

供应商资源库接口修改,增加物料品牌和型号模糊查询(UAS联想词接口)

dongbw 8 жил өмнө
parent
commit
22d0ceecbc

+ 18 - 3
src/main/java/com/uas/platform/b2b/erp/controller/VendorRecommendController.java

@@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * 供应商推荐
  * Created by dongbw
@@ -31,18 +33,31 @@ public class VendorRecommendController {
      *
      * @param productMatchCondition 物料模糊匹配条件
      * @param enterpriseMatchCondition 企业搜索匹配条件
-     * @param productCondition 物料精确匹配条件
      * @param page 页面
      * @param size 每页条数
      * @return
      */
     @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public Page<VendorRecommend> getVendorRecommend (String productMatchCondition, String enterpriseMatchCondition, String productCondition, int page, int size) {
-        Page<VendorRecommend> vendorRecommendPage = vendorService.getVendorRecommend(productMatchCondition, enterpriseMatchCondition, productCondition, page, size);
+    public Page<VendorRecommend> getVendorRecommend (String productMatchCondition, String enterpriseMatchCondition, int page, int size) {
+        Page<VendorRecommend> vendorRecommendPage = vendorService.getVendorRecommend(productMatchCondition, enterpriseMatchCondition, page, size);
         logger.log("供应商推荐","获取当前企业推荐供应商:" + SystemSession.getUser().getEnterprise().getUu(), vendorRecommendPage.getNumberOfElements());
         return vendorRecommendPage;
     }
 
+    /**
+     * 根据条件获取物料型号和品牌值对
+     *
+     * @param field 需要的字段名
+     * @param condition 物料模糊匹配条件
+     * @return 物料型号和品牌值对List
+     */
+    @RequestMapping(value = "/product/associate", method = RequestMethod.GET)
+    public List<Product> getProductAssociate (String field, String condition) {
+        List<Product> products = vendorService.getProductAssociate(field, condition);
+        logger.log("供应商推荐","根据条件获取物料型号和品牌值对:" + SystemSession.getUser().getEnterprise().getUu(), products.size());
+        return products;
+    }
+
     /**
      * 获取推荐企业物料列表(匹配到的排前面)
      * @param page 页数

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

@@ -275,6 +275,11 @@ public class Enterprise implements Serializable {
 	@Column(name = "en_contactemail")
 	private String contactEmail;
 
+	/**
+	 * 企业权重 (用于供应商资源库排序) -- 2018年3月29日 17:59:00
+	 */
+	@Column(name = "en_weight")
+	private Integer weight;
 
 	public String getEnManagement() {
 		return enManagement;
@@ -750,4 +755,12 @@ public class Enterprise implements Serializable {
 	public void setContactEmail(String contactEmail) {
 		this.contactEmail = contactEmail;
 	}
+
+	public Integer getWeight() {
+		return weight;
+	}
+
+	public void setWeight(Integer weight) {
+		this.weight = weight;
+	}
 }

+ 4 - 0
src/main/java/com/uas/platform/b2b/ps/ProductUtils.java

@@ -196,7 +196,11 @@ public class ProductUtils {
      * @throws Exception
      */
     public static ModelMap updateProductUsersByBatch(List<ProductUsers> productUsers) throws Exception {
+        if (CollectionUtils.isEmpty(productUsers)) {
+            return null;
+        }
         String res = HttpUtil.doPost(PRODUCT_PUBLIC_SERVICE_URL + "/productuser/save", FlexJsonUtils.toJsonDeep(productUsers));
+        System.out.println("批量更新个人物料:" + productUsers.size() + res);
         if (null == res) {
             throw new RuntimeException("批量保存个人物料失败");
         }

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

@@ -1,18 +1,21 @@
 package com.uas.platform.b2b.service;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import com.uas.platform.b2b.model.*;
-import org.springframework.data.domain.Page;
-import org.springframework.ui.ModelMap;
-
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.PurchaseInquiry;
+import com.uas.platform.b2b.model.PurchaseInquiryItem;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.temporary.model.InquiryMessage;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
+import org.springframework.data.domain.Page;
+import org.springframework.ui.ModelMap;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 public interface PurchaseInquiryService {
 
@@ -306,4 +309,10 @@ public interface PurchaseInquiryService {
      * @return
      */
     SPage<PurchaseInquiryItem> findTodoByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter);
+
+	/**
+	 * 根据企业UU批量处理询价单明细中的物料转入供应商报价人个人物料
+	 * @param enUU 采购方企业UU
+	 */
+    void coverInquiryItemProdToUser(Long enUU) throws Exception;
 }

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

@@ -397,5 +397,12 @@ public interface PurchaseOrderService {
      */
     public void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu);
 
+	/**
+	 * 根据企业UU批量处理采购单明细中的物料转入供应商报价人个人物料
+	 *
+	 * @param enUU 采购方企业UU
+	 */
+    void coverPurchaseOrderItemProdToUser(Long enUU) throws Exception;
+
 //    SPage<SaleOrderForProd> findOrderItemsByPageInfo(PageInfo pageInfo, SearchFilter filter);
 }

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

@@ -131,7 +131,7 @@ public interface VendorService {
 	 * @param size 每页条数
 	 * @return
 	 */
-	com.uas.account.support.Page<VendorRecommend> getVendorRecommend(String productMatchCondition, String enterpriseMatchCondition, String productCondition, int page, int size);
+	com.uas.account.support.Page<VendorRecommend> getVendorRecommend(String productMatchCondition, String enterpriseMatchCondition, int page, int size);
 
 	/**
 	 * 获取推荐企业物料列表(匹配到的排前面)
@@ -142,4 +142,13 @@ public interface VendorService {
 	 * @return
 	 */
     com.uas.account.support.Page<Product> getProductsByVendorRecommend(int page, int size, Long vendUU, String productMatchCondition,  String whereCondition);
+
+	/**
+	 * 根据条件获取物料型号和品牌值对
+	 *
+	 * @param field 需要的字段名
+	 * @param condition 物料模糊匹配条件
+	 * @return 物料型号和品牌值对List
+	 */
+	List<Product> getProductAssociate(String field, String condition);
 }

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

@@ -480,7 +480,8 @@ public class ProductUsersServiceImpl implements ProductUsersService {
                         List<Product> products = productDao.findByEnUUAndCode(enuu, product.getCode());
                         if (CollectionUtils.isEmpty(products)) {
                             newProduct.setId(null);
-                            newProduct.setSourceId(null);
+                            newProduct.setSourceId(product.getId());
+                            newProduct.setSourceApp("B2B");
                             newProduct.setUserUU(useruu);
                             newProduct.setEnUU(enuu);
                             prId = ProductUtils.updateOne(newProduct);
@@ -492,8 +493,8 @@ public class ProductUsersServiceImpl implements ProductUsersService {
                                 prId = cmpProducts.get(0).getId();
                             } else {
                                 //生成随机编码
-                                SimpleDateFormat sdf = new SimpleDateFormat("yymmddhhmm_sss");
-                                newProduct.setCode("prod" + sdf.format(new Date()));
+                                String codePrefix = DateUtils.format(new Date(), "yyMMddHHmmss") + StringUtil.getRandomNumber(3);
+                                newProduct.setCode(codePrefix);
                                 prId = ProductUtils.updateOne(product);
                             }
                         }

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

@@ -2,8 +2,28 @@ package com.uas.platform.b2b.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.uas.message.mail.service.MailService;
-import com.uas.platform.b2b.core.util.*;
-import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.DateFormatUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
+import com.uas.platform.b2b.core.util.StringUtil;
+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.EnterpriseDao;
+import com.uas.platform.b2b.dao.NoticeDao;
+import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.dao.ProductTempDao;
+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.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
 import com.uas.platform.b2b.erp.model.QuotationDownDetail;
@@ -12,8 +32,23 @@ 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.PurchaseInquiryItemSaveReleaseEvent;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.model.Distribute;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductTemp;
+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.ps.InquiryUtils;
+import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.ProductUsersService;
@@ -49,7 +84,14 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.regex.Pattern;
 
 
@@ -113,6 +155,9 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	@Autowired
 	private NoticeDao noticeDao;
 
+	@Autowired
+	private ProductTempDao productTempDao;
+
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
     static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
@@ -541,6 +586,82 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
         return findByPageInfo(pageInfo, keyword, filter);
     }
 
+    /**
+     * 根据企业UU批量处理询价单明细中的物料转入供应商报价人个人物料
+     * @param enUU 采购方企业UU
+     */
+    @Override
+    public void coverInquiryItemProdToUser(Long enUU) throws Exception {
+		System.out.println("开始时间" + new Date());
+		long start = System.currentTimeMillis();
+//		String codePrefix = DateUtils.format(new Date(), "yyMMddHHmm") + StringUtil.getRandomNumber(3);
+		String importId = StringUtil.getRandomNumber(8);
+		System.out.println("importId:" + importId);
+        int size = 1000;
+        int page = 1;
+		int i = 0;
+        String countSql = "select count(1) from (select id_prid,id_venduu,id_venduseruu,count(1) as nums from purc$inquiryitems left join purc$inquiry on id_inid = in_id" +
+				"        where id_venduseruu is not null and id_status = 201 and in_enuu = " + enUU + " group by id_prid,id_venduseruu,id_venduu order by count(1) desc)";
+        Integer count = commonDao.queryForObject(countSql, Integer.class);
+		System.out.println("循环次数:" + Math.ceil((double)count / (double)size));
+        for (; page <= Math.ceil((double)count / (double)size); page++ ) {
+			System.out.println("开始循环:" + page);
+			String sql = "select " + importId + " as pr_import_id, pr_title,pr_code,pr_spec,pr_unit,pr_minpack,pr_minorder,pr_leadtime,pr_ltinstock,pr_brand,pr_cmpcode,'B2B' as pr_sourceapp,id_prid as pr_sourceid,1 as pr_issale,0 aspr_ispurchase,pr_isshow,pr_ispubsale,pr_standard,pr_create_time,id_venduu as pr_enuu,id_venduseruu as pr_useruu from (" +
+					" select P.*,t.*,rownum r from (select id_prid,id_venduu,id_venduseruu,count(1) as nums from purc$inquiryitems left join purc$inquiry on id_inid = in_id " +
+					" where id_venduseruu is not null and id_status = 201 and in_enuu = " + enUU + " group by id_prid,id_venduseruu,id_venduu order by count(1) desc " +
+					" ) t left join v$products P on id_prid = pr_id where P.pr_title is not null and P.pr_code is not null and rownum <= 10" +
+					") where r > 0";
+			System.out.println(sql);
+			List<ProductTemp> productTemps = commonDao.query(sql, ProductTemp.class);
+			System.out.println(enUU + "找到询价单详情" + productTemps.size());
+			// 本地校验
+			checkTempProducts(productTemps);
+			// 保存到公共库
+			saveToDataCenter(productTemps);
+			System.out.println("循环一次物料:" + productTemps.size());
+			i += productTemps.size();
+			System.out.println("结束循环:" + page + "耗时:" + (System.currentTimeMillis() - start));
+		}
+		System.out.println("总计处理物料:" + i);
+		System.out.println("结束循环耗时:" + (System.currentTimeMillis() - start));
+    }
+
+	/**
+	 * 校验导入的物料
+	 *
+	 * @param temps
+	 */
+	private void checkTempProducts(List<ProductTemp> temps) {
+		long start = System.currentTimeMillis();
+		if (!CollectionUtils.isEmpty(temps)) {
+			String importId = temps.get(0).getPr_import_id();
+			// 放入数据库
+			productTempDao.save(temps);
+			// 匹配已存在物料
+			productTempDao.matchExists(importId);
+			// 已禁用物料自动解禁
+			productTempDao.toggleDisabled(importId);
+			System.out.println("校验:" + (System.currentTimeMillis() - start));
+		}
+	}
+
+	/**
+	 * 保存到公共库
+	 */
+	private void saveToDataCenter(List<ProductTemp> temps) throws Exception {
+		long start = System.currentTimeMillis();
+		if (!CollectionUtils.isEmpty(temps)) {
+			String importId = temps.get(0).getPr_import_id();
+			// 已匹配+未匹配到的物料
+			List<Product> products = productTempDao.getProducts(importId);
+			System.out.println("取匹配后结果:" + (System.currentTimeMillis() - start));
+			start = System.currentTimeMillis();
+			// 更新物料并插入个人物料
+			ModelMap map = ProductUtils.paginationUpdateAndAddToProductUser(products);
+			System.out.println("更新物料:" + (System.currentTimeMillis() - start));
+		}
+	}
+
     @Override
 	public SPage<PurchaseInquiryItem> findByPageInfo(final PageInfo pageInfo, final String keyword,
 			final SearchFilter filter) {

+ 129 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -1,13 +1,17 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.DateUtils;
 import com.uas.platform.b2b.core.util.SplitArray;
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.CommonDao;
 import com.uas.platform.b2b.dao.DistributeDao;
 import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.PagingReleaseDao;
 import com.uas.platform.b2b.dao.PrintLogDao;
+import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.dao.ProductTempDao;
 import com.uas.platform.b2b.dao.PurcOrderInfoItemDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
@@ -30,6 +34,8 @@ import com.uas.platform.b2b.event.PurchaseOrderSaveReleaseEvent;
 import com.uas.platform.b2b.model.Distribute;
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.PrintLog;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductTemp;
 import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
@@ -53,6 +59,7 @@ 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.ps.ProductUtils;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.ProductUsersService;
 import com.uas.platform.b2b.service.PurchaseOrderService;
@@ -165,6 +172,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Autowired
     private ProductUsersService productUsersService;
 
+	@Autowired
+	private ProductDao productDao;
+
+	@Autowired
+	private ProductTempDao productTempDao;
+
 //	@Autowired
 //    private SaleOrderForProdItemDao saleOrderForProdItemDao;
 
@@ -1446,4 +1459,120 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		}
 		return deleteCount;
 	}
+
+	/**
+	 * 根据企业UU批量处理采购单明细中的物料转入供应商报价人个人物料
+	 *
+	 * @param enUU 采购方企业UU
+	 */
+	@Override
+	public void coverPurchaseOrderItemProdToUser(Long enUU) throws Exception {
+		System.out.println("开始时间" + new Date());
+		long start = System.currentTimeMillis();
+		String codePrefix = DateUtils.format(new Date(), "yyMMddHHmm") + StringUtil.getRandomNumber(3);
+		String importId = StringUtil.getRandomNumber(8);
+		int size = 1000;
+		int page = 1;
+		int i = 0;
+		String countSql = "select count(1) from (select pd_prid,pu_venduu,pu_venduseruu,count(1) from purc$orderitems " +
+				"left join purc$orders on pd_puid = pu_id where pu_venduseruu is not null and pu_enuu = "  + enUU + " group by pd_prid,pu_venduseruu,pu_venduu)";
+		Integer count = commonDao.queryForObject(countSql, Integer.class);
+//		// 已操作的物料ids  需要venduseruu也一样才确认是同一个,不多做操作
+//		Set<String> ids = new HashSet<>();
+//		// 已存在物料添加个人物料库的记录
+//		Set<Long> vendProdIds = new HashSet<>();
+//		// 供应商物料
+//		List<Product> vendProducts = new ArrayList<>();
+//		// 新增的个人产品库
+//		List<ProductUsers> productUsers = new ArrayList<>();
+		System.out.println("循环次数:" + Math.ceil((double)count / (double)size));
+		for (; page <= Math.ceil((double)count / (double)size); page++ ) {
+//			// 供应商物料
+//			List<Product> savedVendProducts = new ArrayList<>();
+//			// 新增的个人产品库
+//			List<ProductUsers> savedProductUsers = new ArrayList<>();
+			System.out.println("开始循环:" + page);
+//			String sql = "select pd_id from (select rownum r,pd_id from purc$orderitems left join purc$orders on pd_puid = pu_id where pu_venduseruu is not null and pu_enuu = "
+//					+ enUU + " and rownum <= " + page * size + " order by pd_id desc) where r > " + size * (page - 1);
+			String sql = "select " + importId + " as pr_import_id, pr_title,pr_code,pr_spec,pr_unit,pr_minpack,pr_minorder,pr_leadtime,pr_ltinstock,pr_brand,pr_cmpcode,'B2B' as pr_sourceapp,pd_prid as pr_sourceid,1 as pr_issale,0 as pr_ispurchase," +
+					"pr_isshow,pr_ispubsale,pr_standard,pr_create_time,pu_venduu as pr_enuu,pu_venduseruu as pr_useruu from (select P.*,t.*,rownum r from (" +
+					" select pd_prid,pu_venduu,pu_venduseruu,count(1) as nums from purc$orderitems left join purc$orders on pd_puid = pu_id " +
+					" where pu_venduseruu is not null and pu_enuu = " + enUU + " group by pd_prid,pu_venduseruu,pu_venduu order by count(1) desc " +
+					" ) t left join v$products P on pd_prid = pr_id where P.pr_title is not null and P.pr_code is not null and rownum <= " + page * size + ") where r > " + size * (page - 1);
+			System.out.println(sql);
+			List<ProductTemp> productTemps = commonDao.query(sql, ProductTemp.class);
+			System.out.println(enUU + "找到采购单详情" + productTemps.size());
+			// 本地校验
+			checkTempProducts(productTemps);
+			// 保存到公共库
+			saveToDataCenter(productTemps);
+			System.out.println("循环一次物料:" + productTemps.size());
+			i += productTemps.size();
+			System.out.println("结束循环:" + page + "耗时:" + (System.currentTimeMillis() - start));
+		}
+		System.out.println("总计处理物料:" + i);
+		System.out.println("结束循环耗时:" + (System.currentTimeMillis() - start));
+	}
+
+	/**
+	 * 校验导入的物料
+	 *
+	 * @param temps
+	 */
+	private void checkTempProducts(List<ProductTemp> temps) {
+		long start = System.currentTimeMillis();
+		if (!CollectionUtils.isEmpty(temps)) {
+			String importId = temps.get(0).getPr_import_id();
+			// 放入数据库
+			productTempDao.save(temps);
+			// 匹配已存在物料
+			productTempDao.matchExists(importId);
+			// 已禁用物料自动解禁
+			productTempDao.toggleDisabled(importId);
+//			// 返回在物料库已存在的物料名称
+//			List<String> existed = productTempDao.getExistsTitle(importId);
+//			if (!CollectionUtils.isEmpty(existed)) {
+//				modelMap.put("existed", existed);
+//			}
+//			// 返回在个人物料库已存在的物料名称
+//			List<String> userExisted = productTempDao.getUserExistsTitle(importId);
+//			if (!CollectionUtils.isEmpty(userExisted)) {
+//				modelMap.put("alters", userExisted);
+//			}
+			System.out.println("校验:" + (System.currentTimeMillis() - start));
+		}
+	}
+
+	/**
+	 * 保存到公共库
+	 */
+	private void saveToDataCenter(List<ProductTemp> temps) throws Exception {
+		long start = System.currentTimeMillis();
+		if (!CollectionUtils.isEmpty(temps)) {
+			String importId = temps.get(0).getPr_import_id();
+			// 已匹配+未匹配到的物料
+			List<Product> products = productTempDao.getProducts(importId);
+			System.out.println("取匹配后结果:" + (System.currentTimeMillis() - start));
+			start = System.currentTimeMillis();
+			// 更新物料并插入个人物料
+			ModelMap map = ProductUtils.paginationUpdateAndAddToProductUser(products);
+			System.out.println("更新物料:" + (System.currentTimeMillis() - start));
+//				if ("true".equals(map.get("success"))) {
+//					modelMap.put("success", null != map.get("result") ? map.get("result") : 0);
+//				} else {
+//					modelMap.put("error", "物料添加失败(" + null != map.get("message") ? map.get("message") : "" + ")");
+//				}
+//                start = System.currentTimeMillis();
+//                if (!CollectionUtils.isEmpty(idList)) {
+//                    // 更新个人物料
+//                    List<ProductUsers> productUsersList = productTempDao.getNotMatchedProductUsers(importId,
+//                            temps.get(0).getPr_enuu(), temps.get(0).getPr_useruu(), idList);
+//                    if (!CollectionUtils.isEmpty(productUsersList)) {
+//                        ProductUtils.updateProductUsersByBatch(productUsersList);
+//                        modelMap.put("success", productUsersList.size());
+//                        System.out.println("更新个人物料:" + (System.currentTimeMillis() - start));
+//                    }
+//                }
+		}
+	}
 }

+ 131 - 158
src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.core.util.StringUtil;
 import com.uas.platform.b2b.dao.CommonDao;
 import com.uas.platform.b2b.dao.DistributeDao;
 import com.uas.platform.b2b.dao.EnterpriseDao;
@@ -327,179 +328,132 @@ public class VendorsServiceImpl implements VendorService {
 	 * @return
 	 */
 	@Override
-	public com.uas.account.support.Page<VendorRecommend> getVendorRecommend(String productMatchCondition, String enterpriseMatchCondition, String productCondition, int page, int size) {
+	public com.uas.account.support.Page<VendorRecommend> getVendorRecommend(String productMatchCondition, String enterpriseMatchCondition, int page, int size) {
 		long start = System.currentTimeMillis();
 		final Long enUU = SystemSession.getUser().getEnterprise().getUu();
-		String cmpCodesSql = concatProductCondition(enUU, productMatchCondition, productCondition);
+		if (StringUtils.isEmpty(productMatchCondition)) {
+			productMatchCondition = " 1=1 ";
+		}
+		if (StringUtils.isEmpty(enterpriseMatchCondition)) {
+			enterpriseMatchCondition = " 1=1 ";
+		}
+		// 查询所有的企业信息
+		StringBuffer enterpriseSql = new StringBuffer();
+		enterpriseSql.append("select en.en_uu, en.en_name, en.en_shortname, en.en_address, en.en_tel, en.en_email, en.en_corporation, en.en_businesscode, en.en_profession, en.en_tags, en.en_contactman, en.en_contacttel from sec$enterprises en right join (" +
+				" select en_uu from sec$enterprises left join v$products on en_uu = pr_enuu  where ").append(productMatchCondition).append(" and pr_issale = 1 and pr_b2bdisabled <> 1 " +
+				" and en_uu <> ").append(enUU).append(" and en_name not like '%测试%' and en_name not like '%test%' and ").append(enterpriseMatchCondition).append(" group by en_uu order by count(1) desc" +
+				" ) a on en.en_uu = a.en_uu order by en.en_weight desc");
 		// rownum 控制
-		String rownumSql = ") t where rownum <= " + page * size + ") where r1 > " + (page - 1) * size;
+		String rownumSql = ") t where rownum <= " + page * size + ") s where r1 > " + (page - 1) * size;
 		// 查找非供应商的卖当前商品的企业UU
 		StringBuffer vendorRecommendUusSql = new StringBuffer();
-//		StringBuffer vendorRecommendUuNumSql = new StringBuffer();
-		vendorRecommendUusSql.append("select en_uu,hitNums,(select wm_concat(pr_title || '(' || pr_brand || ')') from v$products where pr_enuu=en_uu and exists (" +
-				"select 1 from v$products B where B.pr_cmpcode = pr_cmpcode and B.pr_enuu = ").append(enUU).append(" and B.pr_ispurchase = 1 and nvl(B.pr_issale, 0) <> 1) and rownum<5 ) productInfo, (" +
-				"select 1 from purc$vendors where ve_vendenuu = en_uu and ve_myenuu = ").append(enUU).append(") isVendor from (select t.*,rownum as r1 from (" +
-				"select en_uu,hitNums from (select en_uu,count(en_uu) as hitNums from sec$enterprises left join v$products on en_uu = pr_enuu " +
-				" where 1=1 and pr_issale = 1 and pr_b2bdisabled <> 1 and pr_cmpcode in (").append(cmpCodesSql).append(") and en_uu <> ").append(enUU);
-//		vendorRecommendUuNumSql.append("select count(distinct(en_uu)) from sec$enterprises left join v$products on en_uu = pr_enuu " +
-//				" where 1=1 and pr_issale = 1 and pr_b2bdisabled <> 1 and pr_cmpcode in (").append(cmpCodesSql).append(") and en_uu <> ").append(enUU);
-		if (null != enterpriseMatchCondition && !"".equals(enterpriseMatchCondition)) {
-			vendorRecommendUusSql.append(" and ").append(enterpriseMatchCondition);
-//			vendorRecommendUuNumSql.append(" and ").append(enterpriseMatchCondition);
-		}
-		// 去掉测试企业
-        vendorRecommendUusSql.append("and en_name not like '%测试%'");
-		vendorRecommendUusSql.append(" group by en_uu order by count(en_uu) desc) a");
-		// 拼接未匹配到物料的有可售产品的供应商
-		StringBuffer enterpriseProdSaleSql = new StringBuffer();
-		// 匹配到的企业UU(包含自己企业UU)
-		String enUUSql = "select distinct(en_uu) from sec$enterprises left join v$products p on en_uu = p.pr_enuu where p.pr_issale = 1 and p.pr_b2bdisabled <> 1 and exists (" +
-				" select 1 from v$products pr  where pr.pr_ispurchase = 1 and  nvl(pr.pr_issale, 0) <> 1 and pr.pr_cmpcode = p.pr_cmpcode and pr.pr_enuu = " + enUU + ") " +
-				" and en_uu <> " + enUU;
-		enterpriseProdSaleSql.append(
-				" select en_uu,0 as hitNums from (select en_uu from sec$enterprises left join v$products on en_uu = pr_enuu " +
-				" where pr_issale = 1 and pr_b2bdisabled <> 1 and en_uu <> ").append(enUU).append(" and en_uu not in (")
-                .append(enUUSql).append(")");
-		if (null != enterpriseMatchCondition && !"".equals(enterpriseMatchCondition)) {
-			enterpriseProdSaleSql.append(" and ").append(enterpriseMatchCondition);
-		}
-        // 去掉测试企业
-        enterpriseProdSaleSql.append("and en_name not like '%测试%'");
-		enterpriseProdSaleSql.append(" group by en_uu order by count(pr_issale) desc) b");
-		vendorRecommendUusSql.append(" union all ").append(enterpriseProdSaleSql);
-		vendorRecommendUusSql.append(rownumSql);
+		vendorRecommendUusSql.append("select s.*,( select wm_concat(pr_title || (case when pr_brand is not null then '(' || pr_brand || ')' else ' ' end)) from v$products where pr_enuu=en_uu and ").append(productMatchCondition)
+				.append(" and exists (select 1 from v$products B where B.pr_cmpcode = pr_cmpcode and B.pr_enuu = ").append(enUU)
+				.append(" and B.pr_ispurchase = 1 and nvl(B.pr_issale, 0) <> 1) and rownum<5 ) productInfo, (select 1 from purc$vendors where ve_vendenuu = en_uu and ve_myenuu = ")
+				.append(enUU).append(") isVendor from (select t.*,rownum as r1 from (").append(enterpriseSql).append(rownumSql);
 		// 因为需求更改为所有有销售产品的企业都会被返回,所以total直接取除本企业外其他有销售产品的企业数即可,之前的匹配企业数不再返回
 		StringBuffer totalSql = new StringBuffer().append(" select count(1) from (select en_uu from sec$enterprises left join " +
 				" v$products on en_uu = pr_enuu where pr_issale = 1 and pr_b2bdisabled <> 1 and en_uu <> ")
 				.append(enUU).append(" group by en_uu)");
         System.out.println("SQL:" + vendorRecommendUusSql.toString());
-//        System.out.println("NUM_SQL:" + totalSql.toString());
+        System.out.println("NUM_SQL:" + totalSql.toString());
 		Integer total = commonDao.queryForObject(totalSql.toString(), Integer.class);
 		List<VendorRecommend> vendorRecommends = commonDao.query(vendorRecommendUusSql.toString(), VendorRecommend.class);
 		System.out.println("查找完企业UU" + (System.currentTimeMillis() - start));
-		return getVendorRecommendByVendUUs(enUU, vendorRecommends, page, size, total);
+		return new com.uas.account.support.Page<VendorRecommend>(page, size, vendorRecommends, total);
 	}
 
-	/**
-	 * 组装物料匹配条件
-	 * @param enUU  企业UU
-	 * @param productMatchCondition 物料模糊匹配条件
-	 * @param productCondition 物料精确匹配条件
-	 * @return
-	 */
-	private String concatProductCondition(Long enUU, String productMatchCondition, String productCondition) {
-		// 先查询当前企业的采购物料(待购&&不在售)的标准物料标准料号
-		StringBuffer cmpCodesSql = new StringBuffer().append("select distinct(pr.pr_cmpcode) from v$products pr " +
-				" where pr.pr_ispurchase = 1 and  nvl(pr_issale, 0) <> 1 and pr.pr_enuu = ").append(enUU);
-		if (null != productMatchCondition && !"".equals(productMatchCondition)) {
-			cmpCodesSql.append(" and ").append(productMatchCondition);
-		}
-		// productCondition 不为空时,使用其中条件进行精确匹配
-		if (null != productCondition && !"".equals(productCondition)) {
-			JSONObject prodCondition = JSON.parseObject(productCondition);
-			String code = (String) prodCondition.get("pr_code");
-			String title = (String) prodCondition.get("pr_title");
-			String spec = (String) prodCondition.get("pr_spec");
-			if (null != code && !"".equals(code)) {
-				List<Product> products = productDao.findByEnUUAndCode(enUU, code);
-				// 已上传的,标准物料使用原厂型号精确匹配,并根据物料名称模糊搜索, 非标物料使用物料名称模糊搜索
-				if (!CollectionUtils.isEmpty(products)) {
-					Product product = products.get(0);
-					cmpCodesSql.append(" and pr.pr_title like '%").append(product.getTitle()).append("%' ");
-					if (product.getStandard() == 1) {
-						cmpCodesSql.append(" and pr.pr_cmpcode = ").append(product.getCmpCode());
-					}
-				} else {
-					if (null != title && !"".equals(title)) {
-						cmpCodesSql.append(" and pr.pr_title like '%").append(title).append("%' ");
-					}
-				}
-			} else if (null != title && !"".equals(title)) {
-				cmpCodesSql.append(" and pr.pr_title like '%").append(title).append("%' ");
-			} else if (null != spec && !"".equals(spec)) {
-				cmpCodesSql.append(" and pr.pr_spec like '%").append(spec).append("%' ");
-			}
-		}
-		return cmpCodesSql.toString();
-	}
-
-	/**
-	 * 根据供应商UU返回供应商推荐信息列表
-	 * @param enUU 本企业UU
-	 * @param vendorRecommends 供应商推荐实体 ,仅包含enuu和hitNums
-	 * @param page 页数
-	 * @param size 每页条数
-	 * @param total 总条数
-	 * @return 供应商推荐page
-	 */
-	private com.uas.account.support.Page<VendorRecommend> getVendorRecommendByVendUUs(Long enUU, List<VendorRecommend> vendorRecommends, int page, int size, Integer total) {
-		long start = System.currentTimeMillis();
-		List<VendorRecommend> content = new ArrayList<>();
-		for (VendorRecommend vendorRecommend : vendorRecommends) {
-//		    long start1 = System.currentTimeMillis();
-            Long vendUU = vendorRecommend.getEn_uu();
-            Enterprise enterprise = enterPriseDao.findOne(vendorRecommend.getEn_uu());
-		    if (null != enterprise) {
-                vendorRecommend = covert(enterprise, vendorRecommend);
-//                if (null != vendorRecommend.getHitNums() && vendorRecommend.getHitNums() > 0) {
-//                    StringBuffer productInfosSql = new StringBuffer();
-////                    StringBuffer productNumSql = new StringBuffer();
-//                    productInfosSql.append("select wm_concat(pr_title || '(' || pr_brand || ')') productInfo from (select pr_title,pr_brand from v$products pr where pr.pr_enuu = ")
-//							.append(vendUU).append(" and pr.pr_issale =1 and exists (select 1 from v$products p1 where p1.pr_cmpcode = pr.pr_cmpcode and p1.pr_ispurchase = 1 " +
-//							"and nvl(pr_issale, 0) <> 1 and p1.pr_b2bdisabled <> 1 and p1.pr_enuu = ").append(enUU).append(") order by pr_standard desc,pr_id desc) where rownum <= 5");
-//					System.out.println(productInfosSql.toString() + ";");
-////                    productNumSql.append("select count(1) from v$products pr where pr.pr_enuu = ").append(vendUU)
-////                            .append(" and pr.pr_issale =1 and exists (select 1 from v$products p1 " +
-////                                    " where p1.pr_cmpcode = pr.pr_cmpcode and p1.pr_ispurchase = 1 and nvl(pr_issale, 0) <> 1 " +
-////                                    " and p1.pr_b2bdisabled <> 1 and p1.pr_enuu = ")
-////                            .append(enUU).append(")");
-////                System.out.println(productInfosSql.toString() + ";");
-////                System.out.println(productNumSql.toString() + ";");
-//                    // 获取前五条匹配物料
-//                    String productInfo = commonDao.queryForObject(productInfosSql.toString(), String.class);
-////                    Integer hitNums = commonDao.queryForObject(productNumSql.toString(), Integer.class);
-//                    vendorRecommend.setProductInfo(productInfo.replace("()", ""));
-////                    vendorRecommend.setHitNums(hitNums);
-//                }
-//                List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(enUU, vendUU);
-//                if (!CollectionUtils.isEmpty(vendors)) {
-//                    vendorRecommend.setIsVendor(Constant.YES);
-//                } else {
-//                    vendorRecommend.setIsVendor(Constant.NO);
-//                }
-                content.add(vendorRecommend);
-//                System.out.println("处理完一条数据:" + (System.currentTimeMillis() - start1));
-            }
-		}
-		System.out.println("处理完所有数据:" + (System.currentTimeMillis() - start));
-		// 返回分页信息
-		return new com.uas.account.support.Page<VendorRecommend>(page, size, content, total);
-	}
-
-	/**
-	 * 企业信息转换为推荐供应商信息
-	 * @param enterprise 企业信息
-     * @param vendorRecommend 包含enuu 和hitNums 的供应商推荐信息
-	 * @return
-	 */
-	private VendorRecommend covert(Enterprise enterprise, VendorRecommend vendorRecommend) {
-		vendorRecommend.setEn_address(enterprise.getEnAddress());
-		vendorRecommend.setEn_businesscode(enterprise.getEnBussinessCode());
-		vendorRecommend.setEn_contactman(enterprise.getContactMan());
-		vendorRecommend.setEn_contacttel(enterprise.getContactTel());
-		vendorRecommend.setEn_corporation(enterprise.getEnCorporation());
-		vendorRecommend.setEn_email(enterprise.getEnEmail());
-		vendorRecommend.setEn_name(enterprise.getEnName());
-		vendorRecommend.setEn_profession(enterprise.getProfession());
-		vendorRecommend.setEn_shortname(enterprise.getEnShortname());
-		vendorRecommend.setEn_tags(enterprise.getTags());
-		vendorRecommend.setEn_tel(enterprise.getEnTel());
-		vendorRecommend.setEn_uu(enterprise.getUu());
-		if (!StringUtils.isEmpty(vendorRecommend.getProductInfo())) {
-			vendorRecommend.setProductInfo(vendorRecommend.getProductInfo().replace("()", " "));
-		}
-		return vendorRecommend;
-	}
+//	/**
+//	 * 组装物料匹配条件
+//	 * @param enUU  企业UU
+//	 * @param productMatchCondition 物料模糊匹配条件
+//	 * @param productCondition 物料精确匹配条件
+//	 * @return
+//	 */
+//	private String concatProductCondition(Long enUU, String productMatchCondition, String productCondition) {
+//		// 先查询当前企业的采购物料(待购&&不在售)的标准物料标准料号
+//		StringBuffer productMatchSql = new StringBuffer();
+//		if (null != productMatchCondition && !"".equals(productMatchCondition)) {
+//			productMatchSql.append(" and ").append(productMatchCondition);
+//		}
+//		// productCondition 不为空时,使用其中条件进行精确匹配
+//		if (null != productCondition && !"".equals(productCondition)) {
+//			JSONObject prodCondition = JSON.parseObject(productCondition);
+//			String code = (String) prodCondition.get("pr_code");
+//			String title = (String) prodCondition.get("pr_title");
+//			String spec = (String) prodCondition.get("pr_spec");
+//			if (null != code && !"".equals(code)) {
+//				List<Product> products = productDao.findByEnUUAndCode(enUU, code);
+//				// 已上传的,标准物料使用原厂型号精确匹配,并根据物料名称模糊搜索, 非标物料使用物料名称模糊搜索
+//				if (!CollectionUtils.isEmpty(products)) {
+//					Product product = products.get(0);
+//					productMatchSql.append(" and pr.pr_title like '%").append(product.getTitle()).append("%' ");
+//					if (product.getStandard() == 1) {
+//						productMatchSql.append(" and pr.pr_cmpcode = ").append(product.getCmpCode());
+//					}
+//				} else {
+//					if (null != title && !"".equals(title)) {
+//						productMatchSql.append(" and pr.pr_title like '%").append(title).append("%' ");
+//					}
+//				}
+//			} else if (null != title && !"".equals(title)) {
+//				productMatchSql.append(" and pr.pr_title like '%").append(title).append("%' ");
+//			} else if (null != spec && !"".equals(spec)) {
+//				productMatchSql.append(" and pr.pr_spec like '%").append(spec).append("%' ");
+//			}
+//		}
+//		return productMatchSql.toString();
+//	}
+
+//	/**
+//	 * 根据供应商UU返回供应商推荐信息列表
+//	 * @param enUU 本企业UU
+//	 * @param vendorRecommends 供应商推荐实体 ,仅包含enuu和hitNums
+//	 * @param page 页数
+//	 * @param size 每页条数
+//	 * @param total 总条数
+//	 * @return 供应商推荐page
+//	 */
+//	private com.uas.account.support.Page<VendorRecommend> getVendorRecommendByVendUUs(Long enUU, List<VendorRecommend> vendorRecommends, int page, int size, Integer total) {
+//		long start = System.currentTimeMillis();
+//		List<VendorRecommend> content = new ArrayList<>();
+//		for (VendorRecommend vendorRecommend : vendorRecommends) {
+//            Long vendUU = vendorRecommend.getEn_uu();
+//            Enterprise enterprise = enterPriseDao.findOne(vendorRecommend.getEn_uu());
+//		    if (null != enterprise) {
+//                vendorRecommend = covert(enterprise, vendorRecommend);
+//                content.add(vendorRecommend);
+//            }
+//		}
+//		System.out.println("处理完所有数据:" + (System.currentTimeMillis() - start));
+//		// 返回分页信息
+//		return new com.uas.account.support.Page<VendorRecommend>(page, size, content, total);
+//	}
+//
+//	/**
+//	 * 企业信息转换为推荐供应商信息
+//	 * @param enterprise 企业信息
+//     * @param vendorRecommend 包含enuu 和hitNums 的供应商推荐信息
+//	 * @return
+//	 */
+//	private VendorRecommend covert(Enterprise enterprise, VendorRecommend vendorRecommend) {
+//		vendorRecommend.setEn_address(enterprise.getEnAddress());
+//		vendorRecommend.setEn_businesscode(enterprise.getEnBussinessCode());
+//		vendorRecommend.setEn_contactman(enterprise.getContactMan());
+//		vendorRecommend.setEn_contacttel(enterprise.getContactTel());
+//		vendorRecommend.setEn_corporation(enterprise.getEnCorporation());
+//		vendorRecommend.setEn_email(enterprise.getEnEmail());
+//		vendorRecommend.setEn_name(enterprise.getEnName());
+//		vendorRecommend.setEn_profession(enterprise.getProfession());
+//		vendorRecommend.setEn_shortname(enterprise.getEnShortname());
+//		vendorRecommend.setEn_tags(enterprise.getTags());
+//		vendorRecommend.setEn_tel(enterprise.getEnTel());
+//		vendorRecommend.setEn_uu(enterprise.getUu());
+//		if (!StringUtils.isEmpty(vendorRecommend.getProductInfo())) {
+//			vendorRecommend.setProductInfo(vendorRecommend.getProductInfo().replace("()", " "));
+//		}
+//		return vendorRecommend;
+//	}
 
 	/**
 	 * 获取推荐企业物料列表(匹配到的排前面)
@@ -564,4 +518,23 @@ public class VendorsServiceImpl implements VendorService {
 		return new com.uas.account.support.Page<>(page, size, products, count);
 	}
 
+	/**
+	 * 根据条件获取物料型号和品牌值对
+	 *
+	 * @param field 需要的字段名
+	 * @param condition 物料模糊匹配条件
+	 * @return 物料型号和品牌值对List
+	 */
+	@Override
+	public List<Product> getProductAssociate(String field, String condition) {
+		if (StringUtils.isEmpty(condition) || StringUtils.isEmpty(field)) {
+			return null;
+		}
+		String value = field.replace("pr_", "");
+		String productSql = "select " + field + " as " + value +" from (" +
+				" select " + field + " from v$products where " + condition + " group by " + field + " order by count(1) desc" +
+				") where rownum <= 10";
+		return commonDao.query(productSql, Product.class);
+	}
+
 }

+ 6 - 0
src/main/resources/prod/jdbc.properties

@@ -8,6 +8,12 @@ jdbc.minIdle=5
 jdbc.suspectTimeout=60
 jdbc.timeBetweenEvictionRunsMillis=30000
 jdbc.minEvictableIdleTimeMillis=60000
+jdbc.validationQuery=SELECT 1 FROM DUAL
+jdbc.testWhileIdle=true
+jdbc.testOnBorrow=true
+jdbc.testOmReturn=false
+jdbc.removeAbandoned=true
+jdbc.removeAbandonedTimeout=1800
 
 #manage.ubtob.com
 manage.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver

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

@@ -83,6 +83,8 @@
 		<property name="defaultAutoCommit" value="true" />
 		<!-- 回收超时连接 -->
 		<property name="removeAbandoned" value="true" />
+		<!--延长超时时间-->
+		<property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
 		<!-- 连接空闲时校验连接有效性 -->
 		<property name="testWhileIdle" value="true" />
 		<!-- 校验连接有效性的sql -->

+ 7 - 1
src/main/resources/test/jdbc.properties

@@ -1,5 +1,5 @@
 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
-jdbc.url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
+jdbc.url=jdbc:oracle:thin:@218.17.158.219:1521:orcl
 jdbc.username=uuplatformdemo
 jdbc.password=selectuuplatform
 jdbc.initialSize=5
@@ -8,6 +8,12 @@ jdbc.minIdle=5
 jdbc.suspectTimeout=60
 jdbc.timeBetweenEvictionRunsMillis=30000
 jdbc.minEvictableIdleTimeMillis=60000
+jdbc.validationQuery=SELECT 1 FROM DUAL
+jdbc.testWhileIdle=true
+jdbc.testOnBorrow=true
+jdbc.testOmReturn=false
+jdbc.removeAbandoned=true
+jdbc.removeAbandonedTimeout=1800
 
 #manage.ubtob.com
 manage.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver