Explorar el Código

手动新增驾意险

Qchen hace 1 año
padre
commit
4d405e18c1
Se han modificado 17 ficheros con 391 adiciones y 53 borrados
  1. 3 0
      src/main/java/com/ydtech/modules/order/dao/InsDrivingIntentionInsuranceMapper.java
  2. 3 1
      src/main/java/com/ydtech/modules/order/entity/InsDrivingIntentionInsurance.java
  3. 3 0
      src/main/java/com/ydtech/modules/order/entity/InsDrivingIntentionInsuranceSon.java
  4. 13 0
      src/main/java/com/ydtech/modules/order/entity/vo/InsDrivingIntentionInsuranceSonVo.java
  5. 9 0
      src/main/java/com/ydtech/modules/order/entity/vo/InsDrivingIntentionInsuranceVo.java
  6. 3 5
      src/main/java/com/ydtech/modules/order/service/InsBusinessInsuranceService.java
  7. 18 0
      src/main/java/com/ydtech/modules/order/service/InsDrivingIntentionInsuranceService.java
  8. 7 0
      src/main/java/com/ydtech/modules/order/service/InsDrivingIntentionInsuranceSonService.java
  9. 33 21
      src/main/java/com/ydtech/modules/order/service/impl/InsBusinessInsuranceServiceImpl.java
  10. 141 0
      src/main/java/com/ydtech/modules/order/service/impl/InsDrivingIntentionInsuranceServiceImpl.java
  11. 11 0
      src/main/java/com/ydtech/modules/order/service/impl/InsDrivingIntentionInsuranceSonServiceImpl.java
  12. 2 1
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  13. 47 16
      src/main/java/com/ydtech/modules/scheme/controller/PtlSchemeController.java
  14. 10 2
      src/main/java/com/ydtech/modules/scheme/entity/vo/DrivingIntentionQueryVo.java
  15. 31 0
      src/main/java/com/ydtech/modules/scheme/entity/vo/InsDrivingIntentionInsuranceInfoVo.java
  16. 51 7
      src/main/resources/mapper/modules/order/InsDrivingIntentionInsuranceMapper.xml
  17. 6 0
      src/main/resources/mapper/modules/order/InsDrivingIntentionInsuranceSonMapper.xml

+ 3 - 0
src/main/java/com/ydtech/modules/order/dao/InsDrivingIntentionInsuranceMapper.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceType;
 import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
@@ -21,6 +22,8 @@ public interface InsDrivingIntentionInsuranceMapper extends BaseMapper<InsDrivin
      */
     List<InsDrivingIntentionInsurance> getInsDrivingIntentionInsuranceList(@Param("param") DrivingIntentionQueryVo drivingIntentionQueryVo);
 
+    Page<InsDrivingIntentionInsurance> getInsDrivingIntentionInsuranceListPage(Page page, @Param("param") DrivingIntentionQueryVo drivingIntentionQueryVo);
+
     List<InsDrivingIntentionInsurance> getOptionalSchemeDrivingList(@Param("schemeId") String schemeId,@Param("seatNum") String seatNum);
 
 

+ 3 - 1
src/main/java/com/ydtech/modules/order/entity/InsDrivingIntentionInsurance.java

