Ver código fonte

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

ligang134 2 anos atrás
pai
commit
d66e05e7a6
33 arquivos alterados com 1237 adições e 31 exclusões
  1. 11 0
      src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java
  2. 257 7
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java
  3. 2 0
      src/main/java/com/ydtech/modules/ins/model/ya/CarModelDTO.java
  4. 2 0
      src/main/java/com/ydtech/modules/ins/model/zm/ZmCarModel.java
  5. 109 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderFeeVo.java
  6. 6 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderVo.java
  7. 24 0
      src/main/java/com/ydtech/modules/order/entity/vo/QueryOrderFeeResultVo.java
  8. 28 0
      src/main/java/com/ydtech/modules/order/entity/vo/QueryOrderFeeVo.java
  9. 12 9
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  10. 1 1
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java
  11. 7 0
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  12. 3 2
      src/main/java/com/ydtech/modules/protocol/controller/PtlNonCarInsuranceProductController.java
  13. 13 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductImgMapper.java
  14. 13 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductSchemeDetailMapper.java
  15. 13 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductSchemeMapper.java
  16. 74 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarInsuranceProduct.java
  17. 48 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductImg.java
  18. 61 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductScheme.java
  19. 66 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductSchemeDetail.java
  20. 17 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductPageVo.java
  21. 24 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductQueryVo.java
  22. 50 1
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductSaveVo.java
  23. 27 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarProductSchemeDetailVo.java
  24. 39 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarProductSchemeVo.java
  25. 3 6
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarInsuranceProductService.java
  26. 26 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductImgService.java
  27. 17 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductSchemeDetailService.java
  28. 17 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductSchemeService.java
  29. 68 5
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarInsuranceProductServiceImpl.java
  30. 41 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductImgServiceImpl.java
  31. 66 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductSchemeDetailServiceImpl.java
  32. 80 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductSchemeServiceImpl.java
  33. 12 0
      src/main/resources/mapper/modules/protocol/PtlNonCarInsuranceProductMapper.xml

+ 11 - 0
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java

@@ -5,6 +5,10 @@ import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
 import com.ydtech.modules.fee.dto.FeeSchemeResDto;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeResultVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+
+import java.util.List;
 
 /**
  * 该类中只要包含费用的一些相关接口
@@ -20,4 +24,11 @@ public interface FeeRuleSchemeService {
      * @param businessNo
      */
     public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo);
+
+    /**
+     * 查询费用明细
+     * @param companyId
+     * @return
+     */
+    public List<QueryOrderFeeResultVo> queryFeeOrderInfo(String companyId);
 }

+ 257 - 7
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -16,9 +16,14 @@ import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.OrderFeeVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeResultVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
@@ -51,6 +56,10 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
     private EsmRetailService esmRetailService;
     @Resource
     private EsmUserReferrerService esmUserReferrerService;
