소스 검색

京东订单出库修改

yzc 1 년 전
부모
커밋
76c2ec6984

+ 7 - 8
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java

@@ -14,7 +14,6 @@ import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
-import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -89,13 +88,13 @@ public class JdOrderController {
         jdOrderService.excelImport(file, customerId);
     }
 
-    /**
-     * 京东订单出库
-     */
-    @PostMapping("/outbound")
-    public void outbound(@RequestBody JdOrderDto jdOrderDto) {
-        jdOrderService.outbound(jdOrderDto);
-    }
+//    /**
+//     * 京东订单出库
+//     */
+//    @PostMapping("/outbound")
+//    public void outbound(@RequestBody JdOrderDto jdOrderDto) {
+//        jdOrderService.outbound(jdOrderDto);
+//    }
 
     /**
      * 京东订单接收

+ 92 - 34
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java

@@ -2,20 +2,24 @@ package com.fjhx.victoriatourist.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.area.utils.CustomizeAreaUtil;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.kd100.util.KD100Util;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.group.dto.GroupRecordDto;
 import com.fjhx.victoriatourist.entity.group.po.GroupRecordDetails;
-import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
-import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.logistics.po.LogisticsDetails;
 import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
 import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
 import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
 import com.fjhx.victoriatourist.entity.quality.po.QualityDetails;
 import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.group.GroupRecordDetailsService;
-import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.fjhx.victoriatourist.service.logistics.LogisticsDetailsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.order.OrderInfoService;
 import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
@@ -25,10 +29,12 @@ import com.fjhx.wms.entity.stock.dto.StockWaitDto;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.WmsService;
+import com.fjhx.wms.service.stock.StockWaitService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -45,10 +51,14 @@ public class WmsServiceImpl implements WmsService {
     private QualityDetailsService qualityDetailsService;
     @Autowired
     private GroupRecordDetailsService groupRecordDetailsService;
-    @Autowired
-    private JdOrderService jdOrderService;
+    //    @Autowired
+//    private JdOrderService jdOrderService;
     @Autowired
     private LogisticsInfosService logisticsInfosService;
+    @Autowired
+    private LogisticsDetailsService logisticsDetailsService;
+    @Autowired
+    private StockWaitService stockWaitService;
 
 //    /**
 //     * 销售订单出库
@@ -78,8 +88,8 @@ public class WmsServiceImpl implements WmsService {
             List<Long> ids = logisticsInfosList.stream().map(LogisticsInfos::getId).collect(Collectors.toList());
             AbnormalInfo oldAbnormalInfo = abnormalInfoService.getOne(q -> q
                     .in(AbnormalInfo::getLogisticsInfosId, ids)
-                    .eq(AbnormalInfo::getType,50)
-                    .eq(AbnormalInfo::getPurchaseId,purchaseId)
+                    .eq(AbnormalInfo::getType, 50)
+                    .eq(AbnormalInfo::getPurchaseId, purchaseId)
             );
             if (ObjectUtil.isNotEmpty(oldAbnormalInfo)) {
                 abnormalInfo = oldAbnormalInfo;
@@ -129,40 +139,88 @@ public class WmsServiceImpl implements WmsService {
         groupRecordDetailsService.add(dto);
     }
 
-    @Override
-    public void jdOrderOutbound(StockWaitDto stockWaitDto) {
-        JdOrderDto jdOrderDto = new JdOrderDto();
-        jdOrderDto.setId(stockWaitDto.getBusinessId());
-        jdOrderDto.setInWarehouseId(stockWaitDto.getInWarehouseId());
-        jdOrderDto.setOutWarehouseId(stockWaitDto.getOutWarehouseId());
-        jdOrderDto.setReservationCode(stockWaitDto.getReservationCode());
-        jdOrderDto.setRemark(stockWaitDto.getRemark());
-        jdOrderDto.setLogisticsCompanyCode(stockWaitDto.getLogisticsCompanyCode());
-        jdOrderDto.setLogisticsCode(stockWaitDto.getLogisticsCode());
-
-        List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
-        for (StockWaitDetails stockWaitDetails : stockWaitDetailsList) {
-            JdOrderDetails jdOrderDetails = new JdOrderDetails();
-            jdOrderDetails.setId(stockWaitDetails.getBusinessDetailsId());
-            jdOrderDetails.setProductId(stockWaitDetails.getProductId());
-            jdOrderDetails.setQuantity(stockWaitDetails.getQuantity());
-        }
-        jdOrderService.outbound(jdOrderDto);
-    }
+//    @Override
+//    public void jdOrderOutbound(StockWaitDto stockWaitDto) {
+//        JdOrderDto jdOrderDto = new JdOrderDto();
+//        jdOrderDto.setId(stockWaitDto.getBusinessId());
+//        jdOrderDto.setInWarehouseId(stockWaitDto.getInWarehouseId());
+//        jdOrderDto.setOutWarehouseId(stockWaitDto.getOutWarehouseId());
+//        jdOrderDto.setReservationCode(stockWaitDto.getReservationCode());
+//        jdOrderDto.setRemark(stockWaitDto.getRemark());
+//        jdOrderDto.setLogisticsCompanyCode(stockWaitDto.getLogisticsCompanyCode());
+//        jdOrderDto.setLogisticsCode(stockWaitDto.getLogisticsCode());
+//
+//        List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
+//        for (StockWaitDetails stockWaitDetails : stockWaitDetailsList) {
+//            JdOrderDetails jdOrderDetails = new JdOrderDetails();
+//            jdOrderDetails.setId(stockWaitDetails.getBusinessDetailsId());
+//            jdOrderDetails.setProductId(stockWaitDetails.getProductId());
+//            jdOrderDetails.setQuantity(stockWaitDetails.getQuantity());
+//            jdOrderDetails.setOriginalNum(stockWaitDetails.getQuantity().intValue());
+//        }
+//        jdOrderService.outbound(jdOrderDto);
+//    }
+
+//    @Override
+//    public void purchaseBackOutbound(StockWaitDto stockWaitDto) {
+//        purchaseBackService.backOuts(stockWaitDto);
+//    }
 
     @Override
-    public void purchaseBackOutbound(StockWaitDto stockWaitDto) {
-        purchaseBackService.backOuts(stockWaitDto);
+    public void editArrivalRemark(Long businessId, String arrivalRemark) {
+        logisticsInfosService.update(q -> q.eq(LogisticsInfos::getBusinessId, businessId).set(LogisticsInfos::getArrivalRemark, arrivalRemark));
     }
 
     @Override
-    public void editArrivalRemark(Long businessId, String arrivalRemark){
-        logisticsInfosService.update(q->q.eq(LogisticsInfos::getBusinessId,businessId).set(LogisticsInfos::getArrivalRemark,arrivalRemark));
+    public String getArrivalRemark(Long businessId) {
+        LogisticsInfos one = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, businessId));
+        return ObjectUtil.isNotEmpty(one) ? one.getArrivalRemark() : "";
     }
 
+    /**
+     * 创建京东订单待出库物流信息
+     */
     @Override