@@ -4,7 +4,6 @@ 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.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceSonVo;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -54,6 +53,9 @@ public class InsDrivingIntentionInsurance implements Serializable {
     @TableField(value = "company_id")
     private String companyId;
 
+    @TableField(exist = false)
+    private String companyName;
+
     /**
      * 产品名称
      */

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/InsDrivingIntentionInsuranceSon.java

@@ -23,6 +23,9 @@ public class InsDrivingIntentionInsuranceSon implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    @TableField(exist = false)
+    private Integer sonId;
+
 
     /**
      * 父id

+ 13 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsDrivingIntentionInsuranceSonVo.java

@@ -1,15 +1,28 @@
 package com.ydtech.modules.order.entity.vo;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 @Data
 public class InsDrivingIntentionInsuranceSonVo {
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
     /**
      * 父id
      */
     @TableField(value = "driving_code_id")
     private String drivingCodeId;
+    /**
+     * 保险公司ID
+     */
+    @TableField(value = "company_id")
+    private String companyId;
+
 
     /**
      * 产品名称

+ 9 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsDrivingIntentionInsuranceVo.java

@@ -42,6 +42,15 @@ public class InsDrivingIntentionInsuranceVo {
     @ApiModelProperty(value = "产品code")
     private String projectCode;
 
+    @ApiModelProperty(value = "公司Id")
+    private String companyId;
+
+    @ApiModelProperty(value = "分类类型")
+    private String type;
+
+    @ApiModelProperty(value = "api类型")
+    private String apiType;
+
     @ApiModelProperty(value = "附加code")
     private String riskCode;
 

+ 3 - 5
src/main/java/com/ydtech/modules/order/service/InsBusinessInsuranceService.java

@@ -3,13 +3,9 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.order.entity.InsBusinessInsurance;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
-import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
-import com.ydtech.modules.order.entity.vo.NoCarInsuranceQueryVo;
-import com.ydtech.modules.scheme.entity.vo.DrivingIntentionQueryVo;
+import com.ydtech.modules.scheme.entity.vo.InsDrivingIntentionInsuranceInfoVo;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 针对表【ins_driving_intention_insurance(驾意险)】的数据库操作Service
@@ -21,4 +17,6 @@ public interface InsBusinessInsuranceService extends IService<InsBusinessInsuran
      * @return
      */
     List<InsBusinessInsurance> getBusinessInsurance();
+
+    List<InsDrivingIntentionInsurance> getDrivingInfo(InsDrivingIntentionInsuranceInfoVo insuranceInfoVo);
 }

+ 18 - 0
src/main/java/com/ydtech/modules/order/service/InsDrivingIntentionInsuranceService.java

@@ -1,9 +1,12 @@
 package com.ydtech.modules.order.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceType;
+import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceSonVo;
 import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
 import com.ydtech.modules.order.entity.vo.NoCarInsuranceQueryVo;
 import com.ydtech.modules.scheme.entity.vo.DrivingIntentionQueryVo;
@@ -76,4 +79,19 @@ public interface InsDrivingIntentionInsuranceService extends IService<InsDriving
     List<InsDrivingIntentionInsuranceType> getSchemeDrivingIntentionInsuranceType(String companyId);
 
     List<InsDrivingIntentionInsurance> getOptionalSchemeDrivingList(String schemeId,String seatNum);
+
+    // 新增驾意险
+    HttpResult add(InsDrivingIntentionInsuranceVo insDrivingIntentionInsuranceVo);
+
+    HttpResult update(InsDrivingIntentionInsurance insDrivingIntentionInsurance);
+
+    HttpResult delete(InsDrivingIntentionInsurance insDrivingIntentionInsurance);
+
+    HttpResult addSon(InsDrivingIntentionInsuranceSonVo insDrivingIntentionInsuranceSonVo);
+
+    HttpResult updateSon(InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon);
+
+    HttpResult deleteSon(InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon);
+
+    Page<InsDrivingIntentionInsurance> getSchemeDrivingIntentionInsuranceList(Page page,DrivingIntentionQueryVo drivingIntentionQueryVo);
 }

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

@@ -0,0 +1,7 @@
+package com.ydtech.modules.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
+
+public interface InsDrivingIntentionInsuranceSonService extends IService<InsDrivingIntentionInsuranceSon> {
+}

+ 33 - 21
src/main/java/com/ydtech/modules/order/service/impl/InsBusinessInsuranceServiceImpl.java

@@ -1,35 +1,16 @@
 package com.ydtech.modules.order.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ydtech.constants.enums.InsuranceRisk;
-import com.ydtech.constants.enums.dict.agreement.ProductsType;
-import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.dao.InsBusinessInsuranceMapper;
-import com.ydtech.modules.order.dao.InsDrivingIntentionInsuranceMapper;
-import com.ydtech.modules.order.dao.InsDrivingIntentionInsuranceSonMapper;
-import com.ydtech.modules.order.entity.InsBusinessInsurance;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
-import com.ydtech.modules.order.entity.PtlAgreementNonCarProductRule;
-import com.ydtech.modules.order.entity.api.pingan.request.ProductDetailsRequest;
-import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
-import com.ydtech.modules.order.entity.vo.NoCarInsuranceQueryVo;
+import com.ydtech.modules.order.entity.*;
 import com.ydtech.modules.order.service.*;
