Parcourir la source

Merge remote-tracking branch 'origin/master'

24282 il y a 2 ans
Parent
commit
4200c0e8ee

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

@@ -70,4 +70,12 @@ public class JdOrderController {
         jdOrderService.excelImport(file, customerId);
     }
 
+    /**
+     * 京东订单出库
+     */
+    @PostMapping("/outbound")
+    public void outbound(@RequestBody JdOrderDto jdOrderDto) {
+        jdOrderService.outbound(jdOrderDto);
+    }
+
 }

+ 12 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderDto.java

@@ -26,4 +26,16 @@ public class JdOrderDto extends JdOrder {
     @NotEmpty(message = "京东订单明细不能为空")
     private List<JdOrderDetails> jdOrderDetailsList;
 
+    /**
+     * 入库仓库id
+     */
+    private Long inWarehouseId;
+    /**
+     * 出库仓库id
+     */
+    private Long outWarehouseId;
+
+    /**调仓说明*/
+    private String remark;
+
 }

+ 14 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/stock/po/StockTransfer.java

@@ -1,17 +1,18 @@
 package com.fjhx.victoriatourist.entity.stock.po;
 
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.util.Date;
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * <p>
  * 调仓记录
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @Getter
@@ -59,4 +60,14 @@ public class StockTransfer extends BasePo {
      */
     private String remark;
 
+    /**
+     * 业务id
+     */
+    private Long businessId;
+
+    /**
+     * 业务编号
+     */
+    private String businessCode;
+
 }

+ 9 - 4
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/stock/po/StockTransferDetails.java

@@ -1,18 +1,18 @@
 package com.fjhx.victoriatourist.entity.stock.po;
 
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.math.BigDecimal;
-import java.util.Date;
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 调仓明细
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @Getter
@@ -40,4 +40,9 @@ public class StockTransferDetails extends BasePo {
      */
     private BigDecimal inQuantity;
 
+    /**
+     * 业务明细id
+     */
+    private Long businessDetailsId;
+
 }

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

@@ -39,4 +39,8 @@ public interface JdOrderService extends BaseService<JdOrder> {
      */
     void excelImport(MultipartFile file, Long customerId);
 
+    /**
+     * 京东订单出库
+     */
+    void outbound(JdOrderDto jdOrderDto);
 }

+ 96 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -17,9 +17,18 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 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.stock.po.StockTransfer;
+import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
 import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
+import com.fjhx.victoriatourist.service.stock.StockTransferService;
+import com.fjhx.wms.entity.stock.emums.StockWaitType;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.entity.stock.po.StockWaitDetails;
+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.wrapper.IWrapper;
@@ -52,6 +61,14 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
 
     @Autowired
     private ProductInfoService productInfoService;
+    @Autowired
+    private StockTransferService stockTransferService;
+    @Autowired
+    private StockTransferDetailsService stockTransferDetailsService;
+    @Autowired
+    StockWaitService stockWaitService;
+    @Autowired
+    StockWaitDetailsService stockWaitDetailsService;
 
     @Override
     public Page<JdOrderVo> getPage(JdOrderSelectDto dto) {
@@ -102,14 +119,33 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         // 订单金额
         BigDecimal amount = BigDecimal.ZERO;
 
+        //创建待出库记录
+        StockWait stockWait = new StockWait();
+        stockWait.setType(2);//待出库
+        stockWait.setBusinessType(StockWaitType.JD_ORDER_OUT.getDetailType());
+        stockWait.setBusinessId(jdOrderId);
+        stockWait.setBusinessCode(jdOrderDto.getCode());
+        stockWait.setStatus(0);
+        stockWaitService.save(stockWait);
+
         List<JdOrderDetails> jdOrderDetailsList = jdOrderDto.getJdOrderDetailsList();
 
+        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
         for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
             jdOrderDetails.setJdOrderId(jdOrderId);
             jdOrderDetails.setSubtotal(jdOrderDetails.getPrice().multiply(jdOrderDetails.getQuantity()));
             jdOrderDetails.setQuantityDelivered(BigDecimal.ZERO);
             amount = amount.add(jdOrderDetails.getSubtotal());
+
+            //创建待出库明细
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setProductId(jdOrderDetails.getProductId());
+            stockWaitDetails.setQuantity(jdOrderDetails.getQuantity());
+            stockWaitDetails.setBusinessDetailsId(jdOrderDetails.getId());
+            stockWaitDetailsList.add(stockWaitDetails);
         }