-    public String getArrivalRemark(Long businessId){
-        LogisticsInfos one = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, businessId));
-        return ObjectUtil.isNotEmpty(one)?one.getArrivalRemark():"";
+    public void createJdLogisticsInfo(StockWaitDto dto) {
+        StockWait stockWait = stockWaitService.getById(dto.getId());
+        List<StockWaitDetails> stockWaitDetailsList = dto.getStockWaitDetailsList();
+
+        //创建物流数据
+        LogisticsInfos logisticsInfos = new LogisticsInfos();
+        logisticsInfos.setId(IdWorker.getId());
+        logisticsInfos.setBusinessId(stockWait.getBusinessId());
+        logisticsInfos.setBusinessCode(stockWait.getBusinessCode());
+        logisticsInfos.setBusinessType(2);//京东订单出库
+        logisticsInfos.setLogisticsCompanyCode(dto.getLogisticsCompanyCode());
+        logisticsInfos.setCode(dto.getLogisticsCode());
+        logisticsInfos.setWarehouseId(dto.getWarehouseId());
+        logisticsInfos.setReservationCode(dto.getReservationCode());
+        logisticsInfos.setIsKd100(0);
+
+
+        if (ObjectUtil.isNotEmpty(dto.getLogisticsCode()) && ObjectUtil.isNotEmpty(dto.getLogisticsCompanyCode())) {
+            //发起快递100订阅
+            DynamicDataSourceContextHolder.push(SourceConstant.KD100);
+            //只在生产环境调用Kd100
+            String activeProfile = SpringUtil.getActiveProfile();
+            Integer state = !"prod".equals(activeProfile) ? -1 : KD100Util.monitor(logisticsInfos.getLogisticsCompanyCode(), logisticsInfos.getCode(), logisticsInfos.getId(), 2, LogisticsInfos.class).getState();
+            DynamicDataSourceContextHolder.poll();
+            logisticsInfos.setIsKd100(1);
+            logisticsInfos.setLogisticsStatus(state);
+        }
+
+        logisticsInfosService.save(logisticsInfos);
+
+
+        List<LogisticsDetails> logisticsDetailsList = new ArrayList<>();
+        for (StockWaitDetails stockWaitDetails : stockWaitDetailsList) {
+            LogisticsDetails logisticsDetails = new LogisticsDetails();
+            logisticsDetails.setLogisticsInfoId(logisticsInfos.getId());
+            logisticsDetails.setLogisticsInfoCode(logisticsInfos.getCode());
+            logisticsDetails.setBusinessDetailsId(stockWaitDetails.getId());
+            logisticsDetails.setReceiptQuantity(stockWaitDetails.getQuantity());
+            logisticsDetailsList.add(logisticsDetails);
+        }
+        logisticsDetailsService.saveBatch(logisticsDetailsList);
     }
 }

