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

物料操作修改调用公共接口

dongbw 8 лет назад
Родитель
Сommit
f8e4ced6d7

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

@@ -496,7 +496,7 @@ public class BaseInfoController {
 	 */
 	@RequestMapping(value = "/edit/toggle/{status}", method = RequestMethod.POST)
 	@ResponseBody
-	public void switchPorduct(@PathVariable("status") String status) {
+	public void switchPorduct(@PathVariable("status") String status) throws Exception {
 		baseInfoService.switchPorduct(status);
 	}
 
@@ -507,7 +507,7 @@ public class BaseInfoController {
 	 */
 	@RequestMapping(value = "/edit/matchbytype/{type}", method = RequestMethod.POST)
 	@ResponseBody
-	private ModelMap matchall(@PathVariable String type) {
+	private ModelMap matchall(@PathVariable String type) throws Exception {
 		return productService.matchall(type);
 	}
 

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

@@ -293,7 +293,7 @@ public class ProductController {
 	}
 
 	/**
-	 * 批量修改物料数据
+	 * 批量修改物料数据 -- 未使用
 	 * 
 	 * @param products
 	 * @param updatetype
@@ -315,7 +315,7 @@ public class ProductController {
 	 */
 	@RequestMapping(value = "/alterByBatch", method = RequestMethod.POST)
 	@ResponseBody
-	private ModelMap alterByBatch(String parameter) {
+	private ModelMap alterByBatch(String parameter) throws Exception {
 		UpdateByBatchParameter param = JSONObject.parseObject(parameter, UpdateByBatchParameter.class);
 		return productService.alterByBatch(param);
 	}
@@ -351,7 +351,7 @@ public class ProductController {
 	 */
 	@RequestMapping(value = "/matchbytype/{type}", method = RequestMethod.GET)
 	@ResponseBody
-	private ModelMap matchall(@PathVariable String type) {
+	private ModelMap matchall(@PathVariable String type) throws Exception {
 		return productService.matchall(type);
 	}
 

+ 12 - 12
src/main/java/com/uas/platform/b2b/dao/ProductDao.java

@@ -212,7 +212,7 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
 
 	/**
 	 * 一键开启(关闭)销售(采购)
-	 * 
+	 *
 	 * @param enuu
 	 * @param switchtype
 	 * @param status
@@ -249,15 +249,15 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
 	 */
 	List<Product> findByEnUUAndPcmpcodeAndPbrand(Long enuu, String pcmpcoe, String brand);
 
-	/**
-	 * 通过企业uu和物料编号禁用物料
-	 *
-	 * @param enUU 物料所属企业UU
-	 * @param code 物料号
-	 * @param b2bDisabled 是否禁用  1为禁用  其他为未禁用
-	 */
-	@Transactional
-	@Modifying
-	@Query("update Product p set p.productStatus.b2bDisabled = :b2bDisabled where p.enUU = :enUU and p.code = :code")
-	int updateB2bEnabled(@Param("enUU") Long enUU, @Param("code") String code, @Param("b2bDisabled") Short b2bDisabled);
+//	/**  // 此方法已弃用
+//	 * 通过企业uu和物料编号禁用物料
+//	 *
+//	 * @param enUU 物料所属企业UU
+//	 * @param code 物料号
+//	 * @param b2bDisabled 是否禁用  1为禁用  其他为未禁用
+//	 */
+//	@Transactional
+//	@Modifying
+//	@Query("update Product p set p.productStatus.b2bDisabled = :b2bDisabled where p.enUU = :enUU and p.code = :code")
+//	int updateB2bEnabled(@Param("enUU") Long enUU, @Param("code") String code, @Param("b2bDisabled") Short b2bDisabled);
 }

+ 14 - 0
src/main/java/com/uas/platform/b2b/dao/ProductStatusDao.java

@@ -0,0 +1,14 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.ProductStatus;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 物料状态
+ */
+@Repository
+public interface ProductStatusDao extends JpaSpecificationExecutor<ProductStatus>, JpaRepository<ProductStatus, Long> {
+
+}

+ 8 - 8
src/main/java/com/uas/platform/b2b/model/Product.java

@@ -18,7 +18,7 @@ import java.util.Set;
  *
  */
 @Entity
-@Table(name = "products")
+@Table(name = "v$products")
 @Logger
 @Cacheable
 @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "com.uas.platform.b2b.model.Product")
@@ -347,10 +347,10 @@ public class Product {
 	private Boolean isBreakUp;
 
 	/**
-	 * 关联B2B物料状态
+	 * b2b物料禁用状态
 	 */
-	@OneToOne(mappedBy = "product", cascade = CascadeType.ALL)
-	private ProductStatus productStatus;
+	@Column(name = "pr_b2bdisabled")
+	private Short b2bDisabled;
 
 	public Product() {
 	}
@@ -768,11 +768,11 @@ public class Product {
 		isBreakUp = breakUp;
 	}
 
-	public ProductStatus getProductStatus() {
-		return productStatus;
+	public Short getB2bDisabled() {
+		return b2bDisabled;
 	}
 
-	public void setProductStatus(ProductStatus productStatus) {
-		this.productStatus = productStatus;
+	public void setB2bDisabled(Short b2bDisabled) {
+		this.b2bDisabled = b2bDisabled;
 	}
 }

+ 9 - 2
src/main/java/com/uas/platform/b2b/model/ProductStatus.java

@@ -41,6 +41,15 @@ public class ProductStatus implements Serializable{
     @JoinColumn(name = "prs_prid")
     private Product product;
 
+    public ProductStatus() {
+
+    }
+
+    public ProductStatus(Product product, Short b2bDisabled) {
+        this.product = product;
+        this.b2bDisabled = b2bDisabled;
+    }
+
     public Long getId() {
         return id;
     }
@@ -57,8 +66,6 @@ public class ProductStatus implements Serializable{
         this.b2bDisabled = b2bDisabled;
     }
 
-    @JsonIgnore
-    @JSONField(serialize = false)
     public Product getProduct() {
         return product;
     }

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

@@ -0,0 +1,176 @@
+package com.uas.platform.b2b.ps;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductMatchResult;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.HttpUtil.Response;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 对接公共物料服务的接口
+ *
+ * @author dongbw
+ * 2018-01-22
+ */
+public class ProductUtils {
+
+    private static final String PRODUCT_PUBLIC_SERVICE_DEV_URL = "http://218.17.158.219:24000";
+
+    /**
+     * 批量更新物料
+     *
+     * @author dongbw
+     * @param  products 要保存的物料信息
+     * @return 所有更新成功的id
+     * @throws Exception
+     */
+    public static List<Long> update(List<Product> products) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("data", FlexJsonUtils.toJsonDeep(products));
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/update", params);
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            if (null != res.getResponseText()) {
+                // 保存成功物料的id
+                return JSON.parseArray(res.getResponseText(), Long.class);
+            }
+        } else {
+         throw new RuntimeException("更新物料失败");
+        }
+        return null;
+    }
+
+    /**
+     * 单个更新物料
+     *
+     * @author dongbw
+     * @param  product 要保存的物料信息
+     * @return 更新成功id
+     * @throws Exception
+     */
+    public static Long updateOne(Product product) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        List<Product> products = new ArrayList<>();
+        products.add(product);
+        params.put("data", FlexJsonUtils.toJsonDeep(products));
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/update", params);
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            if (null != res.getResponseText()) {
+                // 保存成功物料的id
+                List<Long> ids = JSON.parseArray(res.getResponseText(), Long.class);
+                if (!CollectionUtils.isEmpty(ids)) {
+                    return ids.get(0);
+                }
+            }
+        } else {
+            throw new RuntimeException("更新物料失败");
+        }
+        return null;
+    }
+
+
+    /**
+     * 单个删除个人物料
+     *
+     * @author dongbw
+     * @param  id 要删除的个人物料id
+     * @return
+     * @throws Exception
+     */
+    public static ModelMap deleteProductUser(Long id) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("id", id);
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/productuser/edit/delete", params);
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            return new ModelMap("success", "删除个人物料成功");
+        } else {
+            throw new RuntimeException("删除个人物料失败");
+        }
+    }
+
+    /**
+     * 子应用删除物料时,删除匹配结果和个人物料
+     *
+     * @author dongbw
+     * @param  id 要删除的个人物料id
+     * @return
+     * @throws Exception
+     */
+    public static ModelMap deleteMatchResultAndProductUser(Long id) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("id", id);
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/matchResultAndProductUser/delete", params);
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            return new ModelMap("success", "删除匹配结果和个人物料");
+        } else {
+            throw new RuntimeException("删除匹配结果和个人失败");
+        }
+    }
+
+    /**
+     * 一键开启/关闭物料销售/采购
+     * @param enUU 企业UU
+     * @param switchType 开关类型 sale or purc
+     * @param switchStatus 开关状态 1 or 0
+     */
+    public static void switchProductByEnuuAndTypeAndStatus(Long enUU, String switchType, Integer switchStatus) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("enUU", enUU);
+        params.put("switchType", switchType);
+        params.put("switchStatus", switchStatus);
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/saleAndPurchase/edit/toggle", params);
+        if (HttpStatus.OK.value() != res.getStatusCode()) {
+            throw new RuntimeException("一键操作失败");
+        }
+    }
+
+    /**
+     * 一键匹配
+     * @param enUU 匹配的企业UU
+     */
+    public static void matchAll(Long enUU) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("enUU", enUU);
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/match/nonProduct", params);
+        if (HttpStatus.OK.value() != res.getStatusCode()) {
+            throw new RuntimeException("一键匹配失败");
+        }
+    }
+
+    /**
+     * 根据id 和 开关状态更新物料销售属性
+     * @param id 物料id
+     * @param switchType 开关类型
+     * @param switchStatus 开关状态
+     */
+    public static void switchProduct(Long id, String switchType, Integer switchStatus) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("id", id);
+        params.put("switchType", switchType);
+        params.put("switchStatus", switchStatus);
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/edit/toggle/one", params);
+        if (HttpStatus.OK.value() != res.getStatusCode()) {
+            throw new RuntimeException("操作失败");
+        }
+    }
+
+    /**
+     *
+     * @param results  匹配结果List
+     */
+    public static void saveProductMatchResults(List<ProductMatchResult> results) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("data", FlexJsonUtils.toJsonDeep(results));
+        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_DEV_URL + "/product/matchResult/save", params);
+        if (HttpStatus.OK.value() != res.getStatusCode()) {
+            throw new RuntimeException("保存匹配结果失败");
+        }
+    }
+}

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