-import com.ydtech.modules.protocol.entity.po.PtlAgreement;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
-import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
-import com.ydtech.modules.protocol.service.PtlAgreementService;
-import com.ydtech.modules.scheme.entity.vo.DrivingIntentionQueryVo;
-import com.ydtech.utils.StringUtils;
+import com.ydtech.modules.scheme.entity.vo.InsDrivingIntentionInsuranceInfoVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -38,9 +19,40 @@ import java.util.stream.Collectors;
 @Service
 public class InsBusinessInsuranceServiceImpl extends ServiceImpl<InsBusinessInsuranceMapper, InsBusinessInsurance>
         implements InsBusinessInsuranceService {
+    @Autowired
+    private InsDrivingIntentionInsuranceService insDrivingIntentionInsuranceService;
 
     @Override
     public List<InsBusinessInsurance> getBusinessInsurance() {
         return baseMapper.getBusinessInsurance();
     }
+
+    @Override
+    public List<InsDrivingIntentionInsurance> getDrivingInfo(InsDrivingIntentionInsuranceInfoVo insuranceInfoVo) {
+        // 获取所有记录
+        List<InsDrivingIntentionInsurance> allRecords = insDrivingIntentionInsuranceService.list();
+
+        // 使用parentId对记录进行分组
+        Map<Integer, List<InsDrivingIntentionInsurance>> groupedByParent = allRecords.stream()
+                .collect(Collectors.groupingBy(InsDrivingIntentionInsurance::getParentId));
+
+        // 创建一个新的List来存储最终的结果
+        List<InsDrivingIntentionInsurance> resultList = new ArrayList<>();
+
+        // 过滤出所有的顶级记录(parentId为null或0)
+        List<InsDrivingIntentionInsurance> topLevelRecords = allRecords.stream()
+                .filter(item -> item.getParentId() == null || item.getParentId() == 0)
+                .collect(Collectors.toList());
+
+        // 设置每个顶级记录的子记录
+        for (InsDrivingIntentionInsurance item : topLevelRecords) {
+            // 根据顶级记录的id来查找子记录
+            item.setInsDrivingIntentionInsurances(groupedByParent.getOrDefault(item.getId(), new ArrayList<>()));
+        }
+
+        // 将顶级记录添加到结果集中
+        resultList.addAll(topLevelRecords);
+
+        return resultList;
+    }
 }

+ 141 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsDrivingIntentionInsuranceServiceImpl.java

@@ -1,14 +1,17 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.dao.InsDrivingIntentionInsuranceMapper;
 import com.ydtech.modules.order.dao.InsDrivingIntentionInsuranceSonMapper;
 import com.ydtech.modules.order.entity.*;
 import com.ydtech.modules.order.entity.api.pingan.request.ProductDetailsRequest;
+import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceSonVo;
 import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
 import com.ydtech.modules.order.entity.vo.NoCarInsuranceQueryVo;
 import com.ydtech.modules.order.service.*;
@@ -22,6 +25,7 @@ import com.ydtech.modules.scheme.service.PtlOptionalSchemeInsuranceDrivingIntent
 import com.ydtech.modules.scheme.service.PtlOptionalSchemeService;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.modules.scheme.entity.vo.DrivingIntentionQueryVo;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -64,6 +68,9 @@ public class InsDrivingIntentionInsuranceServiceImpl extends ServiceImpl<InsDriv
     @Autowired
     private PtlOptionalSchemeInsuranceDrivingIntentionService ptlOptionalSchemeInsuranceDrivingIntentionService;
 
+    @Autowired
+    private InsDrivingIntentionInsuranceSonService insDrivingIntentionInsuranceSonService;
+
     @Autowired
     private PtlOptionalSchemeService ptlOptionalSchemeService;
 
@@ -366,4 +373,138 @@ public class InsDrivingIntentionInsuranceServiceImpl extends ServiceImpl<InsDriv
 
         return rootNodes;
     }