+ 4 - 4
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderService.java

@@ -43,10 +43,10 @@ public interface JdOrderService extends BaseService<JdOrder> {
      */
     void excelImport(MultipartFile file, Long customerId);
 
-    /**
-     * 京东订单出库
-     */
-    void outbound(JdOrderDto jdOrderDto);
+//    /**
+//     * 京东订单出库
+//     */
+//    void outbound(JdOrderDto jdOrderDto);
 
     Page<JdOrderVo> receivePage(JdOrderSelectDto dto);
 

+ 89 - 93
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -17,7 +17,6 @@ import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.util.excel.util.ExcelUtil;
 import com.fjhx.kd100.entity.company.po.CompanyInfo;
 import com.fjhx.kd100.service.company.CompanyInfoService;
-import com.fjhx.kd100.util.KD100Util;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.jd.bo.JdOrderExcelImportBo;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
@@ -27,7 +26,6 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
 import com.fjhx.victoriatourist.entity.jd.vo.TellBackOrderVO;
-import com.fjhx.victoriatourist.entity.logistics.po.LogisticsDetails;
 import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
 import com.fjhx.victoriatourist.entity.logistics.vo.LogisticsInfosVo;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
@@ -42,7 +40,6 @@ import com.fjhx.victoriatourist.service.logistics.LogisticsDetailsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
-import com.fjhx.victoriatourist.utils.CodeEnum;
 import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
 import com.fjhx.wms.entity.stock.po.*;
@@ -57,7 +54,6 @@ import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
@@ -366,95 +362,95 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         stockWaitDetailsService.saveBatch(stockWaitDetailsList);
     }
 