+    @Resource
+    private InsAreaCompanyService insAreaCompanyService;
+
+
 
     /**
      * 根据跟单信息,以及配置的费用因子,获取合适的跟单费用
@@ -671,24 +680,24 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
             insFeeOrder.setJqSpilloverPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
         }
         if(insFeeOrder.getSyPremium().doubleValue()>0){
-            syNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
+            syNoTaxPremium = insFeeOrder.getSyPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
             insFeeOrder.setSyNoTaxPremium(syNoTaxPremium);
             //商业险总费用
-            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqCostsProportion()));
+            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getSyCostsProportion()));
             //监管费比例
             if("1".equals(feeSchemeReqDto.getIsNewCar())){
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyNewCarCostsProportion()));
             }else if("0".equals(feeSchemeReqDto.getIsNewCar())){
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyOldCarCostsProportion()));
             }else{
                 insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(0));
             }
             //监管费
-            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSuperviseCostsProportion()));
+            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getSySuperviseCostsProportion()));
             //溢出费比例 先搁置放0
-            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
+            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getSySpilloverProportion()));
             //溢出费 先搁置放0
-            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
+            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium,insFeeOrder.getSySpilloverProportion()));
         }
 
         if(jqNoTaxPremium.doubleValue() >0 || syNoTaxPremium.doubleValue() >0){
@@ -826,4 +835,245 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         }
         return premium;
     }
+
+    public List<QueryOrderFeeResultVo> queryFeeOrderInfo(String companyId){
+        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
+        OrderFeeVo jqOrderFeeVo = new OrderFeeVo();
+        OrderFeeVo syOrderFeeVo = new OrderFeeVo();
+        OrderFeeVo fcOrderFeeVo = new OrderFeeVo();
+
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        InsFeeOrder insFeeOrder = insFeeOrderService.getByInsOrderNo(insAreaCompany.getInsOrderNo());
+
+        if(insFeeOrder!=null){
+            if(insFeeOrder.getJqPremium()!=null && insFeeOrder.getSyPremium()==null){//当为单交业务时
+                jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+                jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
+                jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
+            }else if(insFeeOrder.getJqPremium()==null && insFeeOrder.getSyPremium()!=null){//当为单商业务时
+                syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+                syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
+                syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
+            }else if(insFeeOrder.getJqPremium()!=null && insFeeOrder.getJqPremium().doubleValue()>0 && insFeeOrder.getSyPremium()!=null && insFeeOrder.getSyPremium().doubleValue()>0){//当为交商业务时
+                QueryOrderFeeVo queryOrderFeeVoTemp = packageOrderFeeInfoAll(insFeeOrder);
+                //获取交强险费用明细
+                jqOrderFeeVo = queryOrderFeeVoTemp.getJqCoderFeeVo();
+                jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
+                jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
+                //获取商业险费用明细
+                syOrderFeeVo = queryOrderFeeVoTemp.getSyCoderFeeVo();
+                syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
+                syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
+
+            }
+            queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
+            queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
+            queryOrderFeeVo.setFcCoderFeeVo(fcOrderFeeVo);
+        }
+        List<QueryOrderFeeResultVo> resultList=convertOrderFeeVoData(queryOrderFeeVo);
+        return resultList;
+    }
+
+    //把取出的费用信息转换为页面需要展示的数据
+    private List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo) {
+        List<QueryOrderFeeResultVo> resultList=new ArrayList<>();
+        OrderFeeVo jqOrderFeeVo = orderFeeVo.getJqCoderFeeVo();
+        OrderFeeVo syOrderFeeVo = orderFeeVo.getSyCoderFeeVo();
+        OrderFeeVo fcOrderFeeVo = orderFeeVo.getFcCoderFeeVo();
+
+        //总费用
+        QueryOrderFeeResultVo feeResultVo1=new QueryOrderFeeResultVo();
+        feeResultVo1.setDescSerialNo("1");
+        feeResultVo1.setFeeTypeName("总费用");
+        feeResultVo1.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getCostsProportion()!=null?jqOrderFeeVo.getCostsProportion():"-");
+        feeResultVo1.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getCostsPremiums()!=null?jqOrderFeeVo.getCostsPremiums():"-");
+        feeResultVo1.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getCostsProportion()!=null?syOrderFeeVo.getCostsProportion():"-");
+        feeResultVo1.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getCostsPremiums()!=null?syOrderFeeVo.getCostsPremiums():"-");
+        feeResultVo1.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getCostsProportion()!=null?fcOrderFeeVo.getCostsProportion():"-");
+        feeResultVo1.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getCostsPremiums()!=null?fcOrderFeeVo.getCostsPremiums():"-");
+        resultList.add(feeResultVo1);
+        //一级管理费用
+        QueryOrderFeeResultVo feeResultVo2=new QueryOrderFeeResultVo();
+        feeResultVo2.setDescSerialNo("2");
+        feeResultVo2.setFeeTypeName("一级管理费");
+        feeResultVo2.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getFirstDeptProportion()!=null?jqOrderFeeVo.getFirstDeptProportion():"-");
+        feeResultVo2.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getFirstDeptPremiums()!=null?jqOrderFeeVo.getFirstDeptPremiums():"-");
+        feeResultVo2.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getFirstDeptProportion()!=null?syOrderFeeVo.getFirstDeptProportion():"-");
+        feeResultVo2.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getFirstDeptPremiums()!=null?syOrderFeeVo.getFirstDeptPremiums():"-");
+        feeResultVo2.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getFirstDeptProportion()!=null?fcOrderFeeVo.getFirstDeptProportion():"-");
+        feeResultVo2.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getFirstDeptPremiums()!=null?fcOrderFeeVo.getFirstDeptPremiums():"-");
+        resultList.add(feeResultVo2);
+        //二级管理费用
+        QueryOrderFeeResultVo feeResultVo3=new QueryOrderFeeResultVo();
+        feeResultVo3.setDescSerialNo("3");
+        feeResultVo3.setFeeTypeName("二级管理费");
+        feeResultVo3.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getSecondDeptProportion()!=null?jqOrderFeeVo.getSecondDeptProportion():"-");
+        feeResultVo3.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getSecondDeptPremiums()!=null?jqOrderFeeVo.getSecondDeptPremiums():"-");
+        feeResultVo3.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getSecondDeptProportion()!=null?syOrderFeeVo.getSecondDeptProportion():"-");
+        feeResultVo3.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getSecondDeptPremiums()!=null?syOrderFeeVo.getSecondDeptPremiums():"-");
+        feeResultVo3.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getSecondDeptProportion()!=null?fcOrderFeeVo.getSecondDeptProportion():"-");
+        feeResultVo3.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getSecondDeptPremiums()!=null?fcOrderFeeVo.getSecondDeptPremiums():"-");
+        resultList.add(feeResultVo3);
+        //三级管理费用
+        QueryOrderFeeResultVo feeResultVo4=new QueryOrderFeeResultVo();
+        feeResultVo4.setDescSerialNo("4");
+        feeResultVo4.setFeeTypeName("三级管理费");
+        feeResultVo4.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getThirdDeptProportion()!=null?jqOrderFeeVo.getThirdDeptProportion():"-");
+        feeResultVo4.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getThirdDeptPremiums()!=null?jqOrderFeeVo.getThirdDeptPremiums():"-");
+        feeResultVo4.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getThirdDeptProportion()!=null?syOrderFeeVo.getThirdDeptProportion():"-");
+        feeResultVo4.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getThirdDeptPremiums()!=null?syOrderFeeVo.getThirdDeptPremiums():"-");
+        feeResultVo4.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getThirdDeptProportion()!=null?fcOrderFeeVo.getThirdDeptProportion():"-");
+        feeResultVo4.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getThirdDeptPremiums()!=null?fcOrderFeeVo.getThirdDeptPremiums():"-");
+        resultList.add(feeResultVo4);
+        //四级管理费用
+        QueryOrderFeeResultVo feeResultVo5=new QueryOrderFeeResultVo();
+        feeResultVo5.setDescSerialNo("5");
+        feeResultVo5.setFeeTypeName("四级管理费");
+        feeResultVo5.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getForthDeptProportion()!=null?jqOrderFeeVo.getForthDeptProportion():"-");
+        feeResultVo5.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getForthDeptPremiums()!=null?jqOrderFeeVo.getForthDeptPremiums():"-");
+        feeResultVo5.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getForthDeptProportion()!=null?syOrderFeeVo.getForthDeptProportion():"-");
+        feeResultVo5.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getForthDeptPremiums()!=null?syOrderFeeVo.getForthDeptPremiums():"-");
+        feeResultVo5.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getForthDeptProportion()!=null?fcOrderFeeVo.getForthDeptProportion():"-");
+        feeResultVo5.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getForthDeptPremiums()!=null?fcOrderFeeVo.getForthDeptPremiums():"-");
+        resultList.add(feeResultVo5);
+        //五级管理费用
+        QueryOrderFeeResultVo feeResultVo6=new QueryOrderFeeResultVo();
+        feeResultVo6.setDescSerialNo("6");
+        feeResultVo6.setFeeTypeName("五级管理费");
+        feeResultVo6.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getFifthDeptProportion()!=null?jqOrderFeeVo.getFifthDeptProportion():"-");
+        feeResultVo6.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getFifthDeptPremiums()!=null?jqOrderFeeVo.getFifthDeptPremiums():"-");
+        feeResultVo6.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getFifthDeptProportion()!=null?syOrderFeeVo.getFifthDeptProportion():"-");
+        feeResultVo6.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getFifthDeptPremiums()!=null?syOrderFeeVo.getFifthDeptPremiums():"-");
+        feeResultVo6.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getFifthDeptProportion()!=null?fcOrderFeeVo.getFifthDeptProportion():"-");
+        feeResultVo6.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getFifthDeptPremiums()!=null?fcOrderFeeVo.getFifthDeptPremiums():"-");
+        resultList.add(feeResultVo6);
+        //一级分销费
+        QueryOrderFeeResultVo feeResultVo7=new QueryOrderFeeResultVo();
+        feeResultVo7.setDescSerialNo("7");
+        feeResultVo7.setFeeTypeName("一级分销费");
+        feeResultVo7.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getFirstRetailProportion()!=null?jqOrderFeeVo.getFirstRetailProportion():"-");
+        feeResultVo7.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getFirstRetailPremiums()!=null?jqOrderFeeVo.getFirstRetailPremiums():"-");
+        feeResultVo7.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getFirstRetailProportion()!=null?syOrderFeeVo.getFirstRetailProportion():"-");
+        feeResultVo7.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getFirstRetailPremiums()!=null?syOrderFeeVo.getFirstRetailPremiums():"-");
+        feeResultVo7.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getFirstRetailProportion()!=null?fcOrderFeeVo.getFirstRetailProportion():"-");
+        feeResultVo7.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getFirstRetailPremiums()!=null?fcOrderFeeVo.getFirstRetailPremiums():"-");
+        resultList.add(feeResultVo7);
+        //二级分销费
+        QueryOrderFeeResultVo feeResultVo8=new QueryOrderFeeResultVo();
+        feeResultVo8.setDescSerialNo("8");
+        feeResultVo8.setFeeTypeName("二级分销费");
+        feeResultVo8.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getSecondRetailProportion()!=null?jqOrderFeeVo.getSecondRetailProportion():"-");
+        feeResultVo8.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getSecondRetailPremiums()!=null?jqOrderFeeVo.getSecondRetailPremiums():"-");
+        feeResultVo8.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getSecondRetailProportion()!=null?syOrderFeeVo.getSecondRetailProportion():"-");
+        feeResultVo8.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getSecondRetailPremiums()!=null?syOrderFeeVo.getSecondRetailPremiums():"-");
+        feeResultVo8.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getSecondRetailProportion()!=null?fcOrderFeeVo.getSecondRetailProportion():"-");
+        feeResultVo8.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getSecondRetailPremiums()!=null?fcOrderFeeVo.getSecondRetailPremiums():"-");
+        resultList.add(feeResultVo8);
+        //三级分销费
+        QueryOrderFeeResultVo feeResultVo9=new QueryOrderFeeResultVo();
+        feeResultVo9.setDescSerialNo("9");
+        feeResultVo9.setFeeTypeName("三级分销费");
+        feeResultVo9.setJqFeeRate(jqOrderFeeVo!=null&&jqOrderFeeVo.getThirdRetailProportion()!=null?jqOrderFeeVo.getThirdRetailProportion():"-");
+        feeResultVo9.setJqFeeAmount(jqOrderFeeVo!=null&&jqOrderFeeVo.getThirdRetailPremiums()!=null?jqOrderFeeVo.getThirdRetailPremiums():"-");
+        feeResultVo9.setSyFeeRate(syOrderFeeVo!=null&&syOrderFeeVo.getThirdRetailProportion()!=null?syOrderFeeVo.getThirdRetailProportion():"-");
+        feeResultVo9.setSyFeeAmount(syOrderFeeVo!=null&&syOrderFeeVo.getThirdRetailPremiums()!=null?syOrderFeeVo.getThirdRetailPremiums():"-");
+        feeResultVo9.setFcFeeRate(fcOrderFeeVo!=null&&fcOrderFeeVo.getThirdRetailProportion()!=null?fcOrderFeeVo.getThirdRetailProportion():"-");
+        feeResultVo9.setFcFeeAmount(fcOrderFeeVo!=null&&fcOrderFeeVo.getThirdRetailPremiums()!=null?fcOrderFeeVo.getThirdRetailPremiums():"-");
+        resultList.add(feeResultVo9);
+        return resultList;
+    }
+
+    /**
+     * 按照组合单模式获取费用明细
+     * @param insFeeOrder
+     * @return
+     */
+    private QueryOrderFeeVo packageOrderFeeInfoAll(InsFeeOrder insFeeOrder){
+        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
+        InsFeeOrder jqInsFeeOrderTemp = new InsFeeOrder();
+        //先利用交强费重算费用
+        jqInsFeeOrderTemp.setFirstDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getFirstDeptProportion()));
+        jqInsFeeOrderTemp.setSecondDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getSecondDeptProportion()));
+        jqInsFeeOrderTemp.setThirdDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getThirdDeptProportion()));
+        jqInsFeeOrderTemp.setForthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getForthDeptProportion()));
+        jqInsFeeOrderTemp.setFifthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getFifthDeptProportion()));
+        jqInsFeeOrderTemp.setFirstRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getFirstRetailProportion()));
+        jqInsFeeOrderTemp.setSecondRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getSecondRetailProportion()));
+        jqInsFeeOrderTemp.setThirdRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(),insFeeOrder.getThirdRetailProportion()));
+
+        //再利用总费-交强费,得出商业费
+        InsFeeOrder syInsFeeOrderTemp = new InsFeeOrder();
+        syInsFeeOrderTemp.setFirstDeptPremiums(insFeeOrder.getFirstDeptPremiums().subtract(jqInsFeeOrderTemp.getFirstDeptPremiums()));
+        syInsFeeOrderTemp.setSecondDeptPremiums(insFeeOrder.getSecondDeptPremiums().subtract(jqInsFeeOrderTemp.getSecondDeptPremiums()));
+        syInsFeeOrderTemp.setThirdDeptPremiums(insFeeOrder.getThirdDeptPremiums().subtract(jqInsFeeOrderTemp.getThirdDeptPremiums()));
+        syInsFeeOrderTemp.setForthDeptPremiums(insFeeOrder.getForthDeptPremiums().subtract(jqInsFeeOrderTemp.getForthDeptPremiums()));
+        syInsFeeOrderTemp.setFifthDeptPremiums(insFeeOrder.getFifthDeptPremiums().subtract(jqInsFeeOrderTemp.getFifthDeptPremiums()));
+        syInsFeeOrderTemp.setFirstRetailPremiums(insFeeOrder.getFirstRetailPremiums().subtract(jqInsFeeOrderTemp.getFirstRetailPremiums()));
+        syInsFeeOrderTemp.setSecondRetailPremiums(insFeeOrder.getSecondRetailPremiums().subtract(jqInsFeeOrderTemp.getSecondRetailPremiums()));
+        syInsFeeOrderTemp.setThirdRetailPremiums(insFeeOrder.getThirdRetailPremiums().subtract(jqInsFeeOrderTemp.getThirdRetailPremiums()));
+
+        //交强费转换赋值
+        OrderFeeVo jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+        jqOrderFeeVo.setFirstDeptPremiums(convertToString(jqInsFeeOrderTemp.getFirstDeptPremiums()));
+        jqOrderFeeVo.setSecondDeptPremiums(convertToString(jqInsFeeOrderTemp.getSecondDeptPremiums()));
+        jqOrderFeeVo.setThirdDeptPremiums(convertToString(jqInsFeeOrderTemp.getThirdDeptPremiums()));
+        jqOrderFeeVo.setForthDeptPremiums(convertToString(jqInsFeeOrderTemp.getForthDeptPremiums()));
+        jqOrderFeeVo.setFifthDeptPremiums(convertToString(jqInsFeeOrderTemp.getFifthDeptPremiums()));
+        jqOrderFeeVo.setFirstRetailPremiums(convertToString(jqInsFeeOrderTemp.getFirstRetailPremiums()));
+        jqOrderFeeVo.setSecondRetailPremiums(convertToString(jqInsFeeOrderTemp.getSecondRetailPremiums()));
+        jqOrderFeeVo.setThirdRetailPremiums(convertToString(jqInsFeeOrderTemp.getThirdRetailPremiums()));
+
+        //商业费转换赋值
+        OrderFeeVo syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+        syOrderFeeVo.setFirstDeptPremiums(convertToString(syInsFeeOrderTemp.getFirstDeptPremiums()));
+        syOrderFeeVo.setSecondDeptPremiums(convertToString(syInsFeeOrderTemp.getSecondDeptPremiums()));
+        syOrderFeeVo.setThirdDeptPremiums(convertToString(syInsFeeOrderTemp.getThirdDeptPremiums()));
+        syOrderFeeVo.setForthDeptPremiums(convertToString(syInsFeeOrderTemp.getForthDeptPremiums()));
+        syOrderFeeVo.setFifthDeptPremiums(convertToString(syInsFeeOrderTemp.getFifthDeptPremiums()));
+        syOrderFeeVo.setFirstRetailPremiums(convertToString(syInsFeeOrderTemp.getFirstRetailPremiums()));
+        syOrderFeeVo.setSecondRetailPremiums(convertToString(syInsFeeOrderTemp.getSecondRetailPremiums()));
+        syOrderFeeVo.setThirdRetailPremiums(convertToString(syInsFeeOrderTemp.getThirdRetailPremiums()));
+
+        queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
+        queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
+        return queryOrderFeeVo;
+    }
+
+    /**
+     * 按照单险种方式获取费用明细
+     * @param insFeeOrder
+     * @return
+     */
+    private OrderFeeVo packageOrderFeeInfoOne(InsFeeOrder insFeeOrder){
+        OrderFeeVo orderFeeVo = new OrderFeeVo();
+        orderFeeVo.setFirstDeptPremiums(convertToString(insFeeOrder.getFirstDeptPremiums()));
+        orderFeeVo.setFirstDeptProportion(convertToString(insFeeOrder.getFirstDeptProportion()));
+        orderFeeVo.setSecondDeptPremiums(convertToString(insFeeOrder.getSecondDeptPremiums()));
+        orderFeeVo.setSecondDeptProportion(convertToString(insFeeOrder.getSecondDeptProportion()));
+        orderFeeVo.setThirdDeptPremiums(convertToString(insFeeOrder.getThirdDeptPremiums()));
+        orderFeeVo.setThirdDeptProportion(convertToString(insFeeOrder.getThirdDeptProportion()));
+        orderFeeVo.setForthDeptPremiums(convertToString(insFeeOrder.getForthDeptPremiums()));
+        orderFeeVo.setForthDeptProportion(convertToString(insFeeOrder.getForthDeptProportion()));
+        orderFeeVo.setFifthDeptPremiums(convertToString(insFeeOrder.getFifthDeptPremiums()));
+        orderFeeVo.setFifthDeptProportion(convertToString(insFeeOrder.getFifthDeptProportion()));
+        orderFeeVo.setFirstRetailPremiums(convertToString(insFeeOrder.getFirstRetailPremiums()));
+        orderFeeVo.setFirstRetailProportion(convertToString(insFeeOrder.getFirstRetailProportion()));
+        orderFeeVo.setSecondRetailPremiums(convertToString(insFeeOrder.getSecondRetailPremiums()));
+        orderFeeVo.setSecondRetailProportion(convertToString(insFeeOrder.getSecondRetailProportion()));
+        orderFeeVo.setThirdRetailPremiums(convertToString(insFeeOrder.getThirdRetailPremiums()));
+        orderFeeVo.setThirdRetailProportion(convertToString(insFeeOrder.getThirdRetailProportion()));
+        return orderFeeVo;
+    }
+
+    private String convertToString(BigDecimal b){
+        if(b!=null){
+            if(b.doubleValue()==0){
+                return null;
+            }else {
+                return b.toString();
+            }
+        }else{
+            return null;
+        }
+    }
 }