+
+    // 新增驾意险
+    @Override
+    public HttpResult add(InsDrivingIntentionInsuranceVo insDrivingIntentionInsuranceVo) {
+        InsDrivingIntentionInsurance insDrivingIntentionInsurance = new InsDrivingIntentionInsurance();
+        BeanUtils.copyProperties(insDrivingIntentionInsuranceVo, insDrivingIntentionInsurance);
+        baseMapper.insert(insDrivingIntentionInsurance);
+        return HttpResult.ok("新增成功");
+    }
+
+    @Override
+    public HttpResult addSon(InsDrivingIntentionInsuranceSonVo insDrivingIntentionInsuranceSonVo) {
+        InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon = new InsDrivingIntentionInsuranceSon();
+        BeanUtils.copyProperties(insDrivingIntentionInsuranceSonVo, insDrivingIntentionInsuranceSon);
+        insDrivingIntentionInsuranceSonService.save(insDrivingIntentionInsuranceSon);
+        return HttpResult.ok("新增成功");
+    }
+
+
+    //修改驾意险
+    @Override
+    public HttpResult update(InsDrivingIntentionInsurance insDrivingIntentionInsurance) {
+        InsDrivingIntentionInsurance insDrivingIntentionInsurance1 = baseMapper.selectById(insDrivingIntentionInsurance.getId());
+        if (insDrivingIntentionInsurance1 == null) {
+            return HttpResult.error("修改失败,数据不存在");
+        }
+        baseMapper.updateById(insDrivingIntentionInsurance);
+        return HttpResult.ok("修改成功");
+    }
+
+
+    @Override
+    public HttpResult updateSon(InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon) {
+        InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon1 = sonMapper.selectById(insDrivingIntentionInsuranceSon.getSonId());
+        if (insDrivingIntentionInsuranceSon1 == null) {
+            return HttpResult.error("修改失败,数据不存在");
+        }
+        insDrivingIntentionInsuranceSon.setId(insDrivingIntentionInsuranceSon.getSonId());
+        insDrivingIntentionInsuranceSonService.updateById(insDrivingIntentionInsuranceSon);
+        return HttpResult.ok("修改成功");
+    }
+
+    //删除驾意险
+    @Override
+    public HttpResult delete(InsDrivingIntentionInsurance insDrivingIntentionInsurance) {
+        InsDrivingIntentionInsurance insDrivingIntentionInsurance1 = baseMapper.selectById(insDrivingIntentionInsurance.getId());
+        if (insDrivingIntentionInsurance1 == null) {
+            return HttpResult.error("删除失败,数据不存在");
+        }
+        baseMapper.deleteById(insDrivingIntentionInsurance);
+        List<InsDrivingIntentionInsuranceSon> insDrivingIntentionInsuranceSonList = sonMapper.selectList(new LambdaQueryWrapper<InsDrivingIntentionInsuranceSon>().eq(InsDrivingIntentionInsuranceSon::getProductCode, insDrivingIntentionInsurance.getProjectCode()));
+        if (insDrivingIntentionInsuranceSonList != null && insDrivingIntentionInsuranceSonList.size() > 0) {
+            insDrivingIntentionInsuranceSonService.removeBatchByIds(insDrivingIntentionInsuranceSonList);
+        }
+        return HttpResult.ok("删除成功");
+    }
+
+    @Override
+    public HttpResult deleteSon(InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon) {
+        InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon1 = sonMapper.selectById(insDrivingIntentionInsuranceSon.getSonId());
+        if ( insDrivingIntentionInsuranceSon1 == null) {
+            return HttpResult.error("删除失败,数据不存在");
+        }
+        insDrivingIntentionInsuranceSon.setId(insDrivingIntentionInsuranceSon.getSonId());
+        sonMapper.deleteById(insDrivingIntentionInsuranceSon);
+        return HttpResult.ok("删除成功");
+    }
+
+    @Override
+    public Page<InsDrivingIntentionInsurance> getSchemeDrivingIntentionInsuranceList(Page page,DrivingIntentionQueryVo drivingIntentionQueryVo){
+        LambdaQueryWrapper<InsDrivingIntentionInsurance> queryWrapper = new LambdaQueryWrapper<>();
+        //保险公司id
+        if(!Objects.isNull(drivingIntentionQueryVo.getCompanyId())){
+            queryWrapper.eq(InsDrivingIntentionInsurance::getCompanyId, drivingIntentionQueryVo.getCompanyId());
+        }
+        if (!Objects.isNull(drivingIntentionQueryVo.getProductName())) {
+            queryWrapper.like(InsDrivingIntentionInsurance::getProjectName, drivingIntentionQueryVo.getProductName());
+        }
+
+        //座位数
+        if(!Objects.isNull(drivingIntentionQueryVo.getSeatNum())){
+            queryWrapper.eq(InsDrivingIntentionInsurance::getSeatNum, drivingIntentionQueryVo.getSeatNum());
+        }
+
+        if(!Objects.isNull(drivingIntentionQueryVo.getDrivingIntentionIds())){
+            queryWrapper.in(InsDrivingIntentionInsurance::getId,drivingIntentionQueryVo.getDrivingIntentionIds());
+        }
+
+        //自选方案
+        if(!Objects.isNull(drivingIntentionQueryVo.getProductId())){
+            PtlOptionalScheme ptlOptionalScheme = ptlOptionalSchemeService.getOne(new LambdaQueryWrapper<PtlOptionalScheme>()
+                    .eq(PtlOptionalScheme::getCompanyId, drivingIntentionQueryVo.getCompanyId())
+                    .eq(PtlOptionalScheme::getProductId, drivingIntentionQueryVo.getProductId())
+                    .eq(PtlOptionalScheme::getEnergyType,drivingIntentionQueryVo.getEnergyType())
+                    .eq(PtlOptionalScheme::getVehicleType,drivingIntentionQueryVo.getVehicleType())
+                    .eq(PtlOptionalScheme::getCarnature,drivingIntentionQueryVo.getCarnature()));
+            LambdaQueryWrapper<PtlOptionalSchemeInsuranceDrivingIntention> eq = new LambdaQueryWrapper<PtlOptionalSchemeInsuranceDrivingIntention>()
+                    .eq(PtlOptionalSchemeInsuranceDrivingIntention::getSchemeId, ptlOptionalScheme.getId())
+                    .eq(PtlOptionalSchemeInsuranceDrivingIntention::getSeatNum, drivingIntentionQueryVo.getSeatNum());
+            List<PtlOptionalSchemeInsuranceDrivingIntention> list = ptlOptionalSchemeInsuranceDrivingIntentionService.list(eq);
+            List<String> collect = list.stream().map(x -> x.getDrivingIntentionId()).collect(Collectors.toList());
+            if(collect.isEmpty()){
+                throw new SystemException("自选方案驾意险为空");
+            }
+            drivingIntentionQueryVo.setDrivingIntentionIds(collect);
+            drivingIntentionQueryVo.setParentId(collect);
+        }
+
+        List<InsDrivingIntentionInsurance> insDrivingIntentionInsurances = new ArrayList<>();
+        List<InsDrivingIntentionInsurance> list = baseMapper.getInsDrivingIntentionInsuranceList(drivingIntentionQueryVo);
+
+        if(!list.isEmpty()) {
+            //处理父级
+            if (list.get(0).getParentId() != null && list.get(0).getParentId() != 0) {
+                List<String> parentIds = list.stream().map(x -> x.getParentId().toString()).collect(Collectors.toList());
+                LambdaQueryWrapper<InsDrivingIntentionInsurance> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(InsDrivingIntentionInsurance::getCompanyId, drivingIntentionQueryVo.getCompanyId())
+                        .in(InsDrivingIntentionInsurance::getId, parentIds);
+                List<InsDrivingIntentionInsurance> parentInsurance = baseMapper.selectList(queryWrapper1);
+                list.addAll(parentInsurance);
+            }
+            insDrivingIntentionInsurances = this.buildHierarchy(list);
+        }
+
+        int currentPage = drivingIntentionQueryVo.getPageNum();
+        int pageSize = drivingIntentionQueryVo.getPageSize();
+        int fromIndex = (currentPage - 1) * pageSize; // 计算起始索引
+        int toIndex = Math.min(fromIndex + pageSize, insDrivingIntentionInsurances.size()); // 计算结束索引
+
+        List<InsDrivingIntentionInsurance> paginatedData = insDrivingIntentionInsurances.subList(fromIndex, toIndex);
+        Page page1 = new Page(currentPage, pageSize, insDrivingIntentionInsurances.size(), true);
+        page1.setRecords(paginatedData);
+        return page1;
+    }
 }