-    @DSTransactional
-    @Override
-    public void outbound(JdOrderDto jdOrderDto) {
-        //修改待出库状态
-        StockWait stockWait = stockWaitService.getOne(q -> q.eq(StockWait::getBusinessId, jdOrderDto.getId()));
-        stockWait.setStatus(2);
-        stockWaitService.updateById(stockWait);
-
-        JdOrder jdOrder = getById(jdOrderDto.getId());
-        jdOrder.setOutStatus(3);//将京东订单状态修改为出库
-        updateById(jdOrder);
-        //创建京东订单调仓
-        StockTransfer stockTransfer = new StockTransfer();
-        stockTransfer.setType(2);//京东订单出库
-        stockTransfer.setCode(CodeEnum.STOCK_TRANSFER.getCode());
-        stockTransfer.setBusinessId(jdOrder.getId());
-        stockTransfer.setBusinessCode(jdOrder.getCode());
-        stockTransfer.setInWarehouseId(jdOrderDto.getInWarehouseId());
-        stockTransfer.setOutWarehouseId(jdOrderDto.getOutWarehouseId());
-        stockTransfer.setInStatus(0);
-        stockTransfer.setRemark(jdOrderDto.getRemark());
-        stockTransferService.save(stockTransfer);
-        //创建明细
-        List<StockTransferDetails> stockTransferDetailsList = new ArrayList<>();
-        List<JdOrderDetails> jdOrderDetailsList = jdOrderDto.getJdOrderDetailsList();
-        List<Stock> stockList = new ArrayList<>();
-        for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
-            StockTransferDetails stockTransferDetails = new StockTransferDetails();
-            stockTransferDetails.setBusinessDetailsId(jdOrderDetails.getId());
-            stockTransferDetails.setStockTransferId(stockTransfer.getId());
-            stockTransferDetails.setOutQuantity(jdOrderDetails.getQuantity());
-            stockTransferDetails.setProductId(jdOrderDetails.getProductId());
-            stockTransferDetailsList.add(stockTransferDetails);
-
-            //创建出库数据
-            Stock stock = new Stock();
-            stock.setProductId(jdOrderDetails.getProductId());
-            stock.setQuantity(jdOrderDetails.getQuantity());
-            stockList.add(stock);
-        }
-        stockTransferDetailsService.saveBatch(stockTransferDetailsList);
-
-        //创建出库记录
-        StockJournal stockJournal1 = new StockJournal();
-        stockJournal1.setOpType(2);
-        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
-        stockJournal1.setCode(stockTransfer.getCode());
-        stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
-        stockJournal1.setBusinessId(stockTransfer.getId());
-        //保存出库记录
-        stockJournalService.save(stockJournal1);
-        if (ObjectUtil.isNotEmpty(stockList)) {
-            //出库
-            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
-            //保存出库记录明细
-            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
-        }
-
-        //创建物流数据
-        LogisticsInfos logisticsInfos = new LogisticsInfos();
-        logisticsInfos.setId(IdWorker.getId());
-        logisticsInfos.setBusinessId(jdOrderDto.getId());
-        logisticsInfos.setBusinessCode(jdOrderDto.getCode());
-        logisticsInfos.setBusinessType(2);//京东订单出库
-        logisticsInfos.setLogisticsCompanyCode(jdOrderDto.getLogisticsCompanyCode());
-        logisticsInfos.setCode(jdOrderDto.getLogisticsCode());
-        logisticsInfos.setWarehouseId(jdOrderDto.getOutWarehouseId());
-        logisticsInfos.setReservationCode(jdOrderDto.getReservationCode());
-        logisticsInfos.setIsKd100(0);
-
-        //发起快递100订阅
-        DynamicDataSourceContextHolder.push(SourceConstant.KD100);
-        Integer state = KD100Util.monitor(logisticsInfos.getLogisticsCompanyCode(), logisticsInfos.getCode(), logisticsInfos.getId(), 2, LogisticsInfos.class).getState();
-        DynamicDataSourceContextHolder.poll();
-        logisticsInfos.setIsKd100(1);
-        logisticsInfos.setLogisticsStatus(state);
-
-        logisticsInfosService.save(logisticsInfos);
-
-        List<LogisticsDetails> logisticsDetailsList = new ArrayList<>();
-        for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
-            LogisticsDetails logisticsDetails = new LogisticsDetails();
-            logisticsDetails.setLogisticsInfoId(logisticsInfos.getId());
-            logisticsDetails.setLogisticsInfoCode(logisticsInfos.getCode());
-            logisticsDetails.setBusinessDetailsId(jdOrderDetails.getId());
-            logisticsDetails.setReceiptQuantity(jdOrderDetails.getQuantity());
-        }
-        logisticsDetailsService.saveBatch(logisticsDetailsList);
-    }
+//    @DSTransactional
+//    @Override
+//    public void outbound(JdOrderDto jdOrderDto) {
+//        //修改待出库状态
+//        StockWait stockWait = stockWaitService.getOne(q -> q.eq(StockWait::getBusinessId, jdOrderDto.getId()));
+//        stockWait.setStatus(2);
+//        stockWaitService.updateById(stockWait);
+//
+//        JdOrder jdOrder = getById(jdOrderDto.getId());
+//        jdOrder.setOutStatus(3);//将京东订单状态修改为出库
+//        updateById(jdOrder);
+//        //创建京东订单调仓
+//        StockTransfer stockTransfer = new StockTransfer();
+//        stockTransfer.setType(2);//京东订单出库
+//        stockTransfer.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+//        stockTransfer.setBusinessId(jdOrder.getId());
+//        stockTransfer.setBusinessCode(jdOrder.getCode());
+//        stockTransfer.setInWarehouseId(jdOrderDto.getInWarehouseId());
+//        stockTransfer.setOutWarehouseId(jdOrderDto.getOutWarehouseId());
+//        stockTransfer.setInStatus(0);
+//        stockTransfer.setRemark(jdOrderDto.getRemark());
+//        stockTransferService.save(stockTransfer);
+//        //创建明细
+//        List<StockTransferDetails> stockTransferDetailsList = new ArrayList<>();
+//        List<JdOrderDetails> jdOrderDetailsList = jdOrderDto.getJdOrderDetailsList();
+//        List<Stock> stockList = new ArrayList<>();
+//        for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
+//            StockTransferDetails stockTransferDetails = new StockTransferDetails();
+//            stockTransferDetails.setBusinessDetailsId(jdOrderDetails.getId());
+//            stockTransferDetails.setStockTransferId(stockTransfer.getId());
+//            stockTransferDetails.setOutQuantity(jdOrderDetails.getQuantity());
+//            stockTransferDetails.setProductId(jdOrderDetails.getProductId());
+//            stockTransferDetailsList.add(stockTransferDetails);
+//
+//            //创建出库数据
+//            Stock stock = new Stock();
+//            stock.setProductId(jdOrderDetails.getProductId());
+//            stock.setQuantity(jdOrderDetails.getQuantity());
+//            stockList.add(stock);
+//        }
+//        stockTransferDetailsService.saveBatch(stockTransferDetailsList);
+//
+//        //创建出库记录
+//        StockJournal stockJournal1 = new StockJournal();
+//        stockJournal1.setOpType(2);
+//        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
+//        stockJournal1.setCode(stockTransfer.getCode());
+//        stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
+//        stockJournal1.setBusinessId(stockTransfer.getId());
+//        //保存出库记录
+//        stockJournalService.save(stockJournal1);
+//        if (ObjectUtil.isNotEmpty(stockList)) {
+//            //出库
+//            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
+//            //保存出库记录明细
+//            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
+//        }
+//
+//        //创建物流数据
+//        LogisticsInfos logisticsInfos = new LogisticsInfos();
+//        logisticsInfos.setId(IdWorker.getId());
+//        logisticsInfos.setBusinessId(jdOrderDto.getId());
+//        logisticsInfos.setBusinessCode(jdOrderDto.getCode());
+//        logisticsInfos.setBusinessType(2);//京东订单出库
+//        logisticsInfos.setLogisticsCompanyCode(jdOrderDto.getLogisticsCompanyCode());
+//        logisticsInfos.setCode(jdOrderDto.getLogisticsCode());
+//        logisticsInfos.setWarehouseId(jdOrderDto.getOutWarehouseId());
+//        logisticsInfos.setReservationCode(jdOrderDto.getReservationCode());
+//        logisticsInfos.setIsKd100(0);
+//
+//        //发起快递100订阅
+//        DynamicDataSourceContextHolder.push(SourceConstant.KD100);
+//        Integer state = KD100Util.monitor(logisticsInfos.getLogisticsCompanyCode(), logisticsInfos.getCode(), logisticsInfos.getId(), 2, LogisticsInfos.class).getState();
+//        DynamicDataSourceContextHolder.poll();
+//        logisticsInfos.setIsKd100(1);
+//        logisticsInfos.setLogisticsStatus(state);
+//
+//        logisticsInfosService.save(logisticsInfos);
+//
+//        List<LogisticsDetails> logisticsDetailsList = new ArrayList<>();
+//        for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
+//            LogisticsDetails logisticsDetails = new LogisticsDetails();
+//            logisticsDetails.setLogisticsInfoId(logisticsInfos.getId());
+//            logisticsDetails.setLogisticsInfoCode(logisticsInfos.getCode());
+//            logisticsDetails.setBusinessDetailsId(jdOrderDetails.getId());
+//            logisticsDetails.setReceiptQuantity(jdOrderDetails.getQuantity());
+//        }
+//        logisticsDetailsService.saveBatch(logisticsDetailsList);
+//    }
 
     @Override
     public Page<JdOrderVo> receivePage(JdOrderSelectDto dto) {

+ 13 - 8
hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java

@@ -39,17 +39,22 @@ public interface WmsService {
      */
     void autoCombination(Long productId, BigDecimal quantity, Long warehouseId);
 
-    /**
-     * 京东订单excel出库
-     */
-    void jdOrderOutbound(StockWaitDto stockWaitDto);
+//    /**
+//     * 京东订单excel出库
+//     */
+//    void jdOrderOutbound(StockWaitDto stockWaitDto);
 
-    /**
-     * 采购退货excel出库
-     */
-    void purchaseBackOutbound(StockWaitDto stockWaitDto);
+//    /**
+//     * 采购退货excel出库
+//     */
+//    void purchaseBackOutbound(StockWaitDto stockWaitDto);
 
     void editArrivalRemark(Long businessId, String arrivalRemark);
 
     String getArrivalRemark(Long businessId);
+
+    /**
+     * 创建京东订单待出库物流信息
+     */
+    void createJdLogisticsInfo(StockWaitDto dto);
 }

+ 124 - 127
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -2,7 +2,6 @@ package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
@@ -42,11 +41,8 @@ import com.fjhx.wms.utils.CodeEnum;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
-import lombok.Getter;
-import lombok.Setter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
@@ -87,8 +83,6 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
     @Autowired
     private WmsService wmsService;
     @Autowired
-    private StockFrozenService stockFrozenService;
-    @Autowired
     private PurService purService;
     @Autowired
     private CompanyInfoService companyInfoService;
@@ -126,11 +120,11 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         wrapper.eq("sw", StockWait::getBusinessType, dto.getBusinessType());
 
         //关键字搜索
-        if(ObjectUtil.isNotEmpty(dto.getKeyword())){
-            wrapper.and(q->q
-                    .like("sw", StockWait::getBusinessCode,dto.getKeyword())
-                    .or().like("lis.code",dto.getKeyword())
-                    .or().exists("SELECT swd.stock_wait_id FROM stock_wait_details swd LEFT JOIN bytesailing_item.product_info pi ON swd.product_id = pi.id where ( pi.`name` LIKE CONCAT( '%', {0}, '%' ) OR pi.custom_code LIKE CONCAT( '%', {0}, '%' ))",dto.getKeyword())
+        if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(q -> q
+                    .like("sw", StockWait::getBusinessCode, dto.getKeyword())
+                    .or().like("lis.code", dto.getKeyword())
+                    .or().exists("SELECT swd.stock_wait_id FROM stock_wait_details swd LEFT JOIN bytesailing_item.product_info pi ON swd.product_id = pi.id where ( pi.`name` LIKE CONCAT( '%', {0}, '%' ) OR pi.custom_code LIKE CONCAT( '%', {0}, '%' ))", dto.getKeyword())
             );
         }
 
@@ -266,7 +260,6 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         List<Stock> stockList = new ArrayList<>();
 
         List<StockWaitDetails> stockWaitDetailsDtoList = stockWaitDto.getStockWaitDetailsList();
-        Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsDtoList.stream().collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
 
         //更新已出入库数量以及待出入库状态
         stockWaitDetailsService.changeStockWaitStatus(stockWaitDto);
@@ -388,6 +381,10 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         if (StockWaitType.SALE_ORDER_OUT.getDetailType() == businessType) {
             opType = 2;
         }
+        //京东订单出库
+        if (StockWaitType.JD_ORDER_OUT.getDetailType().equals(businessType)) {
+            opType = 2;
+        }
 
 
         stockService.ModifyInventory(stockJournal.getId(), opType, stockList, stockWaitDto.getWarehouseId());
@@ -418,17 +415,17 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             wmsService.outbounds(stockWaitDto);
         }
 
-        //生产任务待出库
-        if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
-            for (StockWaitDetails stockWaitDetailsDto : stockWaitDetailsDtoList) {
-                StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(stockWaitDetailsDto.getId());
-                //减少冻结库存
-                StockFrozen stockFrozen = stockFrozenService.getOne(q -> q.eq(StockFrozen::getProductId, stockWaitDetails.getProductId()));
-                BigDecimal subtract = stockFrozen.getFrozenQuantity().subtract(stockWaitDetailsDto.getQuantity());
-                stockFrozen.setFrozenQuantity(subtract);
-                stockFrozenService.updateById(stockFrozen);
-            }
+        //京东订单出库
+        if (StockWaitType.JD_ORDER_OUT.getDetailType().equals(businessType)) {
+            //只能出库一次
+            stockWait.setStatus(2);
+            //创建物流数据
+            wmsService.createJdLogisticsInfo(stockWaitDto);
+            //并自动回告
+            //TODO 自动回告还没完成
         }
+
+        updateById(stockWait);
     }
 
     @Override
