Parcourir la source

Merge remote-tracking branch 'origin/master' into master

zxf il y a 4 semaines
Parent
commit
11ded62ea4

+ 3 - 2
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/callback/JDPushOrderFeeCallback.java

@@ -73,12 +73,13 @@ public class JDPushOrderFeeCallback {
                 costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
                 costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
                 costDetail.setFeeName(item.getFeeTypeName());
                 costDetail.setFeeName(item.getFeeTypeName());
                 costDetail.setAmount(item.getStandardAmount());
                 costDetail.setAmount(item.getStandardAmount());
-                if (StringUtils.isNotBlank(rate)) {
+                if (StringUtils.isNotBlank(rate) && "快递运费".equals(feeItemByExtFeeCode.getFeeItemName())) {
                     BigDecimal subtract = new BigDecimal("1").subtract(new BigDecimal(rate).divide(new BigDecimal("100")));
                     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));
                     costDetail.setPurchaseAmount(subtract.multiply(item.getStandardAmount()).setScale(2, BigDecimal.ROUND_HALF_UP));
                 }
                 }
-                if (!feeItemByExtFeeCode.getFeeItemName().equals("快递运费")) {
+                if (!"快递运费".equals(feeItemByExtFeeCode.getFeeItemName())) {
                     costDetail.setRateAmount(item.getStandardAmount());
                     costDetail.setRateAmount(item.getStandardAmount());
+                    costDetail.setPurchaseAmount(item.getStandardAmount());
                 }
                 }
                 costDetail.setDeptId(bizWaybillOrder.getDeptId());
                 costDetail.setDeptId(bizWaybillOrder.getDeptId());
                 costDetail.setUserId(bizWaybillOrder.getUserId());
                 costDetail.setUserId(bizWaybillOrder.getUserId());

+ 0 - 2
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizAddressBook.java

@@ -19,7 +19,6 @@ public class BizAddressBook extends BaseEntity
     private Long addressId;
     private Long addressId;
 
 
     /** 公司名称 */
     /** 公司名称 */
-    @Excel(name = "公司名称")
     private String companyName;
     private String companyName;
 
 
     /** 联系人姓名 */
     /** 联系人姓名 */
@@ -47,7 +46,6 @@ public class BizAddressBook extends BaseEntity
     private String detailedAddress;
     private String detailedAddress;
 
 
     /** 是否默认 0非默认1默认 */
     /** 是否默认 0非默认1默认 */
-    @Excel(name = "是否默认", readConverterExp = "0=非默认,1=默认")
     private String defaultFlag;
     private String defaultFlag;
 
 
     /** 部门ID */
     /** 部门ID */

+ 8 - 2
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizAddressBookServiceImpl.java