+ 2 - 0
src/main/java/com/ydtech/modules/ins/model/ya/CarModelDTO.java

@@ -34,5 +34,7 @@ public class CarModelDTO {
     private String wholeWeight;//
     private String powerScale;//
     private VehicleJingyou vehicleJingyo;
+    private String vehicleSeatMax; // 最大座位数
+    private String vehicleSeatMin; // 最小座位数
 
 }

+ 2 - 0
src/main/java/com/ydtech/modules/ins/model/zm/ZmCarModel.java

@@ -76,6 +76,8 @@ public class ZmCarModel {
         carModelDTO.setFuelTypeCode(zmCarModel.getFuelTypeCode());
         carModelDTO.setEnergyTypes(zmCarModel.getFuelTypeCode());
         carModelDTO.setPowerScale(zmCarModel.getPower());
+        carModelDTO.setVehicleSeatMax(zmCarModel.getVehicleSeatMax());
+        carModelDTO.setVehicleSeatMin(zmCarModel.getVehicleSeatMin());
         return carModelDTO;
     }
 

+ 109 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderFeeVo.java

@@ -0,0 +1,109 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author: CXP
+ * @Date: 2023/10/14 20:47
+ */
+@Data
+public class OrderFeeVo implements Serializable {
+
+
+    private static final long serialVersionUID = -4906378446672825846L;
+
+    /**
+     * 费用比例
+     */
+    @JsonProperty("costsProportion")
+    private String costsProportion;
+    /**
+     * 总费用
+     */
+    @JsonProperty("costsPremiums")
+    private String costsPremiums;
+
+    /**
+     * 一级机构管理费比例
+     */
+    @JsonProperty("firstDeptProportion")
+    private String firstDeptProportion;
+    /**
+     * 一级机构管理费
+     */
+    @JsonProperty("firstDeptPremiums")
+    private String firstDeptPremiums;
+    /**
+     * 二级机构管理费比例
+     */
+    @JsonProperty("secondDeptProportion")
+    private String secondDeptProportion;
+    /**
+     * 二级机构管理费
+     */
+    @JsonProperty("secondDeptPremiums")
+    private String secondDeptPremiums;
+    /**
+     * 三级机构管理费比例
+     */
+    @JsonProperty("thirdDeptProportion")
+    private String thirdDeptProportion;
+    /**
+     * 三级机构管理费
+     */
+    @JsonProperty("thirdDeptPremiums")
+    private String thirdDeptPremiums;
+    /**
+     * 四级机构管理费比例
+     */
+    @JsonProperty("forthDeptProportion")
+    private String forthDeptProportion;
+    /**
+     * 四级机构管理费
+     */
+    @JsonProperty("forthDeptPremiums")
+    private String forthDeptPremiums;
+    /**
+     * 五级机构管理费比例
+     */
+    @JsonProperty("fifthDeptProportion")
+    private String fifthDeptProportion;
+    /**
+     * 五级机构管理费
+     */
+    @JsonProperty("fifthDeptPremiums")
+    private String fifthDeptPremiums;
+    /**
+     * 一级分销比例
+     */
+    @JsonProperty("firstRetailProportion")
+    private String firstRetailProportion;
+    /**
+     * 一级分销费
+     */
+    @JsonProperty("firstRetailPremiums")
+    private String firstRetailPremiums;
+    /**
+     * 二级分销比例
+     */
+    @JsonProperty("secondRetailProportion")
+    private String secondRetailProportion;
+    /**
+     * 二级分销费
+     */
+    @JsonProperty("secondRetailPremiums")
+    private String secondRetailPremiums;
+    /**
+     * 三级分销比例
+     */
+    @JsonProperty("thirdRetailProportion")
+    private String thirdRetailProportion;
+    /**
+     * 三级分销费
+     */
+    @JsonProperty("thirdRetailPremiums")
+    private String thirdRetailPremiums;
+}

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderVo.java