@@ -122,5 +122,5 @@ public interface BaseInfoService {
 	 * 
 	 * @param status
 	 */
-	public void switchPorduct(String status);
+	public void switchPorduct(String status) throws Exception;
 }

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

@@ -78,7 +78,7 @@ public interface ProductService {
 	 * @param oldvalue2
 	 * @return
 	 */
-	public ModelMap alterByBatch(UpdateByBatchParameter param);
+	public ModelMap alterByBatch(UpdateByBatchParameter param) throws Exception;
 
 	/**
 	 * 获取企业所有的品牌
@@ -99,7 +99,7 @@ public interface ProductService {
 	 * 
 	 * @return
 	 */
-	public ModelMap matchall(String type);
+	public ModelMap matchall(String type) throws Exception;
 
 	/**
 	 * 通过型号匹配器件

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

@@ -3,15 +3,47 @@ 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.*;
-import com.uas.platform.b2b.model.*;
+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.ProductDao;
+import com.uas.platform.b2b.dao.ProductMatchResultDao;
+import com.uas.platform.b2b.dao.ProductStatusDao;
+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.ProductStatus;
+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.ps.ProductUtils;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.BaseInfoService;
 import com.uas.platform.b2b.service.ComponentService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
-import com.uas.platform.b2b.temporary.model.*;
+import com.uas.platform.b2b.temporary.model.BasePartnersInfo;
+import com.uas.platform.b2b.temporary.model.NewPurcOrder;
+import com.uas.platform.b2b.temporary.model.OrderItems;
+import com.uas.platform.b2b.temporary.model.PartStatus;
+import com.uas.platform.b2b.temporary.model.ProdInfo;
+import com.uas.platform.b2b.temporary.model.UserSpaceDetail;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
@@ -32,7 +64,12 @@ import org.springframework.ui.ModelMap;
 
 import javax.transaction.Transactional;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 @Service
 @Transactional
@@ -85,6 +122,9 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 	@Autowired
     private CommonDao commonDao;
 
+	@Autowired
+	private ProductStatusDao productStatusDao;
+
 	
 	/**
 	 * 批量导入物料资料
@@ -214,9 +254,9 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 			}
 			if (!CollectionUtils.isEmpty(products)) {
 				try {
-					products = productDao.save(products);
+					List<Long> ids = ProductUtils.update(products);
 //					saveUserOrders(products);
-					modelMap.put("success", products.size());
+					modelMap.put("success", ids != null ? ids.size() : 0);
 				} catch (Exception e) {
 					modelMap.put("error", "存在编号相同的产品");
 				}
@@ -262,75 +302,47 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 	@Override
 	public ModelMap update(Product prodInfo, FileUpload uploadItem) throws Exception {
 		ModelMap map = new ModelMap();
-		/*if (uploadItem.getFile() != null) {// 附件存在
+		if (uploadItem.getFile() != null) {// 附件存在
 			Attach attach = attachService.upload(uploadItem, "productAttach", "平台客户上传物料照片或附件");
 			if (attach == null) {
 				map.put("error", "文件太大");
 			} else {
-				prodInfo.setAttach(attach);
+				prodInfo.setAttachment(attach.getPath());
 			}
 		}
 		if (prodInfo.getCmpCode() != null) {
 			prodInfo.setPcmpcode(prodInfo.getCmpCode());
 		}
-		if (prodInfo.getIsbusiness().equals(Constant.YES)) {// 如果有业务关系,导入的信息不能更改,采用下面的数据操作
-			// 根据填写的标准器件库的信息进行关联判断
-			if (prodInfo.getPcmpcode() != null && prodInfo.getPbranden() != null && prodInfo.getKind() != null) {
-				List<Component> cmps = componentService.findByCode(prodInfo.getPcmpcode());
-				if (!CollectionUtils.isEmpty(cmps)) {
-					for (Component cmp : cmps) {
-						if (cmp.getBrand().getNameEn().equals(prodInfo.getPbranden())
-								&& cmp.getKind().getNameCn().equals(prodInfo.getKind())) {// 匹配标准
-							prodInfo.setPbrand(cmp.getBrand().getNameCn());
-							prodInfo.setKinden(cmp.getKind().getNameEn());
-							prodInfo.setCmpUuId(cmp.getUuid());
-							prodInfo.setStandard(Constant.YES);
-							break;
-						} else {
-							prodInfo.setCmpUuId(null);
-							prodInfo.setStandard(Constant.NO);
-						}
-					}
-				} else {
-					prodInfo.setCmpUuId(null);
-					prodInfo.setStandard(Constant.NO);
-				}
-			} else {
-				prodInfo.setCmpUuId(null);
-				prodInfo.setStandard(Constant.NO);
-			}
-		} else {// 没有业务关系,可以修改导入的产品的信息,标准的数据不进行操作
-			if (prodInfo.getCmpCode() != null && prodInfo.getBrand() != null && prodInfo.getTitle() != null) {
-				List<Component> cmps = componentService.findByCode(prodInfo.getCmpCode());
-				if (!CollectionUtils.isEmpty(cmps)) {
-					for (Component cmp : cmps) {
-						if (cmp.getBrand().getNameEn().equals(prodInfo.getBrand())
-								&& cmp.getKind().getNameCn().equals(prodInfo.getTitle())) {// 匹配标准
-							prodInfo.setPbrand(cmp.getBrand().getNameCn());
-							prodInfo.setKinden(cmp.getKind().getNameEn());
-							prodInfo.setCmpUuId(cmp.getUuid());
-							prodInfo.setPbranden(cmp.getBrand().getNameEn());
-							prodInfo.setKind(cmp.getKind().getNameCn());
-							prodInfo.setStandard(Constant.YES);
-							break;
-						} else {
-							prodInfo.setCmpUuId(null);
-							prodInfo.setStandard(Constant.NO);
-						}
+		if (prodInfo.getCmpCode() != null && prodInfo.getBrand() != null && prodInfo.getTitle() != null) {
+			List<Component> cmps = componentService.findByCode(prodInfo.getCmpCode());
+			if (!CollectionUtils.isEmpty(cmps)) {
+				for (Component cmp : cmps) {
+					if (cmp.getBrand().getNameEn().equals(prodInfo.getBrand())
+							&& cmp.getKind().getNameCn().equals(prodInfo.getTitle())) {// 匹配标准
+						prodInfo.setPbrand(cmp.getBrand().getNameCn());
+						prodInfo.setKinden(cmp.getKind().getNameEn());
+						prodInfo.setCmpUuId(cmp.getUuid());
+						prodInfo.setPbranden(cmp.getBrand().getNameEn());
+						prodInfo.setKind(cmp.getKind().getNameCn());
+						prodInfo.setStandard(Constant.YES);
+						break;
+					} else {
+						prodInfo.setCmpUuId(null);
+						prodInfo.setStandard(Constant.NO);
 					}
-				} else {
-					prodInfo.setCmpUuId(null);
-					prodInfo.setStandard(Constant.NO);
 				}
 			} else {
 				prodInfo.setCmpUuId(null);
 				prodInfo.setStandard(Constant.NO);
 			}
+		} else {
+			prodInfo.setCmpUuId(null);
+			prodInfo.setStandard(Constant.NO);
 		}
 		prodInfo.setErpDate(new Date());
-		prodInfo = productDao.save(prodInfo);
+		ProductUtils.updateOne(prodInfo);
 //		saveUserOrders(prodInfo);
-		map.put("success", "更新成功");*/
+		map.put("success", "更新成功");
 		return map;
 	}
 
