浏览代码

维多利亚

24282 2 年之前
父节点
当前提交
ae20a88b5f

+ 2 - 2
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/stock/OutTypeEnum.java

@@ -15,10 +15,10 @@ import java.util.Map;
 @Getter
 public enum OutTypeEnum {
 
-    // business_id = order_id 表 id
+    // business_id = order_details 表 id
     PURCHASE(1, "采购订单出库"),
 
-    // business_id = order_id 表 id
+    // business_id = order_details 表 id
     JD(2, "京东订单出库"),
 
     // ======== 手动出库明细 ========

+ 3 - 4
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/IssueVo.java → hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/IssueDto.java

@@ -8,7 +8,7 @@ import java.math.BigDecimal;
 import java.util.List;
 
 @Data
-public class IssueVo {
+public class IssueDto {
 
     /**
      * 订单id
@@ -53,9 +53,8 @@ public class IssueVo {
         }
 
         @Override
-        public BigDecimal getChangeQuantity() {
-            return this.changeQuantity;
+        public Long getBusinessId() {
+            return orderDetailsId;
         }
-
     }
 }

+ 4 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderJdController.java

@@ -2,7 +2,7 @@ package com.fjhx.controller.order;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.enums.stock.OutTypeEnum;
-import com.fjhx.params.order.IssueVo;
+import com.fjhx.params.order.IssueDto;
 import com.fjhx.params.order.OrderInfoEx;
 import com.fjhx.params.order.OrderInfoVo;
 import com.fjhx.service.order.OrderDetailsService;
@@ -73,9 +73,9 @@ public class OrderJdController {
      * 京东出库
      */
     @PostMapping("/issue")
-    public R issue(@RequestBody IssueVo issueVo) {
-        issueVo.setOutTypeEnum(OutTypeEnum.JD);
-        orderDetailsService.issue(issueVo);
+    public R issue(@RequestBody IssueDto issueDto) {
+        issueDto.setOutTypeEnum(OutTypeEnum.JD);
+        orderDetailsService.issue(issueDto);
         return R.success();
     }
 

+ 4 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderSalesController.java

@@ -3,7 +3,7 @@ package com.fjhx.controller.order;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.order.OrderInfo;
 import com.fjhx.enums.stock.OutTypeEnum;
-import com.fjhx.params.order.IssueVo;
+import com.fjhx.params.order.IssueDto;
 import com.fjhx.params.order.OrderInfoEx;
 import com.fjhx.params.order.OrderInfoVo;
 import com.fjhx.service.order.OrderDetailsService;
@@ -65,9 +65,9 @@ public class OrderSalesController {
      * 销售出库
      */
     @PostMapping("/issue")
-    public R issue(@RequestBody IssueVo issueVo) {
-        issueVo.setOutTypeEnum(OutTypeEnum.PURCHASE);
-        orderDetailsService.issue(issueVo);
+    public R issue(@RequestBody IssueDto issueDto) {
+        issueDto.setOutTypeEnum(OutTypeEnum.PURCHASE);
+        orderDetailsService.issue(issueDto);
         return R.success();
     }
 

+ 2 - 3
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/OrderDetailsService.java

@@ -2,8 +2,7 @@ package com.fjhx.service.order;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.order.OrderDetails;
-import com.fjhx.entity.order.OrderInfo;
-import com.fjhx.params.order.IssueVo;
+import com.fjhx.params.order.IssueDto;
 import com.fjhx.params.order.OrderDetailsEx;
 import com.fjhx.params.order.OrderDetailsVo;
 import com.fjhx.base.BaseService;
@@ -31,6 +30,6 @@ public interface OrderDetailsService extends BaseService<OrderDetails> {
 
     List<OrderDetailsEx> listByOrderSalesId(Long orderId);
 
-    void issue(IssueVo issueVo);
+    void issue(IssueDto issueDto);
 
 }

+ 84 - 83
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderDetailsServiceImpl.java

@@ -10,7 +10,7 @@ import com.fjhx.entity.order.OrderDetails;
 import com.fjhx.entity.order.OrderInfo;
 import com.fjhx.enums.stock.OutTypeEnum;
 import com.fjhx.mapper.order.OrderDetailsMapper;
-import com.fjhx.params.order.IssueVo;
+import com.fjhx.params.order.IssueDto;
 import com.fjhx.params.order.OrderDetailsEx;
 import com.fjhx.params.order.OrderDetailsVo;
 import com.fjhx.params.stock.ChangeProduct;
@@ -25,7 +25,6 @@ import com.fjhx.service.system.SystemConfigService;
 import com.fjhx.uitl.kd100.KD100Util;
 import com.fjhx.utils.Assert;
 import com.fjhx.utils.wrapperUtil.IWrapper;
-import org.springblade.core.log.exception.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -96,91 +95,27 @@ public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, Ord
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void issue(IssueVo issueVo) {
-        Long orderId = issueVo.getOrderId();
+    public void issue(IssueDto issueDto) {
+        Long orderId = issueDto.getOrderId();
         Assert.notEmpty(orderId, "订单id不能为空");
 
-        List<IssueVo.IssueDetails> orderDetailsList = issueVo.getOrderDetailsList();
-
-        Map<Long, BigDecimal> map = orderDetailsList.stream().collect(Collectors.toMap(
-                IssueVo.IssueDetails::getOrderDetailsId,
-                IssueVo.IssueDetails::getChangeQuantity
-        ));
-
         // 变更订单明细未出库数量
         synchronized (this) {
             List<OrderDetails> list = list(q -> q.eq(OrderDetails::getOrderId, orderId));
-
-            for (OrderDetails orderDetails : list) {
-                Long id = orderDetails.getId();
-                BigDecimal changeQuantity = map.get(id);
-                if (changeQuantity == null || changeQuantity.compareTo(BigDecimal.ZERO) == 0) {
-                    continue;
-                }
-
-                BigDecimal notIssuedQuantity = orderDetails.getNotIssuedQuantity();
-
-                if (notIssuedQuantity.compareTo(changeQuantity) < 0) {
-                    throw new ServiceException("出库数量超过待出库数量,操作失败");
-                }
-
-                // 重新赋值未出库数量
-                orderDetails.setNotIssuedQuantity(notIssuedQuantity.subtract(changeQuantity));
-            }
-            updateBatchById(list);
-
+            // 更新订单明细未出库数量
+            updateNotIssuedQuantity(list, issueDto.getOrderDetailsList());
             // 修改订单状态
-            OrderInfo orderInfo = orderInfoService.getById(orderId);
-
-            // 如果是京东出库
-            if (issueVo.getOutTypeEnum().equals(OutTypeEnum.JD)) {
-                orderInfo.setStatus(2);
-                orderInfo.setIssueStatus(3);
-            }
-            // 如果是退换货或者补发,出库一次算完成
-            else if (orderInfo.getType() == 5) {
-                orderInfo.setIssueStatus(3);
-                // 补发跟进中变已补发
-                if (orderInfo.getAfterSalesStatus() == 1) {
-                    orderInfo.setAfterSalesStatus(2);
-                }
-            }
-            // 如果是线下退换货
-            else if (orderInfo.getType() == 6) {
-                orderInfo.setIssueStatus(3);
-                switch (orderInfo.getAfterSalesStatus()) {
-                    // 未补发未收到退货变已补发未收到退货
-                    case 1:
-                        orderInfo.setAfterSalesStatus(5);
-                        break;
-                    // 未补发已收到退货变已补发已收到退货
-                    case 2:
-                        orderInfo.setAfterSalesStatus(3);
-                        break;
-                }
-            }
-            // 如果未出库数量全为0,修改订单完成状态
-            else {
-                long count = list.stream().filter(item -> item.getNotIssuedQuantity().compareTo(BigDecimal.ZERO) > 0).count();
-                orderInfo.setId(orderId);
-                if (count == 0) {
-                    orderInfo.setStatus(2);
-                    orderInfo.setIssueStatus(3);
-                } else {
-                    orderInfo.setIssueStatus(2);
-                }
-            }
-            orderInfoService.updateById(orderInfo);
+            updateOrderInfoStatus(list, issueDto);
         }
 
         // 保存物流消息
         LogisticsInfo logisticsInfo = new LogisticsInfo();
         logisticsInfo.setBusinessId(orderId);
         logisticsInfo.setBusinessType(2);
-        logisticsInfo.setCode(issueVo.getLogisticsCode());
-        logisticsInfo.setLogisticsCompanyCode(issueVo.getLogisticsCompanyCode());
-        logisticsInfo.setWarehouseId(issueVo.getWarehouseId());
-        //查询快递100的物流信息
+        logisticsInfo.setCode(issueDto.getLogisticsCode());
+        logisticsInfo.setLogisticsCompanyCode(issueDto.getLogisticsCompanyCode());
+        logisticsInfo.setWarehouseId(issueDto.getWarehouseId());
+        // 查询快递100的物流信息
         Integer logisticsStatus = KD100Util.getLogisticsStatus(logisticsInfo.getLogisticsCompanyCode(), logisticsInfo.getCode());
         logisticsInfo.setLogisticsStatus(logisticsStatus);
         logisticsInfo.setStatus(0);
@@ -188,17 +123,16 @@ public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, Ord
 
         // 变更库存添加流水记录
         StockChangeDto stockChangeDto = new StockChangeDto();
-        stockChangeDto.setDefaultBusinessId(orderId);
-        stockChangeDto.setDefaultWarehouseId(issueVo.getWarehouseId());
-        stockChangeDto.setTypeEnum(issueVo.getOutTypeEnum());
-        stockChangeDto.setChangeDetailsList(orderDetailsList);
+        stockChangeDto.setDefaultWarehouseId(issueDto.getWarehouseId());
+        stockChangeDto.setTypeEnum(issueDto.getOutTypeEnum());
+        stockChangeDto.setChangeDetailsList(issueDto.getOrderDetailsList());
         stockService.changeQuantity(stockChangeDto);
 
         // 京东出库新增调仓
-        if (issueVo.getOutTypeEnum().equals(OutTypeEnum.JD)) {
-            // 获取京东仓库id
+        if (issueDto.getOutTypeEnum().equals(OutTypeEnum.JD)) {
 
-            List<ChangeProduct> changeProductList = issueVo.getOrderDetailsList().stream().map(item -> {
+            // 获取京东仓库id
+            List<ChangeProduct> changeProductList = issueDto.getOrderDetailsList().stream().map(item -> {
                 ChangeProduct changeProduct = new ChangeProduct();
                 changeProduct.setProductId(item.getProductId());
                 changeProduct.setQuantity(item.getChangeQuantity());
@@ -206,7 +140,7 @@ public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, Ord
             }).collect(Collectors.toList());
 
             StockTransferAddVo stockTransferAddVo = new StockTransferAddVo();
-            stockTransferAddVo.setOutWarehouseId(issueVo.getWarehouseId());
+            stockTransferAddVo.setOutWarehouseId(issueDto.getWarehouseId());
             stockTransferAddVo.setInWarehouseId(systemConfigService.getValue(SystemConfigKeyConstant.JD_WAREHOUSE_ID, Long.class));
             stockTransferAddVo.setRemark("京东出库");
             stockTransferAddVo.setChangeProductList(changeProductList);
@@ -215,4 +149,71 @@ public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, Ord
 
     }
 
+    /**
+     * 更新订单明细未出库数量
+     */
+    private void updateNotIssuedQuantity(List<OrderDetails> list, List<IssueDto.IssueDetails> orderDetailsList) {
+
+        Map<Long, BigDecimal> map = orderDetailsList.stream().collect(Collectors.toMap(IssueDto.IssueDetails::getOrderDetailsId, IssueDto.IssueDetails::getChangeQuantity));
+
+        for (OrderDetails orderDetails : list) {
+            Long id = orderDetails.getId();
+            BigDecimal changeQuantity = map.get(id);
+            if (changeQuantity == null || changeQuantity.compareTo(BigDecimal.ZERO) == 0) {
+                continue;
+            }
+            BigDecimal notIssuedQuantity = orderDetails.getNotIssuedQuantity().subtract(changeQuantity);
+            Assert.eqTrue(notIssuedQuantity.compareTo(BigDecimal.ZERO) > 0, "出库数量不能超过待出库数量");
+            // 重新赋值未出库数量
+            orderDetails.setNotIssuedQuantity(notIssuedQuantity);
+        }
+        updateBatchById(list);
+    }
+
+    /**
+     * 修改订单状态
+     */
+    private void updateOrderInfoStatus(List<OrderDetails> list, IssueDto issueDto) {
+        OrderInfo orderInfo = orderInfoService.getById(issueDto.getOrderId());
+
+        // 如果是京东出库,出去一次订单则完成
+        if (issueDto.getOutTypeEnum().equals(OutTypeEnum.JD)) {
+            orderInfo.setStatus(2);
+            orderInfo.setIssueStatus(3);
+        }
+        // 如果是退换货或者补发,出库一次算完成
+        else if (orderInfo.getType() == 5) {
+            orderInfo.setIssueStatus(3);
+            // 补发跟进中变已补发
+            if (orderInfo.getAfterSalesStatus() == 1) {
+                orderInfo.setAfterSalesStatus(2);
+            }
+        }
+        // 如果是线下退换货
+        else if (orderInfo.getType() == 6) {
+            orderInfo.setIssueStatus(3);
+            switch (orderInfo.getAfterSalesStatus()) {
+                // 未补发未收到退货变已补发未收到退货
+                case 1:
+                    orderInfo.setAfterSalesStatus(5);
+                    break;
+                // 未补发已收到退货变已补发已收到退货
+                case 2:
+                    orderInfo.setAfterSalesStatus(3);
+                    break;
+            }
+        }
+        // 如果未出库数量全为0,修改订单完成状态
+        else {
+            long count = list.stream().filter(item -> item.getNotIssuedQuantity().compareTo(BigDecimal.ZERO) > 0).count();
+            if (count == 0) {
+                orderInfo.setStatus(2);
+                orderInfo.setIssueStatus(3);
+            } else {
+                orderInfo.setIssueStatus(2);
+            }
+        }
+        orderInfoService.updateById(orderInfo);
+    }
+
 }