@@ -159,7 +159,7 @@ public class BizAddressBookServiceImpl implements IBizAddressBookService {
 
 
         // 对导入的地址进行判断,联系人,联系电话,省市区信息必须存在,是否默认字段允许为空(默认为否),如果不为空只能有一个默认
         // 对导入的地址进行判断,联系人,联系电话,省市区信息必须存在,是否默认字段允许为空(默认为否),如果不为空只能有一个默认
         bookList.forEach(book -> {
         bookList.forEach(book -> {
-            // 先判断 联系人,联系电话,省市区信息是否为空
+            // 先判断 联系人,联系电话,省市区信息是否为空
             if (StringUtils.isEmpty(book.getContactName())
             if (StringUtils.isEmpty(book.getContactName())
                     || StringUtils.isEmpty(book.getContactPhone())
                     || StringUtils.isEmpty(book.getContactPhone())
                     || StringUtils.isEmpty(book.getProvinceName())
                     || StringUtils.isEmpty(book.getProvinceName())
@@ -167,8 +167,14 @@ public class BizAddressBookServiceImpl implements IBizAddressBookService {
                     || StringUtils.isEmpty(book.getCountyName())
                     || StringUtils.isEmpty(book.getCountyName())
                     || StringUtils.isEmpty(book.getDetailedAddress())
                     || StringUtils.isEmpty(book.getDetailedAddress())
             ) {
             ) {
-                throw new ServiceException("导入地址数据存在空值,请检查!");
+                throw new ServiceException("导入地址数据存在空值请检查!");
             }
             }
+                        
+            // 校验手机号格式
+            if (!book.getContactPhone().matches("^1[3-9]\\d{9}$")) {
+                throw new ServiceException("导入地址数据存在手机号格式不正确,请检查!");
+            }
+
             // 判断 是否默认字段是否为空,如果不为空只能有一个默认,并根据传值进行发替换
             // 判断 是否默认字段是否为空,如果不为空只能有一个默认,并根据传值进行发替换
             String defaultFlag = book.getDefaultFlag();
             String defaultFlag = book.getDefaultFlag();
             if (defaultFlag == null || defaultFlag.isEmpty() || Objects.equals(defaultFlag, "否")) {
             if (defaultFlag == null || defaultFlag.isEmpty() || Objects.equals(defaultFlag, "否")) {

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

@@ -211,12 +211,13 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
                 costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
                 costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
                 costDetail.setFeeName(item.getFeeTypeName());
                 costDetail.setFeeName(item.getFeeTypeName());
                 costDetail.setAmount(item.getMoney());
                 costDetail.setAmount(item.getMoney());
-                if (StringUtils.isNotBlank(rate)) {
+                if (StringUtils.isNotBlank(rate) && "快递运费".equals(feeItemByExtFeeCode.getFeeItemName())) {
                     BigDecimal subtract = new BigDecimal("1").subtract(new BigDecimal(rate).divide(new BigDecimal("100")));
                     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));
                     costDetail.setPurchaseAmount(subtract.multiply(item.getMoney()).setScale(2, BigDecimal.ROUND_HALF_UP));
                 }
                 }
                 if (!feeItemByExtFeeCode.getFeeItemName().equals("快递运费")) {
                 if (!feeItemByExtFeeCode.getFeeItemName().equals("快递运费")) {
                     costDetail.setRateAmount(item.getMoney());
                     costDetail.setRateAmount(item.getMoney());
+                    costDetail.setPurchaseAmount(item.getMoney());
                 }
                 }
                 costDetail.setDeptId(bizWaybillOrder.getDeptId());
                 costDetail.setDeptId(bizWaybillOrder.getDeptId());
                 costDetail.setUserId(bizWaybillOrder.getUserId());
                 costDetail.setUserId(bizWaybillOrder.getUserId());

+ 55 - 42
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/SysDeptRateServiceImpl.java

@@ -144,6 +144,23 @@ public class SysDeptRateServiceImpl implements ISysDeptRateService
      */
      */
     private static void validateIntervalOverlap(List<SysDeptRate> rates) {
     private static void validateIntervalOverlap(List<SysDeptRate> rates) {
         if (rates.size() <= 1) {
         if (rates.size() <= 1) {
+            SysDeptRate rate = rates.get(0);
+            Long begins = rate.getIntervalBegins();
+            Long ends = rate.getIntervalEnds();
+            // 检查区间有效性
+            if (begins == null || ends == null) {
+                throw new ServiceException("区间开始和结束值不能为空");
+            }
+
+            if (begins >= ends) {
+                throw new ServiceException(String.format(
+                        "%s、%s配置的区间开始值必须小于结束值", getCompanyName(rate.getCompanyType()), getProductName(rate.getProductType())));
+            }
+
+            if (rate.getRate().compareTo(new BigDecimal("0")) == 0) {
+                throw new ServiceException(String.format(
+                        "%s、%s的费率不能为0", getCompanyName(rate.getCompanyType()), getProductName(rate.getProductType())));
+            }
             return; // 单个或空列表无需校验
             return; // 单个或空列表无需校验
         }
         }
         
         
@@ -182,18 +199,23 @@ public class SysDeptRateServiceImpl implements ISysDeptRateService
                 
                 
                 if (isOverlap) {
                 if (isOverlap) {
                     throw new ServiceException(String.format(
                     throw new ServiceException(String.format(
-                        "物流公司%s、产品类型%s的区间配置存在重叠:区间%d(%d,%d] 与区间%d(%d,%d]",
-                        rates.get(i).getCompanyType(),
-                        rates.get(i).getProductType(),
+                        "%s、%s的区间配置存在重叠:区间%d(%d,%d] 与区间%d(%d,%d]",
+                            getCompanyName(rates.get(i).getCompanyType()),
+                            getProductName(rates.get(i).getProductType()),
                         i + 1, begins1, ends1,
                         i + 1, begins1, ends1,
                         j + 1, begins2, ends2));
                         j + 1, begins2, ends2));
                 }
                 }
 
 
+                if (rate1.getRate().compareTo(new BigDecimal("0")) == 0) {
+                    throw new ServiceException(String.format(
+                            "%s、%s的费率不能为0", getCompanyName(rate1.getCompanyType()), getProductName(rate1.getProductType())));
+                }
+
                 if (rate1.getRate().compareTo(rate2.getRate()) < 0) {
                 if (rate1.getRate().compareTo(rate2.getRate()) < 0) {
                     throw new ServiceException(String.format(
                     throw new ServiceException(String.format(
-                            "物流公司%s、产品类型%s的费率配置有误:区间%d(%d,%d] 与区间%d(%d,%d]",
-                            rates.get(i).getCompanyType(),
-                            rates.get(i).getProductType(),
+                            "%s、%s的费率配置有误:区间%d(%d,%d] 与区间%d(%d,%d]",
+                            getCompanyName(rates.get(i).getCompanyType()),
+                            getProductName(rates.get(i).getProductType()),
                             i + 1, begins1, ends1,
                             i + 1, begins1, ends1,
                             j + 1, begins2, ends2));
                             j + 1, begins2, ends2));
                 }
                 }
@@ -201,41 +223,32 @@ public class SysDeptRateServiceImpl implements ISysDeptRateService
         }
         }
     }
     }
 
 
-    public static void main(String[] args) {
-        List<SysDeptRate> rates = new ArrayList<>();
-        SysDeptRate a = new SysDeptRate();
-        SysDeptRate b = new SysDeptRate();
-        SysDeptRate c = new SysDeptRate();
-
-        a.setCompanyType("JD");
-        a.setProductType("ed-m-0001");
-        a.setIntervalBegins(0L);
-        a.setIntervalEnds(100L);
-        a.setRate(new BigDecimal("0.1"));
-
-        b.setCompanyType("JD");
-        b.setProductType("ed-m-0001");
-        b.setIntervalBegins(100L);
-        b.setIntervalEnds(200L);
-        b.setRate(new BigDecimal("0.2"));
-
-        c.setCompanyType("JD");
-        c.setProductType("ed-m-0002");
-        c.setIntervalBegins(200L);
-        c.setIntervalEnds(300L);
-        c.setRate(new BigDecimal("0.3"));
-
-        rates.add(c);
-        rates.add(b);
-        rates.add(a);
-
-        List<SysDeptRate> collect = rates.stream()
-                .sorted(
-                        Comparator.comparing(SysDeptRate::getCompanyType)
-                                .thenComparing(SysDeptRate::getProductType)
-                                .thenComparing(SysDeptRate::getIntervalBegins)
-                )
-                .collect(Collectors.toList());
-        System.out.println(1);
+    private static String getCompanyName(String companyType) {
+        if (companyType == null) {
+            return null;
+        }
+        if (companyType.equals("1")) {
+            return "京东";
+        }
+        if (companyType.equals("2")) {
+            return "顺丰";
+        }
+        return null;
+    }
+
+    private static String getProductName(String productType) {
+        if (productType == null) {
+            return null;
+        }
+        if (productType.equals("ed-m-0001")) {
+            return "京东标快";
+        }
+        if (productType.equals("ed-m-0002")) {
+            return "京东特快";
+        }
+        if (productType.equals("fr-m-0004")) {
+            return "特快重货";
+        }
+        return null;
     }
     }
 }
 }

+ 0 - 4
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/domain/dto/DeptImportDTO.java

@@ -37,10 +37,6 @@ public class DeptImportDTO {
     @Excel(name = "负责人姓名")
     @Excel(name = "负责人姓名")
     private String leader;
     private String leader;
 
 
-    /** 费率 */
-    @Excel(name = "*费率")
-    private String rateValue;
-
     /** 发票抬头 */
     /** 发票抬头 */
     @Excel(name = "*发票抬头")
     @Excel(name = "*发票抬头")
     private String invoiceName;
     private String invoiceName;

+ 0 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -421,7 +421,6 @@ public class SysDeptServiceImpl implements ISysDeptService
         dept.setBankAccount(importDTO.getBankAccount());
         dept.setBankAccount(importDTO.getBankAccount());
         dept.setCreateBy(SecurityUtils.getUsername());
         dept.setCreateBy(SecurityUtils.getUsername());
         dept.setCreateTime(DateUtils.getNowDate());
         dept.setCreateTime(DateUtils.getNowDate());
-        dept.setRateValue(importDTO.getRateValue());
         return dept;
         return dept;
     }
     }
 }
 }

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizAddressBookMapper.xml

@@ -57,7 +57,7 @@
                 detailed_address like concat('%', #{searchKeyword}, '%'))
                 detailed_address like concat('%', #{searchKeyword}, '%'))
             </if>
             </if>
         </where>
         </where>
-        order by default_flag desc, create_time desc
+        order by create_time desc
     </select>
     </select>
 
 
     <select id="selectBizAddressBookByAddressId" parameterType="Long" resultMap="BizAddressBookResult">
     <select id="selectBizAddressBookByAddressId" parameterType="Long" resultMap="BizAddressBookResult">