@@ -340,12 +352,12 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 	@Override
 	public ModelMap addNewProduct(Product prodInfo, FileUpload uploadItem) throws Exception {
 		ModelMap map = new ModelMap();
-		/*if (uploadItem.getFile() != null) {// 附件存在
+		if (uploadItem.getFile() != null) {// 附件存在
 			Attach attach = attachService.upload(uploadItem, "productAttach", "平台客户上传物料照片或附件");
 			if (attach == null) {
 				map.put("error", "文件太大");
 			} else {
-				prodInfo.setAttach(attach);
+				prodInfo.setAttachment(attach.getPath());
 			}
 		}
 		List<Product> products = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(),
@@ -385,11 +397,11 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 			prodInfo.setEnUU(SystemSession.getUser().getEnterprise().getUu());
 			prodInfo.setSourceApp("B2B");
 			prodInfo.setErpDate(new Date());
-			prodInfo = productDao.save(prodInfo);
+			Long id = ProductUtils.updateOne(prodInfo);
 //			saveUserOrders(prodInfo);
-			map.put("id", prodInfo.getId());
+			map.put("id", id);
 			map.put("success", "物料添加成功");
-		}*/
+		}
 		return map;
 	}
 
@@ -417,36 +429,26 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 	public Product findById(Long id) {
 		Product product = productDao.findOne(id);
 		Integer num = productDao.findProductBusinessStatusById(id);
-//		if (num > 0) {
-//			product.setIsbusiness(Constant.YES);
-//		} else {
-//			product.setIsbusiness(Constant.NO);
-//		}
 		return product;
 	}
 
