24282 10 mēneši atpakaļ
vecāks
revīzija
6c14f788f0

+ 62 - 45
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -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;
+    }
 }

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java

@@ -27,11 +27,11 @@ public class StockWaitDto extends StockWait {
      */
     private List<StockWaitDetailsDto> stockWaitDetailsList;
 
-
     /**
      * 物流公司编号
      */
     private String logisticsCompanyCode;
+
     /**
      * 物流编号
      */

+ 9 - 10
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/StockWaitType.java

@@ -9,15 +9,14 @@ import java.util.HashMap;
 @Getter
 public enum StockWaitType {
 
-//    BORDER_OF_LINE_IN(InOutType.IN,JournalType.BORDER_OF_LINE_IN, 1, "线边回仓", ""),
-//    COMPLETION_IN(InOutType.IN,JournalType.COMPLETION_IN, 2, "完工入库", ""),
-    PURCHASE_ARRIVAL_IN(InOutType.IN,JournalType.PURCHASE_ARRIVAL_IN, 3, "采购到货", ""),
-    BACK_OUT(InOutType.OUT,  JournalType.BACK_OUT,4, "退货出库", ""),
+    // BORDER_OF_LINE_IN(InOutType.IN,JournalType.BORDER_OF_LINE_IN, 1, "线边回仓", ""),
+    // COMPLETION_IN(InOutType.IN,JournalType.COMPLETION_IN, 2, "完工入库", ""),
+    PURCHASE_ARRIVAL_IN(InOutType.IN, JournalType.PURCHASE_ARRIVAL_IN, 3, "采购到货", ""),
+    BACK_OUT(InOutType.OUT, JournalType.BACK_OUT, 4, "退货出库", ""),
     JD_ORDER_OUT(InOutType.OUT, JournalType.JD_SALES_OUT, 5, "京东订单出库", "jd_order"),
-    SALE_ORDER_OUT(InOutType.OUT,JournalType.SALES_OUT, 6, "销售订单出库", "order_info"),
-//    PRODUCTION_TASK_OUT(InOutType.OUT, 7, "生产任务待出库", "production_task"),
-    EXCESS_GOODS_IN(InOutType.IN, JournalType.EXCESS_GOODS_IN,23, "多货入库", "production_task");
-
+    SALE_ORDER_OUT(InOutType.OUT, JournalType.SALES_OUT, 6, "销售订单出库", "order_info"),
+    // PRODUCTION_TASK_OUT(InOutType.OUT, 7, "生产任务待出库", "production_task"),
+    EXCESS_GOODS_IN(InOutType.IN, JournalType.EXCESS_GOODS_IN, 23, "多货入库", "production_task");
 
     /**
      * 出入库类型
@@ -25,7 +24,6 @@ public enum StockWaitType {
     private final InOutType type;
     private final JournalType journalType;
 
-
     /**
      * 详细类型
      */
@@ -41,7 +39,8 @@ public enum StockWaitType {
      */
     private final String linkBusinessTableName;
 
-    private static HashMap<String, StockWaitType> hashMap = new HashMap<>();
+    private static final HashMap<String, StockWaitType> hashMap = new HashMap<>();
+
     static {
         for (StockWaitType value : StockWaitType.values()) {
             hashMap.put(String.valueOf(value.detailType), value);

+ 1 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockWait.java

@@ -54,6 +54,7 @@ public class StockWait extends BasePo {
     private Long deliverGoodsId;
 
     private Long arrivalId;
+
     private Long purchaseId;
 
     private Long excessGoodsId;

+ 25 - 12
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -25,7 +25,12 @@ import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import com.fjhx.wms.entity.stock.dto.StockWaitDto;
 import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
-import com.fjhx.wms.entity.stock.po.*;
+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.entity.stock.po.StockWaitDetailsCheck;
 import com.fjhx.wms.entity.stock.vo.InStockWaitExportExcel;
 import com.fjhx.wms.entity.stock.vo.StockWaitDetailsVo;
 import com.fjhx.wms.entity.stock.vo.StockWaitVo;
@@ -35,7 +40,12 @@ import com.fjhx.wms.service.PurService;
 import com.fjhx.wms.service.WmsService;
 import com.fjhx.wms.service.arrival.ArrivalStockRecordsDetailsService;
 import com.fjhx.wms.service.arrival.ArrivalStockRecordsService;
-import com.fjhx.wms.service.stock.*;
+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.StockWaitDetailsCheckService;
+import com.fjhx.wms.service.stock.StockWaitDetailsService;
+import com.fjhx.wms.service.stock.StockWaitService;
 import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.fjhx.wms.utils.CodeEnum;
 import com.ruoyi.common.exception.ServiceException;
@@ -48,7 +58,13 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -364,7 +380,6 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             productInfoService.updateBatchById(productInfoList);
         }
 
-
         //创建出入库记录
         Integer businessType = stockWait.getBusinessType();
         StockJournal stockJournal = new StockJournal();
@@ -381,7 +396,6 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
 
         List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = new ArrayList<>();
 
-
         //操作库存
         List<Long> swdIds = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
         Map<Long, StockWaitDetails> oldStockWaitDetailsMap = stockWaitDetailsService.mapKEntity(StockWaitDetails::getId, q -> q.in(StockWaitDetails::getId, swdIds));
@@ -410,26 +424,25 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         }
 
 
-        //库存操作类型
-        Integer opType = -1;
+        // 库存操作类型
+        int opType = -1;
         //到货入库
-        if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType() == businessType) {
+        if (Objects.equals(StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType(), businessType)) {
             opType = 3;
         }
         //退货出库
-        if (StockWaitType.BACK_OUT.getDetailType() == businessType) {
+        if (Objects.equals(StockWaitType.BACK_OUT.getDetailType(), businessType)) {
             opType = 4;
         }
         //销售订单出库
-        if (StockWaitType.SALE_ORDER_OUT.getDetailType() == businessType) {
+        if (Objects.equals(StockWaitType.SALE_ORDER_OUT.getDetailType(), businessType)) {
             opType = 2;
         }
         //京东订单出库
-        if (StockWaitType.JD_ORDER_OUT.getDetailType().equals(businessType)) {
+        if (Objects.equals(StockWaitType.JD_ORDER_OUT.getDetailType(), businessType)) {
             opType = 2;
         }
 
-
         stockService.ModifyInventory(stockJournal.getId(), opType, stockList, stockWaitDto.getWarehouseId());
         //保存出入库明细
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);