|
|
@@ -1,10 +1,12 @@
|
|
|
package com.uas.ps.product.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.uas.platform.core.util.StringUtil;
|
|
|
import com.uas.ps.brand.entity.BrandInfo;
|
|
|
import com.uas.ps.component.entity.ComponentInfo;
|
|
|
import com.uas.ps.entity.Product;
|
|
|
import com.uas.ps.entity.ProductMatchResult;
|
|
|
+import com.uas.ps.entity.ProductPrivate;
|
|
|
import com.uas.ps.entity.ProductUsers;
|
|
|
import com.uas.ps.entity.Status;
|
|
|
import com.uas.ps.product.ProductConstant;
|
|
|
@@ -13,6 +15,7 @@ import com.uas.ps.product.entity.Prod;
|
|
|
import com.uas.ps.product.entity.ProductSaler;
|
|
|
import com.uas.ps.product.repository.ProductDao;
|
|
|
import com.uas.ps.product.repository.ProductMatchResultDao;
|
|
|
+import com.uas.ps.product.repository.ProductPrivateDao;
|
|
|
import com.uas.ps.product.repository.ProductUsersDao;
|
|
|
import com.uas.ps.product.service.ProductService;
|
|
|
import com.uas.ps.product.sync.WaitSyncHelper;
|
|
|
@@ -28,6 +31,7 @@ import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import java.sql.PreparedStatement;
|
|
|
import java.sql.SQLException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashSet;
|
|
|
@@ -62,6 +66,14 @@ public class ProductServiceImpl implements ProductService {
|
|
|
@Autowired
|
|
|
private WaitSyncHelper waitSyncHelper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductPrivateDao productPrivateDao;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * B2C物料可用属性
|
|
|
+ */
|
|
|
+ private final static Integer B2C_PRODUCT_ENABLED = 1;
|
|
|
+
|
|
|
/**
|
|
|
* 保存物料
|
|
|
*
|
|
|
@@ -221,6 +233,8 @@ public class ProductServiceImpl implements ProductService {
|
|
|
existedProd.setCmpCode(product.getCmpCode());
|
|
|
existedProd.setUnit(product.getUnit());
|
|
|
existedProd.setBrand(product.getBrand());
|
|
|
+ existedProd.setpCmpCode(product.getCmpCode());
|
|
|
+ existedProd.setpBrandEn(product.getBrand());
|
|
|
if (null != product.getMinOrder()) {
|
|
|
existedProd.setMinOrder(product.getMinOrder());
|
|
|
}
|
|
|
@@ -291,6 +305,55 @@ public class ProductServiceImpl implements ProductService {
|
|
|
return productDao.findAll(ids);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 报价之后保存到个人库操作接口
|
|
|
+ *
|
|
|
+ * @param product 物料信息
|
|
|
+ * @return 处理结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ModelMap saveInquiryProducts(Product product) {
|
|
|
+ ModelMap map = new ModelMap();
|
|
|
+ Long userUU = product.getUserUU();
|
|
|
+ if (null == userUU) {
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", "已存在对应个人产品记录");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
|
|
|
+ if (null == product.getCode()) {
|
|
|
+ String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
|
|
|
+ product.setCode(code);
|
|
|
+ }
|
|
|
+ List<Product> existedProds = productDao.findByEnUUAndCmpCodeAndBrandAndSpec(product.getEnUU(), product.getCmpCode(), product.getBrand(), product.getSpec());
|
|
|
+ if (CollectionUtils.isEmpty(existedProds)) {
|
|
|
+ List<Product> products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
|
|
|
+ while (!CollectionUtils.isEmpty(products)) {
|
|
|
+ String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
|
|
|
+ product.setCode(code);
|
|
|
+ products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
|
|
|
+ }
|
|
|
+ product = productDao.save(product);
|
|
|
+ ProductPrivate productPrivate = new ProductPrivate();
|
|
|
+ productPrivate.setB2cEnabled(B2C_PRODUCT_ENABLED);
|
|
|
+ productPrivate.setPrId(product.getId());
|
|
|
+ productPrivateDao.save(productPrivate);
|
|
|
+ matchOne(product, product.getEnUU());
|
|
|
+ } else {
|
|
|
+ product = existedProds.get(0);
|
|
|
+ List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ if (!CollectionUtils.isEmpty(productUsers)) {
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", "已存在对应个人产品记录");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ProductUsers productUser = new ProductUsers(product.getEnUU(), userUU, product.getId());
|
|
|
+ productUsersDao.save(productUser);
|
|
|
+ map.put("success", true);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 更新物料信息
|
|
|
* @param data 物料资料
|
|
|
@@ -331,7 +394,7 @@ public class ProductServiceImpl implements ProductService {
|
|
|
@Override
|
|
|
public void updateExisted(List<Product> updateList) {
|
|
|
jdbcTemplate.batchUpdate("update products set pr_enuu=?,pr_useruu=?,pr_code=?,pr_title=?,pr_spec=?,pr_cmpcode=?,pr_brand=?," +
|
|
|
- "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=? " +
|
|
|
+ "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=?,pr_pcmpcode=?,pr_pbranden=? " +
|
|
|
"where pr_id=?",
|
|
|
updateList, updateList.size(), new ParameterizedPreparedStatementSetter<Product>() {
|
|
|
@Override
|
|
|
@@ -351,7 +414,9 @@ public class ProductServiceImpl implements ProductService {
|
|
|
ps.setObject(13, product.getIsSale());
|
|
|
ps.setObject(14, product.getIsPurchase());
|
|
|
ps.setObject(15, product.getSourceApp());
|
|
|
- ps.setLong(16, product.getId());
|
|
|
+ ps.setObject(16, product.getCmpCode());
|
|
|
+ ps.setObject(17, product.getBrand());
|
|
|
+ ps.setLong(18, product.getId());
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -364,9 +429,9 @@ public class ProductServiceImpl implements ProductService {
|
|
|
@Override
|
|
|
public List<Long> insertAndReturnKey(final List<Product> newList) {
|
|
|
return jdbcTemplate.batchInsert("insert into products(pr_enuu,pr_useruu,pr_code,pr_title,pr_spec,pr_cmpcode,pr_brand," +
|
|
|
- "pr_unit,pr_minorder,pr_minpack,pr_leadtime,pr_ltinstock,pr_issale,pr_ispurchase,pr_sourceapp) " +
|
|
|
- "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) on duplicate key update pr_useruu=?,pr_title=?,pr_spec=?,pr_cmpcode=?,pr_brand=?," +
|
|
|
- "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=?", new BatchPreparedStatementSetter() {
|
|
|
+ "pr_unit,pr_minorder,pr_minpack,pr_leadtime,pr_ltinstock,pr_issale,pr_ispurchase,pr_sourceapp,pr_pcmpcode,pr_pbranden) " +
|
|
|
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) on duplicate key update pr_useruu=?,pr_title=?,pr_spec=?,pr_cmpcode=?,pr_brand=?," +
|
|
|
+ "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=?,pr_pcmpcode=?,pr_pbranden=?", new BatchPreparedStatementSetter() {
|
|
|
@Override
|
|
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
|
|
Product product = newList.get(i);
|
|
|
@@ -385,19 +450,24 @@ public class ProductServiceImpl implements ProductService {
|
|
|
ps.setObject(13, product.getIsSale());
|
|
|
ps.setObject(14, product.getIsPurchase());
|
|
|
ps.setObject(15, product.getSourceApp());
|
|
|
- ps.setLong(16, product.getUserUU());
|
|
|
- ps.setObject(17, product.getTitle());
|
|
|
- ps.setObject(18, product.getSpec());
|
|
|
- ps.setObject(19, product.getCmpCode());
|
|
|
- ps.setObject(20, product.getBrand());
|
|
|
- ps.setObject(21, product.getUnit());
|
|
|
- ps.setObject(22, product.getMinOrder());
|
|
|
- ps.setObject(23, product.getMinPack());
|
|
|
- ps.setObject(24, product.getLeadTime());
|
|
|
- ps.setObject(25, product.getLtinstock());
|
|
|
- ps.setObject(26, product.getIsSale());
|
|
|
- ps.setObject(27, product.getIsPurchase());
|
|
|
- ps.setObject(28, product.getSourceApp());
|
|
|
+ ps.setObject(16, product.getCmpCode());
|
|
|
+ ps.setObject(17, product.getBrand());
|
|
|
+
|
|
|
+ ps.setLong(18, product.getUserUU());
|
|
|
+ ps.setObject(19, product.getTitle());
|
|
|
+ ps.setObject(20, product.getSpec());
|
|
|
+ ps.setObject(21, product.getCmpCode());
|
|
|
+ ps.setObject(22, product.getBrand());
|
|
|
+ ps.setObject(23, product.getUnit());
|
|
|
+ ps.setObject(24, product.getMinOrder());
|
|
|
+ ps.setObject(25, product.getMinPack());
|
|
|
+ ps.setObject(26, product.getLeadTime());
|
|
|
+ ps.setObject(27, product.getLtinstock());
|
|
|
+ ps.setObject(28, product.getIsSale());
|
|
|
+ ps.setObject(29, product.getIsPurchase());
|
|
|
+ ps.setObject(30, product.getSourceApp());
|
|
|
+ ps.setObject(31, product.getCmpCode());
|
|
|
+ ps.setObject(32, product.getBrand());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -407,42 +477,6 @@ public class ProductServiceImpl implements ProductService {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 新增物料上传 -- 只能返回保存数量,得不到已保存物料信息,无法满足个人库新增需要
|
|
|
-// * @param products 新增物料列表
|
|
|
-// * @return
|
|
|
-// */
|
|
|
-// private Collection<? extends Product> saveNewProduct(List<Product> products) {
|
|
|
-// int[][] i = jdbcTemplate.batchUpdate("INSERT INTO products(pr_title,pr_code,pr_spec,pr_cmpcode,pr_brand,pr_unit,pr_enuu,pr_useruu," +
|
|
|
-// "pr_minpack,pr_minorder,pr_leadtime,pr_ltinstock,pr_erpdate,pr_sourceapp,pr_issale,pr_ispurchase) SELECT ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? FROM DUAL " +
|
|
|
-// "WHERE NOT EXISTS(SELECT pr_id FROM products WHERE pr_enuu = ? and pr_code = ?);",
|
|
|
-// products, products.size(), new ParameterizedPreparedStatementSetter<Product>() {
|
|
|
-// @Override
|
|
|
-// public void setValues(PreparedStatement ps, Product t) throws SQLException {
|
|
|
-// ps.setObject(1, t.getTitle());
|
|
|
-// ps.setObject(2, t.getCode());
|
|
|
-// ps.setObject(3, t.getSpec());
|
|
|
-// ps.setObject(4, t.getCmpCode());
|
|
|
-// ps.setObject(5, t.getBrand());
|
|
|
-// ps.setObject(6, t.getUnit());
|
|
|
-// ps.setObject(7, t.getEnUU());
|
|
|
-// ps.setObject(8, t.getUserUU());
|
|
|
-// ps.setObject(9, t.getMinPack());
|
|
|
-// ps.setObject(10, t.getMinOrder());
|
|
|
-// ps.setObject(11, t.getLeadTime());
|
|
|
-// ps.setObject(12, t.getLtinstock());
|
|
|
-// ps.setObject(13, new Date());
|
|
|
-// ps.setObject(14, t.getSourceApp());
|
|
|
-// ps.setObject(15, t.getIsSale());
|
|
|
-// ps.setObject(16, t.getIsPurchase());
|
|
|
-// ps.setObject(17, t.getEnUU());
|
|
|
-// ps.setObject(18, t.getCode());
|
|
|
-// }
|
|
|
-// });
|
|
|
-// return new ArrayList<>();
|
|
|
-// }
|
|
|
-
|
|
|
/**
|
|
|
* 更新个人产品库
|
|
|
* @param products 物料信息
|