@@ -12,6 +12,7 @@ import lombok.Data;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Data
 @TableName(autoResultMap = true)
@@ -331,4 +332,9 @@ public class OrderVo implements Serializable {
      */
     private Object ExtendInfo;
 
+    /**
+     * 费用信息
+     */
+    private List<QueryOrderFeeResultVo> orderFeeResult;
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/vo/QueryOrderFeeResultVo.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class QueryOrderFeeResultVo {
+    @ApiModelProperty("展示顺序-行数,页面使用该字段排序后展示")
+    private String descSerialNo;
+    @ApiModelProperty("费用类型名称")
+    private String feeTypeName;
+    @ApiModelProperty("交强费用比例")
+    private String jqFeeRate;
+    @ApiModelProperty("交强费用金额")
+    private String jqFeeAmount;
+    @ApiModelProperty("商业费用比例")
+    private String syFeeRate;
+    @ApiModelProperty("商业费用金额")
+    private String syFeeAmount;
+    @ApiModelProperty("非车费用比例")
+    private String fcFeeRate;
+    @ApiModelProperty("非车费用金额")
+    private String fcFeeAmount;
+}

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/vo/QueryOrderFeeVo.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.zm.BaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @Author: CXP
+ * @Date: 2023/10/14 20:18
+ */
+@Data
+public class QueryOrderFeeVo implements Serializable {
+
+    private static final long serialVersionUID = 5353382043575510168L;
+
+    @JsonProperty("jqCoderFeeVo")
+    private OrderFeeVo jqCoderFeeVo;
+    @JsonProperty("syCoderFeeVo")
+    private OrderFeeVo syCoderFeeVo;
+    @JsonProperty("fcCoderFeeVo")
+    private OrderFeeVo fcCoderFeeVo;
+
+
+}

+ 12 - 9
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -16,6 +16,7 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.fee.service.impl.FeeRuleSchemeServiceImpl;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.ins.model.ya.ExtendInfoDto;
@@ -28,10 +29,7 @@ import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.bo.UnderwritingRulesBo;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
-import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.modules.order.entity.vo.OrderQueryVo;
-import com.ydtech.modules.order.entity.vo.OrderVo;
-import com.ydtech.modules.order.entity.vo.VerifyOrdersVo;
+import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.entity.vo.ya.YaExtendInfoDto;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
@@ -45,10 +43,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import javax.validation.constraints.NotBlank;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -74,13 +69,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     private final PtlAgreementService ptlAgreementService;
 
-    public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService, SysDeptService sysDeptService, StringRedisTemplate redisTemplate, @Lazy InsAreaCompanyService insAreaCompanyService, PtlAgreementService ptlAgreementService) {
+    private final FeeRuleSchemeServiceImpl feeRuleSchemeService;
+
+    public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService, SysDeptService sysDeptService, StringRedisTemplate redisTemplate, @Lazy InsAreaCompanyService insAreaCompanyService, PtlAgreementService ptlAgreementService,@Lazy FeeRuleSchemeServiceImpl feeRuleSchemeService) {
         this.orderComponents = orderComponents;
         this.sysUserService = sysUserService;
         this.sysDeptService = sysDeptService;
         this.redisTemplate = redisTemplate;
         this.insAreaCompanyService = insAreaCompanyService;
         this.ptlAgreementService = ptlAgreementService;
+        this.feeRuleSchemeService=feeRuleSchemeService;
     }
 
     @Override
@@ -261,6 +259,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         orderAndAreaCompany.setReptxt(null);
 
+        //新增费用明细信息
+        List<QueryOrderFeeResultVo> orderFeeVoList= feeRuleSchemeService.queryFeeOrderInfo(companyId);
+        if(!orderFeeVoList.isEmpty()){
+            orderAndAreaCompany.setOrderFeeResult(orderFeeVoList);
+        }
         //add 解决返回null页面错误  lig 2023-09-14
         if (null == orderAndAreaCompany.getExtendInfo()) orderAndAreaCompany.setExtendInfo("");
         if (null == orderAndAreaCompany.getCrossInsurance())

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -176,7 +176,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
             }
         }
         //这里调用费用匹配功能
-        //feeRuleSchemeService.dealFeeOrderInfo(quoteInfo,quoteRespVo,ptlAgreementAttribution.getId(),quotedPriceResponse.getBusinessNo());
+        feeRuleSchemeService.dealFeeOrderInfo(quoteInfo,quoteRespVo,ptlAgreementAttribution.getId(),quotedPriceResponse.getBusinessNo());
         return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution);
     }
 

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -17,6 +17,7 @@ import com.ydtech.modules.order.components.zj.ZijinVehicleTypeErrorComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.zj.constants.enums.BusType;
 import com.ydtech.modules.order.entity.api.zj.constants.enums.OrderStatusEnum;
 import com.ydtech.modules.order.entity.api.zj.constants.enums.ResultEnum;
