|
|
@@ -1,37 +1,37 @@
|
|
|
package com.uas.platform.b2c.trade.order.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.platform.b2c.core.constant.IntegerConstant;
|
|
|
import com.uas.platform.b2c.core.constant.ReleaseStatus;
|
|
|
import com.uas.platform.b2c.core.constant.SplitChar;
|
|
|
-import com.uas.platform.b2c.core.constant.Status;
|
|
|
import com.uas.platform.b2c.core.support.SystemSession;
|
|
|
import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
|
|
|
import com.uas.platform.b2c.core.utils.StringUtilB2C;
|
|
|
import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
|
|
|
import com.uas.platform.b2c.prod.commodity.constant.ErrorInfoConstant;
|
|
|
import com.uas.platform.b2c.prod.commodity.constant.UploadConstant;
|
|
|
-import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
|
|
|
-import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
|
|
|
+import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
|
|
|
import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
|
|
|
import com.uas.platform.b2c.prod.commodity.dao.ReleaseProductByBatchDao;
|
|
|
-import com.uas.platform.b2c.prod.commodity.model.Goods;
|
|
|
-import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
|
|
|
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
|
|
|
+import com.uas.platform.b2c.prod.commodity.model.Product;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
|
|
|
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
|
|
|
import com.uas.platform.b2c.prod.commodity.service.GoodsService;
|
|
|
import com.uas.platform.b2c.prod.commodity.service.ProductService;
|
|
|
import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
|
|
|
import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
|
|
|
import com.uas.platform.b2c.prod.commodity.util.SheetUtil;
|
|
|
import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
|
|
|
-import com.uas.platform.b2c.prod.store.model.StoreIn;
|
|
|
-import com.uas.platform.b2c.prod.store.model.StoreStatus;
|
|
|
import com.uas.platform.b2c.prod.store.service.StoreInService;
|
|
|
import com.uas.platform.b2c.trade.order.service.PurchaseProductService;
|
|
|
+import com.uas.platform.b2c.trade.support.CodeType;
|
|
|
import com.uas.platform.b2c.trade.support.ResultMap;
|
|
|
import com.uas.platform.core.exception.IllegalOperatorException;
|
|
|
import com.uas.platform.core.logging.BufferedLoggerManager;
|
|
|
import com.uas.platform.core.util.HttpUtil;
|
|
|
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
@@ -39,6 +39,7 @@ import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -50,6 +51,7 @@ import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
@@ -77,10 +79,10 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
private ProductPrivateDao productPrivateDao;
|
|
|
|
|
|
@Autowired
|
|
|
- private GoodsDao goodsDao;
|
|
|
+ private ProductDao productDao;
|
|
|
|
|
|
@Autowired
|
|
|
- private GoodsHistoryDao goodsHistoryDao;
|
|
|
+ private V_ProductPrivateDao v_productPrivateDao;
|
|
|
|
|
|
@Autowired
|
|
|
private GoodsService goodsService;
|
|
|
@@ -190,7 +192,7 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
// 去重后的数据
|
|
|
List<ReleaseProductByBatch> uniqueBatchList = releaseProductByBatchDao.findByRelbatchidAndReleaseCodeNot(userUU, batch, failCode);
|
|
|
if (!CollectionUtils.isEmpty(uniqueBatchList)) {
|
|
|
- assignNumber = assignBatch(uniqueBatchList, batch);
|
|
|
+ assignNumber = assignBatch(uniqueBatchList);
|
|
|
}
|
|
|
modelMap.put("assignSuccess", assignNumber);
|
|
|
modelMap.put("assignFailure", total - assignNumber);
|
|
|
@@ -344,11 +346,10 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
* 将去重的数据批量绑定到个人物料库
|
|
|
*
|
|
|
* @param uniqueBatchList 去重后的物料信息
|
|
|
- * @param batch 批次号
|
|
|
* @return 保存成功的数量
|
|
|
*/
|
|
|
- private Integer assignBatch(List<ReleaseProductByBatch> uniqueBatchList, String batch) {
|
|
|
- Set<Long> idSet = getProductIdSet(uniqueBatchList, batch);
|
|
|
+ private Integer assignBatch(List<ReleaseProductByBatch> uniqueBatchList) {
|
|
|
+ Set<Long> idSet = getProductIdSet(uniqueBatchList);
|
|
|
if (CollectionUtils.isNotEmpty(idSet)) {
|
|
|
HashMap<String, Object> params = new HashMap<>(5);
|
|
|
ModelMap data = new ModelMap();
|
|
|
@@ -372,10 +373,9 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
* 获取物料id字段
|
|
|
*
|
|
|
* @param uniqueBatchList 去重后的物料信息
|
|
|
- * @param batchCode 批次号
|
|
|
* @return 物料id集合
|
|
|
*/
|
|
|
- private Set<Long> getProductIdSet(List<ReleaseProductByBatch> uniqueBatchList, String batchCode) {
|
|
|
+ private Set<Long> getProductIdSet(List<ReleaseProductByBatch> uniqueBatchList) {
|
|
|
List<String> productCodeList = new ArrayList<>();
|
|
|
Set<Long> idSet = new HashSet<>();
|
|
|
List<ReleaseProductByBatch> batchList = new ArrayList<>();
|
|
|
@@ -384,7 +384,7 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
idSet.add(batch.getProductid());
|
|
|
} else {
|
|
|
if (StringUtilB2C.isEmpty(batch.getProductNum())) {
|
|
|
- String code = "PNUM" + createNumberService.getTimeNumber("trade$product_import_num", 8);
|
|
|
+ String code = "PNUM" + StringUtilB2C.getRandomNumber(6);
|
|
|
batch.setProductNum(code);
|
|
|
}
|
|
|
productCodeList.add(batch.getProductNum());
|
|
|
@@ -394,49 +394,14 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
// 新增到物料库
|
|
|
productService.saveByJdbcTemplate(batchList);
|
|
|
List<com.uas.platform.b2c.prod.commodity.model.Product> productList = productService.findProductIdAndProdnumsByProdNums(productCodeList);
|
|
|
- final StoreIn storeIn = storeInService.findByEnUU(SystemSession.getUser().getEnterprise().getUu());
|
|
|
List<ProductPrivate> privateList = new ArrayList<>();
|
|
|
- List<Goods> finalGoodsList = new ArrayList<>();
|
|
|
productList.forEach(product -> {
|
|
|
- Goods goods = new Goods(ProductConstant.DEFAULT_PACKING, ProductConstant.DEFAULT_BREAKUP, ProductConstant.DEFAULT_AUTO_PUBLISH,
|
|
|
- ProductConstant.DEFAULT_MAX_DELIVERY, ProductConstant.DEFAULT_MIN_DELIVERY, ProductConstant.DEFAULT_MIN_BUYQTY,
|
|
|
- ProductConstant.DEFAULT_MIN_PACKQTY, Status.NO_SHELVE.value());
|
|
|
- goods = productService.bindProductToGoods(goods, product);
|
|
|
- goods.setSelfSale((storeIn != null && storeIn.getStatus() == StoreStatus.OPENED) ? "1" : "0");
|
|
|
- goodsService.setGoodsDefault(goods);
|
|
|
- finalGoodsList.add(goods);
|
|
|
- ProductPrivate productPrivate;
|
|
|
- List<ProductPrivate> privates = productPrivateDao.findByPrId(product.getId());
|
|
|
- if (CollectionUtils.isNotEmpty(privates)) {
|
|
|
- productPrivate = privates.get(0);
|
|
|
- productPrivate.setB2cEnabled(IntegerConstant.YES_SHORT);
|
|
|
- productPrivate.setPrId(product.getId());
|
|
|
- productPrivate.setBatchCount(IntegerConstant.NO_SHORT);
|
|
|
- } else {
|
|
|
- productPrivate = new ProductPrivate(product.getId());
|
|
|
- productPrivate.setAttach(product.getAttachment());
|
|
|
- }
|
|
|
+ ProductPrivate productPrivate = new ProductPrivate(product.getId());
|
|
|
+ productPrivate.setAttach(product.getAttachment());
|
|
|
privateList.add(productPrivate);
|
|
|
idSet.add(product.getId());
|
|
|
});
|
|
|
|
|
|
- // 保存goods
|
|
|
- if (CollectionUtils.isNotEmpty(finalGoodsList)) {
|
|
|
- List<Goods> goodsList = goodsDao.save(finalGoodsList);
|
|
|
- USE_LOG.log("上架商品", "新增上架商品", "批量导入上架商品,数量 " + goodsList.size() + ", 批号 " + batchCode);
|
|
|
- List<GoodsHistory> historyList = new ArrayList<>();
|
|
|
- goodsList.forEach(goods -> {
|
|
|
- GoodsHistory goodsHistory = productService.assignmentGoodsHistory(goods);
|
|
|
- goodsHistory.setB2cMaxDelivery(goods.getMaxDelivery());
|
|
|
- goodsHistory.setB2cMinDelivery(goods.getMinDelivery());
|
|
|
- historyList.add(goodsHistory);
|
|
|
- });
|
|
|
- // 保存goodsHistory
|
|
|
- if (CollectionUtils.isNotEmpty(historyList)) {
|
|
|
- goodsHistoryDao.save(historyList);
|
|
|
- USE_LOG.log("库存操作", "批量导入上架商品更新库存操作", "数量 " + historyList.size() + ", 批次号 " + batchCode);
|
|
|
- }
|
|
|
- }
|
|
|
// 保存到私有库
|
|
|
if (CollectionUtils.isNotEmpty(privateList)) {
|
|
|
productPrivateDao.save(privateList);
|
|
|
@@ -485,4 +450,64 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 买家中心添加单个物料录入
|
|
|
+ *
|
|
|
+ * @param jsonObject 前端数据封装
|
|
|
+ * @return ResultMap
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResultMap editOne(JSONObject jsonObject) {
|
|
|
+ // 物料信息
|
|
|
+ Object productObject = jsonObject.get("product");
|
|
|
+ if (null == productObject) {
|
|
|
+ return ResultMap.error(new IllegalOperatorException("物料信息不能为空"));
|
|
|
+ }
|
|
|
+ Product product = JSONObject.parseObject(productObject.toString(), Product.class);
|
|
|
+ // 检验物料信息
|
|
|
+ ResultMap resultMap = productService.checkProductInfo(product);
|
|
|
+ if (Objects.equals(CodeType.ERROR.code(), resultMap.getCode())) {
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+ // PCB
|
|
|
+ Object pcbObject = jsonObject.get("isPcb");
|
|
|
+ Integer isPcb = null;
|
|
|
+ if (null != pcbObject) {
|
|
|
+ isPcb = Integer.valueOf(pcbObject.toString());
|
|
|
+ }
|
|
|
+ Long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
|
+ Long userUU = SystemSession.getUser().getUserUU();
|
|
|
+ productService.setDefaultInfo(enUU, userUU, product);
|
|
|
+ // PCB产品做标准判断处理
|
|
|
+ if (null != isPcb && Objects.equals(IntegerConstant.YES_SHORT, isPcb)) {
|
|
|
+ // 判断传入的数据是否是标准的
|
|
|
+ ResultMap criterionResultMap = productService.checkCriterion(product);
|
|
|
+ if (Objects.equals(CodeType.ERROR.code(), criterionResultMap.getCode())) {
|
|
|
+ return criterionResultMap;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Product productInfo = new Product();
|
|
|
+ // 物料存在,更新
|
|
|
+ List<V_ProductPrivate> existProducts = v_productPrivateDao.findProductByPcmpcodeAndPbrandenAndEnUU(product.getCmpCode(), product.getBrand(), enUU);
|
|
|
+ if (CollectionUtils.isNotEmpty(existProducts)) {
|
|
|
+ V_ProductPrivate productPrivate = existProducts.get(0);
|
|
|
+ productInfo = productInfo.setByPrivate(productPrivate);
|
|
|
+ BeanUtils.copyProperties(product, productInfo, Product.class);
|
|
|
+ productInfo.setStandard(productPrivate.getStandard());
|
|
|
+ productInfo.setId(productPrivate.getId());
|
|
|
+ } else {
|
|
|
+ // 物料不存在,新增操作
|
|
|
+ productInfo = product;
|
|
|
+ }
|
|
|
+ // 判断是否标准
|
|
|
+ productService.checkStandard(productInfo);
|
|
|
+ LOGGER.info("单个物料保存: " + FlexJsonUtils.toJson(productInfo));
|
|
|
+ productInfo = productService.saveAndCheck(productInfo);
|
|
|
+
|
|
|
+ // 保存到商城私有库
|
|
|
+ productService.addToPrivate(productInfo, product);
|
|
|
+ // 添加到个人物料库
|
|
|
+ productService.bindToPerson(productInfo, userUU, enUU);
|
|
|
+ return ResultMap.success();
|
|
|
+ }
|
|
|
}
|