2 コミット 98f0a42c74 ... 835e5c3318

作者 SHA1 メッセージ 日付
  jinyw 835e5c3318 Merge remote-tracking branch 'origin/dev_v2' into dev_v2 1 ヶ月 前
  jinyw 2401dbe3a1 fix - 控制报价计算方法提取 1 ヶ月 前

+ 44 - 31
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/quotation/impl/TqQuotationServiceImpl.java

@@ -301,8 +301,9 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
         baseMapper.insertTqQuotation(tqQuotation);
         Long quotationId = tqQuotation.getId();
         log.info("报价id [{}]", quotationId);
-
-        boolean quotationStandardFlag = insertSpecificationParam(quotationAddBO, quotationId);
+        boolean quotationStandardFlag = insertSpecificationParam(quotationAddBO
+            , quotationId
+            , isNeedCalc(quotationAddBO.getQuotationStatus()));
         // 技术评审中时,启动审批流程(技术评审)
         if (QuotationStatusEnum.REVIEWING.getCode().equals(quotationAddBO.getQuotationStatus())) {
             if (quotationStandardFlag) {
@@ -343,7 +344,7 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
     }
 
     // 新增电梯规则 和 参数
-    private boolean insertSpecificationParam(QuotationAddBO quotationAddBO, Long quotationId) {
+    private boolean insertSpecificationParam(QuotationAddBO quotationAddBO, Long quotationId, boolean needCalc) {
         BigDecimal finalRate = quoteApprovalService.getFinalRate(quotationAddBO.getExchangeRate(),
             quotationAddBO.getAgentDiscountRate(),
             quotationAddBO.getCountryDiscountRate());
@@ -374,30 +375,32 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
             }
             tqSpecification.setUpdateBy(SecurityUtils.getStrUserId());
             tqSpecification.setUpdateTime(DateUtils.getNowDate());
-            Long basicPriceLong;
+            Long basicPriceLong = 0L;
             List<TqPriceDetail> tqPriceDetailList = new ArrayList<>();
-            // 初始化梯形计算参数
-            QuotationUtil.initMap(elevator.getParamList());
-            try {
-                // 计算电梯基础价格 &&  层站差价放到选配价格
-                basicPriceLong = priceCalcService.calculateBasicPrice(elevator, tqPriceDetailList);
-                log.info("基础价格 [{}]", basicPriceLong);
-            } catch (Exception e) {
-                log.error("计算基价失败", e);
-                throw new ServiceException(
-                    MessageUtils.message("elevator.basic.price.fail",
-                        elevator.getElevatorModel(),
-                        elevator.getSpecification()));
-            }
-            // 计算电梯选配价格 (以及价格明细)
-            try {
-                priceCalcService.statisticsOptionalPrice(elevator, tqPriceDetailList);
-            } catch (Exception e) {
-                log.error("计算加价项目失败", e);
-                throw new ServiceException(
-                    MessageUtils.message("elevator.optional.price.fail",
-                        elevator.getElevatorModel(),
-                        elevator.getSpecification()));
+            if (needCalc) {
+                // 初始化梯形计算参数
+                QuotationUtil.initMap(elevator.getParamList());
+                try {
+                    // 计算电梯基础价格 &&  层站差价放到选配价格
+                    basicPriceLong = priceCalcService.calculateBasicPrice(elevator, tqPriceDetailList);
+                    log.info("基础价格 [{}]", basicPriceLong);
+                } catch (Exception e) {
+                    log.error("计算基价失败", e);
+                    throw new ServiceException(
+                        MessageUtils.message("elevator.basic.price.fail",
+                            elevator.getElevatorModel(),
+                            elevator.getSpecification()));
+                }
+                // 计算电梯选配价格 (以及价格明细)
+                try {
+                    priceCalcService.statisticsOptionalPrice(elevator, tqPriceDetailList);
+                } catch (Exception e) {
+                    log.error("计算加价项目失败", e);
+                    throw new ServiceException(
+                        MessageUtils.message("elevator.optional.price.fail",
+                            elevator.getElevatorModel(),
+                            elevator.getSpecification()));
+                }
             }
             // 选配价格求和
             BigDecimal optionalPrice = tqPriceDetailList.stream()
@@ -442,10 +445,12 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
             Long specificationId = tqSpecification.getId();
             log.info("规格id [{}]", specificationId);
             // 保存价格明细
-            tqPriceDetailList = tqPriceDetailList.stream().peek(item -> {
-                item.setSpecificationId(specificationId);
-            }).collect(Collectors.toList());
-            priceDetailService.saveBatch(tqPriceDetailList);
+            if (CollUtil.isNotEmpty(tqPriceDetailList)) {
+                tqPriceDetailList = tqPriceDetailList.stream().peek(item -> {
+                    item.setSpecificationId(specificationId);
+                }).collect(Collectors.toList());
+                priceDetailService.saveBatch(tqPriceDetailList);
+            }
 
             // 非标记录表
             List<NonStandardAddBO> nonStandardList = elevator.getNonStandardList();
@@ -588,7 +593,9 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
         quotationAddBO.setExchangeRate(tqQuotation.getExchangeRate());
         quotationAddBO.setCountryDiscountRate(tqQuotation.getCountryDiscountRate());
         quotationAddBO.setAgentDiscountRate(tqQuotation.getAgentDiscountRate());
-        boolean quotationStandardFlag = insertSpecificationParam(quotationAddBO, quotationId);
+        boolean quotationStandardFlag = insertSpecificationParam(quotationAddBO
+            , quotationId
+            , isNeedCalc(quotationAddBO.getQuotationStatus()));
         // 技术评审中时,启动审批流程(技术评审)
         if (QuotationStatusEnum.REVIEWING.getCode().equals(quotationAddBO.getQuotationStatus())) {
             if (quotationStandardFlag) {
@@ -609,6 +616,12 @@ public class TqQuotationServiceImpl extends ServiceImpl<TqQuotationMapper, TqQuo
         }
     }
 
+    // 是否计算梯形价格(上线后放开注释)
+    private boolean isNeedCalc(String quotationStatus) {
+        return true;
+        // return !QuotationStatusEnum.DRAFT.getCode().equals(quotationStatus);
+    }
+
     /**
      * 批量删除【请填写功能名称】
      *