@@ -49,6 +50,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -443,6 +445,11 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         insAreaCompany.setInsOrderNo(orderId);
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         quoteRespVo.setCompanyId(orderNo);
+        // 车船税
+        CalculatePremiumResponse.CarShipTaxDTO carShipTax = calculatePremiumResponse.getCarShipTax();
+        TaxArrears taxArrears = new TaxArrears("往年欠税",  Double.parseDouble(carShipTax.getPreviousPay()), Double.parseDouble(carShipTax.getLateFee()));
+        List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
+        insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
 
         return HttpResult.ok("报价成功", quoteRespVo);
     }

+ 3 - 2
src/main/java/com/ydtech/modules/protocol/controller/PtlNonCarInsuranceProductController.java

@@ -5,6 +5,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
 import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductPageVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductQueryVo;
 import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductSaveVo;
 import com.ydtech.modules.protocol.service.PtlNonCarInsuranceProductService;
 import io.swagger.annotations.Api;
@@ -44,8 +45,8 @@ public class PtlNonCarInsuranceProductController {
 
     @GetMapping("/{productId}")
     @ApiOperation("通过非车险产品id查询所有信息")
-    public HttpResult<PtlNonCarInsuranceProduct> getByAgreementId(@PathVariable String productId) {
-        return HttpResult.ok(ptlNonCarInsuranceProductService.getByProductId(productId));
+    public HttpResult<PtlNonCarInsuranceProductQueryVo> getByAgreementId(@PathVariable String productId) {
+        return  ptlNonCarInsuranceProductService.getByProductId(productId);
     }
 
     @DeleteMapping("/{productId}")

+ 13 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductImgMapper.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.protocol.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductImg;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_non_car_product_img(非车产品图片表)】的数据库操作Mapper
+ * @createDate 2023-08-11 15:50:20
+ * @Entity generator.domain.PtlNonCarProductImg
+ */
+public interface PtlNonCarProductImgMapper extends BaseMapper<PtlNonCarProductImg> {
+}

+ 13 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductSchemeDetailMapper.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.protocol.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductSchemeDetail;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_non_car_product_scheme_detail(非车产品方案保障内容表)】的数据库操作Mapper
+ * @createDate 2023-08-11 15:50:20
+ * @Entity generator.domain.PtlNonCarProductSchemeDetail
+ */
+public interface PtlNonCarProductSchemeDetailMapper extends BaseMapper<PtlNonCarProductSchemeDetail> {
+}

+ 13 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductSchemeMapper.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.protocol.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductScheme;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_non_car_product_scheme(非车产品关联方案表)】的数据库操作Mapper
+ * @createDate 2023-08-11 15:50:20
+ * @Entity generator.domain.PtlNonCarProductScheme
+ */
+public interface PtlNonCarProductSchemeMapper  extends BaseMapper<PtlNonCarProductScheme>{
+}

+ 74 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarInsuranceProduct.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 非车产品
@@ -65,6 +68,77 @@ public class PtlNonCarInsuranceProduct implements Serializable {
     @TableField(value = "remark")
     private String remark;
 
+
+    /**
+     * 销售起期
+     */
+    @TableField(value = "valid_start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime validStartDate;
+
+    /**
+     * 销售止期
+     */
+    @TableField(value = "valid_end_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime validEndDate;
+
+    /**
+     * 投保须知
+     */
+    @TableField(value = "insurance_notice")
+    private String insuranceNotice;
+
+    /**
+     * 投保资料
+     */
+    @TableField(value = "insurance_information")
+    private String insuranceInformation;
+    /**
+     * 理赔指引
+     */
+    @TableField(value = "claims_guidelines")
+    private String claimsGuidelines;
+    /**
+     * 车辆大类
+     */
+    @TableField(value = "carkind")
+    private String carKind;
+    /**
+     * 使用性质
+     */
+    @TableField(value = "usenature")
+    private String useNature;
+    /**
+     * 座位数起始
+     */
+    @TableField(value = "min_seat_num")
+    private String minSeatNum;
+    /**
+     * 座位数终止
+     */
+    @TableField(value = "max_seat_num")
+    private String maxSeatNum;
+    /**
+     * 被保人年龄起始
+     */
+    @TableField(value = "min_insured_age")
+    private String minInsuredAge;
+    /**
+     * 被保人年龄终止
+     */
+    @TableField(value = "max_insured_age")
+    private String maxInsuredAge;
+
+    /**
+     * 保存日期
+     */
+    @TableField(value = "save_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date saveDate;
+
+
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 48 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductImg.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.protocol.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 非车产品图片表
+ *
+ * @TableName ptl_non_car_product_img
+ */
+@Data
+@TableName(value = "ptl_non_car_product_img")
+public class PtlNonCarProductImg implements Serializable {
+
+    /**
+     * 无意义主键
+     */
+    @TableId(value = "id")
+    private String id;
+
+    /**
+     * 产品代码
+     */
+    @TableField(value = "product_code")
+    private String productCode;
+
+    /**
+     * 图片序号
+     */
+    @TableField(value = "serial_no")
+    private String serialNo;
+
+    /**
+     * 产品图片
+     */
+    @TableField(value = "product_image")
+    private String productImage;
+
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 61 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductScheme.java

@@ -0,0 +1,61 @@
+package com.ydtech.modules.protocol.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 非车产品关联方案表
+ *
+ * @TableName ptl_non_car_product_scheme
+ */
+@Data
+@TableName(value = "ptl_non_car_product_scheme")
+public class PtlNonCarProductScheme implements Serializable{
+
+    /**
+     * 无意义主键
+     */
+    @TableId(value = "id")
+    private String id;
+
+    /**
+     * 产品代码
+     */
+    @TableField(value = "product_code")
+    private String productCode;
+
+    /**
+     * 方案编号
+     */
+    @TableField(value = "scheme_no")
+    private String schemeNo;
+
+    /**
+     * 方案名称
+     */
+    @TableField(value = "scheme_name")
+    private String schemeName;
+
+    /**
+     * 单位保费
+     */
+    @TableField(value = "unit_premium")
+    private String unitPremium;
+
+    /**
+     * 最大投保份数
+     */
+    @TableField(value = "insured_num_limit")
+    private String insuredNumLimit;
+
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 66 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductSchemeDetail.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.protocol.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 非车产品方案保障内容表
+ *
+ * @TableName ptl_non_car_product_scheme_detail
+ */
+@Data
+@TableName(value = "ptl_non_car_product_scheme_detail")
+public class PtlNonCarProductSchemeDetail  implements Serializable{
+
+    /**
+     * 无意义主键
+     */
+    @TableId(value = "id")
+    private String id;
+
+    /**
+     * 产品代码
+     */
+    @TableField(value = "product_code")
+    private String productCode;
+
+    /**
+     * 方案编号
+     */
+    @TableField(value = "scheme_no")
+    private String schemeNo;
+
+    /**
+     * 保障内容序号
+     */
+    @TableField(value = "serial_no")
+    private String serialNo;
+
+    /**
+     * 保障内容
+     */
+    @TableField(value = "guarantee_content")
+    private String guaranteeContent;
+
+    /**
+     * 单位保额
+     */
+    @TableField(value = "unit_amount")
+    private String unitAmount;
+
+    /**
+     * 计数单位   1份数  2座位数
+     */
+    @TableField(value = "count_type")
+    private String countType;
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductPageVo.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.protocol.entity.vo;
 
 import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -10,4 +11,20 @@ public class PtlNonCarInsuranceProductPageVo extends BasePageVO {
 
     private static final long serialVersionUID = 3554127776347994742L;
 
+    @ApiModelProperty(value = "产品编码")
+    private String productCode;
+    @ApiModelProperty(value = "产品名称")
+    private String productName;
+    @ApiModelProperty(value = "产品险类")
+    private String insuranceCode;
+    @ApiModelProperty(value = "保险公司")
+    private String companyId;
+    @ApiModelProperty(value = "产品状态")
+    private String isEffective;
+
+    @ApiModelProperty(value = "销售起期")
+    private String validStartDate;
+    @ApiModelProperty(value = "销售止期")
+    private String validEndDate;
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductQueryVo.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.protocol.entity.vo;
+
+import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductImg;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductScheme;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PtlNonCarInsuranceProductQueryVo {
+
+    @ApiModelProperty("非车产品信息")
+    private PtlNonCarInsuranceProduct ptlNonCarInsuranceProduct;
+
+    @ApiModelProperty("非车产品图片")
+    private List<PtlNonCarProductImg> productImgs;
+
+    @ApiModelProperty("非车方案配置信息")
+    private List<PtlNonCarProductSchemeVo> schemeInfo;
+
+
+}

+ 50 - 1
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductSaveVo.java

@@ -1,9 +1,12 @@
 package com.ydtech.modules.protocol.entity.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
 
 
 /**
@@ -15,6 +18,10 @@ import java.io.Serializable;
 public class PtlNonCarInsuranceProductSaveVo implements Serializable {
 
     private static final long serialVersionUID = -8486743099182982780L;
+    @ApiModelProperty("无意义主键")
+    private String id;
+    @ApiModelProperty("产品代码")
+    private String productCode;
 
     @ApiModelProperty("产品名称")
     private String productName;
@@ -22,7 +29,7 @@ public class PtlNonCarInsuranceProductSaveVo implements Serializable {
     @ApiModelProperty("归属保司")
     private String companyId;
 
-    @ApiModelProperty("是否有效(0有效 1 无效)")
+    @ApiModelProperty("是否有效(1有效 0 无效)")
     private String isEffective;
 
     @ApiModelProperty("归属险类")
@@ -34,4 +41,46 @@ public class PtlNonCarInsuranceProductSaveVo implements Serializable {
     @ApiModelProperty("备注")
     private String remark;
 
+    @ApiModelProperty("销售起期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime validStartDate;
+
+    @ApiModelProperty("销售止期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime validEndDate;
+
+    @ApiModelProperty("投保须知")
+    private String insuranceNotice;
+
+    @ApiModelProperty("投保资料")
+    private String insuranceInformation;
+
+    @ApiModelProperty("理赔指引")
+    private String claimsGuidelines;
+
+    @ApiModelProperty("车辆大类")
+    private String carKind;
+
+    @ApiModelProperty("使用性质")
+    private String useNature;
+
+    @ApiModelProperty("座位数起始")
+    private String minSeatNum;
+
+    @ApiModelProperty("座位数终止")
+    private String maxSeatNum;
+
+    @ApiModelProperty("被保人年龄起始")
+    private String minInsuredAge;
+
+    @ApiModelProperty("被保人年龄终止")
+    private String maxInsuredAge;
+
+    @ApiModelProperty("产品图片")
+    private List<String> productImage;
+
+    @ApiModelProperty("方案配置信息")
+    private List<PtlNonCarProductSchemeVo> schemeInfo;
+
+
 }

+ 27 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarProductSchemeDetailVo.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.protocol.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class PtlNonCarProductSchemeDetailVo {
+
+    /**
+     * 保障内容序号
+     */
+    private String serialNo;
+
+    /**
+     * 保障内容
+     */
+    private String guaranteeContent;
+
+    /**
+     * 单位保额
+     */
+    private String unitAmount;
+
+    /**
+     * 计数单位   1份数  2座位数
+     */
+    private String countType;
+}

+ 39 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarProductSchemeVo.java

@@ -0,0 +1,39 @@
+package com.ydtech.modules.protocol.entity.vo;
+
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductSchemeDetail;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PtlNonCarProductSchemeVo {
+    /**
+     * 产品代码
+     */
+    private String productCode;
+
+    /**
+     * 方案编号
+     */
+    private String schemeNo;
+
+    /**
+     * 方案名称
+     */
+    private String schemeName;
+
+    /**
+     * 单位保费
+     */
+    private String unitPremium;
+
+    /**
+     * 最大投保份数
+     */
+    private String insuredNumLimit;
+
+    /**
+     * 保障明细
+     */
+    private List<PtlNonCarProductSchemeDetailVo> specialInfo;
+}

+ 3 - 6
src/main/java/com/ydtech/modules/protocol/service/PtlNonCarInsuranceProductService.java

@@ -5,6 +5,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
 import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductPageVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductQueryVo;
 import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductSaveVo;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 
@@ -38,13 +39,9 @@ public interface PtlNonCarInsuranceProductService extends IService<PtlNonCarInsu
      * 通过非车险产品id查询所有信息
      *
      * @param productId 非车产品id
-     * @return PtlNonCarInsuranceProduct
+     * @return PtlNonCarInsuranceProductQueryVo
      */
-    default PtlNonCarInsuranceProduct getByProductId(String productId) {
-        PtlNonCarInsuranceProduct nonCarInsuranceProduct = getById(productId);
-        AssertionUtils.isEmpty(nonCarInsuranceProduct, "没有此非车产品");
-        return nonCarInsuranceProduct;
-    }
+    HttpResult<PtlNonCarInsuranceProductQueryVo> getByProductId(String productId);
 
     /**
      * 删除非车险产品

+ 26 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductImgService.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductImg;
+
+import java.util.List;
+
+/**
+ * @description 针对表【ptl_non_car_product_img(非车产品图片表)】的数据库操作Service
+ */
+public interface PtlNonCarProductImgService extends IService<PtlNonCarProductImg> {
+
+    /**
+     * 通过 产品编码批量添加产品图片
+     *
+     * @param productId 产品编码
+     */
+    void saveBatchImg(String productId, List<PtlNonCarProductImg> productImgs);
+
+    /**
+     * 通过产品编码,查询所有图片
+     * @param productCode
+     * @return
+     */
+    public List<PtlNonCarProductImg> findAllProductImgs(String productCode);
+}

+ 17 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductSchemeDetailService.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductSchemeDetail;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeDetailVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeVo;
+
+import java.util.List;
+
+/**
+ * @description 针对表【ptl_non_car_product_scheme_detail(非车产品方案保障内容表)】的数据库操作Service
+ */
+public interface PtlNonCarProductSchemeDetailService extends IService<PtlNonCarProductSchemeDetail> {
+    void saveBatchSpecialInfo(String productCode, PtlNonCarProductSchemeVo tempVo);
+
+    List<PtlNonCarProductSchemeDetailVo> findAllSpecialInfo(String productCode, String schemeNo);
+}

+ 17 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductSchemeService.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductScheme;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeVo;
+
+import java.util.List;
+
+/**
+ * @description 针对表【ptl_non_car_product_scheme(非车产品关联方案表)】的数据库操作Service
+ */
+public interface PtlNonCarProductSchemeService extends IService<PtlNonCarProductScheme> {
+
+    void saveBatchSchemeInfo(String productCode, List<PtlNonCarProductSchemeVo> schemeInfo);
+
+    List<PtlNonCarProductSchemeVo> findAllProductSchemeInfo(String productCode);
+}

+ 68 - 5
src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarInsuranceProductServiceImpl.java

@@ -9,15 +9,26 @@ import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.protocol.dao.PtlNonCarInsuranceProductMapper;
 import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductImg;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductScheme;
 import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductPageVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductQueryVo;
 import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductSaveVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeVo;
 import com.ydtech.modules.protocol.service.PtlNonCarInsuranceProductService;
+import com.ydtech.modules.protocol.service.PtlNonCarProductImgService;
+import com.ydtech.modules.protocol.service.PtlNonCarProductSchemeService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
+import com.ydtech.utils.StringUtils;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -30,9 +41,13 @@ public class PtlNonCarInsuranceProductServiceImpl extends ServiceImpl<PtlNonCarI
         implements PtlNonCarInsuranceProductService {
 
     private final EsmInsCompanyService esmInsCompanyService;
+    private final PtlNonCarProductImgService ptlNonCarProductImgService;
+    private final PtlNonCarProductSchemeService ptlNonCarProductSchemeService;
 
-    public PtlNonCarInsuranceProductServiceImpl(EsmInsCompanyService esmInsCompanyService) {
+    public PtlNonCarInsuranceProductServiceImpl(EsmInsCompanyService esmInsCompanyService,PtlNonCarProductImgService ptlNonCarProductImgService,PtlNonCarProductSchemeService ptlNonCarProductSchemeService) {
         this.esmInsCompanyService = esmInsCompanyService;
+        this.ptlNonCarProductImgService = ptlNonCarProductImgService;
+        this.ptlNonCarProductSchemeService=ptlNonCarProductSchemeService;
     }
 
     @Override
@@ -43,6 +58,12 @@ public class PtlNonCarInsuranceProductServiceImpl extends ServiceImpl<PtlNonCarI
 
         // 获取最新的流水单号
         LambdaQueryWrapper<PtlNonCarInsuranceProduct> wrapper = new LambdaQueryWrapper<>();
+
+        String code = esmInsCompany.getCode();
+        String insuranceCode = nonCarInsuranceProduct.getInsuranceCode();
+        String keyTemp=code+insuranceCode;
+        //按照保司+险类做前缀查询最大次数
+        wrapper.like(PtlNonCarInsuranceProduct::getProductCode,keyTemp);
         wrapper.orderByDesc(PtlNonCarInsuranceProduct::getId).last("limit 1");
         PtlNonCarInsuranceProduct entity = getOne(wrapper);
 
@@ -56,21 +77,39 @@ public class PtlNonCarInsuranceProductServiceImpl extends ServiceImpl<PtlNonCarI
         }
 
         // 产品代码 保司代码+险类代码+三位流水号,系统根据规则默认带出
-        String code = esmInsCompany.getCode();
-        String insuranceCode = nonCarInsuranceProduct.getInsuranceCode();
         String productCode = code + insuranceCode + serialNumber;
 
         ptlNonCarInsuranceProduct.setProductCode(productCode);
+        ptlNonCarInsuranceProduct.setSaveDate(new Date());
         boolean b = save(ptlNonCarInsuranceProduct);
         AssertionUtils.isSucceed(b, "保存失败");
         return HttpResult.ok("保存成功");
     }
 
     @Override
+    @Transactional
     public HttpResult<Object> reviseNonCarInsuranceProduct(String productId, PtlNonCarInsuranceProductSaveVo nonCarInsuranceProduct) {
-        PtlNonCarInsuranceProduct nonCar = getByProductId(productId);
+        PtlNonCarInsuranceProduct nonCar = getById(productId);
         BeanUtils.copyProperties(nonCarInsuranceProduct, nonCar);
+        nonCar.setSaveDate(new Date());
         boolean b = updateById(nonCar);
+        //修改插入非车产品图片表
+        List<String> imgUrlList= nonCarInsuranceProduct.getProductImage();
+        List<PtlNonCarProductImg> imgList=new ArrayList<>();
+        if(imgUrlList!=null){
+            for(int i=0;i<imgUrlList.size();i++){
+                PtlNonCarProductImg tempImgDto=new PtlNonCarProductImg();
+                tempImgDto.setProductCode(nonCarInsuranceProduct.getProductCode());
+                tempImgDto.setSerialNo(String.valueOf(i));
+                tempImgDto.setProductImage(imgUrlList.get(i));
+                imgList.add(tempImgDto);
+            }
+            ptlNonCarProductImgService.saveBatchImg(nonCarInsuranceProduct.getProductCode(),imgList);;
+        }
+        //方案配置信息进行存储
+        if(nonCarInsuranceProduct.getSchemeInfo()!=null){
+            ptlNonCarProductSchemeService.saveBatchSchemeInfo(nonCarInsuranceProduct.getProductCode(),nonCarInsuranceProduct.getSchemeInfo());
+        }
         AssertionUtils.isSucceed(b, "修改失败");
         return HttpResult.ok("修改成功");
     }
@@ -87,7 +126,15 @@ public class PtlNonCarInsuranceProductServiceImpl extends ServiceImpl<PtlNonCarI
         Integer pageNum = ptlNonCarInsuranceProductPageVo.getPageNum();
         Integer pageSize = ptlNonCarInsuranceProductPageVo.getPageSize();
         Page<PtlNonCarInsuranceProduct> ptlAgreementPage = new Page<>(pageNum, pageSize);
-        Page<PtlNonCarInsuranceProduct> agreementPage = page(ptlAgreementPage);
+        LambdaQueryWrapper<PtlNonCarInsuranceProduct> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getProductCode()),PtlNonCarInsuranceProduct::getProductCode,ptlNonCarInsuranceProductPageVo.getProductCode());
+        wrapper.like(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getProductName()),PtlNonCarInsuranceProduct::getProductName,ptlNonCarInsuranceProductPageVo.getProductName());
+        wrapper.eq(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getInsuranceCode()),PtlNonCarInsuranceProduct::getInsuranceCode,ptlNonCarInsuranceProductPageVo.getInsuranceCode());
+        wrapper.eq(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getCompanyId()),PtlNonCarInsuranceProduct::getCompanyId,ptlNonCarInsuranceProductPageVo.getCompanyId());
+        wrapper.eq(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getIsEffective()),PtlNonCarInsuranceProduct::getIsEffective,ptlNonCarInsuranceProductPageVo.getIsEffective());
+        wrapper.ge(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getValidStartDate()),PtlNonCarInsuranceProduct::getValidStartDate,ptlNonCarInsuranceProductPageVo.getValidStartDate()); //表中起期大于等于录入条件中起期
+        wrapper.le(StringUtils.isNotEmpty(ptlNonCarInsuranceProductPageVo.getValidEndDate()),PtlNonCarInsuranceProduct::getValidEndDate,ptlNonCarInsuranceProductPageVo.getValidEndDate()); //表中止期小于等于录入条件中止期
+        Page<PtlNonCarInsuranceProduct> agreementPage = page(ptlAgreementPage,wrapper);
         PageResult<PtlNonCarInsuranceProduct> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, (int) agreementPage.getTotal(), agreementPage.getRecords());
         return HttpResult.ok(ptlAgreementPageResult);
     }