+ 11 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsDrivingIntentionInsuranceSonServiceImpl.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.order.dao.InsDrivingIntentionInsuranceSonMapper;
+import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
+import com.ydtech.modules.order.service.InsDrivingIntentionInsuranceSonService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InsDrivingIntentionInsuranceSonServiceImpl extends ServiceImpl<InsDrivingIntentionInsuranceSonMapper, InsDrivingIntentionInsuranceSon> implements InsDrivingIntentionInsuranceSonService {
+}

+ 2 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -1006,13 +1006,14 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         BeanUtils.copyProperties(ptlAgreementAttributionOld, ptlAgreementAttributionNew, "id");
         ptlAgreementAttributionNew.setId(newPtlAgreement.getId());
         ptlAgreementAttributionService.save(ptlAgreementAttributionNew);
+        EsmInsCompany esmInsCompany = esmInsCompanyService.getById(newPtlAgreement.getInsuranceCompanyId());
         // 添加账号配置记录
         String batchNo = IdGenerate.nextId();
         PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory();
         ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
         ptlAgreementAttributionHistory.setBatch(batchNo);
         ptlAgreementAttributionHistory.setInsCompanyId(newPtlAgreement.getInsuranceCompanyId());
-        ptlAgreementAttributionHistory.setInsCompanyName(newPtlAgreement.getAgreementName());
+        ptlAgreementAttributionHistory.setInsCompanyName(esmInsCompany.getName());
         ptlAgreementAttributionHistory.setFields(ptlAgreementAttributionNew.getFields());
         ptlAgreementAttributionHistory.setTemplateId(ptlAgreementAttributionNew.getTemplateId());
         ptlAgreementAttributionHistory.setApiType(ptlAgreementAttributionNew.getApiType());

