Explorar o código

feat: 调整运单费用保存逻辑;

hanchaolong hai 1 mes
pai
achega
17a3d18b1c

+ 12 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/callback/JDPushOrderFeeCallback.java

@@ -10,6 +10,7 @@ import com.ruoyi.logistics.service.FeeItemsCacheService;
 import com.ruoyi.logistics.service.IBizWaybillCostDetailsService;
 import com.ruoyi.logistics.service.IBizWaybillOrderService;
 import com.ruoyi.system.api.domain.SysDept;
+import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysDeptService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -39,6 +40,9 @@ public class JDPushOrderFeeCallback {
     @Autowired
     private FeeItemsCacheService feeItemsCacheService;
 
+    @Autowired
+    private ISysConfigService sysConfigService;
+
     @RequestMapping("/fee")
     public AjaxResult fee(@RequestBody JDOrderFeeRequestDTO request) {
         log.info("京东物流运单费用回调,参数:{}", request);
@@ -51,6 +55,7 @@ public class JDPushOrderFeeCallback {
             return AjaxResult.error("订单不存在");
         }
         SysDept sysDept = sysDeptService.selectDeptById(bizWaybillOrder.getDeptId());
+        String rate = sysConfigService.selectConfigByKey(bizWaybillOrder.getProductCode());
 
         List<BizWaybillCostDetails> details = new ArrayList<>();
         if (CollectionUtils.isEmpty(request.getCommonActualFeeInfoDetails())) {
@@ -68,7 +73,13 @@ public class JDPushOrderFeeCallback {
                 costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
                 costDetail.setFeeName(item.getFeeTypeName());
                 costDetail.setAmount(item.getStandardAmount());
-//                costDetail.setRateAmount(item.getStandardAmount().multiply(new BigDecimal(StringUtils.isNotBlank(sysDept.getRateValue()) ? sysDept.getRateValue() : "1")).setScale(2, BigDecimal.ROUND_HALF_UP));
+                if (StringUtils.isNotBlank(rate)) {
+                    BigDecimal subtract = new BigDecimal("1").subtract(new BigDecimal(rate).divide(new BigDecimal("100")));
+                    costDetail.setPurchaseAmount(subtract.multiply(item.getStandardAmount()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                }
+                if (!feeItemByExtFeeCode.getFeeItemName().equals("快递运费")) {
+                    costDetail.setRateAmount(item.getStandardAmount());
+                }
                 costDetail.setDeptId(bizWaybillOrder.getDeptId());
                 costDetail.setUserId(bizWaybillOrder.getUserId());
             }

+ 12 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizWaybillCostDetails.java

@@ -96,6 +96,10 @@ public class BizWaybillCostDetails extends BaseEntity
 
     private String  adjustmentReason;
 
+    /** 采购金额 */
+    @Excel(name = "采购金额")
+    private BigDecimal purchaseAmount;
+
     public String getAdjustmentReason() {
         return adjustmentReason;
     }
@@ -301,6 +305,14 @@ public class BizWaybillCostDetails extends BaseEntity
         return delFlag;
     }
 
+    public BigDecimal getPurchaseAmount() {
+        return purchaseAmount;
+    }
+
+    public void setPurchaseAmount(BigDecimal purchaseAmount) {
+        this.purchaseAmount = purchaseAmount;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 21 - 6
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/MonthQRCodeTaskServiceImpl.java

@@ -1,13 +1,11 @@
 package com.ruoyi.logistics.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetActualFeeInfoV1.CommonActualFeeInfoDetailResponse;
 import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetActualFeeInfoV1.CommonActualFeeResponse;
 import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderByMonthSettleQRV1.CommonMonthSettleQRQueryResponse;
 import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderByMonthSettleQRV1.WaybillQRVerifyInfo;
 import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderInfoV1.addedProducts;
-import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.redis.service.RedisIdGenerator;
@@ -22,19 +20,24 @@ import com.ruoyi.logistics.mapper.BizMonthQrcodeRecordMapper;
 import com.ruoyi.logistics.mapper.BizWaybillCostDetailsMapper;
 import com.ruoyi.logistics.mapper.BizWaybillOrderMapper;
 import com.ruoyi.logistics.response.CommonOrderInfoResponse;
-import com.ruoyi.logistics.service.*;
+import com.ruoyi.logistics.service.FeeItemsCacheService;
+import com.ruoyi.logistics.service.IMonthQRCodeTaskService;
+import com.ruoyi.logistics.service.LogisticsOrderService;
 import com.ruoyi.system.api.domain.SysDept;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.service.ISysConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -68,6 +71,9 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
     @Autowired
     private BizMonthQrcodeRecordMapper bizMonthQrcodeRecordMapper;
 
+    @Autowired
+    private ISysConfigService sysConfigService;
+
     @Override
     public void consumeQRCode() {
         Collection<String> keys = redisService.keys(RedisCacheConstants.MONTH_QRCODE_CACHE_KEY + "*");
@@ -190,6 +196,9 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
 
     private List<BizWaybillCostDetails> assembleJDCostDetails(SysDept sysDept, BizWaybillOrder bizWaybillOrder, List<CommonActualFeeInfoDetailResponse> commonActualFeeInfoDetails) {
         List<BizWaybillCostDetails> details = new ArrayList<>();
+
+        String rate = sysConfigService.selectConfigByKey(bizWaybillOrder.getProductCode());
+
         commonActualFeeInfoDetails.forEach(item -> {
             BizWaybillCostDetails costDetail = new BizWaybillCostDetails();
             costDetail.setWaybillId(bizWaybillOrder.getWaybillId());
@@ -202,7 +211,13 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
                 costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
                 costDetail.setFeeName(item.getFeeTypeName());
                 costDetail.setAmount(item.getMoney());
-//                costDetail.setRateAmount(item.getMoney().multiply(new BigDecimal(StringUtils.isNotBlank(sysDept.getRateValue()) ? sysDept.getRateValue() : "1")).setScale(2, BigDecimal.ROUND_HALF_UP));
+                if (StringUtils.isNotBlank(rate)) {
+                    BigDecimal subtract = new BigDecimal("1").subtract(new BigDecimal(rate).divide(new BigDecimal("100")));
+                    costDetail.setPurchaseAmount(subtract.multiply(item.getMoney()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                }
+                if (!feeItemByExtFeeCode.getFeeItemName().equals("快递运费")) {
+                    costDetail.setRateAmount(item.getMoney());
+                }
                 costDetail.setDeptId(bizWaybillOrder.getDeptId());
                 costDetail.setUserId(bizWaybillOrder.getUserId());
             }

+ 5 - 2
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillCostDetailsMapper.xml

@@ -177,7 +177,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             user_id,
             del_flag,
             create_by,
-            update_by
+            update_by,
+            purchase_amount
         ) VALUES (
             #{waybillId},
             #{externalWaybillNo},
@@ -194,12 +195,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{userId},
             #{delFlag},
             #{createBy},
-            #{updateBy}
+            #{updateBy},
+            #{purchaseAmount}
         )
         ON DUPLICATE KEY UPDATE
             amount = #{amount},
             rate_amount = #{rateAmount},
             adjust_amount = #{adjustAmount},
+            purchase_amount = #{purchaseAmount},
             del_flag = #{delFlag},
             update_time = #{updateTime},
             update_by = #{updateBy}