Ver código fonte

订单sku规格查询价格

24282 1 ano atrás
pai
commit
59fd17803b

+ 10 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderController.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.dto.OrderSelectDto;
+import com.sd.business.entity.order.dto.SkuSpecPriceDto;
 import com.sd.business.entity.order.vo.OrderInfoVo;
+import com.sd.business.entity.order.vo.SkuSpecPriceVo;
 import com.sd.business.service.order.OrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -68,4 +70,12 @@ public class OrderController {
         orderService.delete(dto.getId());
     }
 
+    /**
+     * 通过sku规格id获取产品价格
+     */
+    @PostMapping("/getSkuSpecPrice")
+    public SkuSpecPriceVo getSkuSpecPrice(@RequestBody SkuSpecPriceDto dto) {
+        return orderService.getSkuSpecPrice(dto);
+    }
+
 }

+ 25 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/SkuSpecPriceDto.java

@@ -0,0 +1,25 @@
+package com.sd.business.entity.order.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class SkuSpecPriceDto {
+
+    /**
+     * sku规格id
+     */
+    @NotNull(message = "sku规格id不能为空")
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    @NotNull(message = "sku规格数量不能为空")
+    private BigDecimal quantity;
+
+}

+ 37 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/SkuSpecPriceVo.java

@@ -0,0 +1,37 @@
+package com.sd.business.entity.order.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class SkuSpecPriceVo {
+
+    /**
+     * 定制加工费
+     */
+    private BigDecimal customProcessingFee;
+
+    /**
+     * 代发费
+     */
+    private BigDecimal lssueFee;
+
+    /**
+     * 快递包材费
+     */
+    private BigDecimal deliveryMaterialsFee;
+
+    /**
+     * 包装人工费
+     */
+    private BigDecimal packingLabor;
+
+    /**
+     * 单价
+     */
+    private BigDecimal unitPrice;
+
+}

+ 7 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderService.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.service.BaseService;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.dto.OrderSelectDto;
+import com.sd.business.entity.order.dto.SkuSpecPriceDto;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.vo.OrderInfoVo;
+import com.sd.business.entity.order.vo.SkuSpecPriceVo;
 
 /**
  * <p>
@@ -42,4 +44,9 @@ public interface OrderService extends BaseService<OrderInfo> {
      */
     void delete(Long id);
 
+    /**
+     * 通过sku规格id获取产品价格
+     */
+    SkuSpecPriceVo getSkuSpecPrice(SkuSpecPriceDto dto);
+
 }

+ 67 - 4
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -2,15 +2,19 @@ package com.sd.business.service.order.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.bom.po.BomSpec;
 import com.sd.business.entity.department.po.Department;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.dto.OrderSelectDto;
 import com.sd.business.entity.order.dto.OrderSkuDto;
+import com.sd.business.entity.order.dto.SkuSpecPriceDto;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderOperatingLog;
 import com.sd.business.entity.order.po.OrderSku;
@@ -18,6 +22,9 @@ import com.sd.business.entity.order.po.OrderSkuBom;
 import com.sd.business.entity.order.vo.OrderInfoVo;
 import com.sd.business.entity.order.vo.OrderSkuBomVo;
 import com.sd.business.entity.order.vo.OrderSkuVo;
+import com.sd.business.entity.order.vo.SkuSpecPriceVo;
+import com.sd.business.entity.price.po.PriceBillingStandardDetail;
+import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.mapper.order.OrderMapper;
 import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.department.DepartmentService;
@@ -25,16 +32,15 @@ import com.sd.business.service.order.OrderOperatingLogService;
 import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuBomService;
 import com.sd.business.service.order.OrderSkuService;
+import com.sd.business.service.price.PriceBillingStandardDetailService;
 import com.sd.business.service.sku.SkuSpecService;
+import com.sd.framework.util.Assert;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -66,6 +72,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
     @Autowired
     private OrderOperatingLogService orderOperatingLogService;
 