@@ -104,4 +151,20 @@ public class PtlNonCarInsuranceProductServiceImpl extends ServiceImpl<PtlNonCarI
         return HttpResult.ok(Collections.emptyList());
     }
 
+    @Override
+    public HttpResult<PtlNonCarInsuranceProductQueryVo> getByProductId(String productId) {
+        PtlNonCarInsuranceProductQueryVo resultVo=new PtlNonCarInsuranceProductQueryVo();
+        //获取产品主表
+        PtlNonCarInsuranceProduct nonCarInsuranceProduct = getById(productId);
+        resultVo.setPtlNonCarInsuranceProduct(nonCarInsuranceProduct);
+        //获取产品图片表
+        List<PtlNonCarProductImg> productImgs=ptlNonCarProductImgService.findAllProductImgs(nonCarInsuranceProduct.getProductCode());
+        resultVo.setProductImgs(productImgs);
+        //获取方案配置信息
+        List<PtlNonCarProductSchemeVo> schemesList=ptlNonCarProductSchemeService.findAllProductSchemeInfo(nonCarInsuranceProduct.getProductCode());
+        resultVo.setSchemeInfo(schemesList);
+        AssertionUtils.isEmpty(nonCarInsuranceProduct, "没有此非车产品");
+        return HttpResult.ok(resultVo);
+    }
+
 }