+	/**
+	 * 删除物料,设置成disabled
+	 * @param id 物料id
+	 */
 	@Override
 	public void deleteById(Long id) throws Exception {
-		if (productDao.exists(id)) {
-			// 先删除匹配结果的id
-			List<ProductMatchResult> results = productMatchResultDao.findByPrid(id);
-			if (!CollectionUtils.isEmpty(results)) {
-				productMatchResultDao.delete(results);
-			}
-			// 需要删除个人物料库的数据
-            deleteUserProduct(id);
-			productDao.delete(id);
+		Product product = productDao.findOne(id);
+		if (null != product) {
+			ProductUtils.deleteMatchResultAndProductUser(id);
+			// 物料禁用
+			ProductStatus productStatus = new ProductStatus();
+			productStatus.setProduct(product);
+			productStatus.setB2bDisabled(Constant.YES);
+			productStatusDao.save(productStatus);
 		}
 	}
 
-    /**
-     * 删除个人物料库的数据
-     * @param id
-     */
-    private void deleteUserProduct(Long id) {
-        commonDao.getJdbcTemplate().execute("delete product$users where pu_prid = " + id);
-    }
-
     @Override
 	public Vendor addCust(BasePartnersInfo partner) {
 		Enterprise enter = enterpriseDao.findEnterpriseByEnBussinessCode(partner.getVendUID());
@@ -824,7 +826,8 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 	}
 
 	@Override
-	public void switchPorduct(String status) {
+	public void switchPorduct(String status) throws Exception {
+		// sale or purc
 		String switchtype = "sale";
 		Integer switchstatus = 0;
 		Enterprise enter = SystemSession.getUser().getEnterprise();
@@ -836,6 +839,8 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 		enterpriseDao.save(enter);
 		productDao.switchProductByEnuuAndTypeAndStatus(SystemSession.getUser().getEnterprise().getUu(), switchtype,
 				switchstatus);
+		ProductUtils.switchProductByEnuuAndTypeAndStatus(SystemSession.getUser().getEnterprise().getUu(), switchtype,
+				switchstatus);
 	}
 
 }

+ 0 - 1
src/main/java/com/uas/platform/b2b/service/impl/EnquiryServiceImpl.java

@@ -11,7 +11,6 @@ import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.exception.NotFoundException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
-import com.uas.ps.core.util.exception.FlexJsonUtils;
 import com.uas.search.b2b.model.SPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 79 - 50
src/main/java/com/uas/platform/b2b/service/impl/ProductServiceImpl.java

@@ -1,11 +1,24 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.dao.ProductMatchResultDao;
+import com.uas.platform.b2b.dao.ProductStatusDao;
+import com.uas.platform.b2b.dao.ProductStoreStatusDao;
+import com.uas.platform.b2b.dao.ProductUsersDao;
+import com.uas.platform.b2b.dao.UserOrderDao;
 import com.uas.platform.b2b.erp.model.ProductSaler;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.event.ProductSaveEvent;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Component;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductMatchResult;
+import com.uas.platform.b2b.model.ProductStatus;
+import com.uas.platform.b2b.model.ProductStoreStatus;
+import com.uas.platform.b2b.model.ProductUsers;
+import com.uas.platform.b2b.model.UpdateType;
+import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.ComponentService;
 import com.uas.platform.b2b.service.ProductService;
@@ -63,6 +76,9 @@ public class ProductServiceImpl implements ProductService {
 	@Autowired
     private ProductUsersDao productUsersDao;
 
+	@Autowired
+    private ProductStatusDao productStatusDao;
+
 	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	private final static ErpBufferedLogger erpLogger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
@@ -96,9 +112,10 @@ public class ProductServiceImpl implements ProductService {
 	@Override
 	public void unlock(Long id) {
 		try {
-			Product prod = productDao.findOne(id);
-			prod.setIsSale(Constant.YES);
-			productDao.save(prod);
+            Product prod = productDao.findOne(id);
+            prod.setIsSale(Constant.YES);
+            productDao.save(prod);
+			ProductUtils.switchProduct(id, "sale", (int) Constant.YES);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -108,9 +125,10 @@ public class ProductServiceImpl implements ProductService {
 	@Override
 	public void lock(Long id) {
 		try {
-			Product prod = productDao.findOne(id);
-			prod.setIsSale(Constant.NO);
-			productDao.save(prod);
+            Product prod = productDao.findOne(id);
+            prod.setIsSale(Constant.YES);
+            productDao.save(prod);
+            ProductUtils.switchProduct(id, "sale", (int) Constant.NO);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -122,6 +140,7 @@ public class ProductServiceImpl implements ProductService {
 			Product prod = productDao.findOne(id);
 			prod.setIsPurchase(Constant.YES);
 			productDao.save(prod);
+            ProductUtils.switchProduct(id, "purc", (int) Constant.YES);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -133,6 +152,7 @@ public class ProductServiceImpl implements ProductService {
 			Product prod = productDao.findOne(id);
 			prod.setIsPurchase(Constant.NO);
 			productDao.save(prod);
+            ProductUtils.switchProduct(id, "purc", (int) Constant.NO);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -162,7 +182,7 @@ public class ProductServiceImpl implements ProductService {
 	}
 
 	@Override
-	public ModelMap alterByBatch(UpdateByBatchParameter param) {
+	public ModelMap alterByBatch(UpdateByBatchParameter param) throws Exception {
 		ModelMap map = new ModelMap();
 		Integer size = 0;
 		List<Product> prods = new ArrayList<Product>();
@@ -184,10 +204,10 @@ public class ProductServiceImpl implements ProductService {
 							product.setBrand(param.getNewvalue());
 							prods.add(product);
 						}
-						size = prods.size();
-						productDao.save(prods);
-					}
-				}
+                        size = prods.size();
+                    }
+                    ProductUtils.update(prods);
+                }
 
 			} else if (param.getUpdatetype().equals(UpdateType.TITLEUPDATE.getPhrase())) {
 				List<Product> products = new ArrayList<Product>();
@@ -205,11 +225,11 @@ public class ProductServiceImpl implements ProductService {
 					for (Product product : products) {
 						if (product.getCmpUuId() == null) {
 							product.setTitle(param.getNewvalue());
-							productDao.save(product);
 							prods.add(product);
 						}
 						size = prods.size();
 					}
+					ProductUtils.update(prods);
 				}
 			}
 			map.put("success", param.getUpdatetype() + "修改成功,更新数量为" + size);
@@ -244,7 +264,7 @@ public class ProductServiceImpl implements ProductService {
 	}
 
 	@Override
-	public ModelMap matchall(String matchtype) {
+	public ModelMap matchall(String matchtype) throws Exception{
 		ModelMap map = new ModelMap();
 		boolean flag = true;
 		ProductStoreStatus status = productStoreStatusDao.findByEnuu(SystemSession.getUser().getEnterprise().getUu());
@@ -266,21 +286,19 @@ public class ProductServiceImpl implements ProductService {
 		}
 		String num = null;
 		if (flag) {
-			if (matchtype.equals("sale")) {
-				num = productDao.upateResultByEnuuForSale(SystemSession.getUser().getEnterprise().getUu());
-				logger.log("产品匹配", "一键匹配了产品信息", "大小" + num);
-			} else if (matchtype.equals("purc")) {
-				num = productDao.upateResultByEnuuForPurc(SystemSession.getUser().getEnterprise().getUu());
-				logger.log("物料匹配", "一键匹配了物料信息", "大小" + num);
-			} else if (matchtype.equals("all")) {
-				num = productDao.upateResultByEnuu(SystemSession.getUser().getEnterprise().getUu());
-				logger.log("物料匹配", "一键匹配了产品(物料)信息", "大小" + num);
-			}
-			if (null == num) {
-				map.put("size", 0);
-			} else {
-				map.put("size", num);
-			}
+//			if (matchtype.equals("sale")) {
+//				num = productDao.upateResultByEnuuForSale(SystemSession.getUser().getEnterprise().getUu());
+//				logger.log("产品匹配", "一键匹配了产品信息", "大小" + num);
+//			} else if (matchtype.equals("purc")) {
+//				num = productDao.upateResultByEnuuForPurc(SystemSession.getUser().getEnterprise().getUu());
+//				logger.log("物料匹配", "一键匹配了物料信息", "大小" + num);
+//			} else if (matchtype.equals("all")) {
+//				num = productDao.upateResultByEnuu(SystemSession.getUser().getEnterprise().getUu());
+//				logger.log("物料匹配", "一键匹配了产品(物料)信息", "大小" + num);
+//			}
+            // 调用公共服务一键匹配
+            ProductUtils.matchAll(SystemSession.getUser().getEnterprise().getUu());
+            map.put("success", "一键匹配成功");
 			status.setStatus(Status.FINISH.value());
 			productStoreStatusDao.save(status);
 		}
@@ -311,13 +329,18 @@ public class ProductServiceImpl implements ProductService {
 			prod.setTostandard(new Date());
 			List<Product> prods = productDao.findByEnUUAndPcmpcodeAndPbrand(
 					SystemSession.getUser().getEnterprise().getUu(), prod.getPcmpcode(), prod.getPbrand());
+			// 新增物料状态
+            ProductStatus productStatus = new ProductStatus();
+            productStatus.setProduct(prod);
 			if (prods.size() == 0) {
-				prod.getProductStatus().setB2bDisabled(Constant.YES);
+                productStatus.setB2bDisabled(Constant.YES);
 			} else {
-				prod.getProductStatus().setB2bDisabled(Constant.NO);
+                productStatus.setB2bDisabled(Constant.NO);
 			}
 			try {
-				prod = productDao.save(prod);
+				ProductUtils.updateOne(prod);
+				// 保存物料禁用状态信息
+				productStatusDao.save(productStatus);
 			} catch (Exception e) {
 				map.put("error", "更新失败");
 				e.printStackTrace();
@@ -336,19 +359,19 @@ public class ProductServiceImpl implements ProductService {
 		int size1 = idStrings.size();
 		int size2 = 0;
 		if (status) {
-			// List<Product> products = productDao.findByEnUUAndMatchstatus(
-			// SystemSession.getUser().getEnterprise().getUu(),
-			// Status.SUBMITTED.value());
-			// if (!CollectionUtils.isEmpty(products)) {
-			// for (Product porduct : products) {
-			// if (porduct.getMatchresults().size() == 1) {
-			// for (ProductMatchResult result : porduct.getMatchresults()) {
-			// refreshproduct(result.getId());
-			// size2 = size2 + 1;
-			// }
-			// }
-			// }
-			// }
+//            List<Product> products = productDao.findByEnUUAndMatchstatus(
+//                    SystemSession.getUser().getEnterprise().getUu(),
+//                    Status.SUBMITTED.value());
+//            if (!CollectionUtils.isEmpty(products)) {
+//                for (Product porduct : products) {
+//                    if (porduct.getMatchresults().size() == 1) {
+//                        for (ProductMatchResult result : porduct.getMatchresults()) {
+//                            refreshproduct(result.getId());
+//                            size2 = size2 + 1;
+//                        }
+//                    }
+//                }
+//            }
 			String num = productDao.upateProductByEnuuAndType(SystemSession.getUser().getEnterprise().getUu(), type);
 			if (num != null) {
 				size2 = Integer.valueOf(num);
@@ -385,7 +408,7 @@ public class ProductServiceImpl implements ProductService {
 						re.setUuid(cmp.getUuid());
 						results.add(re);
 					}
-					results = productMatchResultDao.save(results);
+					ProductUtils.saveProductMatchResults(results);
 				}
 			}
 		}
@@ -464,8 +487,8 @@ public class ProductServiceImpl implements ProductService {
 
 			public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
-				pageInfo.expression(
-						PredicateUtils.or(PredicateUtils.isNull("productStatus"), PredicateUtils.eq("productStatus.b2bDisabled", Constant.NO, false)));
+				pageInfo.expression(PredicateUtils.or(PredicateUtils.isNull("b2bDisabled"),
+                        PredicateUtils.eq("b2bDisabled", Constant.NO, false)));
 				query.where(pageInfo.getPredicates(root, query, builder));
 				return null;
 			}
@@ -513,7 +536,13 @@ public class ProductServiceImpl implements ProductService {
 
 	@Override
 	public int updateB2bEnabled(String code, Short b2bDisabled) {
-		return productDao.updateB2bEnabled(SystemSession.getUser().getEnterprise().getUu(), code, b2bDisabled);
+		List<Product> products = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(), code);
+		if (!CollectionUtils.isEmpty(products)) {
+			ProductStatus productStatus = new ProductStatus(products.get(0), Constant.YES);
+			productStatusDao.save(productStatus);
+			return 1;
+		}
+		return 0;
 	}
 
 	/**

+ 28 - 15
src/main/java/com/uas/platform/b2b/service/impl/PubInquiryServiceImpl.java

@@ -1,9 +1,30 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ThreadUtils;
-import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.dao.AttachDao;
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.dao.PublicInquiryDao;
+import com.uas.platform.b2b.dao.PublicInquiryInfoDao;
+import com.uas.platform.b2b.dao.PublicInquiryItemDao;
+import com.uas.platform.b2b.dao.PublicInquiryItemInfoDao;
+import com.uas.platform.b2b.dao.PublicInquiryReplyDao;
+import com.uas.platform.b2b.dao.PurcInquiryItemDao;
+import com.uas.platform.b2b.dao.RoleDao;
+import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.Inquiry;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Attach;
+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.PublicInquiry;
+import com.uas.platform.b2b.model.PublicInquiryItem;
+import com.uas.platform.b2b.model.PublicInquiryItemInfo;
+import com.uas.platform.b2b.model.PublicInquiryReply;
+import com.uas.platform.b2b.model.PurcInquiry;
+import com.uas.platform.b2b.model.PurcInquiryItem;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.ps.InquiryUtils;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
@@ -15,7 +36,6 @@ import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.b2b.support.XingePusher;
 import com.uas.platform.b2b.temporary.model.InquiryDetailInfo;
-import com.uas.platform.b2b.temporary.model.InquiryProductInfo;
 import com.uas.platform.core.concurrent.IRunnable;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.exception.IllegalStatusException;
@@ -23,26 +43,19 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
-import com.uas.platform.core.persistence.criteria.PredicateUtils;
-import com.uas.ps.core.util.exception.FlexJsonUtils;
-import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataAccessException;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
-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.StringUtils;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * 公共询价方法实现层