Bläddra i källkod

完善仓储费计算

sunhz 3 år sedan
förälder
incheckning
54f1c7e7fb

+ 15 - 0
ruoyi-common/src/main/java/com/ruoyi/common/exception/StorageFeeException.java

@@ -0,0 +1,15 @@
+package com.ruoyi.common.exception;
+
+/**
+ * @author caifc
+ * @date 2021-10-18 11:15
+ */
+public class StorageFeeException extends Exception {
+
+    /**
+     * @param msg 错误信息
+     */
+    public StorageFeeException(String msg) {
+        super(msg);
+    }
+}

+ 25 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/StorageFeeCalculationResultVO.java

@@ -66,6 +66,31 @@ public class StorageFeeCalculationResultVO implements Serializable {
      */
     private List<TFees> feesList;
 
+    /**
+     * 未计费提单号提示
+     */
+    private String fMblnoMsg;
+
+    /**
+     * 未计费提单号提示数组
+     */
+    private List<String> fMblnoMsgList;
+
+    public String getfMblnoMsg() {
+        return fMblnoMsg;
+    }
+
+    public void setfMblnoMsg(String fMblnoMsg) {
+        this.fMblnoMsg = fMblnoMsg;
+    }
+
+    public List<String> getfMblnoMsgList() {
+        return fMblnoMsgList;
+    }
+
+    public void setfMblnoMsgList(List<String> fMblnoMsgList) {
+        this.fMblnoMsgList = fMblnoMsgList;
+    }
 
     public TWarehouseBills getWarehouseBills() {
         return warehouseBills;

+ 4 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseAgreementServiceImpl.java

@@ -17,6 +17,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.BaseException;
+import com.ruoyi.common.exception.StorageFeeException;
 import com.ruoyi.common.exception.WarehouseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -551,7 +552,7 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
      * @return 结果
      * @author shanxin
      */
-    public StorageFeeCalculationResultVO getCarryingCost(CalculateStorageFeesDTO storageFeesDto) {
+    public StorageFeeCalculationResultVO getCarryingCost(CalculateStorageFeesDTO storageFeesDto) throws StorageFeeException {
         if (null == storageFeesDto.getfCorpid() ||
                 null == storageFeesDto.getfGoodsid() ||
                 null == storageFeesDto.getDays() ||
@@ -568,8 +569,9 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
                         storageFeesDto.getfGoodsid(),
                         String.valueOf(storageFeesDto.getWarehouseId()), storageFeesDto.getCangKey());
         // 如果未找到计费规则 则抛出异常
+        // TODO
         if (CollUtil.isEmpty(itemList)) {
-            throw new WarehouseException("编号" + storageFeesDto.getfMblno() + "未找到计费规则");
+            throw new StorageFeeException(storageFeesDto.getfMblno());
         }
         // 如果仓储费出现两个不同计费单位就进行抛异常
         long count = itemList.stream().map(TWarehouseAgreementitems::getfFeeunitid).distinct().count();

+ 15 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -22,6 +22,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.BaseException;
+import com.ruoyi.common.exception.StorageFeeException;
 import com.ruoyi.common.exception.WarehouseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DictUtils;
@@ -4551,6 +4552,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         // 获取税率
         List<SysDictData> taxRate = sysDictDataMapper.selectDictDataByType("tax_rate");
 
+        List<String> fMblnoMsgList = new ArrayList<>();
         for (CalculateStorageFeesInfoVO item : feesInfoVOList) {
             // 交以计算明细计费方式必填
             if (StringUtils.isNull(item.getFBillingway())) {
@@ -4611,7 +4613,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             storageFeesDto.setfNetweight(item.getFNetweight());
             storageFeesDto.setfGrossweight(item.getFGrossweight());
             // 仓储费协议计算
-            StorageFeeCalculationResultVO feeCalculationResultVO = tWarehouseAgreementService.getCarryingCost(storageFeesDto);
+            StorageFeeCalculationResultVO feeCalculationResultVO = null;
+            try {
+                feeCalculationResultVO = tWarehouseAgreementService.getCarryingCost(storageFeesDto);
+            } catch (StorageFeeException e) {
+                fMblnoMsgList.add(e.getMessage());
+            }
+
             if (Objects.isNull(feeCalculationResultVO)) {
                 continue;
             }
@@ -4665,6 +4673,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         }
         resultVO.setAmt(sumAmt);
         resultVO.setItemFeesList(itemsList);
+        resultVO.setfMblnoMsgList(fMblnoMsgList);
         return resultVO;
     }
 
@@ -4726,6 +4735,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         tWarehouseBills.setfId(null);
         List<CalculateStorageFeesInfoVO> feesInfoVOList = tWarehousebillsitemsMapper.selectStorageFeeItemList1(tWarehouseBills);
         tWarehouseBills.setfId(fPid);
+
+        List<String> fMblnoMsgList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(feesInfoVOList)) {
             StorageFeeCalculationResultVO resultVO = getWarehouseItems(tWarehouseBills, feesInfoVOList, loginUser, cangKey);
             if (CollectionUtils.isNotEmpty(resultVO.getItemFeesList())) {
@@ -4737,6 +4748,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 });
                 itemsList = resultVO.getItemFeesList();
             }
+            fMblnoMsgList.addAll(resultVO.getfMblnoMsgList());
         }
         List<CalculateStorageFeesInfoVO> whgenlegfeesInfoVOList = tWhgenlegMapper.selectStorageFeeItemList1(tWarehouseBills);
         if (CollectionUtils.isNotEmpty(whgenlegfeesInfoVOList)) {
@@ -4754,6 +4766,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     itemsList.add(li);
                 }
             }
+            fMblnoMsgList.addAll(resultVO.getfMblnoMsgList());
         }
         TFees tFees = new TFees();
         tFees.setfStatus("2");
@@ -4765,6 +4778,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         calculationResultVO.setFeesList(feesList);
         calculationResultVO.setWarehouseBills(tWarehouseBills);
         calculationResultVO.setWarehouseItemList(itemsList);
+        calculationResultVO.setfMblnoMsg(fMblnoMsgList.stream().distinct().collect(Collectors.joining(",")));
         return AjaxResult.success(calculationResultVO);
     }