+ 41 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductImgServiceImpl.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.protocol.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.dao.PtlNonCarProductImgMapper;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementDept;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductImg;
+import com.ydtech.modules.protocol.service.PtlNonCarProductImgService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @description 针对表【ptl_non_car_product_img(非车产品图片表)】的数据库操作Service实现
+ */
+@Service
+public class PtlNonCarProductImgServiceImpl extends ServiceImpl<PtlNonCarProductImgMapper, PtlNonCarProductImg>
+        implements PtlNonCarProductImgService {
+
+    @Override
+    public   void saveBatchImg(String productId, List<PtlNonCarProductImg> productImgs) {
+        //先删
+        LambdaUpdateWrapper<PtlNonCarProductImg> luw = new LambdaUpdateWrapper<>();
+        luw.eq(PtlNonCarProductImg::getProductCode, productId);
+        remove(luw);
+        //再插入
+        saveBatch(productImgs);
+    }
+    @Override
+    public List<PtlNonCarProductImg> findAllProductImgs(String productCode){
+        LambdaQueryWrapper<PtlNonCarProductImg> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlNonCarProductImg::getProductCode, productCode);
+        return list(wrapper);
+    }
+}
+
+
+
+

+ 66 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductSchemeDetailServiceImpl.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.protocol.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.dao.PtlNonCarProductSchemeDetailMapper;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductScheme;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductSchemeDetail;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeDetailVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeVo;
+import com.ydtech.modules.protocol.service.PtlNonCarProductSchemeDetailService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @description 针对表【ptl_non_car_product_scheme_detail(非车产品方案保障内容表)】的数据库操作Service实现
+ */
+@Service
+public class PtlNonCarProductSchemeDetailServiceImpl extends ServiceImpl<PtlNonCarProductSchemeDetailMapper, PtlNonCarProductSchemeDetail>
+        implements PtlNonCarProductSchemeDetailService {
+
+    public void saveBatchSpecialInfo(String productCode, PtlNonCarProductSchemeVo schemeVo){
+        //按产品编码删掉所有方案
+        LambdaUpdateWrapper<PtlNonCarProductSchemeDetail> luw = new LambdaUpdateWrapper<>();
+        luw.eq(PtlNonCarProductSchemeDetail::getProductCode, productCode);
+        luw.eq(PtlNonCarProductSchemeDetail::getSchemeNo,schemeVo.getSchemeNo());
+        remove(luw);
+        //再插入传过来所有方案
+        List<PtlNonCarProductSchemeDetail> finalList=new ArrayList<>();
+        for(int i=0;i<schemeVo.getSpecialInfo().size();i++){
+            PtlNonCarProductSchemeDetailVo tempVo=schemeVo.getSpecialInfo().get(i);
+            PtlNonCarProductSchemeDetail tempPo=new PtlNonCarProductSchemeDetail();
+            tempPo.setProductCode(productCode);
+            tempPo.setSchemeNo(schemeVo.getSchemeNo());
+            tempPo.setSerialNo(tempVo.getSerialNo());
+            tempPo.setGuaranteeContent(tempVo.getGuaranteeContent());
+            tempPo.setUnitAmount(tempVo.getUnitAmount());
+            tempPo.setCountType(tempVo.getCountType());
+            finalList.add(tempPo);
+        }
+        saveBatch(finalList);
+    }
+
+
+    public  List<PtlNonCarProductSchemeDetailVo> findAllSpecialInfo(String productCode, String schemeNo){
+        LambdaQueryWrapper<PtlNonCarProductSchemeDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlNonCarProductSchemeDetail::getProductCode, productCode);
+        wrapper.eq(PtlNonCarProductSchemeDetail::getSchemeNo,schemeNo);
+        List<PtlNonCarProductSchemeDetail> schemeDetails=list(wrapper);
+
+        List<PtlNonCarProductSchemeDetailVo> resultList=new ArrayList<>();
+        if(!schemeDetails.isEmpty()){
+            for(int i=0;i<schemeDetails.size();i++){
+                PtlNonCarProductSchemeDetail tempPo=schemeDetails.get(i);
+                PtlNonCarProductSchemeDetailVo tempVo=new PtlNonCarProductSchemeDetailVo();
+                BeanUtils.copyProperties(tempPo, tempVo);
+                resultList.add(tempVo);
+            }
+        }
+        return resultList;
+    }
+}

