소스 검색

Merge remote-tracking branch 'origin/master'

wks 11 달 전
부모
커밋
decefb5057
100개의 변경된 파일3903개의 추가작업 그리고 267개의 파일을 삭제
  1. 6 0
      commons/src/main/java/com/jzg/commons/core/base/BaseModel.java
  2. 26 0
      commons/src/main/java/com/jzg/commons/entity/dto/IncomeAndExpenseParam.java
  3. 27 0
      commons/src/main/java/com/jzg/commons/entity/dto/InsFeeOrdersParam.java
  4. 5 0
      commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParam.java
  5. 18 0
      commons/src/main/java/com/jzg/commons/entity/dto/OrderAdjustAddParam.java
  6. 39 0
      commons/src/main/java/com/jzg/commons/entity/dto/OrderAdjustExportParam.java
  7. 39 0
      commons/src/main/java/com/jzg/commons/entity/dto/OrderAdjustParam.java
  8. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/OrdersTrackParam.java
  9. 14 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoBankCardDto.java
  10. 18 0
      commons/src/main/java/com/jzg/commons/entity/dto/VerifyAdjustParam.java
  11. 77 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrderAdjust.java
  12. 63 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrderAdjustInfo.java
  13. 2 1
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersKind.java
  14. 9 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/OrderListVo.java
  15. 10 4
      commons/src/main/java/com/jzg/commons/entity/po/InsFeeOrders.java
  16. 59 0
      commons/src/main/java/com/jzg/commons/entity/po/SysDistributionAudit.java
  17. 26 0
      commons/src/main/java/com/jzg/commons/entity/po/SysDistributionDept.java
  18. 3 2
      commons/src/main/java/com/jzg/commons/entity/po/SysUserAccount.java
  19. 9 1
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoBankCard.java
  20. 39 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoBankCardRecord.java
  21. 44 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  22. 3 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java
  23. 31 31
      commons/src/main/java/com/jzg/commons/entity/report/dto/ReportReceivableDataDetailDto.java
  24. 67 0
      commons/src/main/java/com/jzg/commons/entity/vo/AdjustAllRefundInfoVo.java
  25. 29 0
      commons/src/main/java/com/jzg/commons/entity/vo/AdjustAllRefundVo.java
  26. 100 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionCenterVo.java
  27. 87 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionCommissionDetailVo.java
  28. 24 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionInviteeVo.java
  29. 47 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionOrder.java
  30. 62 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionOrderVo.java
  31. 24 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionRelationVo.java
  32. 23 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionTeamVo.java
  33. 54 0
      commons/src/main/java/com/jzg/commons/entity/vo/IncomeAndExpenseVo.java
  34. 9 1
      commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java
  35. 18 0
      commons/src/main/java/com/jzg/commons/entity/vo/OrderAdjustInfoVo.java
  36. 94 0
      commons/src/main/java/com/jzg/commons/entity/vo/OrderAdjustVo.java
  37. 37 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionAuditListVo.java
  38. 57 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionAuditVo.java
  39. 58 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionListVo.java
  40. 58 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionSettingVo.java
  41. 6 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserJzgInfoBankCardVo.java
  42. 50 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserWalletVo.java
  43. 2 0
      commons/src/main/java/com/jzg/commons/entity/vo/UserInfoVo.java
  44. 2 0
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  45. 2 2
      gateway/src/main/resources/application-dev.yml
  46. 5 2
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java
  47. 121 26
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/component/HtCrawlerRequestComponent.java
  48. 37 0
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/component/HuaTaiCrawlerCacheComponent.java
  49. 26 10
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/constant/enums/RequestUrl.java
  50. 23 2
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Request/HtCrawlerCarQueryRequest.java
  51. 17 1
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Request/HtCrawlerLoginRequest.java
  52. 33 0
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/vo/LoginVPNResult.java
  53. 26 8
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java
  54. 1 1
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/util/HuaTaiCryptUtil.java
  55. 109 5
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java
  56. 1 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java
  57. 4 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/constants/QuoteNumberConstant.java
  58. 22 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeOrderController.java
  59. 195 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrderAdjustController.java
  60. 9 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsFeeOrdersMapper.java
  61. 18 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderAdjustInfoMapper.java
  62. 48 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderAdjustMapper.java
  63. 8 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java
  64. 54 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrderAdjustInfoService.java
  65. 70 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrderAdjustService.java
  66. 44 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  67. 19 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java
  68. 561 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderAdjustInfoServiceImpl.java
  69. 187 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderAdjustServiceImpl.java
  70. 22 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  71. 3 0
      tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml
  72. 54 7
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeOrdersMapper.xml
  73. 36 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderAdjustInfoMapper.xml
  74. 116 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderAdjustMapper.xml
  75. 44 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  76. 3 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersTrackMapper.xml
  77. 142 142
      tenant/insurance/quotation-zhongan/src/test/java/com/jzg/quotation/zhongan/crawler/service/ZhongAnAPIServiceTest.java
  78. 12 3
      tenant/organization/src/main/java/com/jzg/organization/client/QuoteClient.java
  79. 7 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AppUserController.java
  80. 29 0
      tenant/organization/src/main/java/com/jzg/organization/controller/EsmUserReferrerController.java
  81. 6 0
      tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java
  82. 90 0
      tenant/organization/src/main/java/com/jzg/organization/controller/SysDistributionSettingController.java
  83. 11 1
      tenant/organization/src/main/java/com/jzg/organization/controller/UserAccountController.java
  84. 10 0
      tenant/organization/src/main/java/com/jzg/organization/controller/UserBankCardController.java
  85. 25 0
      tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java
  86. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/EsmUserReferrerMapper.java
  87. 3 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/InsBusinessInsuranceMapper.java
  88. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysDistributionAuditMapper.java
  89. 27 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysDistributionSettingMapper.java
  90. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgInfoBankCardRecordMapper.java
  91. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/EsmUserReferrerService.java
  92. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java
  93. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  94. 12 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysDistributionAuditService.java
  95. 37 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysDistributionSettingService.java
  96. 15 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserAccountService.java
  97. 6 5
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgAppService.java
  98. 7 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoBankCardRecordService.java
  99. 4 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoBankCardService.java
  100. 19 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

+ 6 - 0
commons/src/main/java/com/jzg/commons/core/base/BaseModel.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.core.base;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
@@ -13,23 +14,28 @@ import java.time.LocalDateTime;
 @Data
 public class BaseModel implements Serializable {
 
+    @ExcelIgnore
     @Schema(description = "是否删除")
     @TableLogic
     private Integer isDelete;
 
+    @ExcelIgnore
     @Schema(description = "创建人")
     @TableField(fill = FieldFill.INSERT)
     private String createBy;
 
+    @ExcelIgnore
     @Schema(description = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
+    @ExcelIgnore
     @Schema(description = "修改人")
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
+    @ExcelIgnore
     @Schema(description = "修改时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(fill = FieldFill.INSERT_UPDATE)

+ 26 - 0
commons/src/main/java/com/jzg/commons/entity/dto/IncomeAndExpenseParam.java

@@ -0,0 +1,26 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author quchen
+ * @date 2025/9/28 9:18
+ */
+
+@Data
+public class IncomeAndExpenseParam {
+    @Schema(description = "提现状态 0-提现审核中 1-提现成功 2-提现驳回")
+    private String status;
+
+    @Schema(description = "时间筛选开始")
+    private String createTimeStart;
+
+    @Schema(description = "时间筛选结束")
+    private String createTimeEnd;
+
+    @Schema(description = "收支状态 0-收入 1-支出")
+    private String incomeAndExpense;
+
+
+}

+ 27 - 0
commons/src/main/java/com/jzg/commons/entity/dto/InsFeeOrdersParam.java

@@ -0,0 +1,27 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/9/28 10:09
+ */
+
+@Data
+public class InsFeeOrdersParam {
+    @Schema(description = "用户id")
+    private String userId;
+
+    @Schema(description = "分销员id")
+    private String distributorId;
+
+    @Schema(description = "时间筛选开始")
+    private LocalDateTime createTimeStart;
+
+    @Schema(description = "时间筛选结束")
+    private LocalDateTime createTimeEnd;
+
+}

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParam.java

@@ -40,4 +40,9 @@ public class InsOrdersParam extends PageRequest {
 
     @Schema(description = "录单时间结束")
     private String endDate;
+
+    @Schema(description = "批改状态")
+    private String adjustStatus;
+
+
 }

+ 18 - 0
commons/src/main/java/com/jzg/commons/entity/dto/OrderAdjustAddParam.java

@@ -0,0 +1,18 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "订单批改新增dto")
+@Data
+public class OrderAdjustAddParam {
+
+    @Schema(description = "订单号")
+    @NotNull(message = "订单号不能为空")
+    private String orderNo;
+
+    @NotNull(message = "批改类型不能为空")
+    @Schema(description = "批改类型 0.整单退保 1.险种批改")
+    private Integer type;
+}

+ 39 - 0
commons/src/main/java/com/jzg/commons/entity/dto/OrderAdjustExportParam.java

@@ -0,0 +1,39 @@
+package com.jzg.commons.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "订单批改查询dto")
+@Data
+public class OrderAdjustExportParam {
+
+    @Schema(description = "订单号")
+    private Long orderNo;
+
+    @Schema(description = "车牌")
+    private String licenseNo;
+
+    @Schema(description = "保司id")
+    private String companyId;
+
+    @Schema(description = "业务员信息")
+    private String salesman;
+
+    @Schema(description = "批单状态 0.订单批改中 1.待审核 2.审核通过 3.退回修改 4.拒绝批改")
+    private Integer status;
+
+    @Schema(description = "批改类型 0.整单退保 1.险种批改")
+    private Integer type;
+
+    @Schema(description = "批改开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    @Schema(description = "批改结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endDate;
+}

+ 39 - 0
commons/src/main/java/com/jzg/commons/entity/dto/OrderAdjustParam.java

@@ -0,0 +1,39 @@
+package com.jzg.commons.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "订单批改分页查询dto")
+@Data
+public class OrderAdjustParam extends PageRequest {
+
+    @Schema(description = "订单号")
+    private Long orderNo;
+
+    @Schema(description = "车牌")
+    private String licenseNo;
+
+    @Schema(description = "保司id")
+    private String companyId;
+
+    @Schema(description = "业务员信息")
+    private String salesman;
+
+    @Schema(description = "批单状态 0.订单批改中 1.待审核 2.审核通过 3.退回修改 4.拒绝批改")
+    private Integer status;
+
+    @Schema(description = "批改类型 0.整单退保 1.险种批改")
+    private Integer type;
+
+    @Schema(description = "批改开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    @Schema(description = "批改结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endDate;
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/OrdersTrackParam.java

@@ -10,4 +10,7 @@ public class OrdersTrackParam {
 
     @Schema(description = "订单号")
     private String orderNo;
+
+    @Schema(description = "模块")
+    private String module;
 }

+ 14 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoBankCardDto.java

@@ -1,9 +1,11 @@
 package com.jzg.commons.entity.dto;
 
+import com.jzg.commons.entity.po.SysUserJzgInfoBankCardRecord;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author quchen
@@ -36,6 +38,15 @@ public class SysUserJzgInfoBankCardDto implements Serializable {
     @Schema(description = "备注")
     private String remark;
 
+    @Schema(description = "持卡人姓名")
+    private String cardHolderName;
+
+    @Schema(description = "持卡人手机号")
+    private String cardHolderMobile;
+
+    @Schema(description = "银行卡是否默认")
+    private String isDefault;
+
     @Schema(description = "业务员类型")
     private String typeAttr;
 
@@ -53,4 +64,7 @@ public class SysUserJzgInfoBankCardDto implements Serializable {
 
     @Schema(description = "申请时间")
     private String applyTime;
+
+    @Schema(description = "审核记录列表")
+    private List<SysUserJzgInfoBankCardRecord> sysUserJzgInfoBankCardRecordList;
 }

+ 18 - 0
commons/src/main/java/com/jzg/commons/entity/dto/VerifyAdjustParam.java

@@ -0,0 +1,18 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "审核批改订单dto")
+@Data
+public class VerifyAdjustParam {
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "费用审核状态 2.审核通过 3.退回修改 4.拒绝批改")
+    private Integer status;
+
+    @Schema(description = "退回修改/拒绝修改原因")
+    private String refuse;
+}

+ 77 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrderAdjust.java

@@ -0,0 +1,77 @@
+package com.jzg.commons.entity.orders.po;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.BaseModel;
+import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 订单批改表
+ * @TableName ins_order_adjust
+ */
+@Data
+@Schema(description = "订单批改表")
+public class InsOrderAdjust extends BaseModel {
+
+    @Schema(description = "主键ID")
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "车牌")
+    private String licenseNo;
+
+    @Schema(description = "产品ID")
+    private String productId;
+
+    @Schema(description = "产品名称")
+    private String productName;
+
+    @Schema(description = "保司id")
+    private String companyId;
+
+    @Schema(description = "保司名称")
+    private String companyName;
+
+    @Schema(description = "批单状态 0.订单批改中 1.待审核 2.审核通过 3.退回修改 4.拒绝批改")
+    private Integer status;
+
+    @Schema(description = "批改类型 0.整单退保 1.险种批改")
+    private Integer type;
+
+    @Schema(description = "保费")
+    private BigDecimal premium;
+
+    @Schema(description = "批改后保费")
+    private BigDecimal afterPremium;
+
+    @Schema(description = "批改后交强保费")
+    private BigDecimal afterJqPremium;
+
+    @Schema(description = "批改后商业保费")
+    private BigDecimal afterSyPremium;
+
+    @Schema(description = "批改后驾意保费")
+    private BigDecimal afterJyPremium;
+
+    @Schema(description = "拒绝/退回原因")
+    private String refuse;
+
+    @TableField(exist = false)
+    @Schema(description = "批改明细")
+    private List<InsOrderAdjustInfo> adjustInfoList;
+
+
+
+
+}

+ 63 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrderAdjustInfo.java

@@ -0,0 +1,63 @@
+package com.jzg.commons.entity.orders.po;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 订单批改明细表
+ * @TableName ins_order_adjust_info
+ */
+@Data
+@Schema(description = "订单批改明细表")
+public class InsOrderAdjustInfo extends BaseModel {
+
+    @Schema(description = "主键ID")
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "批改表id")
+    private String adjustId;
+
+    @Schema(description = "险种类型 0. 交强 1.商业 2.非车")
+    private Integer kindType;
+
+    @Schema(description = "险种code")
+    private String kindCode;
+
+    @Schema(description = "险种名称")
+    private String kindName;
+
+    @Schema(description = "金额或数量")
+    private BigDecimal amount;
+
+    @Schema(description = "调整后金额或数量")
+    private BigDecimal afterAmount;
+
+    @Schema(description = "保费")
+    private BigDecimal premium;
+
+    @Schema(description = "批改类型 0.未批改 1.保额批改 2.退保 3.批增")
+    private Integer type;
+
+    @Schema(description = "调整类型 0. 补缴 1.退款")
+    private Integer adjustType;
+
+    @Schema(description = "调整金额")
+    private BigDecimal adjustAmount;
+
+    @Schema(description = "批改后的保费")
+    private BigDecimal AfterPremium;
+
+    @Schema(description = "是否隐藏 0.否 1.是")
+    private Integer isHide;
+
+
+}

+ 2 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersKind.java

@@ -4,6 +4,7 @@ package com.jzg.commons.entity.orders.po;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.jzg.commons.aop.aspect.DiffProperty;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -11,7 +12,7 @@ import java.math.BigDecimal;
 
 @Data
 @Schema(description = "保险订单险种信息")