+        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
 
         jdOrderDto.setId(jdOrderId);
         // 未出库
@@ -145,6 +181,9 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         HashMap<String, JdOrder> orderCodeIdMap = new LinkedHashMap<>();
         List<JdOrderDetails> orderDetailsList = new ArrayList<>();
 
+        List<StockWait> stockWaitList = new ArrayList<>();
+        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+
         long batchFlag = IdWorker.getId();
 
         for (JdOrderExcelImportBo bo : boList) {
@@ -164,6 +203,16 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
                 item.setStatus(1);
                 item.setQuantityDelivered(BigDecimal.ZERO);
                 item.setBatchFlag(batchFlag);
+
+                //创建待出库记录
+                StockWait stockWait = new StockWait();
+                stockWait.setType(2);//待出库
+                stockWait.setBusinessType(StockWaitType.JD_ORDER_OUT.getDetailType());
+                stockWait.setBusinessId(item.getId());
+                stockWait.setBusinessCode(item.getCode());
+                stockWait.setStatus(0);
+                stockWaitList.add(stockWait);
+
                 return item;
             });
 
@@ -179,10 +228,57 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
             jdOrderDetails.setSubtotal(subtotal);
             jdOrderDetails.setQuantityDelivered(BigDecimal.ZERO);
             orderDetailsList.add(jdOrderDetails);
+
+            //创建待出库明细
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(jdOrderDetails.getId());
+            stockWaitDetails.setProductId(jdOrderDetails.getProductId());
+            stockWaitDetails.setQuantity(jdOrderDetails.getQuantity());
+            stockWaitDetails.setBusinessDetailsId(jdOrderDetails.getId());
+            stockWaitDetailsList.add(stockWaitDetails);
         }
 
         this.saveBatch(orderCodeIdMap.values());
         this.jdOrderDetailsService.saveBatch(orderDetailsList);
+
+        //保存待出库明细
+        stockWaitService.saveBatch(stockWaitList);
+        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @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.setStatus(3);//将京东订单状态修改为出库
+        updateById(jdOrder);
+        //创建京东订单调仓
+        StockTransfer stockTransfer = new StockTransfer();
+        stockTransfer.setType(2);//京东订单出库
+        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();
+        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);
+        }
+        stockTransferDetailsService.saveBatch(stockTransferDetailsList);
     }
 
 }

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

@@ -7,11 +7,20 @@ import lombok.Setter;
 /**
  * 待出入库明细新增编辑入参实体
  *
- * @author 
+ * @author
  * @since 2023-04-13
  */
 @Getter
 @Setter
 public class StockWaitDetailsDto extends StockWaitDetails {
 
+    /**
+     * 业务类型
+     */
+    private Integer businessType;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
 }

+ 0 - 2
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/JournalType.java