+ 80 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductSchemeServiceImpl.java

@@ -0,0 +1,80 @@
+package com.ydtech.modules.protocol.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.dao.PtlNonCarProductSchemeMapper;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductImg;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductScheme;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarProductSchemeDetail;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeDetailVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarProductSchemeVo;
+import com.ydtech.modules.protocol.service.PtlNonCarProductSchemeDetailService;
+import com.ydtech.modules.protocol.service.PtlNonCarProductSchemeService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description 【ptl_non_car_product_scheme(非车产品关联方案表)】的数据库操作Service实现
+ */
+@Service
+public class PtlNonCarProductSchemeServiceImpl extends ServiceImpl<PtlNonCarProductSchemeMapper, PtlNonCarProductScheme>
+        implements PtlNonCarProductSchemeService {
+
+    private final PtlNonCarProductSchemeDetailService ptlNonCarProductSchemeDetailService;
+
+    public PtlNonCarProductSchemeServiceImpl(PtlNonCarProductSchemeDetailService ptlNonCarProductSchemeDetailService) {
+        this.ptlNonCarProductSchemeDetailService = ptlNonCarProductSchemeDetailService;
+    }
+
+
+    /**
+     * 根据产品代码,存储所有配置的方案信息
+     * @param productCode
+     * @param schemeInfo
+     */
+    public void saveBatchSchemeInfo(String productCode, List<PtlNonCarProductSchemeVo> schemeInfo){
+
+        //按产品编码删掉所有方案
+        LambdaUpdateWrapper<PtlNonCarProductScheme> luw = new LambdaUpdateWrapper<>();
+        luw.eq(PtlNonCarProductScheme::getProductCode, productCode);
+        remove(luw);
+        //再插入传过来所有方案
+        List<PtlNonCarProductScheme> finalList=new ArrayList<>();
+        for(int i=0;i<schemeInfo.size();i++){
+            PtlNonCarProductSchemeVo tempVo=schemeInfo.get(i);
+            //先循环处理方案中所有保障内容信息
+            ptlNonCarProductSchemeDetailService.saveBatchSpecialInfo(productCode,tempVo);
+            PtlNonCarProductScheme tempPo=new PtlNonCarProductScheme();
+            tempPo.setProductCode(productCode);
+            tempPo.setSchemeNo(tempVo.getSchemeNo());
+            tempPo.setSchemeName(tempVo.getSchemeName());
+            tempPo.setUnitPremium(tempVo.getUnitPremium());
+            tempPo.setInsuredNumLimit(tempVo.getInsuredNumLimit());
+            finalList.add(tempPo);
+        }
+        saveBatch(finalList);
+    }
+
+
+    public  List<PtlNonCarProductSchemeVo> findAllProductSchemeInfo(String productCode){
+        LambdaQueryWrapper<PtlNonCarProductScheme> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlNonCarProductScheme::getProductCode, productCode);
+        List<PtlNonCarProductScheme> schemeList=list(wrapper);
+        List<PtlNonCarProductSchemeVo> resultList=new ArrayList<>();
+        if(!schemeList.isEmpty()){
+            for(int i=0;i<schemeList.size();i++){
+                PtlNonCarProductScheme tempPo=schemeList.get(i);
+                PtlNonCarProductSchemeVo tempVo=new PtlNonCarProductSchemeVo();
+                BeanUtils.copyProperties(tempPo, tempVo);
+                List<PtlNonCarProductSchemeDetailVo> schemeDetialList  =ptlNonCarProductSchemeDetailService.findAllSpecialInfo(productCode,tempPo.getSchemeNo());
+                tempVo.setSpecialInfo(schemeDetialList);
+                resultList.add(tempVo);
+            }
+        }
+        return resultList;
+    }
+}

+ 12 - 0
src/main/resources/mapper/modules/protocol/PtlNonCarInsuranceProductMapper.xml

@@ -13,6 +13,18 @@
             <result property="insuranceCode" column="insurance_code" jdbcType="VARCHAR"/>
             <result property="nonCarInsuranceCode" column="non_car_insurance_code" jdbcType="VARCHAR"/>
             <result property="remark" column="remark" jdbcType="VARCHAR"/>
+            <result property="validStartDate" column="valid_start_date" jdbcType="TIMESTAMP"/>
+            <result property="validEndDate" column="valid_end_date" jdbcType="TIMESTAMP"/>
+            <result property="insuranceNotice" column="insurance_notice" jdbcType="VARCHAR"/>
+            <result property="insuranceInformation" column="insurance_information" jdbcType="VARCHAR"/>
+            <result property="claimsGuidelines" column="claims_guidelines" jdbcType="VARCHAR"/>
+            <result property="carKind" column="carkind" jdbcType="VARCHAR"/>
+            <result property="useNature" column="usenature" jdbcType="VARCHAR"/>
+            <result property="minSeatNum" column="min_seat_num" jdbcType="VARCHAR"/>
+            <result property="maxSeatNum" column="max_seat_num" jdbcType="VARCHAR"/>
+            <result property="minInsuredAge" column="min_insured_age" jdbcType="VARCHAR"/>
+            <result property="maxInsuredAge" column="max_insured_age" jdbcType="VARCHAR"/>
+            <result property="saveDate" column="save_date" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <sql id="Base_Column_List">