-public class InsOrdersKind {
+public class InsOrdersKind extends BaseModel {
 
     @TableId(type = IdType.ASSIGN_ID)
     private String id;

+ 9 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/OrderListVo.java

@@ -99,4 +99,13 @@ public class OrderListVo {
 
     //支付链接
     private String paymentLink;
+
+    //批改状态
+    private String adjustStatus;
+
+    //批改id
+    private String adjustId;
+
+    //批改后的保费
+    private String adjustPremium;
 }

+ 10 - 4
commons/src/main/java/com/jzg/commons/entity/po/InsFeeOrders.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.po;
 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 io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -28,6 +29,13 @@ public class InsFeeOrders {
     @Schema(description = "费用id")
     private String costId;
 
+    @Schema(description = "用户id")
+    private String userId;
+
+    @Schema(description = "签单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime signingTime;
+
     @Schema(description = "交强险保费")
     private BigDecimal jqPremium;
 
@@ -172,9 +180,7 @@ public class InsFeeOrders {
     @Schema(description = "三级分销员id")
     private String thirdDistributorId;
 
-    @Schema(description = "签单时间")
+    @Schema(description = "车牌号")
     @TableField(exist = false)
-    private LocalDateTime signingTime;
-
-
+    private String licenseNo;
 }

+ 59 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysDistributionAudit.java

@@ -0,0 +1,59 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/8/11 17:11
+ */
+
+@TableName("sys_distribution_audit")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysDistributionAudit {
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    @Schema(description = "租户用户id")
+    private String sysUserJzgInfoId;
+
+    @Schema(description = "审核状态 0-待审核 1-通过 2-驳回 3-自动审核")
+    private String auditStatus;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "审核人")
+    private String auditBy;
+
+    @Schema(description = "审核时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime auditTime;
+
+    @Schema(description = "申请时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime applyTime;
+
+    @Schema(description = "审核通过时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime auditApprovalTime;
+
+    @Schema(description = "租户id")
+    private String systemCode;
+
+
+    public SysDistributionAudit(SysUserJzgInfo sysUserJzgInfo) {
+        this.sysUserJzgInfoId = sysUserJzgInfo.getId();
+        this.applyTime = LocalDateTime.now();
+    }
+}

+ 26 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysDistributionDept.java

@@ -0,0 +1,26 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author quchen
+ * @date 2025/8/6 11:23
+ */
+
+@Data
+@TableName("sys_distribution_dept")
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysDistributionDept {
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    private String distributionSettingId;
+
+    private String deptId;
+}

+ 3 - 2
commons/src/main/java/com/jzg/commons/entity/po/SysUserAccount.java

@@ -1,8 +1,6 @@
 package com.jzg.commons.entity.po;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.Date;
 
 import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -34,4 +32,7 @@ public class SysUserAccount extends BaseModel {
 
     @Schema(description = "未付总金额")
     private BigDecimal sumAmountUnpaid;
+
+    @Schema(description = "积分")
+    private BigDecimal integral;
 }

+ 9 - 1
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoBankCard.java

@@ -24,7 +24,7 @@ public class SysUserJzgInfoBankCard extends BaseModel {
     private String id;
 
     @TableField(value = "user_id")
-    @Schema(description = "info表id")
+    @Schema(description = "user表id")
     private String userId;
 
     @TableField(value = "bank_card_number")
@@ -39,6 +39,14 @@ public class SysUserJzgInfoBankCard extends BaseModel {
     @Schema(description = "开户行地址")
     private String bankAddress;
 
+    @TableField(value = "card_holder_name")
+    @Schema(description = "持卡人姓名")
+    private String cardHolderName;
+
+    @TableField(value = "card_holder_mobile")
+    @Schema(description = "持卡人手机号")
+    private String cardHolderMobile;
+
     @TableField(value = "is_default")
     @Schema(description = "是否默认 1:是  0:否")
     private boolean isDefault;

+ 39 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoBankCardRecord.java

@@ -0,0 +1,39 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/9/28 16:02
+ */
+
+@Data
+@TableName("sys_user_jzg_info_bank_card_record")
+@AllArgsConstructor
+@NoArgsConstructor
+public class SysUserJzgInfoBankCardRecord {
+    @TableId
+    private String id;
+
+    private String bankCardId;
+
+    private LocalDateTime createTime;
+
+    private String description;
+
+    private String status;
+
+    private String remark;
+
+    public SysUserJzgInfoBankCardRecord(String bankCardId, String description){
+        this.bankCardId = bankCardId;
+        this.description = description;
+        this.createTime = LocalDateTime.now();
+    }
+}

+ 44 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java

@@ -1,6 +1,10 @@
 package com.jzg.commons.entity.quote.vo.aggregated;
 
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.entity.orders.po.InsOrderAdjust;
+import com.jzg.commons.entity.orders.po.InsOrderAdjustInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersQrcode;
 import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.po.InsCompanyClause;
@@ -20,6 +24,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
 
 import java.io.Serial;
 import java.math.BigDecimal;
@@ -217,6 +222,38 @@ public class QuoteEchoVo extends QuoteVo {
     private List<InsCompanyClause> biSpecialInfoVo;
 
 
+    @Schema(description = "订单批改信息")
+    private InsOrderAdjustVo insOrderAdjustVo;
+
+    @Data
+    private static class InsOrderAdjustVo{
+
+        @Schema(description = "主键ID")
+        @TableId(value = "id", type = IdType.ASSIGN_ID)
+        private String id;
+
+        @Schema(description = "产品ID")
+        private String productId;
+
+        @Schema(description = "产品名称")
+        private String productName;
+
+        @Schema(description = "批单状态 0.订单批改中 1.待审核 2.审核通过 3.退回修改 4.拒绝批改")
+        private Integer status;
+
+        @Schema(description = "批改类型 0.整单退保 1.险种批改")
+        private Integer type;
+
+        @Schema(description = "保费")
+        private BigDecimal premium;
+
+        @Schema(description = "批改后保费")
+        private BigDecimal afterPremium;
+
+        @Schema(description = "批改明细")
+        private List<InsOrderAdjustInfo> adjustInfoList;
+    }
+
     /**
      * 订单数据库查询数据转 QuoteVo对象
      * @param insOrdersVo
@@ -260,6 +297,13 @@ public class QuoteEchoVo extends QuoteVo {
             insOrdersVo.getCarInfoVo().setTransferDate(insOrdersVo.getCarInfoVo().getTransferDate().substring(0, insOrdersVo.getCarInfoVo().getTransferDate().indexOf(" ")));
         }
 
+        // 批改信息处理
+        if(Objects.nonNull(insOrdersVo.getInsOrderAdjust())) {
+            InsOrderAdjustVo insOrderAdjustVo = new InsOrderAdjustVo();
+            BeanUtils.copyProperties(insOrdersVo.getInsOrderAdjust(), insOrderAdjustVo);
+            insOrderAdjustVo.setAdjustInfoList(insOrdersVo.getInsOrderAdjust().getAdjustInfoList());
+            this.insOrderAdjustVo = insOrderAdjustVo;
+        }
 
         //人员处理
         this.setOwnersInfo(insOrdersVo.getOwnersInfo());

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java

@@ -112,6 +112,9 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "业务员信息")
     private Salesman salesmanInfo;
 
+    @Schema(description = "订单批改信息")
+    private InsOrderAdjust insOrderAdjust;
+
     @Data
     public static class Salesman{
         @Schema(description = "业务员姓名")

+ 31 - 31
commons/src/main/java/com/jzg/commons/entity/report/dto/ReportReceivableDataDetailDto.java

@@ -40,14 +40,14 @@ public class ReportReceivableDataDetailDto {
     /**
      * 保险公司名称
      */
-    @ExcelProperty(value = "保险公司", index = 0)
+    @ExcelProperty(value = {"保险公司", "保险公司"}, index = 0)
     @ColumnWidth(20)
     @Schema(description = "保险公司")
     private String companyName;
     /**
      *  地区
      */
-    @ExcelProperty(value = "地区", index = 1)
+    @ExcelProperty(value =  {"地区", "地区"}, index = 1)
     @ColumnWidth(20)
     @Schema(description = "地区")
     private String partnerCompanyName;
@@ -55,16 +55,16 @@ public class ReportReceivableDataDetailDto {
     /**
      *  应收总计
      */
-    @ExcelProperty(value = "应收总计", index = 2)
-    @ColumnWidth(15)
+    @ExcelProperty(value =  {"应收", "应收总计"}, index = 2)
+    @ColumnWidth(25)
     @Schema(description = "应收总计")
     private BigDecimal accountsReceivableSumMoney;
 
     /**
      *  应收手续费
      */
-    @ExcelProperty(value = "应收手续费", index = 3)
-    @ColumnWidth(15)
+    @ExcelProperty(value = {"应收", "应收手续费"}, index = 3)
+    @ColumnWidth(25)
     @Schema(description = "应收手续费")
     private BigDecimal accountsReceivableCommissionMoney;
 
@@ -72,16 +72,16 @@ public class ReportReceivableDataDetailDto {
     /**
      *  应收跟单费
      */
-    @ExcelProperty(value = "应收跟单费", index = 4)
-    @ColumnWidth(15)
+    @ExcelProperty(value = {"应收","应收跟单费"}, index = 4)
+    @ColumnWidth(25)
     @Schema(description = "应收跟单费")
     private BigDecimal accountsReceivableFollowUpFeeMoney;
 
     /**
      *  未开票总计
      */
-    @ExcelProperty(value = "未开票总计", index = 5)
-    @ColumnWidth(10)
+    @ExcelProperty(value = {"未开票","未开票总计"}, index = 5)
+    @ColumnWidth(25)
     @Schema(description = "未开票总计")
     private BigDecimal uninvoicedSumMoney;
 
@@ -89,22 +89,22 @@ public class ReportReceivableDataDetailDto {
     /**
      *  未开票手续费
      */
-    @ExcelProperty(value = "未开票手续费", index = 6)
-    @ColumnWidth(10)
+    @ExcelProperty(value = {"未开票","未开票手续费"}, index = 6)
+    @ColumnWidth(25)
     @Schema(description = "未开票手续费")
     private BigDecimal uninvoicedCommissionMoney;
     /**
      *  未开票跟单费
      */
-    @ExcelProperty(value = "未开票跟单费", index = 7)
-    @ColumnWidth(10)
+    @ExcelProperty(value = {"未开票","未开票跟单费"}, index = 7)
+    @ColumnWidth(25)
     @Schema(description = "未开票跟单费")
     private BigDecimal uninvoicedFollowUpFeeMoney;
 
     /**
      *  已开票总计
      */
-    @ExcelProperty(value = "已开票总计", index = 8)
+    @ExcelProperty(value = {"已开票","已开票总计"}, index = 8)
     @ColumnWidth(20)
     @Schema(description = "已开票总计")
     private BigDecimal invoicedSumMoney;
@@ -113,8 +113,8 @@ public class ReportReceivableDataDetailDto {
     /**
      *  已开票手续费
      */
-    @ExcelProperty(value = "已开票手续费", index = 9)
-    @ColumnWidth(20)
+    @ExcelProperty(value = {"已开票","已开票手续费"}, index = 9)
+    @ColumnWidth(25)
     @Schema(description = "已开票手续费")
     private BigDecimal invoicedCommissionMoney;
 
@@ -122,16 +122,16 @@ public class ReportReceivableDataDetailDto {
     /**
      *  已开票跟单费
      */
-    @ExcelProperty(value = "已开票跟单费", index = 10)
-    @ColumnWidth(15)
+    @ExcelProperty(value = {"已开票","已开票跟单费"}, index = 10)
+    @ColumnWidth(25)
     @Schema(description = "已开票跟单费")
     private BigDecimal invoicedFollowUpFeeMoney;
 
     /**
      *  未结算总计
      */
-    @ExcelProperty(value = "未结算总计", index = 11)
-    @ColumnWidth(20)
+    @ExcelProperty(value = {"未结算","未结算总计"}, index = 11)
+    @ColumnWidth(25)
     @Schema(description = "未结算总计")
     private BigDecimal unsettledSumMoney;
 
@@ -139,8 +139,8 @@ public class ReportReceivableDataDetailDto {
     /**
      *  未结算手续费
      */
-    @ExcelProperty(value = "未结算手续费", index = 12)
-    @ColumnWidth(20)
+    @ExcelProperty(value = {"未结算","未结算手续费"}, index = 12)
+    @ColumnWidth(25)
     @Schema(description = "未结算手续费")
     private BigDecimal unsettledCommissionMoney;
 
@@ -148,16 +148,16 @@ public class ReportReceivableDataDetailDto {
     /**
      *  未结算跟单费
      */
-    @ExcelProperty(value = "未结算跟单费", index = 13)
-    @ColumnWidth(15)
+    @ExcelProperty(value = {"未结算","未结算跟单费"}, index = 13)
+    @ColumnWidth(25)
     @Schema(description = "未结算跟单费")
     private BigDecimal unsettledFollowUpFeeMoney;
 
     /**
      *  已结算总计
      */
-    @ExcelProperty(value = "已结算总计", index = 14)
-    @ColumnWidth(20)
+    @ExcelProperty(value = {"已结算","已结算总计"}, index = 14)
+    @ColumnWidth(25)
     @Schema(description = "已结算总计")
     private BigDecimal settledSumMoney;
 
@@ -165,8 +165,8 @@ public class ReportReceivableDataDetailDto {
     /**
      *  已结算手续费
      */
-    @ExcelProperty(value = "已结算手续费", index = 15)
-    @ColumnWidth(20)
+    @ExcelProperty(value = {"已结算","已结算手续费"}, index = 15)
+    @ColumnWidth(25)
     @Schema(description = "已结算手续费")
     private BigDecimal settledCommissionMoney;
 
@@ -174,8 +174,8 @@ public class ReportReceivableDataDetailDto {
     /**
      *  已结算跟单费
      */
-    @ExcelProperty(value = "已结算跟单费", index = 16)
-    @ColumnWidth(15)
+    @ExcelProperty(value = {"已结算","已结算跟单费"}, index = 16)
+    @ColumnWidth(25)
     @Schema(description = "已结算跟单费")
     private BigDecimal settledFollowUpFeeMoney;
 }

+ 67 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AdjustAllRefundInfoVo.java

@@ -0,0 +1,67 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import com.jzg.commons.entity.orders.po.InsOrdersRisk;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "整单退明细VO")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AdjustAllRefundInfoVo {
+
+    @Schema(description = "批改表id")
+    private String adjustId;
+
+    @NotNull(message = "保险类型不能为空")
+    @Schema(description = "保险类型 0. 交强 1.商业 3.非车")
+    private Integer kindType;
+
+    @Schema(description = "保险类型名称")
+    private String kindName;
+
+    @Schema(description = "保单号")
+    private String policyNumber;
+
+    @Schema(description = "终保日期")
+    private LocalDateTime expiryDate;
+
+    @NotNull(message = "保费不能为空")
+    @Schema(description = "保费")
+    private BigDecimal premium;
+
+    @NotNull(message = "退款金额不能为空")
+    @Schema(description = "退款金额")
+    private BigDecimal refundAmount;
+
+
+    public AdjustAllRefundInfoVo(Integer type, List<InsOrdersRisk> risks, InsOrdersPolicy policie, OrderAdjustVo orderAdjustVo,String id) {
+        this.adjustId = id;
+        if (type == 0){
+            this.kindType = 0;
+            this.kindName = "交强险";
+            this.policyNumber = policie.getJqPolicyNo();
+            this.expiryDate = risks.stream().filter(risk -> risk.getRiskCode().equals("0507")).findFirst().get().getEndDate();
+            this.premium = orderAdjustVo.getAfterJqPremium();
+        }else if (type == 1){
+            this.kindType = 1;
+            this.kindName = "商业险";
+            this.policyNumber = policie.getSyPolicyNo();
+            this.expiryDate = risks.stream().filter(risk -> risk.getRiskCode().equals("0510")).findFirst().get().getEndDate();
+            this.premium = orderAdjustVo.getAfterSyPremium();
+        }else if (type == 2){
+            this.kindType = 2;
+            this.kindName = "驾意险";
+            this.policyNumber = policie.getJyPolicyNo();
+            this.premium = orderAdjustVo.getAfterJyPremium();
+        }
+    }
+}

+ 29 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AdjustAllRefundVo.java

@@ -0,0 +1,29 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.entity.orders.po.InsOrderAdjustInfo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Schema(description = "整单退VO")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AdjustAllRefundVo {
+
+    @Schema(description = "主键")
+    private String id;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "整单退明细VO")
+    private List<AdjustAllRefundInfoVo> infoVosList;
+
+    @Schema(description = "批改明细VO")
+    private List<InsOrderAdjustInfo> changeInfoVosList;
+
+}

+ 100 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionCenterVo.java

@@ -0,0 +1,100 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/8/15 14:58
+ */
+
+@Data
+public class DistributionCenterVo {
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 审核通过时间
+     */
+    private LocalDateTime auditApprovalTime;
+
+    /**
+     * 累计佣金
+     */
+    private BigDecimal totalAmount;
+
+    /**
+     * 待结算金额
+     */
+    private BigDecimal pendingAmount;
+
+    /**
+     * 退回佣金
+     */
+    private BigDecimal returnAmount;
+
+    /**
+     * 团队人数
+     */
+    private Integer teamNum;
+
+    /**
+     * 今日新增人数
+     */
+    private Integer todayNewNum;
+
+    /**
+     * 分销订单数
+     */
+    private Integer distributionOrderNum;
+
+    /**
+     * 今日分销订单数
+     */
+    private Integer todayDistributionOrderNum;
+
+    /**
+     * 累计保费
+     */
+    private BigDecimal totalPremium;
+
+    /**
+     * 今日保费
+     */
+    private BigDecimal todayPremium;
+
+    /**
+     * 一级佣金收益
+     */
+    private BigDecimal firstLevelCommission;
+
+    /**
+     * 今日一级佣金收益
+     */
+    private BigDecimal todayFirstLevelCommission;
+
+    /**
+     * 二级佣金收益
+     */
+    private BigDecimal secondLevelCommission;
+
+    /**
+     * 今日二级佣金收益
+     */
+    private BigDecimal todaySecondLevelCommission;
+
+    /**
+     * 三级佣金收益
+     */
+    private BigDecimal thirdLevelCommission;
+
+
+    /**
+     * 今日三级佣金收益
+     */
+    private BigDecimal todayThirdLevelCommission;
+}

+ 87 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionCommissionDetailVo.java

@@ -0,0 +1,87 @@
+package com.jzg.commons.entity.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jzg.commons.core.base.PageRequest;
+import lombok.Data;
+
+/**
+ * @author quchen
+ * @date 2025/8/14 10:52
+ * 分销佣金明细
+ */
+
+@Data
+public class DistributionCommissionDetailVo extends PageRequest {
+    /**
+     * 订单编号
+     */
+    @ExcelProperty(value = "订单编号")
+    private String orderNo;
+
+    /**
+     * 保费金额
+     */
+    @ExcelProperty(value = "保费金额")
+    private String premium;
+
+    /**
+     * 业务员
+     */
+    @ExcelProperty(value = "业务员")
+    private String salesman;
+
+    /**
+     * 业务员手机号
+     */
+    @ExcelProperty(value = "业务员手机号")
+    private String salesmanMobile;
+
+    /**
+     * 签单时间
+     */
+    @ExcelProperty(value = "签单时间")
+    private String signingTime;
+
+    /**
+     * 签单时间开始
+     */
+    @ExcelIgnore
+    private String signingTimeStart;
+
+    /**
+     * 签单时间结束
+     */
+    @ExcelIgnore
+    private String signingTimeEnd;
+
+    /**
+     * 分销员
+     */
+    @ExcelProperty(value = "分销员")
+    private String distributor;
+
+    /**
+     * 分销员手机号
+     */
+    @ExcelProperty(value = "分销员手机号")
+    private String distributorMobile;
+
+    /**
+     * 分销金额
+     */
+    @ExcelProperty(value = "分销金额")
+    private String commission;
+
+    /**
+     * 分销等级
+     */
+    @ExcelProperty(value = "分销等级")
+    private String distributionLevel;
+
+    /**
+     * 分销比例
+     */
+    @ExcelProperty(value = "分销比例")
+    private String distributionRatio;
+}

+ 24 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionInviteeVo.java

@@ -0,0 +1,24 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author quchen
+ * @date 2025/9/23 18:27
+ */
+
+@Data
+public class DistributionInviteeVo {
+    private String id;
+
+    private String name;
+
+    private String inviteePerson;
+
+    private BigDecimal commission;
+
+    private String level;
+
+}

+ 47 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionOrder.java

@@ -0,0 +1,47 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author quchen
+ * @date 2025/9/24 16:31
+ */
+
+@Data
+public class DistributionOrder {
+    @Schema(description = "用户id")
+    private String userId;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "邀请人")
+    private String inviteePerson;
+
+    @Schema(description = "分销层级")
+    private String level;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
+
+    @Schema(description = "保费")
+    private String premium;
+
+    @Schema(description = "贡献佣金")
+    private BigDecimal commission;
+
+    @Schema(description = "出单时间")
+    private String signingTime;
+
+    @Schema(description = "订单状态")
+    private String auditStatus;
+}

+ 62 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionOrderVo.java

@@ -0,0 +1,62 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/8/20 15:47
+ */
+
+@Data
+public class DistributionOrderVo {
+    @Schema(description = "订单条数")
+    private Integer orderCount;
+
+    @Schema(description = "订单佣金总和")
+    private BigDecimal commissionSum;
+
+    @Schema(description = "订单保费总和")
+    private BigDecimal premiumSum;
+
+    @Schema(description = "用户id")
+    private String userId;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "邀请人")
+    private String inviteePerson;
+
+    @Schema(description = "分销层级")
+    private String level;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
+
+    @Schema(description = "保费")
+    private String premium;
+
+    @Schema(description = "贡献佣金")
+    private BigDecimal commission;
+
+    @Schema(description = "出单时间")
+    private String signingTime;
+
+    private String signingTimeStart;
+
+    private String signingTimeEnd;
+
+    private String auditStatus;
+    @Schema(description = "分销订单")
+    private List<DistributionOrder> distributionOrders;
+}

+ 24 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionRelationVo.java

@@ -0,0 +1,24 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/8/7 16:55
+ */
+
+@Data
+public class DistributionRelationVo {
+    private String name;
+
+    private String mobile;
+
+    private LocalDateTime distributionTime;
+
+    private List<DistributionRelationVo> children;
+
+    private DistributionRelationVo parent;
+}

+ 23 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionTeamVo.java

@@ -0,0 +1,23 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author quchen
+ * @date 2025/8/19 15:42
+ */
+
+@Data
+public class DistributionTeamVo {
+    private String id;
+    private String name;
+    private String inviteePerson;
+    private String mobile;
+    private Integer level;
+    private BigDecimal commission;
+
+    private String joinTime;
+
+}

+ 54 - 0
commons/src/main/java/com/jzg/commons/entity/vo/IncomeAndExpenseVo.java

@@ -0,0 +1,54 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/9/28 9:25
+ */
+@Data
+public class IncomeAndExpenseVo {
+    private IncomeAndExpense incomeAndExpense;
+
+    private List<IncomeAndExpenseList> incomeAndExpenseList;
+    @Data
+    public static class IncomeAndExpense{
+        @Schema(description = "收入")
+        private BigDecimal income;
+
+        @Schema(description = "支出")
+        private BigDecimal expense;
+
+        @Schema(description = "余额")
+        private BigDecimal balance;
+
+        @Schema(description = "月份")
+        private String month;
+    }
+
+    @Data
+    public static class IncomeAndExpenseList{
+        @Schema(description = "状态 0-收入 1-支出")
+        private String incomeAndExpense;
+
+        @Schema(description = "金额")
+        private BigDecimal amount;
+
+        @Schema(description = "时间")
+        private LocalDateTime createTime;
+
+        @Schema(description = "备注")
+        private String remark;
+
+        @Schema(description = "车牌号")
+        private String licenseNo;
+
+        @Schema(description = "审核状态 0-待审核 1-审核通过 2-审核驳回")
+        private String status;
+    }
+}

+ 9 - 1
commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java

@@ -5,7 +5,7 @@ import com.jzg.commons.entity.po.InsFeeOrders;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 /**
  * @author quchen
@@ -24,6 +24,12 @@ public class InsFeeOrdersVo {
     @Schema(description = "费用id")
     private String costId;
 
+    @Schema(description = "用户id")
+    private String userId;
+
+    @Schema(description = "签单时间")
+    private LocalDateTime signTime;
+
     @Schema(description = "交强险保费")
     private String jqPremium;
 
@@ -91,6 +97,8 @@ public class InsFeeOrdersVo {
         this.orderNo = insFeeOrders.getOrderNo();
         this.agreementId = insFeeOrders.getAgreementId();
         this.costId = insFeeOrders.getCostId();
+        this.userId = insFeeOrders.getUserId();
+        this.signTime = insFeeOrders.getSigningTime();
         this.jqPremium = insFeeOrders.getJqPremium().toString();
         this.syPremium = insFeeOrders.getSyPremium().toString();
         this.jyPremium = insFeeOrders.getJyPremium().toString();

+ 18 - 0
commons/src/main/java/com/jzg/commons/entity/vo/OrderAdjustInfoVo.java

@@ -0,0 +1,18 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.entity.orders.po.InsOrderAdjustInfo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "订单批改明细表VO")
+@Data
+public class OrderAdjustInfoVo {
+
+    @Schema(description = "订单批改信息")
+    private OrderAdjustVo orderAdjustVo;
+
+    @Schema(description = "订单批改明细信息")
+    private List<InsOrderAdjustInfo> adjustInfos;
+}

+ 94 - 0
commons/src/main/java/com/jzg/commons/entity/vo/OrderAdjustVo.java

@@ -0,0 +1,94 @@
+package com.jzg.commons.entity.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "订单批改表VO")
+@Data
+public class OrderAdjustVo extends BaseModel {
+
+    @ExcelProperty("ID")
+    @Schema(description = "主键")
+    private String id;
+
+    @ExcelProperty("订单号")
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @ExcelProperty("车牌")
+    @Schema(description = "车牌")
+    private String licenseNo;
+
+    @ExcelIgnore
+    @Schema(description = "保司id")
+    private String companyId;
+
+    @ExcelProperty("保险公司")
+    @Schema(description = "保司名称")
+    private String companyName;
+
+    @ExcelProperty("保费")
+    @Schema(description = "保费")
+    private BigDecimal premium;
+
+    @ExcelIgnore
+    @Schema(description = "批单状态 0.订单批改中 1.待审核 2.审核通过 3.退回修改 4.拒绝批改")
+    private Integer status;
+
+    @ExcelProperty("批单状态")
+    @Schema(description = "批单状态 0.订单批改中 1.待审核 2.审核通过 3.退回修改 4.拒绝批改")
+    private String statusStr;
+
+    @ExcelIgnore
+    @Schema(description = "批改类型 0.整单退保 1.险种批改")
+    private Integer type;
+
+    @ExcelProperty("批改类型")
+    @Schema(description = "批改类型 0.整单退保 1.险种批改")
+    private String typeStr;
+
+    @ExcelProperty("保费变化")
+    @Schema(description = "保费变化")
+    private BigDecimal changePremium;
+
+    @ExcelProperty("批改后保费")
+    @Schema(description = "批改后保费")
+    private BigDecimal afterPremium;
+
+
+    @ExcelIgnore
+    @Schema(description = "批改后交强保费")
+    private BigDecimal afterJqPremium;
+
+    @ExcelIgnore
+    @Schema(description = "批改后商业保费")
+    private BigDecimal afterSyPremium;
+
+    @ExcelIgnore
+    @Schema(description = "批改后驾意保费")
+    private BigDecimal afterJyPremium;
+
+    @ExcelProperty("批改人")
+    @Schema(description = "创建人")
+    private String createBy;
+
+    @ExcelProperty("批改时间")
+    @Schema(description = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+//    @Schema(description = "退款金额")
+//    private BigDecimal subAmount;
+//
+//    @Schema(description = "补缴金额")
+//    private BigDecimal addAmount;
+}

+ 37 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionAuditListVo.java

@@ -0,0 +1,37 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/8/12 10:13
+ */
+
+@Data
+public class SysDistributionAuditListVo {
+    private String id;
+
+    private String name;
+
+    private String mobile;
+
+    private String typeAttr;
+
+    private String deptId;
+
+    private String deptName;
+
+    private String remark;
+
+    private String referrerId;
+
+    private String referrerName;
+
+    private LocalDateTime applyTime;
+
+    private LocalDateTime auditTime;
+
+    private String auditPerson;
+}

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionAuditVo.java

@@ -0,0 +1,57 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/8/11 18:20
+ */
+
+@Data
+public class SysDistributionAuditVo extends PageRequest {
+    private String id;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "审核状态 0-待审核 1-通过 2-驳回 3-自动审核")
+    private String auditStatus;
+
+    @Schema(description = "推荐上级")
+    private String inviteePerson;
+
+    @Schema(description = "申请时间开始")
+    private LocalDateTime applyTimeStart;
+
+    @Schema(description = "申请时间结束")
+    private LocalDateTime applyTimeEnd;
+
+    @Schema(description = "签单时间开始")
+    private LocalDateTime signingTimeStart;
+
+    @Schema(description = "签单时间结束")
+    private LocalDateTime signingTimeEnd;
+
+    @Schema(description = "租户code")
+    private String systemCode;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "审核人")
+    private String auditPerson;
+
+    @Schema(description = "审核时间开始")
+    private LocalDateTime auditTimeStart;
+
+    @Schema(description = "审核时间结束")
+    private LocalDateTime auditTimeEnd;
+
+}

+ 58 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionListVo.java

@@ -0,0 +1,58 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @author quchen
+ * @date 2025/9/15 15:55
+ */
+
+@Data
+public class SysDistributionListVo extends PageRequest {
+
+    private String id;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "类型")
+    private String typeAttr;
+
+    @Schema(description = "部门id")
+    private String deptId;
+
+    @Schema(description = "部门名称")
+    private String deptName;
+
+    @Schema(description = "累计出单保费")
+    private BigDecimal totalPremium;
+
+    @Schema(description = "累计佣金")
+    private BigDecimal totalFee;
+
+    @Schema(description = "累计邀请")
+    private long totalInvite;
+
+    @Schema(description = "推荐上级")
+    private String inviteePersonId;
+    @Schema(description = "推荐上级名称")
+    private String inviteePerson;
+
+    @Schema(description = "加入时间开始")
+    private LocalDateTime joinTimeStart;
+
+    @Schema(description = "加入时间结束")
+    private LocalDateTime joinTimeEnd;
+
+    @Schema(description = "加入时间")
+    private LocalDateTime joinTime;
+
+}

+ 58 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysDistributionSettingVo.java

@@ -0,0 +1,58 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/8/11 9:35
+ */
+
+@Data
+public class SysDistributionSettingVo {
+    private String id;
+
+    /**
+     * 分销模式:1-一级分销 2-二级分销 3-三级分销
+     */
+    private String distributionMode;
+
+    /**
+     * 一级佣金比例(%)
+     */
+    private BigDecimal commissionRatioLevel1;
+
+    /**
+     * 二级佣金比例(%)
+     */
+    private BigDecimal commissionRatioLevel2;
+
+    /**
+     * 三级佣金比例(%)
+     */
+    private BigDecimal commissionRatioLevel3;
+
+    /**
+     * 分销员招募方式 1-手动申请 2-加入组织自动成为分销员
+     */
+    private String recruitmentMethod;
+
+    /**
+     * 不参与分销的机构范围:1-全部机构 2-部分机构
+     */
+    private String excludeDeptScope;
+
+    /**
+     * 不参与分销的机构id
+     */
+    private List<String> excludeDeptIds;
+
+    /**
+     * 租户code
+     */
+    private String systemCode;
+
+
+}

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserJzgInfoBankCardVo.java

@@ -32,6 +32,12 @@ public class SysUserJzgInfoBankCardVo extends PageRequest {
     @Schema(description = "开户行地址")
     private String bankAddress;
 
+    @Schema(description = "持卡人姓名")
+    private String cardHolderName;
+
+    @Schema(description = "持卡人手机号")
+    private String cardHolderMobile;
+
     @Schema(description = "附件")
     private String attachment;
 

+ 50 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserWalletVo.java

@@ -0,0 +1,50 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author quchen
+ * @date 2025/9/19 9:22
+ */
+
+@Data
+public class SysUserWalletVo {
+    @Schema(description = "用户Id")
+    private String userId;
+
+    @Schema(description = "机构id")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    private String deptName;
+
+    @Schema(description = "钱包余额")
+    private BigDecimal walletBalance;
+
+    @Schema(description = "提现中金额")
+    private BigDecimal withdrawingBalance;
+
+    @Schema(description = "积分")
+    private BigDecimal integral;
+
+    @Schema(description = "签单保费")
+    private BigDecimal signPremium;
+
+    @Schema(description = "累计收入")
+    private BigDecimal totalIncome;
+
+    @Schema(description = "订单笔数")
+    private String orderCount;
+
+    @Schema(description = "累计邀请人数")
+    private String totalInviteCount;
+
+    @Schema(description = "今日收入")
+    private BigDecimal todayIncome;
+
+    @Schema(description = "今日支出")
+    private BigDecimal todayExpense;
+}

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/vo/UserInfoVo.java

@@ -16,6 +16,8 @@ public class UserInfoVo {
     @Schema(description = "主键id")
     private String id;
 
+    @Schema(description = "infoId")
+    private String infoId;
 
     @Schema(description = "用户id")
     private String userId;

+ 2 - 0
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -24,6 +24,8 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://192.168.0.20:8080");
         corsConfiguration.addAllowedOrigin("http://localhost:8080");
         corsConfiguration.addAllowedOrigin("http://192.168.0.20:9000");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.111:9000");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.111:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.16:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.16:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.20:9001");

+ 2 - 2
gateway/src/main/resources/application-dev.yml

@@ -28,7 +28,7 @@ spring:
         - id: platform_route
           uri: http://localhost:8083/
           predicates:
-            - Path=/userRole/**,/system/**,/file/**,/user/**,/esmInsCompany/**,/jyxConfig/**,/qrBarcode/**,/sysDept/**,/manager/attribution/**
+            - Path=/userRole/**,/system/**,/file/**,/user/**,/esmInsCompany/**,/jyxConfig/**,/qrBarcode/**,/sysDept/**,/manager/attribution/**,/manager/attributionTemplate/**
 
         - id: tenant_route
           uri: http://localhost:8084/
@@ -38,7 +38,7 @@ spring:
         - id: summary_route
           uri: http://localhost:9898/
           predicates:
-            - Path= /order/identify/** ,/supplementOrder/**,/order/carModel/**,/unify/**,/order/taskImages/**,/order/qrCode/**,/orderTrack/**,/feeAudit/**
+            - Path= /order/identify/** ,/supplementOrder/**,/order/carModel/**,/unify/**,/order/taskImages/**,/order/qrCode/**,/orderTrack/**,/feeAudit/**,/adjust/**
 
         - id: costsorrule_route
           uri: http://localhost:8085/

+ 5 - 2
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java

@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-@FeignClient(name="jzg-organization",url = "http://192.168.0.250:8084/")
+@FeignClient(name="jzg-organization",url = "http://localhost:8084/")
 public interface OrgClient {
 
     /**
@@ -117,5 +117,8 @@ public interface OrgClient {
      * 获取租户用户
      */
     @GetMapping(value = "userInfo/getUserInfo")
-    public HttpResult<SysUserJzgInfo> getUserInfo(String id);
+    public HttpResult<SysUserJzgInfo> getUserInfo(String userId);
+
+    @GetMapping(value = "userInfo/getUserInfoById")
+    public HttpResult<SysUserJzgInfo> getUserInfoById(String id);
 }

+ 121 - 26
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/component/HtCrawlerRequestComponent.java

@@ -18,11 +18,12 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 
-import java.time.Duration;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * @description:
@@ -39,6 +40,8 @@ public class HtCrawlerRequestComponent {
 
     private final RedissonClient redissonClient;
 
+    private final HuaTaiCrawlerCacheComponent huaTaiCrawlerCacheComponent;
+
     /**
      * 登录
      * @param username
@@ -47,22 +50,27 @@ public class HtCrawlerRequestComponent {
      * @param loginsNumber
      * @return
      */
-    public List<String> authenticate(String username, String password, String comcode, int loginsNumber) {
+    public String authenticate(String username, String password, String comcode, int loginsNumber) {
+        String haTaiCookie = getHaTaiCookie(RequestUrl.NE_COOKIE.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()));
+        System.out.println(haTaiCookie);
         HtCrawlerLoginRequest htCrawlerLoginRequest = new HtCrawlerLoginRequest(username, password, comcode);
-        ResponseEntity<HtCrawlerLoginResponse> loginResponseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()), htCrawlerLoginRequest, HtCrawlerLoginResponse.class);
-        List<String> cookies = loginResponseEntity.getHeaders().get("Set-Cookie");
-        if (cookies != null && !cookies.isEmpty()) {
-            Map<String, Object> authorizationMap = buildCache(loginResponseEntity);
-            RMap<Object, Object> map = redissonClient.getMap(CacheConstant.HENGBANG_AUTHORIZATION + username);
-            map.putAll(authorizationMap);
-            map.expire(Duration.ofDays(CacheConstant.GR_SPECIAL_AGREEMENT_TIME));
-            return (List<String>) authorizationMap.get(HtRequestConstant.COOKIE);
-        }
-        loginsNumber = loginsNumber - 1;
-        if (loginsNumber <= 0) {
-            throw new SystemException("华泰财险登录异常");
-        }
-        return authenticate(username, password, comcode, loginsNumber);
+        HttpHeaders httpHeaders = getHeaders();
+        httpHeaders.add("referer",RequestUrl.COOKIE.getUrl());
+        ResponseEntity<String> loginResponseEntity = requestComponent.objectPost(RequestUrl.NE_AUTHENTICATE.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()), htCrawlerLoginRequest, String.class,httpHeaders);
+        System.out.println(loginResponseEntity);
+        return  loginResponseEntity.getBody();
+    }
+
+    /**
+     * session_keep
+     * @return
+     */
+    public String sessionKeep(String referer){
+        HttpHeaders httpHeaders = getHeaders();
+        httpHeaders.add("referer",referer);
+        String response = requestComponent.get(RequestUrl.NE_SESSION_KEEP.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()),null,null, String.class,httpHeaders);
+        System.out.println(response);
+        return response;
     }
 
     public Map<String, Object> buildCache(ResponseEntity<HtCrawlerLoginResponse> loginResponseEntity) {
@@ -74,24 +82,111 @@ public class HtCrawlerRequestComponent {
 
     /**
      * 获取cookie
-     * @param username
      * @return
      */
-    public List<String> getCookie(String username) {
-        return (List<String>) redissonClient.getMap(CacheConstant.HUATAI_AUTHORIZATION + username).get(HtRequestConstant.COOKIE);
+    public String getCookie() {
+        return  huaTaiCrawlerCacheComponent.getCookie();
+    }
+
+    public String  getHaTaiCookie(String link) {
+        try {
+            // 请求头设置
+            String[] headers = {
+                    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
+                    "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8",
+                    "Cache-Control: no-cache",
+                    "Connection: keep-alive",
+                    "Pragma: no-cache",
+                    "Upgrade-Insecure-Requests: 1",
+                    "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
+            };
+            // 创建URL对象
+            URL url = new URL(link);
+
+            // 打开连接
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+
+            // 设置请求方法为GET
+            connection.setRequestMethod("GET");
+            // 添加请求头
+            for (String header : headers) {
+                String[] parts = header.split(":", 2);
+                if (parts.length == 2) {
+                    connection.setRequestProperty(parts[0].trim(), parts[1].trim());
+                }
+            }
+
+            // 获取响应码
+            int responseCode = connection.getResponseCode();
+            System.out.println("响应码: " + responseCode);
+
+            // 获取所有响应头
+            Map<String, List<String>> headersList = connection.getHeaderFields();
+            StringBuilder builder = new StringBuilder();
+            // 检查并获取Cookie
+            if (headersList.containsKey("Set-Cookie")) {
+                List<String> cookies = headersList.get("Set-Cookie");
+                System.out.println("获取到的Cookie:");
+                String s = cookies.get(0).split(";")[0];
+                String s1 = cookies.get(1).split(";")[0];
+                builder.append(s1).append(";").append(s);
+                huaTaiCrawlerCacheComponent.cacheCookie(builder.toString());
+                return builder.toString();
+            } else {
+                System.out.println("响应头中没有找到Cookie");
+            }
+
+            // 关闭连接
+            connection.disconnect();
+
+        } catch (IOException e) {
+            System.err.println("请求过程中发生错误: " + e.getMessage());
+            e.printStackTrace();
+        }
+        return null;
     }
 
     /**
      * 获取请求头
      * @return
      */
-    public HttpHeaders getHeaders(String username, String password, String comcode) {
-        List<String> cookie = getCookie(username);
-        if (cookie == null || cookie.isEmpty()) {
-            cookie = authenticate(username, password, comcode, HtRequestConstant.REQUEST_NUMBER);
+    public HttpHeaders getHeaders() {
+        String cookie = getCookie();
+        if (cookie.isEmpty()) {
+            cookie = getHaTaiCookie(RequestUrl.NE_COOKIE.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()));
         }
         HttpHeaders headers = new HttpHeaders();
-        headers.add(HtRequestConstant.COOKIE, cookie.stream().collect(Collectors.joining(";")));
+        headers.add(HtRequestConstant.COOKIE, cookie);
+        headers.add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7");
+        headers.add("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8");
+        headers.add("Cache-Control", "no-cache");
+        headers.add("Connection","keep-alive");
+        headers.add("Content-Type", "application/x-www-form-urlencoded");
+        headers.add("Origin", "http://172.16.100.37:9999");
+        headers.add("Pragma", "no-cache");
+        headers.add("Upgrade-Insecure-Requests", "1");
+        headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36");
+
+        return headers;
+    }
+
+    public HttpHeaders getHeaders1() {
+        String cookie = getCookie();
+        if (cookie.isEmpty()) {
+            cookie = getHaTaiCookie(RequestUrl.NE_COOKIE.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()));
+        }
+        HttpHeaders headers = new HttpHeaders();
+        headers.add(HtRequestConstant.COOKIE, cookie);
+        headers.add("Accept", "application/json, text/javascript, */*; q=0.01");
+        headers.add("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8");
+        headers.add("Cache-Control", "no-cache");
+        headers.add("Connection","keep-alive");
+        headers.add("Content-Type", "application/x-www-form-urlencoded");
+        headers.add("Origin", "http://172.16.100.37:9999");
+        headers.add("Pragma", "no-cache");
+        headers.add("Upgrade-Insecure-Requests", "1");
+        headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36");
+
         return headers;
     }
 
@@ -102,7 +197,7 @@ public class HtCrawlerRequestComponent {
      * @return
      */
     public HtCrawlerCarQueryResponse.DataDTO carQuery(HtCrawlerCarQueryRequest htCrawlerCarQueryRequest, HttpHeaders headers) throws Exception {
-        ResponseEntity<HtCrawlerCarQueryResponse> carQueryResponseEntity = requestComponent.objectPost(RequestUrl.CAR_QUERY.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()), htCrawlerCarQueryRequest, HtCrawlerCarQueryResponse.class, headers);
+        ResponseEntity<HtCrawlerCarQueryResponse> carQueryResponseEntity = requestComponent.objectPost(RequestUrl.NE_CAR_QUERY.getRequestUrl(huaTaiCrawlerProperties.getBaseUrl()), htCrawlerCarQueryRequest, HtCrawlerCarQueryResponse.class, headers);
         HtCrawlerCarQueryResponse carQueryResponse = carQueryResponseEntity.getBody();
         String decryptKey = HuaTaiCryptUtil.RSADecrypt(carQueryResponse.getAccessToken());
         String decryptData = HuaTaiCryptUtil.AESDecrypt(carQueryResponse.getData(), decryptKey);

+ 37 - 0
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/component/HuaTaiCrawlerCacheComponent.java

@@ -0,0 +1,37 @@
+package com.jzg.quotation.huatai.crawler.component;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RMap;
+import org.redisson.api.RedissonClient;
+import org.springframework.stereotype.Component;
+
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class HuaTaiCrawlerCacheComponent {
+
+    private final RedissonClient redissonClient;
+
+    public static final String HUATAI_COOKIE = "huatai:cookie:";
+
+    public static final String COOKIE = "Cookie:";
+
+    public void cacheCookie(String cookie) {
+        Map<String, String> authorizationMap = new HashMap<>();
+
+        authorizationMap.put(COOKIE, cookie);
+        RMap<Object, Object> map = redissonClient.getMap(HUATAI_COOKIE);
+        map.putAll(authorizationMap);
+        map.expire(Duration.ofHours(3L));
+    }
+
+    public String getCookie() {
+        return (String) redissonClient.getMap(HUATAI_COOKIE).get(COOKIE);
+    }
+
+}

+ 26 - 10
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/constant/enums/RequestUrl.java

@@ -12,22 +12,38 @@ import lombok.Getter;
 @AllArgsConstructor
 @Getter
 public enum RequestUrl implements CrawlerRequestUrlStandard {
-    AUTHENTICATE("/htcsp/ShakeHandsAction.do?cmd=loginWelcom", "登录"),
 
-    CAR_QUERY("/htcsp/VehicleInfoEntryAction.do?cmd=carquery", "车型查询"),
-    SAVE_ONE_STEP("/htcsp/VehicleInfoEntryAction.do?cmd=saveOneStept", "保存车辆信息和车主等信息"),
-    QUOTE_PRICE("/htcsp/VehicleInfoEntryAction.do?cmd=carquery", "报价"),
+    NE_COOKIE("/htcsp", "获取cookie"),
+    COOKIE("http://172.16.100.37:9999/htcsp", "获取cookie"),
 
-    GET_UPLOAD_URL("/htcsp/UploadAction.do?cmd=getUploadUrl", "获取影像上传路径"),
-    UPLOAD("/app/ImgFileUpload/upload.do", "影像上传"),
+    NE_SESSION_KEEP("sessionKeep", "session连接"),
 
-    SUBMIT("/htcsp/checkInsAction.do?cmd=submit4ajax&SS=SS", "提交核保"),
+    SESSION_KEEP("http://172.16.100.37:9999/htcsp/ShakeHandsAction.do?cmd=contentInit", "session连接"),
 
-    ORDER_STATE("/htcsp/QuotationQueryAction.do?cmd=quotationListAll", "查询订单状态"),
+    NE_AUTHENTICATE("/login", "登录"),
 
-    PAYMENT_LINK("/htcsp/PaymentAction.do?cmd=Sendelectronicprop", "获取支付链接"),
+    AUTHENTICATE("http://172.16.100.37:9999/htcsp/ShakeHandsAction.do?cmd=loginWelcom", "登录"),
 
-    DOWNLOAD_POLICY("/htcsp/DocumentPrintAction.do?cmd=electronicPolicyEndorseDownload", "下载保单"),
+    NE_CAR_QUERY("/carquery", "车型查询"),
+
+    CAR_QUERY("http://172.16.100.37:9999/htcsp/VehicleInfoEntryAction.do?cmd=carquery", "车型查询"),
+
+    NE_SAVE_ONE_STEP("/saveOneStept", "保存车辆信息和车主等信息"),
+    SAVE_ONE_STEP("http://172.16.100.37:9999/htcsp/VehicleInfoEntryAction.do?cmd=saveOneStept", "保存车辆信息和车主等信息"),
+
+    NE_QUOTE_PRICE("/quotation", "报价"),
+    QUOTE_PRICE("http://172.16.100.37:9999/htcsp/VehicleInfoEntryAction.do?cmd=carquery", "报价"),
+
+    GET_UPLOAD_URL("http://172.16.100.37:9999/htcsp/UploadAction.do?cmd=getUploadUrl", "获取影像上传路径"),
+    UPLOAD("http://172.16.100.37:9999/app/ImgFileUpload/upload.do", "影像上传"),
+
+    SUBMIT("http://172.16.100.37:9999/htcsp/checkInsAction.do?cmd=submit4ajax&SS=SS", "提交核保"),
+
+    ORDER_STATE("http://172.16.100.37:9999/htcsp/QuotationQueryAction.do?cmd=quotationListAll", "查询订单状态"),
+
+    PAYMENT_LINK("http://172.16.100.37:9999/htcsp/PaymentAction.do?cmd=Sendelectronicprop", "获取支付链接"),
+
+    DOWNLOAD_POLICY("http://172.16.100.37:9999/htcsp/DocumentPrintAction.do?cmd=electronicPolicyEndorseDownload", "下载保单"),
     ;
 
     private final String url;

+ 23 - 2
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Request/HtCrawlerCarQueryRequest.java

@@ -2,6 +2,7 @@ package com.jzg.quotation.huatai.crawler.entity.Request;
 
 
 import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.huatai.crawler.util.HuaTaiCryptUtil;
@@ -40,11 +41,14 @@ public class HtCrawlerCarQueryRequest implements Serializable {
             throw new SystemException(e.getMessage());
         }
     }
-
+    @JsonProperty("sourceCode")
     private String sourceCode = "8";
+    @JsonProperty("accessToken")
     private String accessToken;
+    @JsonProperty("data")
     private String data;
-    private String insuredCode;
+    @JsonProperty("insuredCode")
+    private String insuredCode = "";
 
     /**
      * {
@@ -71,22 +75,39 @@ public class HtCrawlerCarQueryRequest implements Serializable {
     public static class DataDTO implements Serializable {
         @Serial
         private static final long serialVersionUID = -921901450062929380L;
+        @JsonProperty("vehicleModel")
         private String vehicleModel;
+        @JsonProperty("motortypecode")
         private String motortypecode;
+        @JsonProperty("motorusagetypecode")
         private String motorusagetypecode;
+        @JsonProperty("EACSP_MODEL_CODE_QUERY_new")
         private String EACSP_MODEL_CODE_QUERY_new;
+        @JsonProperty("EACSP_MODEL_CODE_QUERY_old")
         private String EACSP_MODEL_CODE_QUERY_old;
+        @JsonProperty("licenseplateno")
         private String licenseplateno;
+        @JsonProperty("engineno")
         private String engineno;
+        @JsonProperty("vin")
         private String vin;
+        @JsonProperty("pageno")
         private String pageno = "1";
+        @JsonProperty("rowsperpage")
         private String rowsperpage = "10";
+        @JsonProperty("reformRisk")
         private String reformRisk;
+        @JsonProperty("modelcodexh")
         private String modelcodexh;
+        @JsonProperty("checkno")
         private String checkno;
+        @JsonProperty("modelflag")
         private String modelflag = "1";
+        @JsonProperty("checkcode")
         private String checkcode;
+        @JsonProperty("gdjgvehiclecheckflag")
         private String gdjgvehiclecheckflag;
+        @JsonProperty("jLlxVehicleList")
         private List<String> jLlxVehicleList;
     }
 }

+ 17 - 1
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Request/HtCrawlerLoginRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.huatai.crawler.entity.Request;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.io.Serial;
@@ -20,21 +21,36 @@ public class HtCrawlerLoginRequest implements Serializable {
         this.password = password;
         this.comcode = comcode;
     }
-
+    @JsonProperty("username")
     private String username;
+    @JsonProperty("password")
     private String password;
+    @JsonProperty("comcode")
     private String comcode;
+    @JsonProperty("verificationCode")
     private String verificationCode;
+    @JsonProperty("yanzhengtupianflag")
     private String yanzhengtupianflag;
+    @JsonProperty("brownVerb")
     private String brownVerb = "122.0.0.0";
+    @JsonProperty("brownVern")
     private String brownVern = "Chrome";
+    @JsonProperty("bindflag")
     private String bindflag;
+    @JsonProperty("customerIp")
     private String customerIp = "127.0.0.1";
+    @JsonProperty("customerCity")
     private String customerCity = "未知";
+    @JsonProperty("userIsNowFlag")
     private String userIsNowFlag;
+    @JsonProperty("sendNecessityIpt")
     private String sendNecessityIpt = "X";
+    @JsonProperty("wwaUserCode")
     private String wwaUserCode;
+    @JsonProperty("weChatFlag")
     private String weChatFlag;
+    @JsonProperty("isVpn")
     private String isVpn = "1";
+    @JsonProperty("validStatus")
     private String validStatus = "1";
 }

+ 33 - 0
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/vo/LoginVPNResult.java

@@ -0,0 +1,33 @@
+package com.jzg.quotation.huatai.crawler.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+
+@Data
+public class LoginVPNResult {
+
+    @Serial
+    private static final long serialVersionUID = -1L;
+    private boolean success;
+    private String errorMessage;
+    private String sessionInfo;
+
+    public LoginVPNResult(boolean success, String errorMessage, String sessionInfo) {
+        this.success = success;
+        this.errorMessage = errorMessage;
+        this.sessionInfo = sessionInfo;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public String getSessionInfo() {
+        return sessionInfo;
+    }
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 26 - 8
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java


+ 1 - 1
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/util/HuaTaiCryptUtil.java

@@ -351,7 +351,7 @@ public class HuaTaiCryptUtil {
      * @return
      * @throws Exception
      */
-    public static String RSAEncrypt(String base64Text) throws Exception {
+    public static String                                                                                                                          RSAEncrypt(String base64Text) throws Exception {
         // 计算最大块长度(字节)
         if (base64Text.length() > MAX_LENGTH_ENCRYPT) {
             List<String> blocks = splitIntoBlocks(base64Text, BLOCK_SIZE_ENCRYPT);

+ 109 - 5
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java

@@ -3,15 +3,19 @@ package com.jzg.quotation.summary.aop;
 import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
+import com.jzg.commons.entity.dto.VerifyAdjustParam;
+import com.jzg.commons.entity.orders.po.InsOrderAdjust;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersTrack;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
+import com.jzg.commons.entity.vo.AdjustAllRefundVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.constant.SpElMapping;
 import com.jzg.quotation.commons.utils.SpElFieldExtractor;
 import com.jzg.quotation.summary.constants.QuoteNumberConstant;
+import com.jzg.quotation.summary.service.InsOrderAdjustService;
 import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
 import com.jzg.quotation.summary.service.InsOrdersService;
 import com.jzg.quotation.summary.service.InsOrdersTrackService;
@@ -49,6 +53,9 @@ public class OrderOperationLogAspect {
     @Autowired
     private SpElFieldExtractor fieldExtractor;
 
+    @Autowired
+    private InsOrderAdjustService insOrderAdjustService;
+
     @Around("@annotation(log)")
     public Object handleLog(ProceedingJoinPoint joinPoint, OrderOperationLog log) throws Throwable {
         // 获取方法信息和参数
@@ -113,11 +120,108 @@ public class OrderOperationLogAspect {
                 InsOrders after = loadAfterState(orderStatusVo.getOrder().getOrdersNo()); // 可选:新状态
                 this.getOrderStatusLog(orderStatusVo.getOrder().getOrdersNo(),before,after,result,log);
                 break;
-
+            // 提交批改申请
+            case 11:
+                // 通过 SpEL 提取 入参
+                AdjustAllRefundVo adjustAllRefundVo = parser.parseExpression(log.orderSpEl()).getValue(context, AdjustAllRefundVo.class);
+                result = joinPoint.proceed();
+                this.adjustSubmitLog(adjustAllRefundVo.getOrderNo(),result,log);
+                break;
+            // 审核批改申请
+            case 12:
+                // 通过 SpEL 提取 入参
+                VerifyAdjustParam param = parser.parseExpression(log.orderSpEl()).getValue(context, VerifyAdjustParam.class);
+                result = joinPoint.proceed();
+                this.adjustVerifyLog(param,result,log);
+                break;
+            // 撤销批改申请
+            case 13:
+                // 通过 SpEL 提取 入参
+                String orderNo = parser.parseExpression(log.orderSpEl()).getValue(context, String.class);
+                result = joinPoint.proceed();
+                this.adjustSubmitLog(orderNo,result,log);
+                break;
         }
         return result;
     }
 
+    /**
+     * 审核批改订单
+     * @param param
+     * @param result
+     * @param log
+     */
+    private void adjustVerifyLog(VerifyAdjustParam param, Object result, OrderOperationLog log) {
+
+        // 定义要提取的字段
+        List<SpElMapping> mappings = List.of(
+                new SpElMapping("msg", "#ret.msg"),
+                new SpElMapping("code", "#ret.code"),
+                new SpElMapping("data", "#ret.data")
+        );
+        // 执行提取
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
+        InsOrderAdjust adjust = insOrderAdjustService.getById(param.getId());
+        InsOrdersTrack track = new InsOrdersTrack();
+        track.setOrderNo(adjust.getOrderNo());
+        track.setModule(log.module());
+        track.setSubModule(log.subModule());
+        track.setOptType(log.optType().getCode());
+        track.setOptContent(log.description());
+        track.setCompanyId(adjust.getCompanyId());
+        track.setLicenseNo(adjust.getLicenseNo());
+        if(extracted.get("code").equals(200)){
+            if(param.getStatus().equals(2)){
+                track.setChangeAfter("批改已完成");
+                track.setOptContent("订单批改申请审核通过");
+            }else if(param.getStatus().equals(3)){
+                track.setChangeAfter("退回修改");
+                track.setOptContent("退回订单批改申请");
+                track.setResult(param.getRefuse());
+            }else if(param.getStatus().equals(4)){
+                track.setChangeAfter("拒绝批改");
+                track.setOptContent("拒绝订单批改申请");
+                track.setResult(param.getRefuse());
+            }
+            track.setStatus(QuoteNumberConstant.QuoteResult.SUCCESS.getCode());
+            traceService.save(track);
+        }
+
+    }
+
+    /**
+     * 提交/撤销批改订单
+     * @param orderNo
+     * @param result
+     * @param log
+     */
+    private void adjustSubmitLog(String orderNo, Object result, OrderOperationLog log) {
+
+        // 定义要提取的字段
+        List<SpElMapping> mappings = List.of(
+                new SpElMapping("msg", "#ret.msg"),
+                new SpElMapping("code", "#ret.code"),
+                new SpElMapping("data", "#ret.data")
+        );
+        // 执行提取
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
+        InsOrders insOrders = orderService.getById(orderNo);
+        InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());
+        InsOrdersTrack track = new InsOrdersTrack();
+        track.setOrderNo(orderNo);
+        track.setModule(log.module());
+        track.setSubModule(log.subModule());
+        track.setOptType(log.optType().getCode());
+        track.setOptContent(log.description());
+        track.setCompanyId(insOrders.getCompanyId());
+        track.setLicenseNo(carInfo.getLicenseNo());
+
+        if(extracted.get("code").equals(200)){
+            track.setStatus(QuoteNumberConstant.QuoteResult.SUCCESS.getCode());
+            traceService.save(track);
+        }
+    }
+
     /**
      * 更新订单状态日志
      * @param orderId
@@ -136,7 +240,7 @@ public class OrderOperationLogAspect {
         // 执行提取
         Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(orderId);
-        if(extracted.get("code").equals("200")){
+        if(extracted.get("code").equals(200)){
             if(!before.getOrderStatus().equals(after.getOrderStatus())){
                 InsOrdersTrack track = new InsOrdersTrack();
                 track.setOrderNo(orderId);
@@ -181,7 +285,7 @@ public class OrderOperationLogAspect {
         track.setOptContent(log.description());
         track.setCompanyId(insOrders.getCompanyId());
         track.setLicenseNo(carInfo.getLicenseNo());
-        if(extracted.get("code").equals("200")){
+        if(extracted.get("code").equals(200)){
             track.setStatus(QuoteNumberConstant.QuoteResult.SUCCESS.getCode());
             track.setChangeBefore("电子保单未下载");
             track.setChangeAfter("电子保单已下载");
@@ -213,7 +317,7 @@ public class OrderOperationLogAspect {
         Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
         InsOrders insOrders = orderService.getById(orderId);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());
-        if(extracted.get("code").equals("200")){
+        if(extracted.get("code").equals(200)){
             InsOrdersTrack track = new InsOrdersTrack();
             track.setOrderNo(orderId);
             track.setModule(log.module());
@@ -255,7 +359,7 @@ public class OrderOperationLogAspect {
         track.setLicenseNo(carInfo.getLicenseNo());
         track.setChangeBefore("待核保");
 
-        if(extracted.get("code").equals("200")){
+        if(extracted.get("code").equals(200)){
             track.setStatus(QuoteNumberConstant.QuoteResult.SUCCESS.getCode());
             track.setResult("核保通过");
             track.setChangeAfter(InsOrderStatusEnum.PAY_PENDING.getDesc());

+ 1 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -665,6 +665,7 @@ public class QuoteVerificationAspect {
         insFeeOrders.setOrderNo(insOrders.getId());
         insFeeOrders.setAgreementId(insOrders.getAgreementId());
         insFeeOrders.setCostId(costId);
+        insFeeOrders.setUserId(insOrders.getRealQuoteUserId());
         insFeeOrders.setJqPremium(insOrdersCosts.getJqPremium());
         insFeeOrders.setSyPremium(insOrdersCosts.getSyPremium());
         insFeeOrders.setJyPremium(insOrdersCosts.getJyPremium());

+ 4 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/constants/QuoteNumberConstant.java

@@ -89,6 +89,10 @@ public class QuoteNumberConstant {
         OPT_TYPE_8(8,"下载电子保单"),
         OPT_TYPE_9(9,"同步订单"),
         OPT_TYPE_10(10,"订单编辑"),
+        OPT_TYPE_11(11,"提交批改申请"),
+        OPT_TYPE_12(12,"批改审核"),
+        OPT_TYPE_13(13,"撤销批改"),
+
         ;
         private Integer code;
         private String desc;

+ 22 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeOrderController.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.controller;
 
+import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.quotation.summary.service.InsFeeOrdersService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -25,10 +26,22 @@ public class InsFeeOrderController {
      * 订单列表分页
      * @return
      */
-    @GetMapping("/getInsFeeOrdersList")
+    @PostMapping("/getInsFeeOrdersList")
     @Operation(summary = "订单费用列表通过分销员id查询")
-    public List<InsFeeOrders> getInsFeeOrdersList(String userId){
-        return insFeeOrdersService.getInsFeeOrdersList(userId);
+    public List<InsFeeOrders> getInsFeeOrdersList(@RequestBody InsFeeOrdersParam param){
+        return insFeeOrdersService.getInsFeeOrdersList(param);
+    }
+
+    @PostMapping("/getInsFeeOrderByUserId")
+    @Operation(summary = "订单费用列表通过用户id查询")
+    public List<InsFeeOrders> getInsFeeOrderByUserId(@RequestBody InsFeeOrdersParam param){
+        return insFeeOrdersService.getInsFeeOrderListByUserId(param);
+    }
+
+    @GetMapping("/getInsFeeOrderListByTopReferrerIdAndUserId")
+    @Operation(summary = "订单费用列表通过上下级分销员id查询")
+    public List<InsFeeOrders> getInsFeeOrder(String userId,String topReferrerId){
+        return insFeeOrdersService.getInsFeeOrderListByTopReferrerIdAndUserId(userId,topReferrerId);
     }
 
     @GetMapping("/getInsFeeOrderAudit")
@@ -37,4 +50,10 @@ public class InsFeeOrderController {
         return insFeeOrdersService.getInsFeeOrderAudit(userId);
     }
 
+    @GetMapping("/getInsFeeOrderByOrderNo")
+    @Operation(summary = "订单费用列表通过订单号查询")
+    public List<InsFeeOrders> getInsFeeOrderByOrderNo(String orderNo){
+        return insFeeOrdersService.getInsFeeOrderByOrderNo(orderNo);
+    }
+
 }

+ 195 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrderAdjustController.java

@@ -0,0 +1,195 @@
+package com.jzg.quotation.summary.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.*;
+import com.jzg.commons.entity.orders.po.InsOrderAdjust;
+import com.jzg.commons.entity.orders.po.InsOrderAdjustInfo;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.vo.AdjustAllRefundInfoVo;
+import com.jzg.commons.entity.vo.AdjustAllRefundVo;
+import com.jzg.commons.entity.vo.OrderAdjustVo;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.EasyExcelUtils;
+import com.jzg.commons.util.ServletUtils;
+import com.jzg.quotation.summary.aop.OrderOperationLog;
+import com.jzg.quotation.summary.constants.QuoteNumberConstant;
+import com.jzg.quotation.summary.service.InsOrderAdjustInfoService;
+import com.jzg.quotation.summary.service.InsOrderAdjustService;
+import com.jzg.quotation.summary.service.InsOrdersService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+@Tag(name = "订单批改管理接口")
+@RestController
+@RequestMapping("/adjust")
+@RequiredArgsConstructor
+public class InsOrderAdjustController extends BaseController {
+
+    private final InsOrderAdjustService insOrderAdjustService;
+    private final InsOrderAdjustInfoService insOrderAdjustInfoService;
+    private final InsOrdersService insOrdersService;
+    /**
+     * 订单批改列表分页
+     * @return
+     */
+    @PostMapping("/adjustList")
+    @Operation(summary = "订单批改列表分页")
+    public HttpResult adjustList(@RequestBody OrderAdjustParam param){
+        Page<OrderAdjustVo> result = insOrderAdjustService.queryPage(param);
+        return HttpResult.ok(result);
+    }
+
+    /**
+     * 导出订单批改列表
+     * @return
+     */
+    @PostMapping("/exportAdjustList")
+    @Operation(summary = "导出订单批改列表")
+    public void exportAdjustList(@RequestBody OrderAdjustExportParam param){
+        List<OrderAdjustVo> orderAdjustVos = insOrderAdjustService.adjustList(param);
+        AssertionUtils.isFail(CollUtil.isEmpty(orderAdjustVos), "无导出数据");
+        EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), OrderAdjustVo.class, orderAdjustVos,"订单批改导出");
+    }
+
+
+    /**
+     * 订单批改信息查询
+     * @param id
+     * @return
+     */
+    @GetMapping(value = { "/adjustGet"})
+    @Operation(summary = "订单批改信息查询")
+    public HttpResult adjustGet(String id) {
+        return HttpResult.ok(insOrderAdjustService.queryById(id));
+    }
+
+    /**
+     * 订单批改信息添加
+     * @param param
+     * @return
+     */
+    @Operation(summary = "订单批改信息添加")
+    @PostMapping("/adjustAdd")
+    public HttpResult adjustAdd(@Validated @RequestBody OrderAdjustAddParam param) {
+        String orderNo = param.getOrderNo();
+        InsOrders order = insOrdersService.getById(orderNo);
+        AssertionUtils.isFail(Objects.isNull(order), "订单不存在");
+        AssertionUtils.isFail(!InsOrderStatusEnum.UNDERWRITED.getCode().equals(order.getOrderStatus()), "未承保订单不允许批改");
+        LambdaQueryWrapper<InsOrderAdjust> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InsOrderAdjust::getOrderNo, orderNo);
+        wrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        wrapper.in(InsOrderAdjust::getStatus, 0,1,3);
+        long count = insOrderAdjustService.count(wrapper);
+        AssertionUtils.isFail(count > 0, "订单批改中,请勿重复操作!");
+        String id = insOrderAdjustService.adjustAdd(param,order);
+        // 整单退
+        if(param.getType().equals(0)){
+            AdjustAllRefundVo refundVo = insOrderAdjustInfoService.adjustAllRefundGet(id,orderNo);
+            return HttpResult.ok("新增成功",refundVo);
+        }else{
+            // 批改
+            AdjustAllRefundVo refundVo = insOrderAdjustInfoService.adjustChangeGet(id,orderNo);
+            return HttpResult.ok("新增成功",refundVo);
+        }
+    }
+
+    /**
+     * 订单批改信息清除
+     * @param orderNo
+     * @return
+     */
+    @OrderOperationLog(
+            module = "批改订单",
+            subModule = "订单详情",
+            optType = QuoteNumberConstant.QuoteOptType.OPT_TYPE_13,
+            description = "撤销了订单批改申请",
+            orderSpEl = "#orderNo",
+            feedbackSpEl = "#ret.code + ' - ' + #ret.msg+ ' - ' + #ret.data"
+    )
+    @Operation(summary = "订单批改信息清除")
+    @DeleteMapping("/adjustRemove")
+    public HttpResult adjustRemove(String orderNo) {
+        boolean b = insOrderAdjustService.adjustRemove(orderNo);
+        return HttpResult.ok(b ? "清除成功":"清除失败");
+    }
+
+    /**
+     * 订单批改删除(已退回单据)
+     * @param id
+     * @return
+     */
+    @Operation(summary = "订单批改删除(已退回单据)")
+    @DeleteMapping("/adjustDel")
+    public HttpResult adjustDel(String id) {
+        boolean b = insOrderAdjustService.adjustDel(id);
+        return HttpResult.ok(b ? "删除成功":"删除失败");
+    }
+
+    /**
+     * 整单退提交
+     * @return
+     */
+    @OrderOperationLog(
+            module = "批改订单",
+            subModule = "订单详情",
+            optType = QuoteNumberConstant.QuoteOptType.OPT_TYPE_11,
+            description = "提交订单批改申请",
+            orderSpEl = "#refundVo",
+            feedbackSpEl = "#ret.code + ' - ' + #ret.msg+ ' - ' + #ret.data"
+    )
+    @Operation(summary = "整单退提交")
+    @PostMapping("/refundSubmit")
+    public HttpResult refundSubmit(@Validated @RequestBody AdjustAllRefundVo refundVo) {
+        insOrderAdjustInfoService.refundSubmit(refundVo);
+        return HttpResult.ok("保存成功");
+    }
+
+    /**
+     * 批改提交
+     * @return
+     */
+    @OrderOperationLog(
+            module = "批改订单",
+            subModule = "订单详情",
+            optType = QuoteNumberConstant.QuoteOptType.OPT_TYPE_11,
+            description = "提交订单批改申请",
+            orderSpEl = "#refundVo",
+            feedbackSpEl = "#ret.code + ' - ' + #ret.msg+ ' - ' + #ret.data"
+    )
+    @Operation(summary = "批改提交")
+    @PostMapping("/changeSubmit")
+    public HttpResult changeSubmit(@Validated @RequestBody AdjustAllRefundVo refundVo) {
+        insOrderAdjustInfoService.changeSubmit(refundVo);
+        return HttpResult.ok("保存成功");
+    }
+
+    /**
+     * 审核批改订单
+     * @return
+     */
+    @OrderOperationLog(
+            module = "批改订单",
+            subModule = "订单详情",
+            optType = QuoteNumberConstant.QuoteOptType.OPT_TYPE_12,
+            description = "",
+            orderSpEl = "#param",
+            feedbackSpEl = "#ret.code + ' - ' + #ret.msg+ ' - ' + #ret.data"
+    )
+    @PostMapping("/verifyOrder")
+    @Operation(summary = "审核批改订单")
+    public HttpResult verifyOrder(@RequestBody VerifyAdjustParam param){
+        insOrderAdjustInfoService.verifyOrder(param);
+        return HttpResult.ok("操作成功");
+    }
+}

+ 9 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsFeeOrdersMapper.java

@@ -1,14 +1,22 @@
 package com.jzg.quotation.summary.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 @Mapper
 public interface InsFeeOrdersMapper extends BaseMapper<InsFeeOrders> {
-    List<InsFeeOrders> getInsFeeOrdersList(String userId);
+    List<InsFeeOrders> getInsFeeOrdersList(@Param("param")InsFeeOrdersParam param);
+
+    List<InsFeeOrders> getInsFeeOrderListByUserId(@Param("param")InsFeeOrdersParam param);
+
+    List<InsFeeOrders> getInsFeeOrderListByTopReferrerIdAndUserId(String userId,String topReferrerId);
 
     List<InsFeeOrders> getInsFeeOrderAudit(String userId);
+
+    List<InsFeeOrders> getInsFeeOrderByOrderNo(String orderNo);
 }

+ 18 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderAdjustInfoMapper.java

@@ -0,0 +1,18 @@
+package com.jzg.quotation.summary.mapper;
+
+import com.jzg.commons.entity.orders.po.InsOrderAdjustInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author dongxin
+* @description 针对表【ins_order_adjust_info(订单批改明细表)】的数据库操作Mapper
+* @createDate 2025-09-16 10:48:13
+* @Entity generator.domain.InsOrderAdjustInfo
+*/
+public interface InsOrderAdjustInfoMapper extends BaseMapper<InsOrderAdjustInfo> {
+
+}
+
+
+
+

+ 48 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderAdjustMapper.java

@@ -0,0 +1,48 @@
+package com.jzg.quotation.summary.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.dto.OrderAdjustExportParam;
+import com.jzg.commons.entity.dto.OrderAdjustParam;
+import com.jzg.commons.entity.orders.po.InsOrderAdjust;
+import com.jzg.commons.entity.vo.OrderAdjustVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_order_adjust(订单批改表)】的数据库操作Mapper
+* @createDate 2025-09-16 10:48:13
+* @Entity generator.domain.InsOrderAdjust
+*/
+public interface InsOrderAdjustMapper extends BaseMapper<InsOrderAdjust> {
+
+    /**
+     * 订单批改分页列表
+     * @param page
+     * @param param
+     * @return
+     */
+    Page<OrderAdjustVo> queryPage(Page page,  @Param("param") OrderAdjustParam param);
+
+    /**
+     * 订单批改列表
+     * @param param
+     * @return
+     */
+    List<OrderAdjustVo> adjustList(@Param("param") OrderAdjustExportParam param);
+
+    /**
+     * 通过id获取订单批改信息
+     * @param id
+     * @return
+     */
+    OrderAdjustVo queryById(String id);
+
+
+}
+
+
+
+

+ 8 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 
@@ -9,9 +10,15 @@ import java.util.List;
 public interface InsFeeOrdersService extends IService<InsFeeOrders> {
     InsFeeOrders calcCosts(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) throws ReflectiveOperationException;
 
-    List<InsFeeOrders> getInsFeeOrdersList(String userId);
+    List<InsFeeOrders> getInsFeeOrdersList(InsFeeOrdersParam param);
+
+    List<InsFeeOrders> getInsFeeOrderListByUserId(InsFeeOrdersParam param);
+
+    List<InsFeeOrders> getInsFeeOrderListByTopReferrerIdAndUserId(String userId, String topReferrerId);
 
     List<InsFeeOrders> getInsFeeOrderAudit(String userId);
 
+    List<InsFeeOrders> getInsFeeOrderByOrderNo(String orderNo);
+
 
 }

+ 54 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrderAdjustInfoService.java

@@ -0,0 +1,54 @@
+package com.jzg.quotation.summary.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.VerifyAdjustParam;
+import com.jzg.commons.entity.orders.po.InsOrderAdjustInfo;
+import com.jzg.commons.entity.vo.AdjustAllRefundInfoVo;
+import com.jzg.commons.entity.vo.AdjustAllRefundVo;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_order_adjust_info(订单批改明细表)】的数据库操作Service
+* @createDate 2025-09-16 10:48:13
+*/
+public interface InsOrderAdjustInfoService extends IService<InsOrderAdjustInfo> {
+
+    /**
+     * 整单退明细列表
+     *
+     * @param id
+     * @param orderNo
+     * @return
+     */
+    AdjustAllRefundVo adjustAllRefundGet(String id, String orderNo);
+
+    /**
+     * 批改明细列表
+     * @param id
+     * @param orderNo
+     * @return
+     */
+    AdjustAllRefundVo adjustChangeGet(String id, String orderNo);
+
+    /**
+     * 整单退提交
+     *
+     * @param refundVos
+     */
+    void refundSubmit(AdjustAllRefundVo refundVos);
+
+
+    /**
+     * 批改提交
+     * @param refundVo
+     */
+    void changeSubmit(AdjustAllRefundVo refundVo);
+
+    /**
+     * 审核批改订单
+     * @param param
+     */
+    void verifyOrder(VerifyAdjustParam param);
+}

+ 70 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrderAdjustService.java

@@ -0,0 +1,70 @@
+package com.jzg.quotation.summary.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.OrderAdjustAddParam;
+import com.jzg.commons.entity.dto.OrderAdjustExportParam;
+import com.jzg.commons.entity.dto.OrderAdjustParam;
+import com.jzg.commons.entity.orders.po.InsOrderAdjust;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.vo.OrderAdjustInfoVo;
+import com.jzg.commons.entity.vo.OrderAdjustVo;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_order_adjust(订单批改表)】的数据库操作Service
+* @createDate 2025-09-16 10:48:13
+*/
+public interface InsOrderAdjustService extends IService<InsOrderAdjust> {
+
+    /**
+     * 订单批改分页列表
+     * @param param
+     * @return
+     */
+    Page<OrderAdjustVo> queryPage(OrderAdjustParam param);
+
+    /**
+     * 订单批改信息查询
+     * @param id
+     * @return
+     */
+    OrderAdjustInfoVo queryById(String id);
+
+    /**
+     * 查询订单批改信息是否存在
+     * @param id
+     * @return
+     */
+    OrderAdjustVo isExistById(String id);
+
+    /**
+     * 创建批单
+     *
+     * @param param
+     * @param order
+     */
+    String adjustAdd(OrderAdjustAddParam param, InsOrders order);
+
+    /**
+     * 订单批改信息清除
+     * @return
+     */
+    boolean adjustRemove(String orderNo);
+
+    /**
+     * 订单批改导出列表
+     * @param param
+     * @return
+     */
+    List<OrderAdjustVo> adjustList(OrderAdjustExportParam param);
+
+    /**
+     *
+     * @param id
+     * @return
+     */
+    boolean adjustDel(String id);
+}

+ 44 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.base.StateResult;
 import com.jzg.commons.core.page.HttpResult;
@@ -16,6 +15,7 @@ import com.jzg.commons.entity.orders.vo.AuditCostInfoVo;
 import com.jzg.commons.entity.orders.vo.FeeAuditVo;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.po.SysUserAccount;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.vo.AgreementInfoVo;
 import com.jzg.commons.entity.vo.AgreementVo;
@@ -31,7 +31,6 @@ import com.jzg.quotation.summary.mapper.InsFeeAuditMapper;
 import com.jzg.quotation.summary.service.*;
 import com.jzg.quotation.summary.state.AuditState;
 import com.jzg.quotation.summary.state.listener.AuditStateListener;
-import com.jzg.quotation.summary.state.listener.OrderStateListener;
 import lombok.RequiredArgsConstructor;
 import org.hibernate.validator.internal.util.stereotypes.Lazy;
 import org.redisson.api.RBucket;
@@ -292,6 +291,36 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 userAccount.setSumAmountUnpaid(feeOrders.getTotalReceivablePremium().add(userAccount.getSumAmount()));
             }
             orgClient.saveOrUpdate(userAccount, baseController.getToken());
+            // 一级分销费用户进账
+            if (feeOrders.getFirstDistributionFee().compareTo(BigDecimal.ZERO) > 0 && feeOrders.getFirstDistributorId() != null) {
+                HttpResult<SysUserJzgInfo> jzgInfoResult = orgClient.getUserInfoById(feeOrders.getFirstDistributorId());
+                AssertionUtils.isFail(jzgInfoResult.getCode() != 200,"获取用户失败!");
+                SysUserJzgInfo jzgInfo = jzgInfoResult.getData();
+                HttpResult<SysUserAccount> jzgAccountResult = orgClient.accountGet(jzgInfo.getUserId(), baseController.getToken());
+                AssertionUtils.isFail(jzgAccountResult.getCode() != 200,"获取用户账户失败!");
+                SysUserAccount distributor1 = jzgAccountResult.getData();
+                verifySysAccount(distributor1,jzgInfo,feeOrders);
+            }
+            // 二级分销费用户进账
+            if (feeOrders.getSecondDistributionFee().compareTo(BigDecimal.ZERO) > 0 && feeOrders.getSecondDistributorId() != null) {
+                HttpResult<SysUserJzgInfo> jzgInfoResult = orgClient.getUserInfoById(feeOrders.getSecondDistributorId());
+                AssertionUtils.isFail(jzgInfoResult.getCode() != 200,"获取用户失败!");
+                SysUserJzgInfo jzgInfo = jzgInfoResult.getData();
+                HttpResult<SysUserAccount> jzgAccountResult = orgClient.accountGet(jzgInfo.getUserId(), baseController.getToken());
+                AssertionUtils.isFail(jzgAccountResult.getCode() != 200,"获取用户账户失败!");
+                SysUserAccount distributor2 = jzgAccountResult.getData();
+                verifySysAccount(distributor2,jzgInfo,feeOrders);
+            }
+            // 三级分销费用户进账
+            if (feeOrders.getThirdDistributionFee().compareTo(BigDecimal.ZERO) > 0 && feeOrders.getThirdDistributorId() != null) {
+                HttpResult<SysUserJzgInfo> jzgInfoResult = orgClient.getUserInfoById(feeOrders.getThirdDistributorId());
+                AssertionUtils.isFail(jzgInfoResult.getCode() != 200,"获取用户失败!");
+                SysUserJzgInfo jzgInfo = jzgInfoResult.getData();
+                HttpResult<SysUserAccount> jzgAccountResult = orgClient.accountGet(jzgInfo.getUserId(), baseController.getToken());
+                AssertionUtils.isFail(jzgAccountResult.getCode() != 200,"获取用户账户失败!");
+                SysUserAccount distributor3 = jzgAccountResult.getData();
+                verifySysAccount(distributor3,jzgInfo,feeOrders);
+            }
         }else{
             StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.FAIL_AUDIT,audit.getAuditStatus()+"");
             audit.setAuditStatus(stateFailResult.getCurrentState());
@@ -301,6 +330,19 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         this.updateById(audit);
     }
 
+    // 验证用户账户
+    public void verifySysAccount(SysUserAccount userAccount, SysUserJzgInfo jzgInfo, InsFeeOrders feeOrders) {
+        if (Objects.isNull(userAccount)) {
+            userAccount.setUserId(jzgInfo.getUserId());
+            userAccount.setSumAmount(feeOrders.getFirstDistributionFee());
+            userAccount.setSumAmountUnpaid(feeOrders.getFirstDistributionFee());
+        } else {
+            userAccount.setSumAmount(feeOrders.getFirstDistributionFee().add(userAccount.getSumAmount()));
+            userAccount.setSumAmountUnpaid(feeOrders.getFirstDistributionFee().add(userAccount.getSumAmountUnpaid()));
+        }
+        orgClient.saveOrUpdate(userAccount, baseController.getToken());
+    }
+
     @Override
     public void updateToQuestionOrder(String orderNo) {
         InsFeeAudit audit = this.getById(orderNo);

+ 19 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java

@@ -2,13 +2,12 @@ package com.jzg.quotation.summary.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCosts;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.po.PtlAgreement;
-import com.jzg.commons.entity.vo.AgreementInfoVo;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
-import com.jzg.commons.entity.vo.PtlAgreementCostTypeVo;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.summary.mapper.InsFeeOrdersMapper;
 import com.jzg.quotation.summary.service.InsFeeOrdersService;
@@ -233,12 +232,28 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     }
 
     @Override
-    public List<InsFeeOrders> getInsFeeOrdersList(String userId) {
-        return insFeeOrdersMapper.getInsFeeOrdersList(userId);
+    public List<InsFeeOrders> getInsFeeOrdersList(InsFeeOrdersParam param) {
+        return insFeeOrdersMapper.getInsFeeOrdersList(param);
+    }
+
+    @Override
+    public List<InsFeeOrders> getInsFeeOrderListByUserId(InsFeeOrdersParam param) {
+        return insFeeOrdersMapper.getInsFeeOrderListByUserId(param);
+    }
+
+    @Override
+    public List<InsFeeOrders> getInsFeeOrderListByTopReferrerIdAndUserId(String userId,String topReferrerId) {
+        return insFeeOrdersMapper.getInsFeeOrderListByTopReferrerIdAndUserId(userId,topReferrerId);
+
     }
 
     @Override
     public List<InsFeeOrders> getInsFeeOrderAudit(String userId) {
         return insFeeOrdersMapper.getInsFeeOrderAudit(userId);
     }
+
+    @Override
+    public List<InsFeeOrders> getInsFeeOrderByOrderNo(String orderNo) {
+        return insFeeOrdersMapper.getInsFeeOrderByOrderNo(orderNo);
+    }
 }

+ 561 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderAdjustInfoServiceImpl.java

@@ -0,0 +1,561 @@
+package com.jzg.quotation.summary.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.dto.VerifyAdjustParam;
+import com.jzg.commons.entity.orders.po.*;
+import com.jzg.commons.entity.vo.AdjustAllRefundInfoVo;
+import com.jzg.commons.entity.vo.AdjustAllRefundVo;
+import com.jzg.commons.entity.vo.OrderAdjustInfoVo;
+import com.jzg.commons.entity.vo.OrderAdjustVo;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.quotation.summary.mapper.InsOrderAdjustInfoMapper;
+import com.jzg.quotation.summary.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+* @author dongxin
+* @description 针对表【ins_order_adjust_info(订单批改明细表)】的数据库操作Service实现
+* @createDate 2025-09-16 10:48:13
+*/
+@Service
+public class InsOrderAdjustInfoServiceImpl extends ServiceImpl<InsOrderAdjustInfoMapper, InsOrderAdjustInfo>
+    implements InsOrderAdjustInfoService {
+
+    @Autowired
+    private InsOrderAdjustService orderAdjustService;
+
+    @Autowired
+    private InsOrdersRiskService ordersRiskService;
+
+    @Autowired
+    private InsOrdersPolicyService ordersPolicyService;
+
+    @Autowired
+    private InsOrdersCostsService ordersCostsService;
+
+    @Autowired
+    private InsOrdersKindService ordersKindService;
+
+    @Autowired
+    private InsOrdersAccidentalDrivingService ordersAccidentalDrivingService;
+
+    @Override
+    public AdjustAllRefundVo adjustAllRefundGet(String id, String orderNo) {
+
+        AdjustAllRefundVo adjustAllRefundVo = new AdjustAllRefundVo();
+        adjustAllRefundVo.setId(id);
+        List<AdjustAllRefundInfoVo> refundVos = new ArrayList<>();
+        // 获取最新的批改记录
+        LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(InsOrderAdjust::getId, id);
+        queryWrapper.eq(InsOrderAdjust::getOrderNo, orderNo);
+        queryWrapper.eq(InsOrderAdjust::getStatus, 2);
+        queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");;
+        InsOrderAdjust adjust = orderAdjustService.getOne(queryWrapper);
+
+        // 查询原订单信息
+        List<InsOrdersRisk> risks = ordersRiskService.getById(orderNo);
+        InsOrdersPolicy policie = ordersPolicyService.getById(orderNo);
+        InsOrdersCosts costs = ordersCostsService.getById(orderNo);
+
+        // 有批改
+        if(Objects.nonNull(adjust)){
+            OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
+            List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
+            if(CollUtil.isNotEmpty(adjustInfos)){
+                Set<Integer> types = adjustInfos.stream()
+                        .filter(info -> !info.getIsHide().equals(1))
+                        .filter(info -> !info.getType().equals(2))
+                        .map(InsOrderAdjustInfo::getKindType).collect(Collectors.toSet());
+                for (Integer type : types) {
+                    refundVos.add(new AdjustAllRefundInfoVo(type,risks,policie,orderAdjustInfoVo.getOrderAdjustVo(),id));
+                }
+            }
+        // 无批改
+        }else{
+            for (InsOrdersRisk risk : risks) {
+                AdjustAllRefundInfoVo refundVo = new AdjustAllRefundInfoVo();
+                refundVo.setAdjustId(id);
+                refundVo.setKindName(risk.getRiskName());
+                refundVo.setExpiryDate(risk.getEndDate());
+                if(risk.getRiskCode().equals("0507")){
+                    refundVo.setKindType(0);
+                    refundVo.setPolicyNumber(policie.getJqPolicyNo());
+                    refundVo.setPremium(costs.getJqPremium());
+                    refundVos.add(refundVo);
+                }else{
+                    refundVo.setKindType(1);
+                    refundVo.setPolicyNumber(policie.getSyPolicyNo());
+                    refundVo.setPremium(costs.getSyPremium());
+                    refundVos.add(refundVo);
+                }
+            }
+            LambdaQueryWrapper<InsOrdersAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(InsOrdersAccidentalDriving::getOrderNo, orderNo);
+            List<InsOrdersAccidentalDriving> drivings = ordersAccidentalDrivingService.list(wrapper);
+            if (CollUtil.isNotEmpty(drivings)) {
+                AdjustAllRefundInfoVo refundVo = new AdjustAllRefundInfoVo();
+                refundVo.setAdjustId(id);
+                refundVo.setKindType(2);
+                refundVo.setKindName("驾意险");
+                refundVo.setPolicyNumber(policie.getJyPolicyNo());
+                refundVo.setPremium(costs.getJyPremium());
+                refundVos.add(refundVo);
+            }
+        }
+        adjustAllRefundVo.setInfoVosList(refundVos);
+        return adjustAllRefundVo;
+    }
+
+    @Override
+    public AdjustAllRefundVo adjustChangeGet(String id, String orderNo) {
+        AdjustAllRefundVo adjustAllRefundVo = new AdjustAllRefundVo();
+        adjustAllRefundVo.setId(id);
+        // 获取最新的批改记录
+        LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(InsOrderAdjust::getId, id);
+        queryWrapper.eq(InsOrderAdjust::getOrderNo, orderNo);
+        queryWrapper.eq(InsOrderAdjust::getStatus, 2);
+        queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");;
+        InsOrderAdjust adjust = orderAdjustService.getOne(queryWrapper);
+
+        // 查询原订单信息
+        List<InsOrdersRisk> risks = ordersRiskService.getById(orderNo);
+        InsOrdersCosts costs = ordersCostsService.getById(orderNo);
+
+        // 有批改
+        if(Objects.nonNull(adjust)){
+            OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
+            List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
+            List<InsOrderAdjustInfo> newAdjustInfos = new ArrayList<>();
+            if (CollUtil.isNotEmpty(adjustInfos)) {
+                newAdjustInfos = adjustInfos.stream()
+                        .filter(info -> !info.getIsHide().equals(1))
+                        .filter(info -> !info.getType().equals(2))
+                        .collect(Collectors.toList());
+            }
+            for (InsOrderAdjustInfo newAdjustInfo : newAdjustInfos) {
+                newAdjustInfo.setId(null);
+                newAdjustInfo.setAdjustId(id);
+                newAdjustInfo.setPremium(newAdjustInfo.getAfterPremium());
+                newAdjustInfo.setAmount(newAdjustInfo.getAfterAmount());
+            }
+            adjustAllRefundVo.setChangeInfoVosList(newAdjustInfos);
+
+        }else{
+            // 无批改
+            List<InsOrderAdjustInfo> adjustInfos = new ArrayList<>();
+            for (InsOrdersRisk risk : risks) {
+                if(risk.getRiskCode().equals("0507")){
+                    InsOrderAdjustInfo orderAdjustInfo = new InsOrderAdjustInfo();
+                    orderAdjustInfo.setAdjustId(id);
+                    orderAdjustInfo.setKindType(0);
+                    orderAdjustInfo.setKindCode("J1");
+                    orderAdjustInfo.setKindName("交强险");
+                    orderAdjustInfo.setPremium(costs.getJqPremium());
+                    orderAdjustInfo.setType(0);
+                    orderAdjustInfo.setIsHide(0);
+                    adjustInfos.add(orderAdjustInfo);
+                }else{
+                    LambdaQueryWrapper<InsOrdersKind> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(InsOrdersKind::getOrderNo, orderNo);
+                    wrapper.eq(InsOrdersKind::getIsDelete, 0);
+                    List<InsOrdersKind> kindList = ordersKindService.list(wrapper);
+                    if(CollUtil.isNotEmpty(kindList)){
+                        for (InsOrdersKind insOrdersKind : kindList) {
+                            InsOrderAdjustInfo orderAdjustInfo = new InsOrderAdjustInfo();
+                            orderAdjustInfo.setAdjustId(id);
+                            orderAdjustInfo.setKindType(1);
+                            orderAdjustInfo.setKindCode(insOrdersKind.getKindCode());
+                            orderAdjustInfo.setKindName(insOrdersKind.getKindName());
+                            orderAdjustInfo.setAmount(insOrdersKind.getAmount());
+                            orderAdjustInfo.setPremium(insOrdersKind.getPremium());
+                            orderAdjustInfo.setType(0);
+                            orderAdjustInfo.setIsHide(0);
+                            adjustInfos.add(orderAdjustInfo);
+                        }
+                    }
+                }
+            }
+            LambdaQueryWrapper<InsOrdersAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(InsOrdersAccidentalDriving::getOrderNo, orderNo);
+            List<InsOrdersAccidentalDriving> drivings = ordersAccidentalDrivingService.list(wrapper);
+            if (CollUtil.isNotEmpty(drivings)) {
+                InsOrderAdjustInfo orderAdjustInfo = new InsOrderAdjustInfo();
+                orderAdjustInfo.setAdjustId(id);
+                orderAdjustInfo.setKindType(2);
+                orderAdjustInfo.setKindCode(drivings.get(0).getRiskCode());
+                orderAdjustInfo.setKindName(drivings.get(0).getRiskName());
+                orderAdjustInfo.setAmount(new BigDecimal(drivings.get(0).getQuantity()));
+                orderAdjustInfo.setPremium(costs.getJyPremium());
+                orderAdjustInfo.setType(0);
+                orderAdjustInfo.setIsHide(0);
+                adjustInfos.add(orderAdjustInfo);
+            }
+            adjustAllRefundVo.setChangeInfoVosList(adjustInfos);
+        }
+        return adjustAllRefundVo;
+    }
+
+    @Override
+    public void refundSubmit(AdjustAllRefundVo refundVos) {
+        // 获取最新的批改记录
+        LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(InsOrderAdjust::getId, refundVos.getId());
+        queryWrapper.eq(InsOrderAdjust::getOrderNo, refundVos.getOrderNo());
+        queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        queryWrapper.eq(InsOrderAdjust::getStatus, 2);
+        queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");;
+        InsOrderAdjust adjust = orderAdjustService.getOne(queryWrapper);
+
+        List<InsOrderAdjustInfo> orderAdjustInfos = new ArrayList<>();
+        List<AdjustAllRefundInfoVo> infoVosList = refundVos.getInfoVosList();
+
+        List<AdjustAllRefundInfoVo> jqRefundVo = infoVosList.stream().filter(info-> info.getKindType().equals(0)).collect(Collectors.toList()); // 交强信息
+        List<AdjustAllRefundInfoVo> syRefundVo = infoVosList.stream().filter(info-> info.getKindType().equals(1)).collect(Collectors.toList()); // 商业信息
+        List<AdjustAllRefundInfoVo> jyRefundVo = infoVosList.stream().filter(info-> info.getKindType().equals(2)).collect(Collectors.toList()); // 驾意信息
+
+
+        // 当前单据(提前保存了)
+        InsOrderAdjust insOrderAdjust = orderAdjustService.getById(refundVos.getId());
+
+        BigDecimal jqPremium = new BigDecimal(0);
+        BigDecimal syPremium = new BigDecimal(0);
+        BigDecimal jyPremium = new BigDecimal(0);
+        if (Objects.nonNull(adjust)) {
+            OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
+            List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
+            OrderAdjustVo orderAdjustVo = orderAdjustInfoVo.getOrderAdjustVo();
+            jqPremium = orderAdjustVo.getAfterJqPremium();
+            syPremium = orderAdjustVo.getAfterSyPremium();
+            jyPremium = orderAdjustVo.getAfterJyPremium();
+
+            List<InsOrderAdjustInfo> jqInfos = adjustInfos.stream()
+                    .filter(info -> info.getKindType().equals(0))
+                    .filter(info -> !info.getType().equals(2))
+                    .collect(Collectors.toList());
+            List<InsOrderAdjustInfo> syInfos = adjustInfos.stream()
+                    .filter(info -> info.getKindType().equals(1))
+                    .filter(info -> !info.getType().equals(2))
+                    .collect(Collectors.toList());
+            List<InsOrderAdjustInfo> jyInfos = adjustInfos.stream()
+                    .filter(info -> info.getKindType().equals(2))
+                    .filter(info -> !info.getType().equals(2))
+                    .collect(Collectors.toList());
+
+            for (InsOrderAdjustInfo adjustInfo : adjustInfos) {
+                adjustInfo.setAdjustId(insOrderAdjust.getId());
+                adjustInfo.setPremium(adjustInfo.getAfterPremium());
+                if(adjustInfo.getType().equals(0)){
+                    adjustInfo.setAfterAmount(adjustInfo.getAmount());
+                }else{
+                    adjustInfo.setAfterAmount(null);
+                }
+                adjustInfo.setAdjustType(null);
+                adjustInfo.setAdjustAmount(null);
+                if(adjustInfo.getIsHide().equals(0)){
+                    if((CollUtil.isNotEmpty(jqRefundVo) && adjustInfo.getKindType().equals(0))
+                            || (CollUtil.isNotEmpty(syRefundVo) && adjustInfo.getKindType().equals(1))
+                            || (CollUtil.isNotEmpty(jyRefundVo) && adjustInfo.getKindType().equals(2))
+                    ){
+                        adjustInfo.setType(2);
+                        adjustInfo.setPremium(null);
+                        adjustInfo.setAfterPremium(null);
+                        adjustInfo.setAdjustType(null);
+                        adjustInfo.setAdjustAmount(null);
+                        adjustInfo.setIsHide(0);
+                        if (CollUtil.isNotEmpty(jqInfos)) {
+                            if(Objects.nonNull(jqInfos.get(0).getId())){
+                                if (jqInfos.get(0).getId().equals(adjustInfo.getId())) {
+                                    adjustInfo.setPremium(jqRefundVo.get(0).getPremium());
+                                    adjustInfo.setAfterPremium(jqRefundVo.get(0).getPremium().subtract(jqRefundVo.get(0).getRefundAmount()));
+                                }
+                            }
+                        }
+                        if (CollUtil.isNotEmpty(syInfos)) {
+                            if(Objects.nonNull(syInfos.get(0).getId())){
+                                if (syInfos.get(0).getId().equals(adjustInfo.getId())) {
+                                    adjustInfo.setPremium(syRefundVo.get(0).getPremium());
+                                    adjustInfo.setAfterPremium(syRefundVo.get(0).getPremium().subtract(syRefundVo.get(0).getRefundAmount()));
+                                }
+                            }
+                        }
+                        if (CollUtil.isNotEmpty(jyInfos)) {
+                            if(Objects.nonNull(jyInfos.get(0).getId())){
+                                if (jyInfos.get(0).getId().equals(adjustInfo.getId())) {
+                                    adjustInfo.setPremium(jyRefundVo.get(0).getPremium());
+                                    adjustInfo.setAfterPremium(jyRefundVo.get(0).getPremium().subtract(jyRefundVo.get(0).getRefundAmount()));
+                                }
+                            }
+                        }
+                    }else{
+                        adjustInfo.setIsHide(1);
+                    }
+                }
+                adjustInfo.setId(null);
+                orderAdjustInfos.add(adjustInfo);
+            }
+        } else {
+            // 查询原订单信息
+            List<InsOrdersRisk> risks = ordersRiskService.getById(refundVos.getOrderNo());
+            InsOrdersCosts costs = ordersCostsService.getById(refundVos.getOrderNo());
+            LambdaQueryWrapper<InsOrdersKind> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(InsOrdersKind::getOrderNo, refundVos.getOrderNo());
+            wrapper.eq(InsOrdersKind::getIsDelete, 0);
+            List<InsOrdersKind> kindList = ordersKindService.list(wrapper);
+
+            jqPremium = costs.getJqPremium();
+            syPremium = costs.getSyPremium();
+            jyPremium = costs.getJyPremium();
+
+            for (InsOrdersRisk risk : risks) {
+                if(risk.getRiskCode().equals("0507")){
+                    InsOrderAdjustInfo info = new InsOrderAdjustInfo();
+                    info.setAdjustId(insOrderAdjust.getId());
+                    info.setKindType(0);
+                    info.setKindCode("J1");
+                    info.setKindName("交强险");
+                    info.setIsHide(0);
+                    if(CollUtil.isNotEmpty(jqRefundVo)){
+                        info.setType(2);
+                        info.setPremium(null);
+                        info.setAfterPremium(null);
+                        info.setAfterAmount(null);
+                        info.setAdjustType(null);
+                    }else{
+                        info.setType(0);
+                        info.setPremium(costs.getJqPremium());
+                        info.setAfterPremium(costs.getJqPremium());
+                    }
+                    orderAdjustInfos.add(info);
+                }else{
+                    for (InsOrdersKind insOrdersKind : kindList) {
+                        InsOrderAdjustInfo info = new InsOrderAdjustInfo();
+                        info.setAdjustId(insOrderAdjust.getId());
+                        info.setKindType(1);
+                        info.setKindCode(insOrdersKind.getKindCode());
+                        info.setKindName(insOrdersKind.getKindName());
+                        info.setAmount(insOrdersKind.getAmount());
+                        info.setType(2);
+                        info.setIsHide(0);
+                        if(CollUtil.isNotEmpty(syRefundVo)){
+                            info.setPremium(null);
+                            info.setAfterPremium(null);
+                            info.setAfterAmount(null);
+                            info.setAdjustType(null);
+                        }else{
+                            info.setType(0);
+                            info.setPremium(insOrdersKind.getPremium());
+                            info.setAfterPremium(insOrdersKind.getPremium());
+                        }
+                        orderAdjustInfos.add(info);
+                    }
+                }
+            }
+            LambdaQueryWrapper<InsOrdersAccidentalDriving> drivingLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            drivingLambdaQueryWrapper.eq(InsOrdersAccidentalDriving::getOrderNo, refundVos.getOrderNo());
+            List<InsOrdersAccidentalDriving> drivings = ordersAccidentalDrivingService.list(drivingLambdaQueryWrapper);
+            if (CollUtil.isNotEmpty(drivings)) {
+                InsOrderAdjustInfo info = new InsOrderAdjustInfo();
+                info.setAdjustId(insOrderAdjust.getId());
+                info.setKindType(2);
+                info.setKindCode(drivings.get(0).getRiskCode());
+                info.setKindName(drivings.get(0).getRiskName());
+                info.setAmount(new BigDecimal(drivings.get(0).getQuantity()));
+                info.setType(2);
+                info.setIsHide(0);
+                if(CollUtil.isNotEmpty(jyRefundVo)){
+                    info.setPremium(null);
+                    info.setAfterPremium(null);
+                    info.setAfterAmount(null);
+                    info.setAdjustType(null);
+                    info.setIsHide(1);
+                }else{
+                    info.setType(0);
+                    info.setPremium(costs.getJyPremium());
+                    info.setAfterPremium(costs.getJyPremium());
+                }
+                orderAdjustInfos.add(info);
+            }
+        }
+        this.checkProduct(orderAdjustInfos,insOrderAdjust);
+
+
+        if(CollUtil.isNotEmpty(jqRefundVo)){
+            jqPremium = jqPremium.subtract(jqRefundVo.get(0).getRefundAmount());
+        }
+        if(CollUtil.isNotEmpty(syRefundVo)){
+            syPremium = syPremium.subtract(syRefundVo.get(0).getRefundAmount());
+        }
+        if(CollUtil.isNotEmpty(jyRefundVo)){
+            jyPremium = jyPremium.subtract(jyRefundVo.get(0).getRefundAmount());
+        }
+
+        insOrderAdjust.setAfterJqPremium(jqPremium);
+        insOrderAdjust.setAfterSyPremium(syPremium);
+        insOrderAdjust.setAfterJyPremium(jyPremium);
+        insOrderAdjust.setAfterPremium(jqPremium.add(syPremium).add(jyPremium));
+        insOrderAdjust.setStatus(1);
+        orderAdjustService.updateById(insOrderAdjust);
+        this.saveBatch(orderAdjustInfos);
+    }
+
+    @Override
+    public void changeSubmit(AdjustAllRefundVo refundVo) {
+        List<InsOrderAdjustInfo> orderAdjustInfos = new ArrayList<>();
+        List<InsOrderAdjustInfo> changeInfoVosList = refundVo.getChangeInfoVosList();
+
+        // 获取之前的批改单 加入退保剩余金额
+        // 获取最新的批改记录
+        LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(InsOrderAdjust::getId, refundVo.getId());
+        queryWrapper.eq(InsOrderAdjust::getOrderNo, refundVo.getOrderNo());
+        queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        queryWrapper.eq(InsOrderAdjust::getStatus, 2);
+        queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");
+        List<InsOrderAdjust> adjusts = orderAdjustService.list(queryWrapper);
+
+        // 当前单据(提前保存了)
+        InsOrderAdjust insOrderAdjust = orderAdjustService.getById(refundVo.getId());
+        if(CollUtil.isNotEmpty(changeInfoVosList)){
+            for (InsOrderAdjustInfo info : changeInfoVosList) {
+                info.setId(null);
+                info.setAdjustId(insOrderAdjust.getId());
+                if(Objects.nonNull(info.getAdjustType())){
+                    if (info.getAdjustType().equals(0)){
+                        info.setAfterPremium(info.getPremium().add(info.getAdjustAmount()));
+                    }else{
+                        info.setAfterPremium(info.getPremium().subtract(info.getAdjustAmount()));
+                    }
+                }else{
+                    info.setAfterPremium(info.getPremium());
+                    info.setAfterAmount(info.getAmount());
+                }
+                info.setIsHide(0);
+            }
+            orderAdjustInfos = changeInfoVosList;
+        }
+
+        // 将上一单的退单追加进去
+        if(CollUtil.isNotEmpty(adjusts)){
+            InsOrderAdjust adjust = adjusts.get(0);
+            OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
+            List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
+            if(CollUtil.isNotEmpty(adjustInfos)){
+                for (InsOrderAdjustInfo adjustInfo : adjustInfos) {
+                    if(adjustInfo.getType().equals(2)){
+                        adjustInfo.setId(null);
+                        adjustInfo.setAdjustId(insOrderAdjust.getId());
+                        adjustInfo.setIsHide(1);
+                        orderAdjustInfos.add(adjustInfo);
+                    }
+                }
+            }
+        }
+
+        this.checkProduct(orderAdjustInfos,insOrderAdjust);
+
+        BigDecimal jqPrenium = new BigDecimal(0); // 交强保费
+        BigDecimal syPrenium = new BigDecimal(0); // 商业保费
+        BigDecimal jyPrenium = new BigDecimal(0); // 驾意保费
+
+
+        for (InsOrderAdjustInfo orderAdjustInfo : orderAdjustInfos) {
+            if(orderAdjustInfo.getKindType().equals(0)){
+                jqPrenium = jqPrenium.add(orderAdjustInfo.getAfterPremium());
+            }
+            if(orderAdjustInfo.getKindType().equals(1)){
+                syPrenium = syPrenium.add(orderAdjustInfo.getAfterPremium());
+            }
+            if(orderAdjustInfo.getKindType().equals(2)){
+                jyPrenium = jyPrenium.add(orderAdjustInfo.getAfterPremium());
+            }
+        }
+        insOrderAdjust.setAfterJqPremium(jqPrenium);
+        insOrderAdjust.setAfterSyPremium(syPrenium);
+        insOrderAdjust.setAfterJyPremium(jyPrenium);
+        BigDecimal totalPremium = jqPrenium.add(syPrenium).add(jyPrenium);
+        insOrderAdjust.setAfterPremium(totalPremium);
+        insOrderAdjust.setStatus(1);
+        orderAdjustService.updateById(insOrderAdjust);
+        this.saveBatch(changeInfoVosList);
+    }
+
+    @Override
+    public void verifyOrder(VerifyAdjustParam param) {
+        InsOrderAdjust insOrderAdjust = orderAdjustService.getById(param.getId());
+        AssertionUtils.isFail(insOrderAdjust.getStatus() > 1, "订单已审核,请刷新页面");
+        insOrderAdjust.setStatus(param.getStatus());
+        insOrderAdjust.setRefuse(param.getRefuse());
+        orderAdjustService.updateById(insOrderAdjust);
+    }
+
+    /**
+     * 保险产品重新核算
+     *
+     * @param orderAdjustInfos
+     * @param insOrderAdjust
+     * @return
+     */
+    private void checkProduct(List<InsOrderAdjustInfo> orderAdjustInfos, InsOrderAdjust insOrderAdjust) {
+        Boolean jq = false;
+        Boolean sz = false;
+        Boolean sy = false;
+
+        List<InsOrderAdjustInfo> jqInfos = orderAdjustInfos.stream().filter(info -> info.getKindType().equals(0) && !info.getType().equals(2)).collect(Collectors.toList());
+        if(CollUtil.isNotEmpty(jqInfos)){
+            if (!jqInfos.get(0).getType().equals(2)){
+                jq = true;
+            }
+        }
+
+        List<InsOrderAdjustInfo> syInfos = orderAdjustInfos.stream().filter(info -> info.getKindType().equals(1) && !info.getType().equals(2)).collect(Collectors.toList());
+        if(CollUtil.isNotEmpty(syInfos)){
+            if(syInfos.size() > 1){
+                sy = true;
+            }else{
+                InsOrderAdjustInfo syInfo = syInfos.get(0);
+                if (syInfo.getKindName().equals("第三者责任险")){
+                    sz = true;
+                }else{
+                    sy = true;
+                }
+            }
+        }
+        if (jq && sy){ // 交商
+            insOrderAdjust.setProductId("0330034001");
+            insOrderAdjust.setProductName("交商");
+        } else if (jq && sz){ // 交三
+            insOrderAdjust.setProductId("0330034002");
+            insOrderAdjust.setProductName("交三");
+        } else if (jq){ // 单交
+            insOrderAdjust.setProductId("0330");
+            insOrderAdjust.setProductName("单交");
+        } else if (sy){ // 单商
+            insOrderAdjust.setProductId("034001");
+            insOrderAdjust.setProductName("单商");
+        } else if (sz){ // 单三
+            insOrderAdjust.setProductId("034002");
+            insOrderAdjust.setProductName("单三");
+        }else{
+            insOrderAdjust.setProductId(null);
+            insOrderAdjust.setProductName(null);
+        }
+    }
+}
+
+
+
+

+ 187 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderAdjustServiceImpl.java

@@ -0,0 +1,187 @@
+package com.jzg.quotation.summary.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+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.jzg.commons.entity.dto.OrderAdjustAddParam;
+import com.jzg.commons.entity.dto.OrderAdjustExportParam;
+import com.jzg.commons.entity.dto.OrderAdjustParam;
+import com.jzg.commons.entity.orders.po.*;
+import com.jzg.commons.entity.vo.OrderAdjustInfoVo;
+import com.jzg.commons.entity.vo.OrderAdjustVo;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.util.EasyExcelUtils;
+import com.jzg.commons.util.ServletUtils;
+import com.jzg.quotation.summary.mapper.InsOrderAdjustInfoMapper;
+import com.jzg.quotation.summary.mapper.InsOrderAdjustMapper;
+import com.jzg.quotation.summary.service.InsOrderAdjustService;
+import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
+import com.jzg.quotation.summary.service.InsOrdersCostsService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.checkerframework.checker.units.qual.C;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_order_adjust(订单批改表)】的数据库操作Service实现
+* @createDate 2025-09-16 10:48:13
+*/
+@Service
+public class InsOrderAdjustServiceImpl extends ServiceImpl<InsOrderAdjustMapper, InsOrderAdjust>
+    implements InsOrderAdjustService {
+
+    @Autowired
+    private InsOrderAdjustInfoMapper orderAdjustInfoMapper;
+
+    @Autowired
+    private InsOrdersCarInfoService ordersCarInfoService;
+
+    @Autowired
+    private InsOrdersCostsService ordersCostsService;
+
+    @Override
+    public Page<OrderAdjustVo> queryPage(OrderAdjustParam param) {
+        Page<OrderAdjustVo> page = baseMapper.queryPage(param.getPage(), param);
+        return page;
+    }
+
+    @Override
+    public List<OrderAdjustVo> adjustList(OrderAdjustExportParam param) {
+        List<OrderAdjustVo> adjustVoList = baseMapper.adjustList(param);
+        return adjustVoList;
+    }
+
+    @Override
+    public boolean adjustDel(String id) {
+        LambdaQueryWrapper<InsOrderAdjust> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InsOrderAdjust::getId, id);
+        wrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        wrapper.eq(InsOrderAdjust::getStatus, 3);
+        List<InsOrderAdjust> adjusts = this.list(wrapper);
+        if(CollUtil.isNotEmpty(adjusts)){
+            InsOrderAdjust adjust = adjusts.get(0);
+            LambdaQueryWrapper<InsOrderAdjustInfo> infoWrapper = new LambdaQueryWrapper<>();
+            infoWrapper.eq(InsOrderAdjustInfo::getAdjustId, adjust.getId());
+            infoWrapper.eq(InsOrderAdjustInfo::getIsDelete, 0);
+            List<InsOrderAdjustInfo> infos = orderAdjustInfoMapper.selectList(infoWrapper);
+            if(CollUtil.isNotEmpty(infos)){
+                orderAdjustInfoMapper.deleteByIds(infos);
+            }
+            return this.removeById(adjust.getId());
+        }else{
+            return false;
+        }
+    }
+
+
+    @Override
+    public OrderAdjustInfoVo queryById(String id) {
+        OrderAdjustVo orderAdjustVo = this.isExistById(id);
+        LambdaQueryWrapper<InsOrderAdjustInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InsOrderAdjustInfo::getAdjustId, orderAdjustVo.getId());
+        queryWrapper.eq(InsOrderAdjustInfo::getIsDelete, 0);
+        List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoMapper.selectList(queryWrapper);
+//        BigDecimal subAmount = new BigDecimal(0);
+//        BigDecimal addAmount = new BigDecimal(0);
+//        if(CollUtil.isNotEmpty(adjustInfos)) {
+//            for (InsOrderAdjustInfo adjustInfo : adjustInfos) {
+//                if(adjustInfo.getAdjustType().equals(0)){
+//                    addAmount.add(adjustInfo.getAdjustAmount());
+//                }else{
+//                    subAmount.add(adjustInfo.getAdjustAmount());
+//                }
+//            }
+//        }
+//        orderAdjustVo.setSubAmount(subAmount);
+//        orderAdjustVo.setAddAmount(addAmount);
+        OrderAdjustInfoVo orderAdjustInfoVo = new OrderAdjustInfoVo();
+        orderAdjustInfoVo.setOrderAdjustVo(orderAdjustVo);
+        orderAdjustInfoVo.setAdjustInfos(adjustInfos);
+        return orderAdjustInfoVo;
+    }
+
+    @Override
+    public OrderAdjustVo isExistById(String id) {
+        OrderAdjustVo orderAdjustVo = baseMapper.queryById(id);
+        if (ObjectUtils.isEmpty(orderAdjustVo)) {
+            throw new SystemException("订单批改信息不存在!");
+        }
+        return orderAdjustVo;
+    }
+
+    @Override
+    public String adjustAdd(OrderAdjustAddParam param, InsOrders order) {
+        // 获取订单车辆信息
+        InsOrdersCarInfo carInfo = ordersCarInfoService.getByOrderId(order.getId());
+
+        // 获取最新的订单批改
+        LambdaQueryWrapper<InsOrderAdjust> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InsOrderAdjust::getOrderNo, param.getOrderNo());
+        wrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        wrapper.eq(InsOrderAdjust::getStatus, 2);
+        wrapper.orderByDesc(InsOrderAdjust::getCreateTime);
+        List<InsOrderAdjust> adjusts = this.list(wrapper);
+
+        BigDecimal premium = new BigDecimal(0);
+        if (CollUtil.isNotEmpty(adjusts)) {
+            InsOrderAdjust adjust = adjusts.get(0);
+            premium = adjust.getAfterPremium();
+            InsOrderAdjust adjustNew = new InsOrderAdjust();
+            BeanUtils.copyProperties(adjust, adjustNew);
+            adjustNew.setId(null);
+            adjustNew.setStatus(0);
+            adjustNew.setType(param.getType());
+            adjustNew.setOrderNo(param.getOrderNo());
+            adjustNew.setPremium(premium);
+            adjustNew.setAfterPremium(null);
+            adjustNew.setAfterJqPremium(null);
+            adjustNew.setAfterSyPremium(null);
+            adjustNew.setAfterJyPremium(null);
+            this.save(adjustNew);
+            return adjustNew.getId();
+        }else{
+            InsOrdersCosts costs = ordersCostsService.getById(param.getOrderNo());
+            premium = costs.getSumPremium().subtract(costs.getTaxPremium());
+            InsOrderAdjust adjust = new InsOrderAdjust();
+            adjust.setOrderNo(param.getOrderNo());
+            adjust.setType(param.getType());
+            adjust.setCompanyId(order.getCompanyId());
+            adjust.setCompanyName(order.getCompanyName());
+            adjust.setStatus(0);
+            adjust.setLicenseNo(carInfo.getLicenseNo());
+            adjust.setPremium(premium);
+            adjust.setProductId(order.getProductId());
+            adjust.setProductName(order.getProductName());
+            this.save(adjust);
+            return adjust.getId();
+        }
+    }
+
+    @Override
+    public boolean adjustRemove(String orderNo) {
+        LambdaQueryWrapper<InsOrderAdjust> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InsOrderAdjust::getOrderNo, orderNo);
+        wrapper.eq(InsOrderAdjust::getIsDelete, 0);
+        wrapper.eq(InsOrderAdjust::getStatus, 0);
+        wrapper.orderByDesc(InsOrderAdjust::getCreateTime);
+        List<InsOrderAdjust> adjusts = this.list(wrapper);
+        if(CollUtil.isNotEmpty(adjusts)){
+            InsOrderAdjust adjust = adjusts.get(0);
+            return this.removeById(adjust.getId());
+        }else{
+            return false;
+        }
+    }
+
+}
+
+
+
+

+ 22 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -102,6 +102,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     private final BaseController baseController;
 
+    private final InsOrderAdjustInfoService orderAdjustInfoService;
+
     @Autowired
     @Lazy
     private InsFeeAuditService insFeeAuditService; // ✅ 改为字段注入 + 延迟加载
@@ -399,6 +401,15 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo.getInsOrdersRiskList().forEach(riskInfo -> {
                 if (StringUtils.equals(riskInfo.getRiskCode(),"0507")){
                     insOrdersVo.setCiRiskInfoVo(getRiskInfoVo(riskInfo));
+                    List<KindInfoVo> kindInfoVos = insOrdersVo.getKindInfoVo();
+                    InsOrdersCosts insOrdersCosts = insOrdersVo.getInsOrdersCosts();
+                    KindInfoVo jqKind = new KindInfoVo();
+                    jqKind.setKindCode("J1");
+                    jqKind.setKindName("交强险");
+                    if(Objects.nonNull(insOrdersCosts.getJqPremium())){
+                        jqKind.setPremium(insOrdersCosts.getJqPremium().toString());
+                    }
+                    kindInfoVos.add(jqKind);
                 }else {
                     insOrdersVo.setBiRiskInfoVo(getRiskInfoVo(riskInfo));
                 }
@@ -420,6 +431,17 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
             insOrdersVo.setSpecialInfoVo(companyClauseList);
         }
+
+        // 批改明细查询
+        if (insOrdersVo.getInsOrderAdjust() !=  null) {
+            LambdaQueryWrapper<InsOrderAdjustInfo> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(InsOrderAdjustInfo::getAdjustId, insOrdersVo.getInsOrderAdjust().getId());
+            wrapper.eq(InsOrderAdjustInfo::getIsDelete, 0);
+            List<InsOrderAdjustInfo> infos = orderAdjustInfoService.list(wrapper);
+            if (CollectionUtil.isNotEmpty(infos)) {
+                insOrdersVo.getInsOrderAdjust().setAdjustInfoList(infos);
+            }
+        }
         insOrdersVo.setInsOrdersTax(insOrdersTaxService.getById(id));
         setInsOrdersExternalPolicy(insOrdersVo.getInsOrdersExternalPolicy());
         return insOrdersVo;

+ 3 - 0
tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml

@@ -126,6 +126,9 @@ huatai:
     huaTaiKey: AdOdn409KE6Z9XvFsJ
     key: kFl5aiHALbZ6TMTqQDxghMMC
     tokenUrl: https://vehpxy.pc.ehuatai.com/sign
+    username: "UE27017723VPN01"
+    password: "Dhbx135....."
+    comcode: "9270901-营业部代理业务一部"
 # 渤海财险生产api
 bohai:
   api:

+ 54 - 7
tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeOrdersMapper.xml

@@ -5,14 +5,50 @@
 <mapper namespace="com.jzg.quotation.summary.mapper.InsFeeOrdersMapper">
 
     <select id="getInsFeeOrdersList" resultType="com.jzg.commons.entity.po.InsFeeOrders">
-        select ifo.*,
-               io.signing_time as signingTime
+        select
+            *,
+            ioci.license_no as licenseNo
         from ins_fee_orders ifo
-                 left join ins_orders io on io.id = ifo.order_no
+        left join ins_orders_car_info ioci on ioci.order_no = ifo.order_no
         where
-            (ifo.first_distributor_id = #{userId}
-            or ifo.second_distributor_id = #{userId}
-            or ifo.third_distributor_id = #{userId})
+            1=1
+            <if test="param.distributorId != null and param.distributorId != ''">
+                and (ifo.first_distributor_id = #{param.distributorId}
+                or ifo.second_distributor_id = #{param.distributorId}
+                or ifo.third_distributor_id = #{param.distributorId})
+            </if>
+            <if test="param.userId != null and param.userId != ''">
+                and ifo.user_id = #{param.userId}
+            </if>
+            <if test="param.createTimeStart != null and param.createTimeEnd != null">
+                and ifo.signing_time between #{param.createTimeStart} and #{param.createTimeEnd}
+            </if>
+    </select>
+
+    <select id="getInsFeeOrderListByUserId" resultType="com.jzg.commons.entity.po.InsFeeOrders">
+        select
+            *,
+            ioci.license_no as licenseNo
+        from
+             ins_fee_orders ifo
+        left join ins_orders_car_info ioci on ioci.order_no = ifo.order_no
+        where 1 = 1
+        <if test="param.userId != null and param.userId != ''">
+            and ifo.user_id = #{param.userId}
+        </if>
+        <if test="param.createTimeStart != null and param.createTimeEnd != null">
+            and ifo.signing_time between #{param.createTimeStart} and #{param.createTimeEnd}
+        </if>
+    </select>
+
+
+    <select id="getInsFeeOrderListByTopReferrerIdAndUserId" resultType="com.jzg.commons.entity.po.InsFeeOrders">
+        select * from ins_fee_orders ifo
+        where 1 = 1
+        and
+            ((ifo.first_distributor_id = #{userId} OR ifo.second_distributor_id = #{userId} OR ifo.third_distributor_id = #{userId})
+          AND
+            (ifo.first_distributor_id = #{topReferrerId} OR ifo.second_distributor_id = #{topReferrerId} OR ifo.third_distributor_id = #{topReferrerId}))
     </select>
 
     <select id="getInsFeeOrderAudit" resultType="com.jzg.commons.entity.po.InsFeeOrders">
@@ -20,10 +56,21 @@
                io.signing_time as signingTime
         from ins_fee_orders ifo
                  left join ins_fee_audit ifa on ifa.order_no = ifo.order_no
+                 left join ins_orders io on io.id = ifo.order_no
         where
             (ifo.first_distributor_id = #{userId}
                 or ifo.second_distributor_id = #{userId}
                 or ifo.third_distributor_id = #{userId})
-            and ifa.status = 0
+            and ifa.audit_status = 0
+    </select>
+
+    <select id="getInsFeeOrderByOrderNo" resultType="com.jzg.commons.entity.po.InsFeeOrders">
+        select
+            *
+        from
+            ins_fee_orders ifo
+        where 1 = 1
+        and
+            ifo.order_no = #{orderNo}
     </select>
 </mapper>

+ 36 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderAdjustInfoMapper.xml

@@ -0,0 +1,36 @@
+<?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.jzg.quotation.summary.mapper.InsOrderAdjustInfoMapper">
+
+<!--    <resultMap id="BaseResultMap" type="generator.domain.InsOrderAdjustInfo">-->
+<!--            <id property="id" column="id" jdbcType="VARCHAR"/>-->
+<!--            <result property="adjustId" column="adjust_id" jdbcType="VARCHAR"/>-->
+<!--            <result property="relatedId" column="related_id" jdbcType="VARCHAR"/>-->
+<!--            <result property="kindType" column="kind_type" jdbcType="TINYINT"/>-->
+<!--            <result property="kindCode" column="kind_code" jdbcType="VARCHAR"/>-->
+<!--            <result property="kindName" column="kind_name" jdbcType="VARCHAR"/>-->
+<!--            <result property="amount" column="amount" jdbcType="INTEGER"/>-->
+<!--            <result property="premium" column="premium" jdbcType="DECIMAL"/>-->
+<!--            <result property="quantity" column="quantity" jdbcType="INTEGER"/>-->
+<!--            <result property="type" column="type" jdbcType="TINYINT"/>-->
+<!--            <result property="adjustType" column="adjust_type" jdbcType="TINYINT"/>-->
+<!--            <result property="adjustQuantity" column="adjust_quantity" jdbcType="INTEGER"/>-->
+<!--            <result property="adjustAmount" column="adjust_amount" jdbcType="DECIMAL"/>-->
+<!--            <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>-->
+<!--            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>-->
+<!--            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>-->
+<!--            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>-->
+<!--            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>-->
+<!--    </resultMap>-->
+
+    <sql id="Base_Column_List">
+        id,adjust_id,related_id,
+        kind_type,kind_code,kind_name,
+        amount,premium,quantity,
+        type,adjust_type,adjust_quantity,
+        adjust_amount,is_delete,create_time,
+        create_by,update_time,update_by
+    </sql>
+</mapper>

+ 116 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderAdjustMapper.xml

@@ -0,0 +1,116 @@
+<?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.jzg.quotation.summary.mapper.InsOrderAdjustMapper">
+
+<!--    <resultMap id="BaseResultMap" type="generator.domain.InsOrderAdjust">-->
+<!--            <id property="id" column="id" jdbcType="BIGINT"/>-->
+<!--            <result property="orderNo" column="order_no" jdbcType="BIGINT"/>-->
+<!--            <result property="licenseNo" column="license_no" jdbcType="VARCHAR"/>-->
+<!--            <result property="companyId" column="company_id" jdbcType="VARCHAR"/>-->
+<!--            <result property="companyName" column="company_name" jdbcType="VARCHAR"/>-->
+<!--            <result property="status" column="status" jdbcType="TINYINT"/>-->
+<!--            <result property="type" column="type" jdbcType="TINYINT"/>-->
+<!--            <result property="sumPremium" column="sum_premium" jdbcType="DECIMAL"/>-->
+<!--            <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>-->
+<!--            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>-->
+<!--            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>-->
+<!--            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>-->
+<!--            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>-->
+<!--    </resultMap>-->
+
+    <sql id="Base_Column_List">
+        ioa.id,ioa.order_no as orderNo,ioa.license_no as licenseNo,
+        ioa.company_name as companyName,ioa.status,ioa.company_id as companyId,
+        ioa.type,ioa.after_premium as afterPremium,ioa.premium,
+        ioa.create_time as createTime,ioa.create_by AS createBy,ioa.update_time as updateTime,ioa.update_by AS updateBy,
+        ioa.after_jq_premium as afterJqPremium, ioa.after_sy_premium as afterSyPremium,
+        ioa.after_jy_premium as afterJyPremium
+    </sql>
+    <select id="queryPage" resultType="com.jzg.commons.entity.vo.OrderAdjustVo">
+        select <include refid="Base_Column_List"/>
+        FROM ins_order_adjust ioa
+        LEFT JOIN sys_user su on ioa.create_by = su.username
+        <where>
+            ioa.is_delete = 0
+            <if test="param.orderNo != null and param.orderNo != ''">
+                and ioa.order_no = #{param.orderNo}
+            </if>
+            <if test="param.licenseNo != null and param.licenseNo != ''">
+                and ioa.license_no = #{param.licenseNo}
+            </if>
+            <if test="param.companyId != null and param.companyId != ''">
+                and ioa.company_id = #{param.companyId}
+            </if>
+            <if test="param.salesman != null and param.salesman != ''">
+                and (su.username = #{param.salesman} or su.mobile = #{param.salesman})
+            </if>
+            <if test="param.status != null ">
+                and ioa.status = #{param.status}
+            </if>
+            <if test="param.type != null ">
+                and ioa.type = #{param.type}
+            </if>
+            <if test="param.startDate != null and param.endDate != null">
+                and DATE_FORMAT(ioa.create_time, '%Y-%m-%d') between #{param.startDate} AND #{param.endDate}
+            </if>
+        </where>
+        ORDER BY ioa.create_time DESC
+    </select>
+
+    <select id="adjustList" resultType="com.jzg.commons.entity.vo.OrderAdjustVo">
+        select <include refid="Base_Column_List"/>,ioa.after_premium - ioa.premium as changePremium,
+        CASE ioa.status
+        WHEN 0 THEN '订单批改中'
+        WHEN 1 THEN '待审核'
+        WHEN 2 THEN '审核通过'
+        WHEN 3 THEN '退回修改'
+        WHEN 4 THEN '拒绝批改'
+        ELSE '未知状态'
+        END AS statusStr,
+        CASE ioa.type
+        WHEN 0 THEN '整单退保'
+        WHEN 1 THEN '险种批改'
+        ELSE '未知类型'
+        END AS typeStr
+        FROM ins_order_adjust ioa
+        LEFT JOIN sys_user su on ioa.create_by = su.username
+        <where>
+            ioa.is_delete = 0
+            <if test="param.orderNo != null and param.orderNo != ''">
+                and ioa.order_no = #{param.orderNo}
+            </if>
+            <if test="param.licenseNo != null and param.licenseNo != ''">
+                and ioa.license_no = #{param.licenseNo}
+            </if>
+            <if test="param.companyId != null and param.companyId != ''">
+                and ioa.company_id = #{param.companyId}
+            </if>
+            <if test="param.salesman != null and param.salesman != ''">
+                and (su.username = #{param.salesman} or su.mobile = #{param.salesman})
+            </if>
+            <if test="param.status != null ">
+                and ioa.status = #{param.status}
+            </if>
+            <if test="param.type != null ">
+                and ioa.type = #{param.type}
+            </if>
+            <if test="param.startDate != null and param.endDate != null">
+                and DATE_FORMAT(ioa.create_time, '%Y-%m-%d') between #{param.startDate} AND #{param.endDate}
+            </if>
+        </where>
+        ORDER BY ioa.create_time DESC
+    </select>
+    <select id="queryById" resultType="com.jzg.commons.entity.vo.OrderAdjustVo">
+        select <include refid="Base_Column_List"/>
+        FROM ins_order_adjust ioa
+        <where>
+            ioa.is_delete = 0
+            <if test="id != null and id != ''">
+                and ioa.id = #{id}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 44 - 1
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -149,6 +149,20 @@
         <result property="endDate" column="end_date" jdbcType="VARCHAR"/>
     </resultMap>
 
+    <!--订单 批改-->
+    <resultMap id="InsOrderAdjustMap" type="com.jzg.commons.entity.orders.po.InsOrderAdjust">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
+        <result property="licenseNo" column="license_no" jdbcType="VARCHAR"/>
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+        <result property="companyName" column="company_name" jdbcType="VARCHAR"/>
+        <result property="productId" column="product_id" jdbcType="VARCHAR"/>
+        <result property="productName" column="product_name" jdbcType="VARCHAR"/>
+        <result property="status" column="status" jdbcType="VARCHAR"/>
+        <result property="type" column="type" jdbcType="VARCHAR"/>
+        <result property="premium" column="premium" jdbcType="VARCHAR"/>
+        <result property="afterPremium" column="after_premium" jdbcType="VARCHAR"/>
+    </resultMap>
 
     <!--订单 车船税-->
     <resultMap id="InsOrdersTaxMap" type="com.jzg.commons.entity.orders.po.InsOrdersTax">
@@ -188,6 +202,7 @@
         <association property="vehicleAndVesselTaxVo" column="{orderNo=id}" select="selectOrdersTaxMap" />
         <association property="imagesAdds" column="{orderNo=id}" select="selectImageByOrderNo" />
         <collection property="insOrdersRiskList"  column="{orderNo=id}" select="selectOrdersRisk" />
+        <collection property="insOrderAdjust"  column="{orderNo=id}" select="selectOrderAdjust" />
         <collection property="carUserInfoList"  column="{orderNo=id}"  select="selectCarUserInfo" />
         <collection property="kindInfoVo" column="{orderNo=id}" select="selectKindMap" />
         <collection property="insOrdersCosts" column="{orderNo=id}" select="selectOrdersCostsByOrderNo" />
@@ -329,6 +344,10 @@
         select id,order_no,risk_name,amount,commission_rate,premium,risk_code,no_tax_premium,commission_amount,start_date,end_date from  ins_orders_risk where order_no = #{orderNo}
     </select>
 
+    <select id="selectOrderAdjust" resultMap="InsOrderAdjustMap">
+        select id,order_no ,license_no ,company_id,product_id,product_name,company_name ,status,type,after_premium,premium from ins_order_adjust where order_no = #{orderNo} AND status in (1,2,3) AND is_delete = 0 order by create_time desc limit 1
+    </select>
+
     <select id="selectOrdersTax" resultMap="InsOrdersTaxMap">
         select order_no,extend_char2,tax_relief,relif_reason,tax_com_code,tax_com_name,tax_document_date,tax_paid_area_code,paid_free_certificate,taxpayer_name,taxpayer_identifier,identify_number,tax_relif_flag from  ins_orders_tax where order_no = #{orderNo}
     </select>
@@ -480,7 +499,10 @@
             suji.type_attr as salesmanType,
             pa.agreement_name as agreementName,
             sd.name as deptName,
-            io.pay_link as paymentLink
+            io.pay_link as paymentLink,
+            ioa.status as adjustStatus,
+            ioa.id as adjustId,
+            ioa1.after_premium as adjustPremium
         FROM
             ins_orders io
                 LEFT JOIN ins_orders_car_info ioci ON ioci.order_no = io.id
@@ -504,6 +526,24 @@
             sys_dept sd on sd.id = suji.dept_id
                 left join
             ptl_agreement pa on pa.id = io.agreement_id
+                left join
+            (
+                SELECT *
+                    FROM (
+                        SELECT t.*,
+                        ROW_NUMBER() OVER(PARTITION BY t.order_no ORDER BY t.create_time DESC) AS rn
+                        FROM ins_order_adjust t where t.is_delete = 0
+                    ) x WHERE x.rn = 1
+            ) ioa ON io.id = ioa.order_no
+                left join
+            (
+            SELECT *
+            FROM (
+                SELECT t.*,
+                ROW_NUMBER() OVER(PARTITION BY t.order_no ORDER BY t.create_time DESC) AS rn
+                FROM ins_order_adjust t where t.status = 2 and t.is_delete = 0
+            ) x WHERE x.rn = 1
+        ) ioa1 ON io.id = ioa1.order_no
         where
             1=1
         <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
@@ -515,6 +555,9 @@
         <if test="insOrdersParam.orderStatus!= null and insOrdersParam.orderStatus!= ''">
             AND io.order_status = #{insOrdersParam.orderStatus}
         </if>
+        <if test="insOrdersParam.adjustStatus!= null and insOrdersParam.adjustStatus!= ''">
+            AND ioa.status = #{insOrdersParam.adjustStatus}
+        </if>
         <if test="insOrdersParam.salesman!= null">
             AND io.real_quote_user_id = #{insOrdersParam.salesman}
         </if>

+ 3 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersTrackMapper.xml

@@ -30,6 +30,9 @@
             <if test="param.orderNo != null and param.orderNo != ''">
                 and order_no = #{param.orderNo}
             </if>
+            <if test="param.module != null and param.module != ''">
+                and `module` = #{param.module}
+            </if>
         </where>
         order by create_time desc
     </select>

+ 142 - 142
tenant/insurance/quotation-zhongan/src/test/java/com/jzg/quotation/zhongan/crawler/service/ZhongAnAPIServiceTest.java

@@ -1,142 +1,142 @@
-package com.jzg.quotation.zhongan.crawler.service;
-
-import com.jzg.quotation.commons.component.RequestComponent;
-import com.jzg.quotation.zhongan.crawler.model.entity.ZhongAnBizDocumentInfo;
-import com.jzg.quotation.zhongan.crawler.model.result.ZhongAnQueryCarInfoResult;
-import com.jzg.quotation.zhongan.crawler.model.result.ZhongAnQueryDocumentInfoResult;
-import com.jzg.quotation.zhongan.crawler.model.result.ZhongAnQueryPolicyDetailResult;
-import io.netty.channel.ChannelOption;
-import io.netty.handler.ssl.SslContextBuilder;
-import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
-import io.netty.handler.timeout.ReadTimeoutHandler;
-import io.netty.handler.timeout.WriteTimeoutHandler;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.client.reactive.ReactorClientHttpConnector;
-import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
-import org.springframework.web.reactive.function.client.WebClient;
-import reactor.core.publisher.Mono;
-import reactor.netty.http.client.HttpClient;
-import reactor.netty.resources.ConnectionProvider;
-
-import java.time.Duration;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class ZhongAnAPIServiceTest {
-    private static final Logger logger = LoggerFactory.getLogger(ZhongAnAPIServiceTest.class);
-
-    private static ZhongAnAPIService zhongAnAPIService;
-
-
-    @BeforeAll
-    public static void before() {
-        // 启用SSL调试(查看握手过程)
-        //System.setProperty("javax.net.debug", "ssl:handshake");
-
-        // 配置HTTP连接池
-        ConnectionProvider connectionProvider = ConnectionProvider
-                .builder("http")
-                .maxConnections(500)
-                .maxIdleTime(Duration.ofSeconds(30))
-                .build();
-
-        // 配置HTTP客户端
-        HttpClient httpClient = reactor.netty.http.client.HttpClient
-                .create(connectionProvider)
-                .secure(ssl -> ssl.sslContext(
-                        SslContextBuilder.forClient()
-                                .trustManager(InsecureTrustManagerFactory.INSTANCE)
-                ))
-                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
-                .responseTimeout(Duration.ofSeconds(50))
-                .doOnConnected(conn ->
-                        conn.addHandlerLast(new ReadTimeoutHandler(50)).addHandlerLast(new WriteTimeoutHandler(50)));
-
-        WebClient.builder()
-                .clientConnector(new ReactorClientHttpConnector(httpClient))
-                .build();
-        // 构建WebClient实例
-        WebClient webClient = WebClient
-                .builder()
-                .clientConnector(new ReactorClientHttpConnector(httpClient))
-                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
-                .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
-                .filter(ExchangeFilterFunction.ofRequestProcessor(
-                        clientRequest -> {
-                            // 打印请求头信息
-                            clientRequest
-                                    .headers()
-                                    .forEach((key, values) -> {
-                                        logger.info("请求头: {}: {}", key, values);
-                                    });
-                            return Mono.just(clientRequest);
-                        }
-                ))
-                .codecs(item->item.defaultCodecs().maxInMemorySize(10 * 1024 * 1024))
-                .build();
-
-
-        RequestComponent requestComponent = new RequestComponent(webClient);
-
-        zhongAnAPIService = new ZhongAnAPIService();
-        zhongAnAPIService.setRequestComponent(requestComponent);
-
-
-        //ChengTaiAPIHelper.initAPI("https://b2b.champion-ic.com");
-    }
-
-
-    @Test
-    public void queryDocumentInfo() {
-        String token = "zaLoginCookieKey=9b902b0ec92581f51587ce2a9da7019ec8f9582b1a43c0f437b9566049b486c2;";
-        ZhongAnQueryDocumentInfoResult zhongAnQueryDocumentInfoResult = zhongAnAPIService.queryDocumentInfo(token, "291e19533f8ee5b20d8eaf64ec4f43b5");
-
-        assertNotNull(zhongAnQueryDocumentInfoResult);
-
-        List<ZhongAnBizDocumentInfo> bizDocumentInfo = zhongAnQueryDocumentInfoResult.getBizDocumentInfo();
-
-        for (ZhongAnBizDocumentInfo bizDocument : bizDocumentInfo) {
-            String url = "https://c.zhongan.com/open/bmw/n/query_controller/downloadDocument.json?orderNo=%s&fileName=%s&documentUrl=%s".formatted("291e19533f8ee5b20d8eaf64ec4f43b5",bizDocument.getDocumentName(), bizDocument.getDocumentUrl());
-
-            System.out.println(url);
-        }
-    }
-
-    @Test
-    public void queryPolicyDetail() {
-        String token = "zaLoginCookieKey=9b902b0ec92581f51587ce2a9da7019ec8f9582b1a43c0f437b9566049b486c2;";
-        String policyId = "bd162dd1260519fc39aa446aee32d9ab";
-
-        ZhongAnQueryPolicyDetailResult result = zhongAnAPIService.queryPolicyDetail(token, policyId);
-
-        assertNotNull(result);
-
-        String policyStatus = result.getDatas().getPolicy().getVehiclePolicyDTO().getPolicyStatus();
-        String policyStatusText = result.getDatas().getPolicy().getVehiclePolicyDTO().getPolicyStatusText();
-
-        System.out.println(policyStatus);
-        System.out.println(policyStatusText);
-    }
-
-    @Test
-    public void queryCarInfo() {
-        String token = "zaLoginCookieKey=9b902b0ec92581f51587ce2a9da7019ec8f9582b1a43c0f437b9566049b486c2;";
-        String flowId = "FJ14309612196676b6cd4";
-
-        ZhongAnQueryCarInfoResult result = zhongAnAPIService.queryCarInfo(token, flowId);
-
-        assertNotNull(result);
-
-        Map<String, Object> unknownFields = result.getUnknownFields();
-
-        System.out.println();
-        System.out.println(unknownFields);
-    }
-}
+//package com.jzg.quotation.zhongan.crawler.service;
+//
+//import com.jzg.quotation.commons.component.RequestComponent;
+//import com.jzg.quotation.zhongan.crawler.model.entity.ZhongAnBizDocumentInfo;
+//import com.jzg.quotation.zhongan.crawler.model.result.ZhongAnQueryCarInfoResult;
+//import com.jzg.quotation.zhongan.crawler.model.result.ZhongAnQueryDocumentInfoResult;
+//import com.jzg.quotation.zhongan.crawler.model.result.ZhongAnQueryPolicyDetailResult;
+//import io.netty.channel.ChannelOption;
+//import io.netty.handler.ssl.SslContextBuilder;
+//import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
+//import io.netty.handler.timeout.ReadTimeoutHandler;
+//import io.netty.handler.timeout.WriteTimeoutHandler;
+//import org.junit.jupiter.api.BeforeAll;
+//import org.junit.jupiter.api.Test;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.http.HttpHeaders;
+//import org.springframework.http.MediaType;
+//import org.springframework.http.client.reactive.ReactorClientHttpConnector;
+//import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
+//import org.springframework.web.reactive.function.client.WebClient;
+//import reactor.core.publisher.Mono;
+//import reactor.netty.http.client.HttpClient;
+//import reactor.netty.resources.ConnectionProvider;
+//
+//import java.time.Duration;
+//import java.util.List;
+//import java.util.Map;
+//
+//import static org.junit.jupiter.api.Assertions.assertNotNull;
+//
+//public class ZhongAnAPIServiceTest {
+//    private static final Logger logger = LoggerFactory.getLogger(ZhongAnAPIServiceTest.class);
+//
+//    private static ZhongAnAPIService zhongAnAPIService;
+//
+//
+//    @BeforeAll
+//    public static void before() {
+//        // 启用SSL调试(查看握手过程)
+//        //System.setProperty("javax.net.debug", "ssl:handshake");
+//
+//        // 配置HTTP连接池
+//        ConnectionProvider connectionProvider = ConnectionProvider
+//                .builder("http")
+//                .maxConnections(500)
+//                .maxIdleTime(Duration.ofSeconds(30))
+//                .build();
+//
+//        // 配置HTTP客户端
+//        HttpClient httpClient = reactor.netty.http.client.HttpClient
+//                .create(connectionProvider)
+//                .secure(ssl -> ssl.sslContext(
+//                        SslContextBuilder.forClient()
+//                                .trustManager(InsecureTrustManagerFactory.INSTANCE)
+//                ))
+//                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
+//                .responseTimeout(Duration.ofSeconds(50))
+//                .doOnConnected(conn ->
+//                        conn.addHandlerLast(new ReadTimeoutHandler(50)).addHandlerLast(new WriteTimeoutHandler(50)));
+//
+//        WebClient.builder()
+//                .clientConnector(new ReactorClientHttpConnector(httpClient))
+//                .build();
+//        // 构建WebClient实例
+//        WebClient webClient = WebClient
+//                .builder()
+//                .clientConnector(new ReactorClientHttpConnector(httpClient))
+//                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
+//                .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
+//                .filter(ExchangeFilterFunction.ofRequestProcessor(
+//                        clientRequest -> {
+//                            // 打印请求头信息
+//                            clientRequest
+//                                    .headers()
+//                                    .forEach((key, values) -> {
+//                                        logger.info("请求头: {}: {}", key, values);
+//                                    });
+//                            return Mono.just(clientRequest);
+//                        }
+//                ))
+//                .codecs(item->item.defaultCodecs().maxInMemorySize(10 * 1024 * 1024))
+//                .build();
+//
+//
+//        RequestComponent requestComponent = new RequestComponent(webClient);
+//
+//        zhongAnAPIService = new ZhongAnAPIService();
+//        zhongAnAPIService.setRequestComponent(requestComponent);
+//
+//
+//        //ChengTaiAPIHelper.initAPI("https://b2b.champion-ic.com");
+//    }
+//
+//
+//    @Test
+//    public void queryDocumentInfo() {
+//        String token = "zaLoginCookieKey=9b902b0ec92581f51587ce2a9da7019ec8f9582b1a43c0f437b9566049b486c2;";
+//        ZhongAnQueryDocumentInfoResult zhongAnQueryDocumentInfoResult = zhongAnAPIService.queryDocumentInfo(token, "291e19533f8ee5b20d8eaf64ec4f43b5");
+//
+//        assertNotNull(zhongAnQueryDocumentInfoResult);
+//
+//        List<ZhongAnBizDocumentInfo> bizDocumentInfo = zhongAnQueryDocumentInfoResult.getBizDocumentInfo();
+//
+//        for (ZhongAnBizDocumentInfo bizDocument : bizDocumentInfo) {
+//            String url = "https://c.zhongan.com/open/bmw/n/query_controller/downloadDocument.json?orderNo=%s&fileName=%s&documentUrl=%s".formatted("291e19533f8ee5b20d8eaf64ec4f43b5",bizDocument.getDocumentName(), bizDocument.getDocumentUrl());
+//
+//            System.out.println(url);
+//        }
+//    }
+//
+//    @Test
+//    public void queryPolicyDetail() {
+//        String token = "zaLoginCookieKey=9b902b0ec92581f51587ce2a9da7019ec8f9582b1a43c0f437b9566049b486c2;";
+//        String policyId = "bd162dd1260519fc39aa446aee32d9ab";
+//
+//        ZhongAnQueryPolicyDetailResult result = zhongAnAPIService.queryPolicyDetail(token, policyId);
+//
+//        assertNotNull(result);
+//
+//        String policyStatus = result.getDatas().getPolicy().getVehiclePolicyDTO().getPolicyStatus();
+//        String policyStatusText = result.getDatas().getPolicy().getVehiclePolicyDTO().getPolicyStatusText();
+//
+//        System.out.println(policyStatus);
+//        System.out.println(policyStatusText);
+//    }
+//
+//    @Test
+//    public void queryCarInfo() {
+//        String token = "zaLoginCookieKey=9b902b0ec92581f51587ce2a9da7019ec8f9582b1a43c0f437b9566049b486c2;";
+//        String flowId = "FJ14309612196676b6cd4";
+//
+//        ZhongAnQueryCarInfoResult result = zhongAnAPIService.queryCarInfo(token, flowId);
+//
+//        assertNotNull(result);
+//
+//        Map<String, Object> unknownFields = result.getUnknownFields();
+//
+//        System.out.println();
+//        System.out.println(unknownFields);
+//    }
+//}

+ 12 - 3
tenant/organization/src/main/java/com/jzg/organization/client/QuoteClient.java

@@ -1,6 +1,6 @@
 package com.jzg.organization.client;
 
-import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -9,12 +9,21 @@ import java.util.List;
 
 @FeignClient(name="jzg-insurance",url = "http://192.168.0.106:9898/")
 public interface QuoteClient {
-    @GetMapping(value = "/insFeeOrder/getInsFeeOrdersList")
-    public List<InsFeeOrders> getInsFeeOrdersList(@RequestParam("userId") String userId);
+    @PostMapping(value = "/insFeeOrder/getInsFeeOrdersList")
+    public List<InsFeeOrders> getInsFeeOrdersList(@RequestBody InsFeeOrdersParam param);
+
+    @PostMapping(value = "/insFeeOrder/getInsFeeOrderByUserId")
+    public List<InsFeeOrders> getInsFeeOrderByUserId(@RequestBody InsFeeOrdersParam param);
+
+    @GetMapping(value = "/insFeeOrder/getInsFeeOrderListByTopReferrerIdAndUserId")
+    public List<InsFeeOrders> getInsFeeOrderListByTopReferrerIdAndUserId(@RequestParam("userId") String userId,@RequestParam("topReferrerId") String topReferrerId);
 
     @GetMapping(value = "/insFeeOrder/getInsFeeOrderAudit")
     public List<InsFeeOrders> getInsFeeOrderAudit(@RequestParam("userId") String userId);
 
+    @GetMapping(value = "/insFeeOrder/getInsFeeOrderByOrderNo")
+    public List<InsFeeOrders> getInsFeeOrderByOrderNo(@RequestParam("orderNo") String orderNo);
+
 
 
 

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AppUserController.java

@@ -158,6 +158,13 @@ public class AppUserController extends BaseController {
         return HttpResult.ok(userJzgAppService.invitationRegister(param));
     }
 
+    @Operation(summary = "分销员app扫码邀请")
+    @PostMapping("/distributorInvite")
+    public HttpResult distributorInvite(@Validated @RequestBody InvitationAddParam param) {
+        // AssertionUtils.isSucceed(userService.validateSmsCode(param.getMobile(), param.getSmsCode()), "短信验证码不通过!");
+        return HttpResult.ok(userJzgAppService.distributorInvite(param));
+    }
+
     @GetMapping(value = { "/systemListGet"})
     @Operation(summary = "所在企业列表查询")
     public HttpResult systemListGet(String userId) {

+ 29 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/EsmUserReferrerController.java

@@ -0,0 +1,29 @@
+package com.jzg.organization.controller;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.EsmUserReferrer;
+import com.jzg.organization.service.EsmUserReferrerService;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author quchen
+ * @date 2025/8/13 18:08
+ */
+
+@Tag(name="推荐人关系接口")
+@RestController
+@RequestMapping("/esmUserReferrer")
+public class EsmUserReferrerController {
+    @Resource
+    private EsmUserReferrerService esmUserReferrerService;
+
+    @GetMapping("/getReferrer")
+    public HttpResult<EsmUserReferrer> get(String id){
+        EsmUserReferrer esmUserReferrer = esmUserReferrerService.getById(id);
+        return HttpResult.ok(esmUserReferrer);
+    }
+}

+ 6 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java

@@ -62,6 +62,12 @@ public class SchemeController {
         return HttpResult.ok(ptlSchemeService.getBusinessInsuranceList(productId));
     }
 
+    @Operation(summary = "获取商业险信息")
+    @GetMapping("/getBusinessInsuranceByKindType")
+    public HttpResult getBusinessInsuranceByKindType(String kindCode){
+        return HttpResult.ok(ptlSchemeService.getBusinessInsuranceListByKindType(kindCode));
+    }
+
     @Operation(summary = "获取保司列表,用于方案排序")
     @GetMapping("/getCompanyList")
     public HttpResult getCompanyList(String systemCode){

+ 90 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/SysDistributionSettingController.java

@@ -0,0 +1,90 @@
+package com.jzg.organization.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.vo.*;
+import com.jzg.organization.service.SysDistributionSettingService;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author quchen
+ * @date 2025/8/8 16:09
+ */
+
+@Tag(name="分销管理")
+@RestController
+@RequestMapping("/sysDistributionSetting")
+public class SysDistributionSettingController {
+    @Resource
+    private SysDistributionSettingService sysDistributionSettingService;
+
+    @GetMapping("/getSettingBySystemCode")
+    public HttpResult getSettingBySystemCode(){
+        return sysDistributionSettingService.getSettingBySystemCode();
+    }
+
+    @PostMapping("/saveSetting")
+    public HttpResult saveSetting(@RequestBody SysDistributionSettingVo sysDistributionSettingVo){
+        return sysDistributionSettingService.saveSetting(sysDistributionSettingVo);
+    }
+
+    @PostMapping("/updateSetting")
+    public HttpResult updateSetting(@RequestBody SysDistributionSettingVo sysDistributionSettingVo){
+        return sysDistributionSettingService.updateSetting(sysDistributionSettingVo);
+    }
+
+    @PostMapping("/distributorList")
+    public HttpResult distributorList(@RequestBody SysDistributionListVo sysDistributionListVo) {
+        Page page = sysDistributionListVo.getPage();
+        return HttpResult.ok(sysDistributionSettingService.distributorList(page,sysDistributionListVo));
+    }
+
+    @PostMapping("/distributorAuditList")
+    public HttpResult distributorAuditList(@RequestBody SysDistributionAuditVo sysDistributionAuditVo) {
+        Page page = sysDistributionAuditVo.getPage();
+        return HttpResult.ok(sysDistributionSettingService.distributorAuditList(page,sysDistributionAuditVo));
+    }
+    @PostMapping("/distributorAudit")
+    public HttpResult distributorAudit(@RequestBody SysDistributionAuditVo sysDistributionAuditVo){
+        return sysDistributionSettingService.distributorAudit(sysDistributionAuditVo);
+    }
+
+    @PostMapping("/commissionDetails")
+    public HttpResult commissionDetails(@RequestBody DistributionCommissionDetailVo distributionCommissionDetailVo){
+        Page page = distributionCommissionDetailVo.getPage();
+        return HttpResult.ok(sysDistributionSettingService.commissionDetails(page,distributionCommissionDetailVo));
+    }
+
+    @PostMapping("/exportCommissionDetailsExcel")
+    public void exportCommissionDetailsExcel(@RequestBody DistributionCommissionDetailVo distributionCommissionDetailVo) throws Exception {
+        Page page = new Page<>(1,1000000);
+        sysDistributionSettingService.exportCommissionDetailsExcel(page,distributionCommissionDetailVo);
+    }
+
+    @PostMapping("/distributionCenter")
+    public HttpResult distributionCenter(@RequestBody DistributionCenterVo distributionCenterVo){
+        return sysDistributionSettingService.distributionCenter(distributionCenterVo);
+    }
+
+    @PostMapping("/distributionTeam")
+    public HttpResult distributionTeam(){
+        return HttpResult.ok(sysDistributionSettingService.distributionTeam());
+    }
+
+    @PostMapping("/getDistributionOrder")
+    public HttpResult getDistributionOrder(@RequestBody DistributionOrderVo distributionOrderVo){
+        return HttpResult.ok(sysDistributionSettingService.getDistributionOrder(distributionOrderVo));
+    }
+
+//    @PostMapping("getDistributionOrderByLevel")
+//    public HttpResult getDistributionOrderByLevel(@RequestBody DistributionOrderVo distributionOrderVo){
+//        return HttpResult.ok(sysDistributionSettingService.getDistributionOrderByLevel(distributionOrderVo));
+//    }
+
+    @GetMapping("/inviteeDistributor")
+    public HttpResult inviteeDistributor(@RequestParam String id,@RequestParam String level){
+        return HttpResult.ok(sysDistributionSettingService.inviteeDistributor(id, level));
+    }
+}

+ 11 - 1
tenant/organization/src/main/java/com/jzg/organization/controller/UserAccountController.java

@@ -3,6 +3,7 @@ package com.jzg.organization.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.IncomeAndExpenseParam;
 import com.jzg.commons.entity.dto.SysUserAccountPageParam;
 import com.jzg.commons.entity.dto.SysUserAccountParam;
 import com.jzg.commons.entity.po.SysUserAccount;
@@ -67,7 +68,16 @@ public class UserAccountController {
         return HttpResult.ok(result);
     }
 
+    @GetMapping("/userWallet")
+    @Operation(summary = "用户钱包")
+    public HttpResult userWallet(){
+        return HttpResult.ok(userAccountService.userWallet());
+    }
 
-
+    @Operation(summary = "收支记录")
+    @PostMapping("/getIncomeAndExpense")
+    public HttpResult getIncomeAndExpense(@RequestBody IncomeAndExpenseParam param){
+        return HttpResult.ok(userAccountService.getIncomeAndExpense(param));
+    }
 
 }

+ 10 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/UserBankCardController.java

@@ -33,4 +33,14 @@ public class UserBankCardController extends BaseController {
     public HttpResult audit(@RequestBody SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo){
         return sysUserJzgInfoBankCardService.audit(sysUserJzgInfoBankCardVo);
     }
+
+    @PostMapping("/setDefaultCard")
+    public HttpResult<Boolean> setDefaultCard(@RequestBody SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo){
+        return sysUserJzgInfoBankCardService.setDefaultCard(sysUserJzgInfoBankCardVo) ? HttpResult.ok("设置成功") : HttpResult.error("设置失败");
+    }
+
+    @PostMapping("/deleteBankCard")
+    public HttpResult<Boolean> deleteBankCard(@RequestBody SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo){
+        return sysUserJzgInfoBankCardService.deleteBankCard(sysUserJzgInfoBankCardVo) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
+    }
 }

+ 25 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java

@@ -9,6 +9,7 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.SysUserInfoParam;
 import com.jzg.commons.entity.dto.SysUserJzgInfoDto;
 import com.jzg.commons.entity.po.SysUser;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.organization.mapper.SysUserJzgInfoMapper;
@@ -98,6 +99,12 @@ public class UserController extends BaseController {
 
     @Operation(summary = "获取业务员信息接口", description = "获取业务员信息接口")
     @GetMapping(value = "/getUserInfo")
+    public HttpResult getUserInfoByUserId(@RequestParam String id) {
+        return sysUserService.getUserInfoByUserId(id);
+    }
+
+    @Operation(summary = "获取业务员信息接口", description = "获取业务员信息接口")
+    @GetMapping(value = "/getUserInfoById")
     public HttpResult getUserInfoById(@RequestParam String id) {
         return sysUserService.getUserInfoById(id);
     }
@@ -179,4 +186,22 @@ public class UserController extends BaseController {
         return sysUserService.getUserInfoBySystemCodeAndUserId(sysUser.getId());
     }
 
+    @Operation(summary = "业务员分销清退接口", description = "业务员分销清退接口")
+    @PostMapping(value = "/deleteDistribution")
+    public HttpResult deleteDistribution(@RequestBody IsDeleteVo isDeleteVo) {
+        return sysUserService.deleteDistribution(isDeleteVo) ? HttpResult.ok("清退成功") : HttpResult.error("清退失败");
+    }
+
+    @Operation(summary = "分销员血缘关系查询", description = "分销员血缘关系查询")
+    @GetMapping(value = "/getDistributionRelation")
+    public HttpResult getDistributionRelation(@RequestParam String id) {
+        return HttpResult.ok(sysUserService.getDistributionRelation(id));
+    }
+
+    @Operation(summary = "获取用户信息", description = "获取用户信息")
+    @GetMapping(value = "/getUserInfoByMobile")
+    public HttpResult<SysUserJzgInfo> getUserInfoByMobile(@RequestParam String mobile) {
+        return HttpResult.ok(sysUserService.getUserInfoByMobile(mobile));
+    }
+
 }

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/EsmUserReferrerMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.EsmUserReferrer;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EsmUserReferrerMapper extends BaseMapper<EsmUserReferrer> {
+}

+ 3 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/InsBusinessInsuranceMapper.java

@@ -7,6 +7,7 @@ import com.jzg.commons.entity.scheme.po.InsBusinessInsuranceOption;
 import com.jzg.commons.entity.scheme.po.PtlSchemeInsurance;
 import com.jzg.commons.entity.scheme.vo.InsBusinessInsuranceVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,4 +21,6 @@ public interface InsBusinessInsuranceMapper extends BaseMapper<InsBusinessInsura
      * @return
      */
     public List<InsBusinessInsuranceOption> getBusinessInsuranceOptionList();
+
+    List<InsBusinessInsuranceVo> getBusinessInsuranceListByKindType(@Param("kindCode") String kindCode);
 }

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysDistributionAuditMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.SysDistributionAudit;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysDistributionAuditMapper extends BaseMapper<SysDistributionAudit> {
+}

+ 27 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysDistributionSettingMapper.java

@@ -0,0 +1,27 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.po.SysDistributionSetting;
+import com.jzg.commons.entity.vo.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface SysDistributionSettingMapper extends BaseMapper<SysDistributionSetting> {
+
+    Page<SysDistributionListVo> distributorList (Page page, @Param("sysDistributionListVo") SysDistributionListVo sysDistributionListVo);
+    Page<SysDistributionAuditListVo> distributorAuditList (Page page, @Param("sysDistributionAuditVo") SysDistributionAuditVo sysDistributionAuditVo);
+
+    Page<DistributionCommissionDetailVo> commissionDetails (Page page, @Param("distributionCommissionDetailVo") DistributionCommissionDetailVo distributionCommissionDetailVo);
+
+    List<DistributionTeamVo> distributionTeam (@Param("topReferrerId") String topReferrerId, @Param("maxLevel") Integer maxLevel);
+
+    List<DistributionOrder> getDistributionOrder (@Param("distributionOrderVo") DistributionOrderVo distributionOrderVo);
+
+    List<DistributionOrder> getDistributionOrderByLevel (@Param("distributionOrderVo") DistributionOrderVo distributionOrderVo);
+
+    List<DistributionTeamVo> inviteeDistributor (@Param("id") String id, @Param("level") String level);
+}

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgInfoBankCardRecordMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.SysUserJzgInfoBankCardRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysUserJzgInfoBankCardRecordMapper extends BaseMapper<SysUserJzgInfoBankCardRecord> {
+}

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/EsmUserReferrerService.java

@@ -0,0 +1,8 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.po.EsmUserReferrer;
+
+
+public interface EsmUserReferrerService extends IService<EsmUserReferrer> {
+}

+ 2 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java

@@ -83,4 +83,6 @@ public interface PtlSchemeService extends IService<PtlScheme> {
      * @return
      */
     public SchemeResultVo getSchemeResult(String companyId,String productId);
+
+    List<InsBusinessInsuranceVo> getBusinessInsuranceListByKindType(String kindCode);
 }

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -6,6 +6,8 @@ import com.jzg.commons.entity.finance.dto.*;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
 import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement;
 import com.jzg.commons.entity.finance.vo.*;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
 import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.scheme.po.PtlScheme;
 import org.springframework.web.multipart.MultipartFile;
@@ -246,4 +248,10 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     Page<ReceiverSettlementReportDto> receiverSettlementReport(Page page,SettlementReportQueryVo settlementReportQueryVo);
 
     void exportReceiverSettlementReportExcel(Page page,SettlementReportQueryVo settlementReportQueryVo);
+
+    /**
+     * 批改订单后应收重新添加
+     */
+    void restockInsPlyIncome(String orderNo,String companyId);
+
 }

+ 12 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysDistributionAuditService.java

@@ -0,0 +1,12 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.po.SysDistributionAudit;
+
+/**
+ * @author quchen
+ * @date 2025/8/11 17:19
+ */
+
+public interface SysDistributionAuditService extends IService<SysDistributionAudit> {
+}

+ 37 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysDistributionSettingService.java

@@ -0,0 +1,37 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysDistributionSetting;
+import com.jzg.commons.entity.vo.*;
+
+import java.util.List;
+
+public interface SysDistributionSettingService extends IService<SysDistributionSetting> {
+    HttpResult getSettingBySystemCode();
+
+    HttpResult saveSetting(SysDistributionSettingVo sysDistributionSettingVo);
+
+    HttpResult updateSetting(SysDistributionSettingVo sysDistributionSettingVo);
+
+    Page<SysDistributionListVo> distributorList(Page page,SysDistributionListVo sysDistributionListVo);
+
+    Page<SysDistributionAuditListVo> distributorAuditList(Page page, SysDistributionAuditVo sysDistributionAuditVo);
+
+    HttpResult distributorAudit(SysDistributionAuditVo sysDistributionAuditVo);
+
+    Page<DistributionCommissionDetailVo> commissionDetails(Page page, DistributionCommissionDetailVo distributionCommissionDetailVo);
+
+    void exportCommissionDetailsExcel(Page page,DistributionCommissionDetailVo distributionCommissionDetailVo) throws Exception;
+
+    HttpResult distributionCenter(DistributionCenterVo distributionCenterVo);
+
+    List<DistributionTeamVo> distributionTeam();
+
+    DistributionOrderVo getDistributionOrder(DistributionOrderVo distributionOrderVo);
+
+//    List<DistributionOrder> getDistributionOrderByLevel(DistributionOrderVo distributionOrderVo);
+
+    List<DistributionTeamVo> inviteeDistributor(String id,String level);
+}

+ 15 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserAccountService.java

@@ -2,12 +2,17 @@ package com.jzg.organization.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.IncomeAndExpenseParam;
 import com.jzg.commons.entity.dto.SysUserAccountPageParam;
 import com.jzg.commons.entity.dto.SysUserAccountParam;
 import com.jzg.commons.entity.po.SysUserAccount;
+import com.jzg.commons.entity.vo.IncomeAndExpenseVo;
 import com.jzg.commons.entity.vo.SysUserAccountVo;
+import com.jzg.commons.entity.vo.SysUserWalletVo;
 import com.jzg.commons.entity.vo.UserAccountStatisVo;
 
+import java.util.List;
+
 /**
 * @author dongxin
 * @description 针对表【sys_user_account(用户账户表)】的数据库操作Service
@@ -35,4 +40,14 @@ public interface SysUserAccountService extends IService<SysUserAccount> {
      * @return
      */
     Page<SysUserAccountVo> accountList(SysUserAccountPageParam param);
+
+    /**
+     * 用户钱包
+     */
+    SysUserWalletVo userWallet();
+
+
+    List<IncomeAndExpenseVo> getIncomeAndExpense(IncomeAndExpenseParam param);
+
+
 }

+ 6 - 5
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgAppService.java

@@ -3,11 +3,7 @@ package com.jzg.organization.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.entity.dto.*;
 import com.jzg.commons.entity.po.SysUserJzgApp;
-import com.jzg.commons.entity.po.SysUserJzgInfo;
-import com.jzg.commons.entity.vo.AuthInfoVo;
-import com.jzg.commons.entity.vo.InvitationVo;
-import com.jzg.commons.entity.vo.SystemListVo;
-import com.jzg.commons.entity.vo.UserInfoVo;
+import com.jzg.commons.entity.vo.*;
 
 import java.util.List;
 
@@ -62,6 +58,11 @@ public interface SysUserJzgAppService extends IService<SysUserJzgApp> {
      */
     InvitationVo invitationRegister(InvitationAddParam param);
 
+    /**
+     * 分销员app邀请注册
+     */
+    InvitationVo distributorInvite(InvitationAddParam param);
+
     /**
      * 所在企业列表
      * @param userId

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoBankCardRecordService.java

@@ -0,0 +1,7 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.po.SysUserJzgInfoBankCardRecord;
+
+public interface SysUserJzgInfoBankCardRecordService extends IService<SysUserJzgInfoBankCardRecord> {
+}

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoBankCardService.java

@@ -16,5 +16,9 @@ public interface SysUserJzgInfoBankCardService extends IService<SysUserJzgInfoBa
 
     List<SysUserJzgInfoBankCardDto> getBankCardByUserId(String userInfoId, String systemCode);
 
+    boolean setDefaultCard(SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo);
+
+    boolean deleteBankCard(SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo);
+
     HttpResult audit(SysUserJzgInfoBankCardVo sysUserJzgInfoBankCardVo);
 }

+ 19 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -6,6 +6,7 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.SysUserInfoParam;
 import com.jzg.commons.entity.dto.SysUserJzgInfoDto;
 import com.jzg.commons.entity.po.SysUser;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.user.vo.SysTennatVo;
 import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.exception.SystemException;
@@ -50,6 +51,8 @@ public interface SysUserService extends IService<SysUser> {
 
     HttpResult updateUserInfo(SysUserVo sysUserVo);
 
+    HttpResult getUserInfoByUserId(String userId);
+
     HttpResult getUserInfoById(String id);
 
     Page<SysUserJzgInfoDto> getUserInfoList(Page page, SysUserInfoListVo sysUserInfoListVo);
@@ -193,4 +196,20 @@ public interface SysUserService extends IService<SysUser> {
      * @return 上级id
      */
     String getLeaderId(String username);
+
+    /**
+     * 清退分销员
+     * @param isDeleteVo
+     * @return
+     */
+
+    boolean deleteDistribution(IsDeleteVo isDeleteVo);
+
+    /**
+     * 获取分销员血缘关系
+     *
+     */
+    List<DistributionRelationVo> getDistributionRelation(String id);
+
+    SysUserJzgInfo getUserInfoByMobile(String mobile);
 }

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.