+    @Autowired
+    private PriceBillingStandardDetailService priceBillingStandardDetailService;
+
     @Override
     public Page<OrderInfoVo> getPage(OrderSelectDto dto) {
         IWrapper<OrderInfo> wrapper = getWrapper();
@@ -199,4 +208,58 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         orderOperatingLogService.save(orderOperatingLog);
     }
 
+    @Override
+    public SkuSpecPriceVo getSkuSpecPrice(SkuSpecPriceDto dto) {
+
+        // 查询单价
+        Long skuSpecId = dto.getSkuSpecId();
+        SkuSpec skuSpec = skuSpecService.getById(skuSpecId);
+        Assert.notNull(skuSpec, "未知sku规格");
+        Long bomSpecId = skuSpec.getBomSpecId();
+        Assert.notNull(bomSpecId, "sku未绑定bom");
+        BomSpec bomSpec = bomSpecService.getById(bomSpecId);
+        Assert.notNull(bomSpec, "未知bom规格");
+
+        // 其他价格查询
+        Long deptId = SecurityUtils.getDeptId();
+        Department department = departmentService.getById(deptId);
+        Assert.notNull(department, "未知事业部");
+        Long priceBillingStandardId = department.getPriceBillingStandardId();
+        Assert.notNull(priceBillingStandardId, "事业部未绑定加工计费标准");
+        List<PriceBillingStandardDetail> priceBillingStandardDetailList = priceBillingStandardDetailService.list(
+                q -> q.eq(PriceBillingStandardDetail::getPriceBillingStandardId, priceBillingStandardId));
+
+        // 赋值
+        SkuSpecPriceVo skuSpecPriceVo = new SkuSpecPriceVo();
+        skuSpecPriceVo.setUnitPrice(bomSpec.getInternalSellingPrice());
+        skuSpecPriceVo.setCustomProcessingFee(BigDecimal.ZERO);
+        skuSpecPriceVo.setLssueFee(BigDecimal.ZERO);
+        skuSpecPriceVo.setDeliveryMaterialsFee(BigDecimal.ZERO);
+        skuSpecPriceVo.setPackingLabor(BigDecimal.ZERO);
+
+        for (PriceBillingStandardDetail priceBillingStandardDetail : priceBillingStandardDetailList) {
+            String chargeItem = priceBillingStandardDetail.getChargeItem();
+            BigDecimal chargePrice = ObjectUtil.defaultIfNull(priceBillingStandardDetail.getChargePrice(), BigDecimal.ZERO);
+            switch (chargeItem) {
+                case "3":
+                    skuSpecPriceVo.setPackingLabor(chargePrice);
+                    break;
+                case "4":
+                    skuSpecPriceVo.setLssueFee(chargePrice);
+                    break;
+                case "5":
+                    skuSpecPriceVo.setDeliveryMaterialsFee(chargePrice);
+                    break;
+                default:
+                    if (Objects.equals(chargeItem, skuSpec.getMachinedPanel())
+                            && priceBillingStandardDetail.getSectionMin().compareTo(dto.getQuantity()) >= 0
+                            && priceBillingStandardDetail.getSectionMax().compareTo(dto.getQuantity()) < 0) {
+                        skuSpecPriceVo.setCustomProcessingFee(chargePrice);
+                    }
+            }
+        }
+
+        return skuSpecPriceVo;
+    }
+
 }

+ 1 - 1
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -460,7 +460,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         for (PriceBillingStandardDetail priceBillingStandardDetail : priceBillingStandardDetailList) {
 
             String chargeItem = priceBillingStandardDetail.getChargeItem();
-            BigDecimal chargePrice = priceBillingStandardDetail.getChargePrice();
+            BigDecimal chargePrice = ObjectUtil.defaultIfNull(priceBillingStandardDetail.getChargePrice(), BigDecimal.ZERO);
 
             switch (chargeItem) {
                 case "3":