+ 47 - 16
src/main/java/com/ydtech/modules/scheme/controller/PtlSchemeController.java

@@ -6,33 +6,20 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.aop.request.RequestSingleParam;
-import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.modules.base.model.dto.PageDto;
-import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.order.constants.JqInsuranceType;
-import com.ydtech.modules.order.entity.InsBusinessInsurance;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceType;
-import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.*;
+import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceSonVo;
+import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
 import com.ydtech.modules.order.service.InsBusinessInsuranceService;
 import com.ydtech.modules.order.service.InsDrivingIntentionInsuranceService;
 import com.ydtech.modules.order.service.InsDrivingIntentionInsuranceTypeService;
-import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.service.ITaxSourceService;
-import com.ydtech.modules.protocol.service.PtlAgreementService;
-import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
-import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
-import com.ydtech.modules.protocols.entity.vo.*;
-import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
-import com.ydtech.modules.protocols.service.PtlAgreementProductCostsTrajectoryService;
 import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrService;
-import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesNewService;
 import com.ydtech.modules.scheme.entity.po.*;
 import com.ydtech.modules.scheme.entity.vo.*;
 import com.ydtech.modules.scheme.service.*;
@@ -483,4 +470,48 @@ public class PtlSchemeController extends BaseController {
 
     //endregion
 
+    //手动新增驾意险
+    @ApiOperation(value = "手动新增驾意险")
+    @PostMapping(value = "addDriving")
+    public HttpResult addDriving(@RequestBody InsDrivingIntentionInsuranceVo insDrivingIntentionInsuranceVo){
+        return insDrivingIntentionInsuranceService.add(insDrivingIntentionInsuranceVo);
+    }
+
+    @ApiOperation(value = "手动新增驾意险后代")
+    @PostMapping(value = "addDrivingSon")
+    public HttpResult addDrivingSon(@RequestBody InsDrivingIntentionInsuranceSonVo insDrivingIntentionInsuranceSonVo){
+        return insDrivingIntentionInsuranceService.addSon(insDrivingIntentionInsuranceSonVo);
+    }
+
+
+    @ApiOperation(value = "手动删除驾意险")
+    @PostMapping(value = "deleteDriving")
+    public HttpResult deleteDriving(@RequestBody InsDrivingIntentionInsurance insDrivingIntentionInsurance){
+        return insDrivingIntentionInsuranceService.delete(insDrivingIntentionInsurance);
+    }
+
+    @ApiOperation(value = "手动删除驾意险后代")
+    @PostMapping(value = "deleteDrivingSon")
+    public HttpResult deleteDrivingSon(@RequestBody InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon){
+        return insDrivingIntentionInsuranceService.deleteSon(insDrivingIntentionInsuranceSon);
+    }
+
+    @ApiOperation(value = "手动更新驾意险")
+    @PostMapping(value = "updateDriving")
+    public HttpResult updateDriving(@RequestBody InsDrivingIntentionInsurance insDrivingIntentionInsurance){
+        return insDrivingIntentionInsuranceService.update(insDrivingIntentionInsurance);
+    }
+
+    @ApiOperation(value = "手动更新驾意险后代")
+    @PostMapping(value = "updateDrivingSon")
+    public HttpResult updateDrivingSon(@RequestBody InsDrivingIntentionInsuranceSon insDrivingIntentionInsuranceSon){
+        return insDrivingIntentionInsuranceService.updateSon(insDrivingIntentionInsuranceSon);
+    }
+
+    @ApiOperation(value = "获取驾意险信息")
+    @PostMapping(value = "getDrivingInfo")
+    public HttpResult getDrivingInfo(@RequestBody DrivingIntentionQueryVo drivingIntentionQueryVo){
+        Page page = new Page(drivingIntentionQueryVo.getPageNum(), drivingIntentionQueryVo.getPageSize());
+        return HttpResult.ok("",insDrivingIntentionInsuranceService.getSchemeDrivingIntentionInsuranceList(page,drivingIntentionQueryVo));
+    }
 }

