|
|
@@ -1,11 +1,22 @@
|
|
|
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;
|
|
|
@@ -71,10 +82,9 @@ public class ProductServiceImpl implements ProductService {
|
|
|
private final static ErpBufferedLogger erpLogger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
|
|
|
|
|
|
@Override
|
|
|
- public List<Product> save(List<Product> products) {
|
|
|
- List<Product> newProducts = productDao.save(products);
|
|
|
- ContextUtils.publishEvent(new ProductSaveEvent(newProducts));
|
|
|
- return newProducts;
|
|
|
+ public void save(List<Product> products) throws Exception {
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
+ ProductUtils.update(products);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -98,10 +108,12 @@ public class ProductServiceImpl implements ProductService {
|
|
|
|
|
|
@Override
|
|
|
public void unlock(Long id) {
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
try {
|
|
|
- Product prod = productDao.findOne(id);
|
|
|
- prod.setIsSale(Constant.YES);
|
|
|
- productDao.save(prod);
|
|
|
+ Product prod = productDao.findOne(id);
|
|
|
+ prod.setIsSale(Constant.YES);
|
|
|
+ ProductUtils.switchProduct(id, "sale", (int) Constant.YES);
|
|
|
+// productDao.save(prod);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -110,10 +122,12 @@ public class ProductServiceImpl implements ProductService {
|
|
|
|
|
|
@Override
|
|
|
public void lock(Long id) {
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
try {
|
|
|
- Product prod = productDao.findOne(id);
|
|
|
- prod.setIsSale(Constant.NO);
|
|
|
- productDao.save(prod);
|
|
|
+ Product prod = productDao.findOne(id);
|
|
|
+ prod.setIsSale(Constant.YES);
|
|
|
+ ProductUtils.switchProduct(id, "sale", (int) Constant.NO);
|
|
|
+// productDao.save(prod);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -121,10 +135,12 @@ public class ProductServiceImpl implements ProductService {
|
|
|
|
|
|
@Override
|
|
|
public void unlockPurc(Long id) {
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
try {
|
|
|
Product prod = productDao.findOne(id);
|
|
|
prod.setIsPurchase(Constant.YES);
|
|
|
- productDao.save(prod);
|
|
|
+ ProductUtils.switchProduct(id, "purc", (int) Constant.YES);
|
|
|
+// productDao.save(prod);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -132,31 +148,39 @@ public class ProductServiceImpl implements ProductService {
|
|
|
|
|
|
@Override
|
|
|
public void lockPurc(Long id) {
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
try {
|
|
|
Product prod = productDao.findOne(id);
|
|
|
prod.setIsPurchase(Constant.NO);
|
|
|
- productDao.save(prod);
|
|
|
+ ProductUtils.switchProduct(id, "purc", (int) Constant.NO);
|
|
|
+// productDao.save(prod);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ModelMap updateByBatch(List<Product> products, String updatetype, String keyword) {
|
|
|
+ public ModelMap updateByBatch(List<Product> products, String updatetype, String keyword) throws Exception {
|
|
|
ModelMap map = new ModelMap();
|
|
|
if (!CollectionUtils.isEmpty(products)) {
|
|
|
for (Product prod : products) {
|
|
|
if (updatetype.equals(UpdateType.BRANDUPDATE.getPhrase())) {
|
|
|
prod.setBrand(keyword);
|
|
|
- productDao.save(prod);
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
+ ProductUtils.updateOne(prod);
|
|
|
+// productDao.save(prod);
|
|
|
} else if (updatetype.equals(UpdateType.PRODSPECUPDATE.getPhrase())
|
|
|
|| updatetype.equals(UpdateType.MATERSPECUPDATE.getPhrase())) {
|
|
|
prod.setSpec(keyword);
|
|
|
prod.setCmpCode(keyword);
|
|
|
- productDao.save(prod);
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
+ ProductUtils.updateOne(prod);
|
|
|
+// productDao.save(prod);
|
|
|
} else if (updatetype.equals(UpdateType.TITLEUPDATE.getPhrase())) {
|
|
|
prod.setTitle(keyword);
|
|
|
- productDao.save(prod);
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
+ ProductUtils.updateOne(prod);
|
|
|
+// productDao.save(prod);
|
|
|
}
|
|
|
}
|
|
|
map.put("success", updatetype + "修改成功");
|
|
|
@@ -165,7 +189,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>();
|
|
|
@@ -187,10 +211,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>();
|
|
|
@@ -208,11 +232,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);
|
|
|
@@ -247,7 +271,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());
|
|
|
@@ -269,21 +293,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);
|
|
|
}
|
|
|
@@ -323,7 +345,7 @@ public class ProductServiceImpl implements ProductService {
|
|
|
productStatus.setB2bDisabled(Constant.NO);
|
|
|
}
|
|
|
try {
|
|
|
- prod = productDao.save(prod);
|
|
|
+ ProductUtils.updateOne(prod);
|
|
|
// 保存物料禁用状态信息
|
|
|
productStatusDao.save(productStatus);
|
|
|
} catch (Exception e) {
|
|
|
@@ -344,19 +366,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);
|
|
|
@@ -370,34 +392,10 @@ public class ProductServiceImpl implements ProductService {
|
|
|
|
|
|
@Override
|
|
|
public List<ProductMatchResult> matchaone(Long id) throws Exception {
|
|
|
- List<ProductMatchResult> results = productMatchResultDao.findByPrid(id);
|
|
|
- if (CollectionUtils.isEmpty(results)) {// 如果还没有匹配过,再次进行匹配
|
|
|
- Product prod = productDao.findOne(id);
|
|
|
- if (prod != null) {
|
|
|
- List<Component> components = componentService.findByCode(prod.getCmpCode());
|
|
|
- short i = 1;
|
|
|
- results = new ArrayList<ProductMatchResult>();
|
|
|
- if (!CollectionUtils.isEmpty(components)) {
|
|
|
- for (Component cmp : components) {
|
|
|
- ProductMatchResult re = new ProductMatchResult();
|
|
|
- re.setBrandcn(cmp.getBrand().getNameCn());
|
|
|
- re.setBranden(cmp.getBrand().getNameEn());
|
|
|
- re.setBrid(cmp.getBrandid());
|
|
|
- re.setCmpcode(cmp.getCode());
|
|
|
- re.setCmpid(cmp.getId());
|
|
|
- re.setKindcn(cmp.getKind().getNameCn());
|
|
|
- re.setKinden(cmp.getKind().getNameEn());
|
|
|
- re.setKindid(cmp.getKindid());
|
|
|
- re.setNumber(i);
|
|
|
- re.setPrid(id);
|
|
|
- re.setUuid(cmp.getUuid());
|
|
|
- results.add(re);
|
|
|
- }
|
|
|
- results = productMatchResultDao.save(results);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return results;
|
|
|
+ List<Long> ids = new ArrayList<>();
|
|
|
+ ids.add(id);
|
|
|
+ ProductUtils.matchChoose(SystemSession.getUser().getEnterprise().getUu(), ids);
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -407,12 +405,14 @@ public class ProductServiceImpl implements ProductService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onProductDownSuccess(String[] idArray) {
|
|
|
+ public void onProductDownSuccess(String[] idArray) throws Exception {
|
|
|
for (String id : idArray) {
|
|
|
Product product = productDao.findOne(Long.parseLong(id));
|
|
|
if (product != null) {
|
|
|
product.setDownloadstatus(Status.DOWNLOADED.value());
|
|
|
- productDao.save(product);
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
+ ProductUtils.updateOne(product);
|
|
|
+// productDao.save(product);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -456,7 +456,21 @@ public class ProductServiceImpl implements ProductService {
|
|
|
return prods;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
+ /**
|
|
|
+ * 分页查找客户物料(标准未禁用)
|
|
|
+ *
|
|
|
+ * @param pageInfo 分页参数
|
|
|
+ * @param keyword 查找关键词
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public SPage<Product> findStandardB2bEnabledProductInfoByPageInfo(PageInfo pageInfo, String keyword) {
|
|
|
+ pageInfo.expression(PredicateUtils.and(PredicateUtils.isNotNull("standard"),
|
|
|
+ PredicateUtils.ne("standard", Constant.NO, false)));
|
|
|
+ return findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 分页查找客户物料(非标准未禁用)
|
|
|
*
|
|
|
* @param pageInfo 分页参数
|
|
|
@@ -465,7 +479,8 @@ public class ProductServiceImpl implements ProductService {
|
|
|
*/
|
|
|
@Override
|
|
|
public SPage<Product> findNotStandardB2bEnabledProductInfoByPageInfo(PageInfo pageInfo, String keyword) {
|
|
|
- pageInfo.expression(PredicateUtils.or(PredicateUtils.isNull("standard"), PredicateUtils.eq("standard", Constant.NO, false)));
|
|
|
+ pageInfo.expression(PredicateUtils.or(PredicateUtils.isNull("standard"),
|
|
|
+ PredicateUtils.eq("standard", Constant.NO, false)));
|
|
|
return findB2bEnabledProductInfoByPageInfo(pageInfo, keyword);
|
|
|
}
|
|
|
|
|
|
@@ -532,11 +547,14 @@ public class ProductServiceImpl implements ProductService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int updateB2bEnabled(String code, Short b2bDisabled) {
|
|
|
+ public int updateB2bEnabled(String code, Short b2bDisabled) throws Exception {
|
|
|
List<Product> products = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(), code);
|
|
|
if (!CollectionUtils.isEmpty(products)) {
|
|
|
- ProductStatus productStatus = new ProductStatus(products.get(0), Constant.YES);
|
|
|
+ Product product = products.get(0);
|
|
|
+ product.setErpDate(new Date());
|
|
|
+ ProductStatus productStatus = new ProductStatus(product, Constant.YES);
|
|
|
productStatusDao.save(productStatus);
|
|
|
+ ProductUtils.updateOne(product);
|
|
|
return 1;
|
|
|
}
|
|
|
return 0;
|
|
|
@@ -550,7 +568,7 @@ public class ProductServiceImpl implements ProductService {
|
|
|
* @date 2018-01-12 19:15
|
|
|
*/
|
|
|
@Override
|
|
|
- public void updateProdSaler(List<ProductSaler> productSalers) {
|
|
|
+ public void updateProdSaler(List<ProductSaler> productSalers) throws Exception {
|
|
|
Long enuu = SystemSession.getUser().getEnterprise().getUu();
|
|
|
for (ProductSaler productSaler : productSalers) {
|
|
|
List<Product> prods = productDao.findByEnUUAndCode(enuu, productSaler.getPs_code());
|
|
|
@@ -558,16 +576,17 @@ public class ProductServiceImpl implements ProductService {
|
|
|
throw new NotFoundException("[" + productSaler.getPs_code() + "]物料没找到");
|
|
|
} else {
|
|
|
Product product = prods.get(0);
|
|
|
- List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndAndPrid(enuu, productSaler.getEm_uu(), product.getId());
|
|
|
- if (CollectionUtils.isEmpty(productUsers)) {
|
|
|
+ ProductUsers productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(enuu, productSaler.getEm_uu(), product.getId());
|
|
|
+ if (null == productUsers) {
|
|
|
ProductUsers info = new ProductUsers();
|
|
|
info.setDate(new Date());
|
|
|
info.setEnuu(enuu);
|
|
|
info.setPrid(product.getId());
|
|
|
info.setUseruu(productSaler.getEm_uu());
|
|
|
info.setErpid(productSaler.getPs_id());
|
|
|
- info = productUsersDao.save(info);
|
|
|
- erpLogger.log("ERP个人物料信息同步", "关联物料id:" + info.getPrid(), 1);
|
|
|
+// info = productUsersDao.save(info);
|
|
|
+ Long id = ProductUtils.updateProductUsersOne(info);
|
|
|
+ erpLogger.log("ERP个人物料信息同步", "关联物料id:" + id, 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -581,12 +600,14 @@ public class ProductServiceImpl implements ProductService {
|
|
|
* @date 2018-01-12 19:31
|
|
|
*/
|
|
|
@Override
|
|
|
- public void quitProdSaler(List<ProductSaler> productSalers) {
|
|
|
+ public void quitProdSaler(List<ProductSaler> productSalers) throws Exception {
|
|
|
Long enuu = SystemSession.getUser().getEnterprise().getUu();
|
|
|
for (ProductSaler productSaler : productSalers) {
|
|
|
ProductUsers prod = productUsersDao.findByEnuuAndUseruuAndErpid(enuu, productSaler.getEm_uu(), productSaler.getPs_id());
|
|
|
if (null != prod) {
|
|
|
- productUsersDao.delete(prod);
|
|
|
+ // TODO 因为这里要求数据即存即用,从公共库同步过来可能会有延迟,暂时两边都存;之后要修改为只调用公共服务方法
|
|
|
+ ProductUtils.deleteProductUser(prod.getId());
|
|
|
+// productUsersDao.delete(prod);
|
|
|
erpLogger.log("ERP删除个人物料信息同步", "关联物料id: " + prod.getPrid(), 1);
|
|
|
}
|
|
|
}
|