|
@@ -10,21 +10,18 @@ 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.DoubleConstant;
|
|
|
import com.uas.platform.b2c.prod.commodity.constant.ErrorInfoConstant;
|
|
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.constant.UploadConstant;
|
|
|
-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.dao.ReleaseProductByBatchDao;
|
|
|
import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
|
|
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.Product;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
|
|
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.ReleaseProductByBatch;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
|
|
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.ProductPrivateService;
|
|
|
import com.uas.platform.b2c.prod.commodity.service.ProductService;
|
|
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.service.ReleaseProductByBatchService;
|
|
|
import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
|
|
import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
|
|
|
import com.uas.platform.b2c.prod.commodity.util.SheetUtil;
|
|
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.product.common.service.CreateNumberService;
|
|
|
-import com.uas.platform.b2c.prod.store.service.StoreInService;
|
|
|
|
|
import com.uas.platform.b2c.trade.order.service.PurchaseProductService;
|
|
import com.uas.platform.b2c.trade.order.service.PurchaseProductService;
|
|
|
import com.uas.platform.b2c.trade.support.CodeType;
|
|
import com.uas.platform.b2c.trade.support.CodeType;
|
|
|
import com.uas.platform.b2c.trade.support.ResultMap;
|
|
import com.uas.platform.b2c.trade.support.ResultMap;
|
|
@@ -75,20 +72,11 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ProductService productService;
|
|
private ProductService productService;
|
|
|
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private ProductPrivateDao productPrivateDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private ProductDao productDao;
|
|
|
|
|
-
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private V_ProductPrivateDao v_productPrivateDao;
|
|
private V_ProductPrivateDao v_productPrivateDao;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
- private GoodsService goodsService;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private StoreInService storeInService;
|
|
|
|
|
|
|
+ private ProductPrivateService productPrivateService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 物料服务访问路径
|
|
* 物料服务访问路径
|
|
@@ -154,7 +142,10 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
// 本次上传总数
|
|
// 本次上传总数
|
|
|
int total = 0;
|
|
int total = 0;
|
|
|
// 批号
|
|
// 批号
|
|
|
|
|
+ Long start = System.currentTimeMillis();
|
|
|
String batch = createNumberService.getTimeNumber("product$goods", 8, rowNum);
|
|
String batch = createNumberService.getTimeNumber("product$goods", 8, rowNum);
|
|
|
|
|
+ System.out.println("创建批号消耗: " + (System.currentTimeMillis() - start));
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
for (int r = minExcelNumber; r <= rowNum; r++) {
|
|
for (int r = minExcelNumber; r <= rowNum; r++) {
|
|
|
Row row = sheet.getRow(r);
|
|
Row row = sheet.getRow(r);
|
|
|
// 英文品牌名称
|
|
// 英文品牌名称
|
|
@@ -177,20 +168,29 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
}
|
|
}
|
|
|
// 保存临时表信息
|
|
// 保存临时表信息
|
|
|
}
|
|
}
|
|
|
- releaseProductByBatchDao.save(releaseProductByBatchArrayList);
|
|
|
|
|
|
|
+ System.out.println("校验表格数据消耗: " + (System.currentTimeMillis() - start));
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
|
|
+ releaseProductByBatchService.saveByJdbcTemplate(releaseProductByBatchArrayList);
|
|
|
|
|
+ System.out.println("保存临时表: " + (System.currentTimeMillis() - start));
|
|
|
Long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
Long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
|
// 验证数据信息是否重复
|
|
// 验证数据信息是否重复
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
releaseProductByBatchDao.callReleaseExistValidProcedure(batch, enUU);
|
|
releaseProductByBatchDao.callReleaseExistValidProcedure(batch, enUU);
|
|
|
|
|
+ System.out.println("批量上架验证数据信息是否重复: " + (System.currentTimeMillis() - start));
|
|
|
// 验证数是否存在个人物料库
|
|
// 验证数是否存在个人物料库
|
|
|
Long userUU = SystemSession.getUser().getUserUU();
|
|
Long userUU = SystemSession.getUser().getUserUU();
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
releaseProductByBatchDao.callReleasePersonExistValidProcedure(batch, enUU, userUU);
|
|
releaseProductByBatchDao.callReleasePersonExistValidProcedure(batch, enUU, userUU);
|
|
|
|
|
+ System.out.println("批量上架个人物料验证数据信息是否重复: " + (System.currentTimeMillis() - start));
|
|
|
ModelMap modelMap = new ModelMap();
|
|
ModelMap modelMap = new ModelMap();
|
|
|
// 处理上传数据
|
|
// 处理上传数据
|
|
|
assignmentProductInfo(enUU, modelMap, batch);
|
|
assignmentProductInfo(enUU, modelMap, batch);
|
|
|
// 验证成功后进行绑定处理
|
|
// 验证成功后进行绑定处理
|
|
|
Integer assignNumber = 0;
|
|
Integer assignNumber = 0;
|
|
|
// 去重后的数据
|
|
// 去重后的数据
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
List<ReleaseProductByBatch> uniqueBatchList = releaseProductByBatchDao.findByRelbatchidAndReleaseCodeNot(userUU, batch, failCode);
|
|
List<ReleaseProductByBatch> uniqueBatchList = releaseProductByBatchDao.findByRelbatchidAndReleaseCodeNot(userUU, batch, failCode);
|
|
|
|
|
+ System.out.println("查询去重后的数据: " + (System.currentTimeMillis() - start));
|
|
|
if (!CollectionUtils.isEmpty(uniqueBatchList)) {
|
|
if (!CollectionUtils.isEmpty(uniqueBatchList)) {
|
|
|
assignNumber = assignBatch(uniqueBatchList);
|
|
assignNumber = assignBatch(uniqueBatchList);
|
|
|
}
|
|
}
|
|
@@ -358,6 +358,7 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
data.put("userUU", SystemSession.getUser().getUserUU());
|
|
data.put("userUU", SystemSession.getUser().getUserUU());
|
|
|
params.put("data", data);
|
|
params.put("data", data);
|
|
|
HttpUtil.Response res = null;
|
|
HttpUtil.Response res = null;
|
|
|
|
|
+ Long start = System.currentTimeMillis();
|
|
|
try {
|
|
try {
|
|
|
res = HttpUtil.sendPostRequest(productServiceIp + "/productuser/coverToUserByIds", params);
|
|
res = HttpUtil.sendPostRequest(productServiceIp + "/productuser/coverToUserByIds", params);
|
|
|
return Integer.valueOf(res.getResponseText());
|
|
return Integer.valueOf(res.getResponseText());
|
|
@@ -365,6 +366,7 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
|
|
String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
|
|
|
LOGGER.error("coverToUserProd http response status error: " + resultCode);
|
|
LOGGER.error("coverToUserProd http response status error: " + resultCode);
|
|
|
}
|
|
}
|
|
|
|
|
+ System.out.println("物料服务保存: " + (System.currentTimeMillis() - start));
|
|
|
}
|
|
}
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -379,7 +381,9 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
List<String> productCodeList = new ArrayList<>();
|
|
List<String> productCodeList = new ArrayList<>();
|
|
|
Set<Long> idSet = new HashSet<>();
|
|
Set<Long> idSet = new HashSet<>();
|
|
|
List<ReleaseProductByBatch> batchList = new ArrayList<>();
|
|
List<ReleaseProductByBatch> batchList = new ArrayList<>();
|
|
|
- uniqueBatchList.forEach(batch -> {
|
|
|
|
|
|
|
+ System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "100");
|
|
|
|
|
+ Long start = System.currentTimeMillis();
|
|
|
|
|
+ uniqueBatchList.parallelStream().forEach(batch -> {
|
|
|
if (null != batch.getProductid()) {
|
|
if (null != batch.getProductid()) {
|
|
|
idSet.add(batch.getProductid());
|
|
idSet.add(batch.getProductid());
|
|
|
} else {
|
|
} else {
|
|
@@ -391,22 +395,30 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
|
|
|
batchList.add(batch);
|
|
batchList.add(batch);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+ System.out.println("循环处理物料code: " + (System.currentTimeMillis() - start));
|
|
|
// 新增到物料库
|
|
// 新增到物料库
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
productService.saveByJdbcTemplate(batchList);
|
|
productService.saveByJdbcTemplate(batchList);
|
|
|
|
|
+ System.out.println("批量保存物料库: " + (System.currentTimeMillis() - start));
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
List<com.uas.platform.b2c.prod.commodity.model.Product> productList = productService.findProductIdAndProdnumsByProdNums(productCodeList);
|
|
List<com.uas.platform.b2c.prod.commodity.model.Product> productList = productService.findProductIdAndProdnumsByProdNums(productCodeList);
|
|
|
|
|
+ System.out.println("根物料标号,获取物料编号和物料id: " + (System.currentTimeMillis() - start));
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
List<ProductPrivate> privateList = new ArrayList<>();
|
|
List<ProductPrivate> privateList = new ArrayList<>();
|
|
|
- productList.forEach(product -> {
|
|
|
|
|
|
|
+ productList.parallelStream().forEach(product -> {
|
|
|
ProductPrivate productPrivate = new ProductPrivate(product.getId());
|
|
ProductPrivate productPrivate = new ProductPrivate(product.getId());
|
|
|
productPrivate.setAttach(product.getAttachment());
|
|
productPrivate.setAttach(product.getAttachment());
|
|
|
privateList.add(productPrivate);
|
|
privateList.add(productPrivate);
|
|
|
idSet.add(product.getId());
|
|
idSet.add(product.getId());
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+ System.out.println("循环添加私有字段: " + (System.currentTimeMillis() - start));
|
|
|
|
|
+ start = System.currentTimeMillis();
|
|
|
// 保存到私有库
|
|
// 保存到私有库
|
|
|
if (CollectionUtils.isNotEmpty(privateList)) {
|
|
if (CollectionUtils.isNotEmpty(privateList)) {
|
|
|
- productPrivateDao.save(privateList);
|
|
|
|
|
- LOGGER.info("批量上传个人物料库,同步新增到商城私有库: " + privateList.size());
|
|
|
|
|
|
|
+ Integer count = productPrivateService.saveByJdbcTemplate(privateList);
|
|
|
|
|
+ LOGGER.info("批量上传个人物料库,同步新增到商城私有库: " + count);
|
|
|
}
|
|
}
|
|
|
|
|
+ System.out.println("保存到私有库: " + (System.currentTimeMillis() - start));
|
|
|
return idSet;
|
|
return idSet;
|
|
|
}
|
|
}
|
|
|
|
|
|