+ 10 - 2
src/main/java/com/ydtech/modules/scheme/entity/vo/DrivingIntentionQueryVo.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.scheme.entity.vo;
 
 import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiOperation;
 import lombok.Data;
 
 import java.util.List;
@@ -12,9 +11,13 @@ public class DrivingIntentionQueryVo {
     @ApiModelProperty("产品id")
     private String productId;
 
+    @ApiModelProperty("产品名称")
+    private String productName;
+
     @ApiModelProperty("保险公司id")
     private String companyId;
-
+    @ApiModelProperty("保险公司名称")
+    private String companyName;
     @ApiModelProperty("座位数")
     private String seatNum;
 
@@ -35,4 +38,9 @@ public class DrivingIntentionQueryVo {
 
     @ApiModelProperty("父id ")
     private List<String> parentId;
+
+    private int pageNum;
+
+    private int pageSize;
+
 }

+ 31 - 0
src/main/java/com/ydtech/modules/scheme/entity/vo/InsDrivingIntentionInsuranceInfoVo.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.scheme.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class InsDrivingIntentionInsuranceInfoVo {
+    private String id;
+
+    private String parentId;
+
+    private String type;
+
+    private String companyId;
+
+    private String projectName;
+
+    private String projectCode;
+
+    private String riskCode;
+
+    private String seatNum;
+
+    private String sumAmount;
+
+    private String sumPremium;
+
+    private String requestData;
+
+    private String apiType;
+
+}

+ 51 - 7
src/main/resources/mapper/modules/order/InsDrivingIntentionInsuranceMapper.xml

@@ -9,6 +9,7 @@
         <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
         <result property="type" column="type" jdbcType="INTEGER"/>
         <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+        <result property="companyName" column="companyName" jdbcType="VARCHAR"/>
         <result property="projectName" column="project_name" jdbcType="VARCHAR"/>
         <result property="projectCode" column="project_code" jdbcType="VARCHAR"/>
         <result property="riskCode" column="risk_code" jdbcType="VARCHAR"/>
@@ -17,6 +18,7 @@
         <result property="sumPremium" column="sum_premium" jdbcType="DECIMAL"/>
         <result property="apiType" column="api_type" jdbcType="INTEGER"/>
         <collection property="insDrivingIntentionInsuranceSon" ofType="com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon">
+            <result property="sonId" column="sonId" jdbcType="VARCHAR"/>
             <result property="drivingCodeId" column="driving_code_id" jdbcType="VARCHAR"/>
             <result property="code" column="code" jdbcType="VARCHAR"/>
             <result property="name" column="name" jdbcType="VARCHAR"/>
@@ -56,13 +58,13 @@
         <collection property="drivingIntentionInsurances" ofType="com.ydtech.modules.order.entity.InsDrivingIntentionInsurance">
             <id property="id" column="id" jdbcType="VARCHAR"/>
             <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
-            <result property="type" column="type" jdbcType="INTEGER"/>
+            <result property="type" column="type" jdbcType="VARCHAR"/>
             <result property="apiType" column="api_type" jdbcType="INTEGER"/>
             <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
             <result property="projectName" column="project_name" jdbcType="VARCHAR"/>
             <result property="projectCode" column="project_code" jdbcType="VARCHAR"/>
-            <result property="sumAmount" column="sum_amount" jdbcType="DECIMAL"/>
-            <result property="sumPremium" column="sum_premium" jdbcType="DECIMAL"/>
+            <result property="sumAmount" column="sum_amount" jdbcType="VARCHAR"/>
+            <result property="sumPremium" column="sum_premium" jdbcType="VARCHAR"/>
             <collection property="insDrivingIntentionInsuranceSon" ofType="com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon">
                 <id property="id" column="id" jdbcType="VARCHAR"/>
                 <result property="drivingCodeId" column="driving_code_id" jdbcType="VARCHAR"/>
@@ -76,15 +78,17 @@
     <select id="getInsDrivingIntentionInsuranceList" resultMap="BaseResultMap">
         SELECT
         idii.*,
+        idiis.id as sonId,
         idiis.driving_code_id,
         idiis.code,
         idiis.name,
         idiis.amount,
-        idiis.premium
+        idiis.premium,
+        company.name as companyName
         FROM
         ins_driving_intention_insurance idii
-        LEFT JOIN ins_driving_intention_insurance_son idiis ON idii.company_id = idiis.company_id
-        AND idii.project_code = idiis.driving_code_id
+        LEFT JOIN ins_driving_intention_insurance_son idiis ON idii.company_id = idiis.company_id AND idii.project_code = idiis.driving_code_id
+        LEFT JOIN esm_ins_company company ON idii.company_id = company.id
         WHERE
         1=1
         <if test="param.companyId != null and param.companyId != ''">
@@ -96,7 +100,9 @@
         <if test="param.type != null and param.type != ''">
             and idii.type = #{param.type}
         </if>
-
+        <if test="param.companyName != null and param.companyName != ''">
+            and company.name like concat('%',#{param.companyName},'%')
+        </if>
         <if test="param.drivingIntentionIds != null and param.drivingIntentionIds != ''">
             and idii.id in
             <foreach item="id" collection="param.drivingIntentionIds" open="(" separator="," close=")">
@@ -185,4 +191,42 @@
         where idii.company_id = #{companyId}
     </select>
 
+    <select id="getInsDrivingIntentionInsuranceListPage" resultMap="BaseResultMap">
+        SELECT
+        idii.*,
+        idiis.driving_code_id,
+        idiis.code,
+        idiis.name,
+        idiis.amount,
+        idiis.premium
+        FROM
+        ins_driving_intention_insurance idii
+        LEFT JOIN ins_driving_intention_insurance_son idiis ON idii.company_id = idiis.company_id
+        AND idii.project_code = idiis.driving_code_id
+        WHERE
+        1=1
+        <if test="param.companyId != null and param.companyId != ''">
+            and idii.company_id = #{param.companyId}
+        </if>
+        <if test="param.seatNum != null and param.seatNum != ''">
+            and idii.seat_num = #{param.seatNum}
+        </if>
+        <if test="param.type != null and param.type != ''">
+            and idii.type = #{param.type}
+        </if>
+
+        <if test="param.drivingIntentionIds != null and param.drivingIntentionIds != ''">
+            and idii.id in
+            <foreach item="id" collection="param.drivingIntentionIds" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+        <if test="param.parentId != null and param.parentId != ''">
+            or idii.parent_id in
+            <foreach item="id" collection="param.parentId" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>

+ 6 - 0
src/main/resources/mapper/modules/order/InsDrivingIntentionInsuranceSonMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon">
+</mapper>