Ver Fonte

新增非车险产品录入模块

li.pengfei há 2 anos atrás
pai
commit
d1e740c860
22 ficheiros alterados com 778 adições e 14 exclusões
  1. 3 2
      src/main/java/com/ydtech/modules/protocol/controller/PtlNonCarInsuranceProductController.java
  2. 13 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductImgMapper.java
  3. 13 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductSchemeDetailMapper.java
  4. 13 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarProductSchemeMapper.java
  5. 74 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarInsuranceProduct.java
  6. 48 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductImg.java
  7. 61 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductScheme.java
  8. 66 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarProductSchemeDetail.java
  9. 17 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductPageVo.java
  10. 24 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductQueryVo.java
  11. 50 1
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductSaveVo.java
  12. 27 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarProductSchemeDetailVo.java
  13. 39 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarProductSchemeVo.java
  14. 3 6
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarInsuranceProductService.java
  15. 26 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductImgService.java
  16. 17 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductSchemeDetailService.java
  17. 17 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarProductSchemeService.java
  18. 68 5
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarInsuranceProductServiceImpl.java
  19. 41 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductImgServiceImpl.java
  20. 66 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductSchemeDetailServiceImpl.java
  21. 80 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlNonCarProductSchemeServiceImpl.java
  22. 12 0
      src/main/resources/mapper/modules/protocol/PtlNonCarInsuranceProductMapper.xml

+ 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">