|
@@ -50,8 +50,16 @@ import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockWaitDto;
|
|
|
import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
|
import com.fjhx.wms.entity.stock.emums.StockWaitType;
|
|
|
-import com.fjhx.wms.entity.stock.po.*;
|
|
|
-import com.fjhx.wms.service.stock.*;
|
|
|
+import com.fjhx.wms.entity.stock.po.Stock;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockJournal;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockWait;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockWaitDetails;
|
|
|
+import com.fjhx.wms.service.stock.StockJournalDetailsService;
|
|
|
+import com.fjhx.wms.service.stock.StockJournalService;
|
|
|
+import com.fjhx.wms.service.stock.StockService;
|
|
|
+import com.fjhx.wms.service.stock.StockWaitDetailsService;
|
|
|
+import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
@@ -67,7 +75,13 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -826,7 +840,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
|
|
|
private List<Map<Integer, String>> readBatchOutExcel(MultipartFile file) {
|
|
|
//读取数据
|
|
|
- List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();
|
|
|
+ List<Map<Integer, String>> list = new ArrayList<>();
|
|
|
try {
|
|
|
EasyExcel.read(file.getInputStream()).sheet(0).registerReadListener(new AnalysisEventListener<Map<Integer, String>>() {
|
|
|
@Override
|
|
@@ -851,7 +865,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
if (ObjectUtil.isEmpty(list)) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
- List<String> collect = list.get(0).values().stream().collect(Collectors.toList());
|
|
|
+ List<String> collect = new ArrayList<>(list.get(0).values());
|
|
|
collect.remove(0);
|
|
|
return collect;
|
|
|
}
|
|
@@ -866,43 +880,19 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
}
|
|
|
|
|
|
//处理数据
|
|
|
- List<JdBatchOutStockBo> outList = new ArrayList<>();
|
|
|
- Object[] titles = null;
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
- Map<Integer, String> items = list.get(i);
|
|
|
-
|
|
|
- //标题数据
|
|
|
- if (i == 0) {
|
|
|
- titles = items.values().toArray();
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- //正文数据
|
|
|
- for (int j = 1; j < titles.length; j++) {
|
|
|
- if (items.get(j) == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- JdBatchOutStockBo jdBatchOutStockBo = new JdBatchOutStockBo();
|
|
|
- jdBatchOutStockBo.setOrderId(Long.parseLong((String) titles[j]));//订单号
|
|
|
- jdBatchOutStockBo.setProductCode(items.get(0));//产品编号
|
|
|
- jdBatchOutStockBo.setQuantity(new BigDecimal(items.get(j)));//出库数量
|
|
|
-
|
|
|
- outList.add(jdBatchOutStockBo);
|
|
|
- }
|
|
|
- }
|
|
|
+ List<JdBatchOutStockBo> outList = getJdBatchOutStockBos(list);
|
|
|
|
|
|
//获取基础信息集合
|
|
|
List<String> pCodes = outList.stream().map(JdBatchOutStockBo::getProductCode).distinct().collect(Collectors.toList());
|
|
|
+ Map<String, Long> pInfoMap = productInfoService.mapKV(ProductInfo::getCustomCode, ProductInfo::getId, q -> q.in(ProductInfo::getCustomCode, pCodes));
|
|
|
+
|
|
|
List<Long> jdOrderIds = outList.stream().map(JdBatchOutStockBo::getOrderId).distinct().collect(Collectors.toList());
|
|
|
+ Map<Long, Long> jdInfoMap = this.mapKV(JdOrder::getOrderId, JdOrder::getId, q -> q.in(JdOrder::getOrderId, jdOrderIds));
|
|
|
|
|
|
//赋值并校验 产品,京东订单 信息
|
|
|
List<String> errProductCodes = new ArrayList<>();
|
|
|
List<String> errJdOrderCodes = new ArrayList<>();
|
|
|
|
|
|
- Map<String, Long> pInfoMap = productInfoService.mapKV(ProductInfo::getCustomCode, ProductInfo::getId, q -> q.in(ProductInfo::getCustomCode, pCodes));
|
|
|
- Map<Long, Long> jdInfoMap = this.mapKV(JdOrder::getOrderId, JdOrder::getId, q -> q.in(JdOrder::getOrderId, jdOrderIds));
|
|
|
-
|
|
|
for (JdBatchOutStockBo teaBo : outList) {
|
|
|
//赋值并校验产品信息
|
|
|
String productCode = teaBo.getProductCode();
|
|
@@ -910,7 +900,6 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
if (ObjectUtil.isEmpty(productId)) {
|
|
|
errProductCodes.add(productCode);
|
|
|
}
|
|
|
- teaBo.setProductId(productId);
|
|
|
|
|
|
//赋值并校验京东订单信息
|
|
|
Long orderId = teaBo.getOrderId();
|
|
@@ -918,6 +907,8 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
if (ObjectUtil.isEmpty(jdInfoId)) {
|
|
|
errJdOrderCodes.add(String.valueOf(orderId));
|
|
|
}
|
|
|
+
|
|
|
+ teaBo.setProductId(productId);
|
|
|
teaBo.setOrderInfoId(jdInfoId);
|
|
|
}
|
|
|
if (ObjectUtil.isNotEmpty(errProductCodes)) {
|
|
@@ -934,23 +925,20 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
.in(StockWaitDetails::getBusinessId, businessIds)
|
|
|
.in(StockWaitDetails::getProductId, productIds)
|
|
|
);
|
|
|
+
|
|
|
ArrayList<StockWaitDetailsDto> outStockWaitDetailsList = new ArrayList<>();
|
|
|
for (JdBatchOutStockBo teaBo : outList) {
|
|
|
- StockWaitDetails dataBaseInfo = list1.stream().filter(item ->
|
|
|
- item.getBusinessId().equals(teaBo.getOrderInfoId()) &&
|
|
|
- item.getProductId().equals(teaBo.getProductId())
|
|
|
- ).findFirst().orElse(null);
|
|
|
-// StockWaitDetails dataBaseInfo = stockWaitDetailsService.getOne(q -> q
|
|
|
-// .eq(StockWaitDetails::getBusinessId, teaBo.getOrderInfoId())
|
|
|
-// .eq(StockWaitDetails::getProductId, teaBo.getProductId())
|
|
|
-// );
|
|
|
- if (ObjectUtil.isEmpty(dataBaseInfo)) {
|
|
|
+ StockWaitDetails dataBaseInfo = list1.stream()
|
|
|
+ .filter(item -> item.getBusinessId().equals(teaBo.getOrderInfoId()) && item.getProductId().equals(teaBo.getProductId()))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(null);
|
|
|
+
|
|
|
+ if (dataBaseInfo == null) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//数量校验
|
|
|
- BigDecimal receiptQuantity = dataBaseInfo.getReceiptQuantity();
|
|
|
- receiptQuantity = ObjectUtil.isEmpty(receiptQuantity) ? BigDecimal.ZERO : receiptQuantity;
|
|
|
+ BigDecimal receiptQuantity = ObjectUtil.defaultIfNull(dataBaseInfo.getReceiptQuantity(), BigDecimal.ZERO);
|
|
|
if (receiptQuantity.add(teaBo.getQuantity()).compareTo(dataBaseInfo.getQuantity()) > 0) {
|
|
|
throw new ServiceException(String.format("订单号:%s,产品编号:%s 出库数量>待出库数量", teaBo.getOrderId(), teaBo.getProductCode()));
|
|
|
}
|
|
@@ -980,4 +968,33 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
|
stockWaitService.addByWdly(stockWaitDto);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private List<JdBatchOutStockBo> getJdBatchOutStockBos(List<Map<Integer, String>> list) {
|
|
|
+ List<JdBatchOutStockBo> outList = new ArrayList<>();
|
|
|
+ Object[] titles = null;
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ Map<Integer, String> items = list.get(i);
|
|
|
+
|
|
|
+ //标题数据
|
|
|
+ if (i == 0) {
|
|
|
+ titles = items.values().toArray();
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //正文数据
|
|
|
+ for (int j = 1; j < titles.length; j++) {
|
|
|
+ if (items.get(j) == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ JdBatchOutStockBo jdBatchOutStockBo = new JdBatchOutStockBo();
|
|
|
+ jdBatchOutStockBo.setOrderId(Long.parseLong((String) titles[j]));//订单号
|
|
|
+ jdBatchOutStockBo.setProductCode(items.get(0));//产品编号
|
|
|
+ jdBatchOutStockBo.setQuantity(new BigDecimal(items.get(j)));//出库数量
|
|
|
+
|
|
|
+ outList.add(jdBatchOutStockBo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return outList;
|
|
|
+ }
|
|
|
}
|