|
|
@@ -14,23 +14,18 @@ import com.uas.ps.product.ProductConstant;
|
|
|
import com.uas.ps.product.data.MyJdbcTemplate;
|
|
|
import com.uas.ps.product.entity.Constant;
|
|
|
import com.uas.ps.product.entity.Prod;
|
|
|
+import com.uas.ps.product.entity.ProductReplace;
|
|
|
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.ProductReplaceDao;
|
|
|
import com.uas.ps.product.repository.ProductUsersDao;
|
|
|
import com.uas.ps.product.service.ProductService;
|
|
|
import com.uas.ps.product.sync.WaitSyncHelper;
|
|
|
import com.uas.ps.properties.UrlProperties;
|
|
|
-import java.sql.PreparedStatement;
|
|
|
-import java.sql.SQLException;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
|
|
|
import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;
|
|
|
@@ -39,6 +34,15 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
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;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
/**
|
|
|
* @author sunyj
|
|
|
* @since 2018/1/6 17:19
|
|
|
@@ -70,6 +74,9 @@ public class ProductServiceImpl implements ProductService {
|
|
|
@Autowired
|
|
|
private ProductPrivateDao productPrivateDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductReplaceDao productReplaceDao;
|
|
|
+
|
|
|
/**
|
|
|
* B2C物料可用属性
|
|
|
*/
|
|
|
@@ -80,6 +87,8 @@ public class ProductServiceImpl implements ProductService {
|
|
|
*/
|
|
|
private final static Integer B2C_PRODUCT_DISABLED = 0;
|
|
|
|
|
|
+ private static final Logger log = Logger.getLogger(Logger.class);
|
|
|
+
|
|
|
/**
|
|
|
* 保存物料
|
|
|
*
|
|
|
@@ -377,38 +386,55 @@ public class ProductServiceImpl implements ProductService {
|
|
|
* 报价之后保存到个人库操作接口
|
|
|
*
|
|
|
* @param product 物料信息
|
|
|
+ * @param replaceCmpCode 替代型号
|
|
|
+ * @param replaceBrand 替代品牌
|
|
|
* @return 处理结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public ModelMap saveInquiryProducts(Product product) {
|
|
|
+ public ModelMap saveInquiryProducts(Product product, String replaceCmpCode, String replaceBrand) {
|
|
|
ModelMap map = new ModelMap();
|
|
|
- Long userUU = product.getUserUU();
|
|
|
- if (null == userUU) {
|
|
|
- map.put("success", false);
|
|
|
- map.put("message", "新增物料用户UU为空");
|
|
|
- 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.findByEnUUAndPCmpCodeAndPBrandEn(product.getEnUU(), product.getpCmpCode(), product.getpBrandEn());
|
|
|
- if (CollectionUtils.isEmpty(existedProds)) {
|
|
|
- List<Product> products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
|
|
|
- while (!CollectionUtils.isEmpty(products)) {
|
|
|
+ if (null == product.getId()) {
|
|
|
+ Long userUU = product.getUserUU();
|
|
|
+ if (null == userUU) {
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", "新增物料用户UU为空");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
|
|
|
+ if (null == product.getCode()) {
|
|
|
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());
|
|
|
+ List<Product> existedProds = productDao.findByEnUUAndPCmpCodeAndPBrandEn(product.getEnUU(), product.getpCmpCode(), product.getpBrandEn());
|
|
|
+ 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());
|
|
|
+ // 如果存在替代型号和替代品牌参数,增加到对应物料的替代物料中
|
|
|
+ addReplaceProduct(product, replaceCmpCode, replaceBrand);
|
|
|
+ } else {
|
|
|
+ product = existedProds.get(0);
|
|
|
+ // 如果存在替代型号和替代品牌参数,增加到对应物料的替代物料中
|
|
|
+ addReplaceProduct(product, replaceCmpCode, replaceBrand);
|
|
|
+ List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ if (!CollectionUtils.isEmpty(productUsers)) {
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", "已存在对应个人产品记录");
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
- product = existedProds.get(0);
|
|
|
+ // 存在id,直接添加个人库和替代物料处理
|
|
|
+ addReplaceProduct(product, replaceCmpCode, replaceBrand);
|
|
|
List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
if (!CollectionUtils.isEmpty(productUsers)) {
|
|
|
map.put("success", false);
|
|
|
@@ -416,12 +442,103 @@ public class ProductServiceImpl implements ProductService {
|
|
|
return map;
|
|
|
}
|
|
|
}
|
|
|
- ProductUsers productUser = new ProductUsers(product.getEnUU(), userUU, product.getId());
|
|
|
+ ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
productUsersDao.save(productUser);
|
|
|
map.put("success", true);
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增替代物料
|
|
|
+ * @param product 物料
|
|
|
+ * @param replaceCmpCode 替代型号
|
|
|
+ * @param replaceBrand 替代品牌
|
|
|
+ */
|
|
|
+ private void addReplaceProduct(Product product, String replaceCmpCode, String replaceBrand) {
|
|
|
+ if (null != product.getId() && !StringUtils.isEmpty(product.getpCmpCode()) && !StringUtils.isEmpty(product.getpBrandEn())
|
|
|
+ && !StringUtils.isEmpty(replaceCmpCode) && !StringUtils.isEmpty(replaceBrand)) {
|
|
|
+ List<ProductReplace> replaces = productReplaceDao.findByProductIdAndPtrCmpcodeAndPtrBranden(product.getId(), replaceCmpCode, replaceBrand);
|
|
|
+ if (CollectionUtils.isEmpty(replaces)) {
|
|
|
+ ProductReplace replace = new ProductReplace(product);
|
|
|
+ replace.setPtrBranden(replaceBrand);
|
|
|
+ replace.setPtrCmpcode(replaceCmpCode);
|
|
|
+ List<ProductReplace> existedReplace = productReplaceDao.findByProductId(product.getId());
|
|
|
+ replace.setDetno((short) (existedReplace.size() + 1));
|
|
|
+ replace = productReplaceDao.save(replace);
|
|
|
+ log.info("保存替代料,id为" + replace.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存询价单后,批量将询价物料存入个人库接口
|
|
|
+ *
|
|
|
+ * @param products
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ModelMap saveInquiryProductsByBatch(List<Product> products) {
|
|
|
+ List<ProductPrivate> productPrivates = new ArrayList<>();
|
|
|
+ List<ProductUsers> saveProductUsers = new ArrayList<>();
|
|
|
+ List<Product> saveProducts = new ArrayList<>();
|
|
|
+ ModelMap map = new ModelMap();
|
|
|
+ for (Product product : products) {
|
|
|
+ if (null == product.getId()) {
|
|
|
+ if (null != product.getUserUU()) {
|
|
|
+ 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.findByEnUUAndPCmpCodeAndPBrandEn(product.getEnUU(), product.getpCmpCode(), product.getpBrandEn());
|
|
|
+ if (CollectionUtils.isEmpty(existedProds)) {
|
|
|
+ List<Product> oldProducts = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
|
|
|
+ while (!CollectionUtils.isEmpty(oldProducts)) {
|
|
|
+ String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
|
|
|
+ product.setCode(code);
|
|
|
+ oldProducts = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
|
|
|
+ }
|
|
|
+ saveProducts.add(product);
|
|
|
+ } else {
|
|
|
+ product = existedProds.get(0);
|
|
|
+ List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ if (CollectionUtils.isEmpty(productUsers)) {
|
|
|
+ ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ saveProductUsers.add(productUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ if (CollectionUtils.isEmpty(productUsers)) {
|
|
|
+ ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ saveProductUsers.add(productUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ saveProducts = productDao.save(saveProducts);
|
|
|
+ for (Product product : saveProducts) {
|
|
|
+ // 添加B2C私有属性
|
|
|
+ ProductPrivate productPrivate = new ProductPrivate();
|
|
|
+ productPrivate.setB2cEnabled(B2C_PRODUCT_ENABLED);
|
|
|
+ productPrivate.setPrId(product.getId());
|
|
|
+ productPrivates.add(productPrivate);
|
|
|
+ // 添加个人库记录
|
|
|
+ ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
|
|
|
+ saveProductUsers.add(productUser);
|
|
|
+ }
|
|
|
+ productPrivateDao.save(productPrivates);
|
|
|
+ productUsersDao.save(saveProductUsers);
|
|
|
+ map.put("success", true);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", e.getMessage());
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据品牌和型号,返回类目
|
|
|
*
|