@@ -461,9 +458,9 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         } else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
             //销售订单出库
             return JournalType.SALES_OUT.getDetailType();
-        } else if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
-            //生产任务待出库
-            return JournalType.PRODUCTION_TASK_OUT.getDetailType();
+        } else if (StockWaitType.JD_ORDER_OUT.getDetailType().equals(businessType)) {
+            //京东销售出库
+            return JournalType.JD_SALES_OUT.getDetailType();
         } else {
             throw new ServiceException("未知待出入库业务类型");
         }
@@ -507,107 +504,107 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         ExcelUtil.export(httpServletResponse, stockWaitList, InStockWaitExportExcel.class);
     }
 
-    /**
-     * 待出库 excel导入出库
-     */
-    @DSTransactional
-    void outStockWaitImportExcel(MultipartFile file, StockWaitDto stockWaitDto) {
-        Assert.notEmpty(stockWaitDto.getBusinessType(), "业务类型不能为空");
-
-        List<OutStockWaitImportExcelBo> list = new ArrayList<>();
-        Assert.notEmpty(list, "Excel文档为空请检查");
-
-        List<String> linkCodes = list.stream().map(OutStockWaitImportExcelBo::getLinkCode).distinct().collect(Collectors.toList());
-        List<StockWait> stockWaitList = this.list(q -> q.in(StockWait::getBusinessCode, linkCodes));
-
-        long count = stockWaitList.stream().map(StockWait::getBusinessType).distinct().count();
-        if (count > 1) {
-            throw new ServiceException("文档中的数据存在多种业务类型 请检查");
-        }
-
-        if (stockWaitList.size() < linkCodes.size()) {
-            List<String> newLinkCodes = stockWaitList.stream().map(StockWait::getBusinessCode).distinct().collect(Collectors.toList());
-            List<String> difference = linkCodes.stream().filter(element -> !newLinkCodes.contains(element)).collect(Collectors.toList());
-            String differenceStr = difference.stream().collect(Collectors.joining(","));
-            throw new ServiceException("文档存在未知单号:" + differenceStr);
-        }
-
-        //赋值产品id
-        List<String> productCodes = list.stream().map(OutStockWaitImportExcelBo::getProductCode).distinct().collect(Collectors.toList());
-        Map<String, Long> productInfoMap = productInfoService.mapKV(ProductInfo::getCustomCode, ProductInfo::getId,
-                q -> q.in(ProductInfo::getCustomCode, productCodes));
-        for (OutStockWaitImportExcelBo outStockWaitImportExcelBo : list) {
-            String productCode = outStockWaitImportExcelBo.getProductCode();
-            Long productId = productInfoMap.get(productCode);
-            if (ObjectUtil.isEmpty(productId)) {
-                throw new ServiceException("该产品不存在:" + productCode);
-            }
-            outStockWaitImportExcelBo.setProductId(productId);
-        }
-
-        //操作出库
-        Map<String, List<OutStockWaitImportExcelBo>> excelMap = list.stream().collect(Collectors.groupingBy(OutStockWaitImportExcelBo::getLinkCode));
-        for (StockWait stockWait : stockWaitList) {
-            //查询明细信息
-            List<OutStockWaitImportExcelBo> outStockWaitImportExcelBos = excelMap.get(stockWait.getBusinessCode());
-            List<Long> productIds = outStockWaitImportExcelBos.stream().map(OutStockWaitImportExcelBo::getProductId).distinct().collect(Collectors.toList());
-
-            Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsService.mapKEntity(StockWaitDetails::getProductId, q -> q
-                    .eq(StockWaitDetails::getStockWaitId, stockWait.getId())
-                    .eq(StockWaitDetails::getProductId, productIds)
-            );
-
-            for (OutStockWaitImportExcelBo outStockWaitImportExcelBo : outStockWaitImportExcelBos) {
-                StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(outStockWaitImportExcelBo);
-                outStockWaitImportExcelBo.setStockWaitDetailId(stockWaitDetails.getId());
-            }
-
-            //数据预处理
-            stockWaitDto.setBusinessType(stockWait.getBusinessType());
-            List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
-            for (OutStockWaitImportExcelBo outStockWaitImportExcelBo : outStockWaitImportExcelBos) {
-                StockWaitDetails stockWaitDetails = new StockWaitDetails();
-                stockWaitDetails.setId(outStockWaitImportExcelBo.getStockWaitDetailId());
-                stockWaitDetails.setProductId(outStockWaitImportExcelBo.getProductId());
-                stockWaitDetails.setQuantity(outStockWaitImportExcelBo.getOutQuantity());
-                stockWaitDetails.setStockWaitId(stockWait.getId());
-                stockWaitDetailsList.add(stockWaitDetails);
-            }
-            stockWaitDto.setStockWaitDetailsList(stockWaitDetailsList);
-
-            if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(stockWait.getBusinessType())) {
-                //销售订单
-                addByWdly(stockWaitDto);
-            } else if (StockWaitType.JD_ORDER_OUT.getDetailType().equals(stockWait.getBusinessType())) {
-                //京东订单
-                wmsService.jdOrderOutbound(stockWaitDto);
-            } else if (StockWaitType.BACK_OUT.getDetailType().equals(stockWait.getBusinessType())) {
-                //采购退货
-                wmsService.purchaseBackOutbound(stockWaitDto);
-            } else {
-                throw new ServiceException("存在未知业务的数据!");
-            }
-        }
-    }
-
-    @Getter
-    @Setter
-    class OutStockWaitImportExcelBo {
-        /**
-         * 产品id
-         */
-        private Long productId;
-        /**
-         * 待出库明细id
-         */
-        private Long stockWaitDetailId;
-
-        @ExcelProperty("关联单号")
-        private String linkCode;
-        @ExcelProperty("物品编码")
-        private String productCode;
-        @ExcelProperty("出库数量")
-        private BigDecimal outQuantity;
-    }
+//    /**
+//     * 待出库 excel导入出库
+//     */
+//    @DSTransactional
+//    void outStockWaitImportExcel(MultipartFile file, StockWaitDto stockWaitDto) {
+//        Assert.notEmpty(stockWaitDto.getBusinessType(), "业务类型不能为空");
+//
+//        List<OutStockWaitImportExcelBo> list = new ArrayList<>();
+//        Assert.notEmpty(list, "Excel文档为空请检查");
+//
+//        List<String> linkCodes = list.stream().map(OutStockWaitImportExcelBo::getLinkCode).distinct().collect(Collectors.toList());
+//        List<StockWait> stockWaitList = this.list(q -> q.in(StockWait::getBusinessCode, linkCodes));
+//
+//        long count = stockWaitList.stream().map(StockWait::getBusinessType).distinct().count();
+//        if (count > 1) {
+//            throw new ServiceException("文档中的数据存在多种业务类型 请检查");
+//        }
+//
+//        if (stockWaitList.size() < linkCodes.size()) {
+//            List<String> newLinkCodes = stockWaitList.stream().map(StockWait::getBusinessCode).distinct().collect(Collectors.toList());
+//            List<String> difference = linkCodes.stream().filter(element -> !newLinkCodes.contains(element)).collect(Collectors.toList());
+//            String differenceStr = difference.stream().collect(Collectors.joining(","));
+//            throw new ServiceException("文档存在未知单号:" + differenceStr);
+//        }
+//
+//        //赋值产品id
+//        List<String> productCodes = list.stream().map(OutStockWaitImportExcelBo::getProductCode).distinct().collect(Collectors.toList());
+//        Map<String, Long> productInfoMap = productInfoService.mapKV(ProductInfo::getCustomCode, ProductInfo::getId,
+//                q -> q.in(ProductInfo::getCustomCode, productCodes));
+//        for (OutStockWaitImportExcelBo outStockWaitImportExcelBo : list) {
+//            String productCode = outStockWaitImportExcelBo.getProductCode();
+//            Long productId = productInfoMap.get(productCode);
+//            if (ObjectUtil.isEmpty(productId)) {
+//                throw new ServiceException("该产品不存在:" + productCode);
+//            }
+//            outStockWaitImportExcelBo.setProductId(productId);
+//        }
+//
+//        //操作出库
+//        Map<String, List<OutStockWaitImportExcelBo>> excelMap = list.stream().collect(Collectors.groupingBy(OutStockWaitImportExcelBo::getLinkCode));
+//        for (StockWait stockWait : stockWaitList) {
+//            //查询明细信息
+//            List<OutStockWaitImportExcelBo> outStockWaitImportExcelBos = excelMap.get(stockWait.getBusinessCode());
+//            List<Long> productIds = outStockWaitImportExcelBos.stream().map(OutStockWaitImportExcelBo::getProductId).distinct().collect(Collectors.toList());
+//
+//            Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsService.mapKEntity(StockWaitDetails::getProductId, q -> q
+//                    .eq(StockWaitDetails::getStockWaitId, stockWait.getId())
+//                    .eq(StockWaitDetails::getProductId, productIds)
+//            );
+//
+//            for (OutStockWaitImportExcelBo outStockWaitImportExcelBo : outStockWaitImportExcelBos) {
+//                StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(outStockWaitImportExcelBo);
+//                outStockWaitImportExcelBo.setStockWaitDetailId(stockWaitDetails.getId());
+//            }
+//
+//            //数据预处理
+//            stockWaitDto.setBusinessType(stockWait.getBusinessType());
+//            List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+//            for (OutStockWaitImportExcelBo outStockWaitImportExcelBo : outStockWaitImportExcelBos) {
+//                StockWaitDetails stockWaitDetails = new StockWaitDetails();
+//                stockWaitDetails.setId(outStockWaitImportExcelBo.getStockWaitDetailId());
+//                stockWaitDetails.setProductId(outStockWaitImportExcelBo.getProductId());
+//                stockWaitDetails.setQuantity(outStockWaitImportExcelBo.getOutQuantity());
+//                stockWaitDetails.setStockWaitId(stockWait.getId());
+//                stockWaitDetailsList.add(stockWaitDetails);
+//            }
+//            stockWaitDto.setStockWaitDetailsList(stockWaitDetailsList);
+//
+//            if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(stockWait.getBusinessType())) {
+//                //销售订单
+//                addByWdly(stockWaitDto);
+//            } else if (StockWaitType.JD_ORDER_OUT.getDetailType().equals(stockWait.getBusinessType())) {
+//                //京东订单
+//                wmsService.jdOrderOutbound(stockWaitDto);
+//            } else if (StockWaitType.BACK_OUT.getDetailType().equals(stockWait.getBusinessType())) {
+//                //采购退货
+//                wmsService.purchaseBackOutbound(stockWaitDto);
+//            } else {
+//                throw new ServiceException("存在未知业务的数据!");
+//            }
+//        }
+//    }
+
+//    @Getter
+//    @Setter
+//    class OutStockWaitImportExcelBo {
+//        /**
+//         * 产品id
+//         */
+//        private Long productId;
+//        /**
+//         * 待出库明细id
+//         */
+//        private Long stockWaitDetailId;
+//
+//        @ExcelProperty("关联单号")
+//        private String linkCode;
+//        @ExcelProperty("物品编码")
+//        private String productCode;
+//        @ExcelProperty("出库数量")
+//        private BigDecimal outQuantity;
+//    }
 
 }