@@ -28,8 +28,6 @@ public enum JournalType {
     PURCHASE_ARRIVAL_IN(InOutType.IN, 18, "待入库 采购到货", ""),
     ;
 
-    ;
-
 
     /**
      * 出入库类型

+ 9 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -222,6 +222,9 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         for (StockVo record : records) {
             String victoriatouristJson = record.getVictoriatouristJson();
             JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            if(json.getInteger("combination")!=1){
+                continue;
+            }
             JSONArray productCombinationList = json.getJSONArray("productCombinationList");
             for (int i = 0; i < productCombinationList.size(); i++) {
                 JSONObject item = productCombinationList.getJSONObject(i);
@@ -230,12 +233,18 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 //                BigDecimal linkQuantity = item.getBigDecimal("linkQuantity");
             }
         }
+        if(ObjectUtil.isEmpty(linkProductIds)){
+            return page;
+        }
         //查询关联产品库存
         List<Stock> list = list(q -> q.in(Stock::getProductId, linkProductIds));
         Map<Long, BigDecimal> stockMap = list.stream().collect(Collectors.toMap(Stock::getProductId, Stock::getQuantity));
         for (StockVo record : records) {
             String victoriatouristJson = record.getVictoriatouristJson();
             JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            if(json.getInteger("combination")!=1){
+                continue;
+            }
             JSONArray productCombinationList = json.getJSONArray("productCombinationList");
 
             Long min = -1l;

+ 55 - 4
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java

@@ -2,11 +2,14 @@ package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.fjhx.item.service.product.ProductInfoService;
-import com.fjhx.wms.entity.stock.po.StockWait;
-import com.fjhx.wms.entity.stock.po.StockWaitDetails;
+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.mapper.stock.StockWaitDetailsMapper;
-import com.fjhx.wms.service.stock.StockWaitDetailsService;
+import com.fjhx.wms.service.stock.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.wms.utils.CodeEnum;
+import com.obs.services.internal.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,6 +20,7 @@ import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import cn.hutool.core.bean.BeanUtil;
 
 import javax.xml.ws.soap.Addressing;
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -32,6 +36,14 @@ import java.util.List;
 public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMapper, StockWaitDetails> implements StockWaitDetailsService {
     @Autowired
     ProductInfoService productInfoService;
+    @Autowired
+    StockWaitService stockWaitService;
+    @Autowired
+    StockJournalService stockJournalService;
+    @Autowired
+    StockJournalDetailsService stockJournalDetailsService;
+    @Autowired
+    StockService stockService;
 
     @Override
     public Page<StockWaitDetailsVo> getPage(StockWaitDetailsSelectDto dto) {
@@ -65,7 +77,46 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
 
     @Override
     public void add(StockWaitDetailsDto stockWaitDetailsDto) {
-        this.save(stockWaitDetailsDto);
+        //更新已入库数量 根据明细id
+        StockWaitDetails stockWaitDetails = getById(stockWaitDetailsDto.getId());
+        stockWaitDetails.setReceiptQuantity(stockWaitDetails.getReceiptQuantity().add(stockWaitDetailsDto.getQuantity()));
+        if (stockWaitDetails.getReceiptQuantity().compareTo(stockWaitDetails.getQuantity()) > 0) {
+            throw new ServiceException("出库数量+已出库数量不能大于待出库数量");
+        }
+        updateById(stockWaitDetails);
+        StockWait byId = stockWaitService.getById(stockWaitDetails.getStockWaitId());
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setOpType(byId.getType());
+        //根据待入库业务类型创建待出入库记录
+        Integer businessType = stockWaitDetailsDto.getBusinessType();
+        if (StockWaitType.BORDER_OF_LINE_IN.getDetailType().equals(businessType)) {
+            //线边回仓库
+            stockJournal.setType(JournalType.BORDER_OF_LINE_IN.getDetailType());
+        } else if (StockWaitType.COMPLETION_IN.getDetailType().equals(businessType)) {
+            //完工入库
+            stockJournal.setType(JournalType.COMPLETION_IN.getDetailType());
+        } else if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(businessType)) {
+            //采购到货
+            stockJournal.setType(JournalType.PURCHASE_ARRIVAL_IN.getDetailType());
+        } else if (StockWaitType.BACK_OUT.getDetailType().equals(businessType)) {
+            //退货出货
+            stockJournal.setType(JournalType.BACK_OUT.getDetailType());
+        } else {
+            throw new ServiceException("未知待出入库业务类型");
+        }
+        stockJournal.setCode(byId.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
+        stockJournal.setWarehouseId(stockWaitDetailsDto.getWarehouseId());
+        stockJournal.setBusinessId(byId.getId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        Stock stock = new Stock();
+        stock.setQuantity(stockWaitDetailsDto.getQuantity());
+        stock.setProductId(stockWaitDetails.getProductId());
+        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), byId.getType(), Arrays.asList(stock), stockWaitDetailsDto.getWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
     @Override

+ 2 - 3
hx-wms/src/main/resources/mapper/stock/StockMapper.xml

@@ -40,7 +40,7 @@
             ps.id productSpuId,
             ps.`code` productSpuCode,
             ps.`name` productSpuName,
-            s.quantity,
+            sum( s.quantity ) quantity,
             pi.victoriatourist_json
         FROM
             stock s
@@ -48,9 +48,8 @@
                 LEFT JOIN bytesailing_item.product_spu ps ON pi.product_spu_id = ps.id
         WHERE
             NOT ps.id IS NULL
-          AND json_unquote( pi.victoriatourist_json -> '$.combination' ) = 1
         GROUP BY
-            s.id
+            ps.id
             ${ew.customSqlSegment}
     </select>