Преглед изворни кода

Merge remote-tracking branch 'origin/master'

wanghao пре 5 месеци
родитељ
комит
0f5a613161
83 измењених фајлова са 1500 додато и 539 уклоњено
  1. 2 2
      authentication/src/main/java/com/jzg/client/PartnerDistributionClient.java
  2. 4 1
      authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java
  3. 2 2
      authentication/src/main/java/com/jzg/controller/AppAuthController.java
  4. 8 11
      authentication/src/main/java/com/jzg/controller/AuthController.java
  5. 2 3
      authentication/src/main/java/com/jzg/mapper/SysRolePermsMapper.java
  6. 1 1
      authentication/src/main/java/com/jzg/service/InitializePartnerCommissionService.java
  7. 6 4
      authentication/src/main/java/com/jzg/service/SysSystemService.java
  8. 4 4
      authentication/src/main/java/com/jzg/service/SysUserRoleService.java
  9. 6 2
      authentication/src/main/java/com/jzg/service/impl/InitializePartnerCommissionServiceImpl.java
  10. 8 0
      authentication/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java
  11. 12 0
      authentication/src/main/java/com/jzg/service/impl/SysUserRoleServiceImpl.java
  12. 1 1
      commons/src/main/java/com/jzg/commons/config/BaseFeignConfig.java
  13. 152 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceivableExportExcelDto.java
  14. 187 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableExportExcelVo.java
  15. 3 3
      commons/src/main/java/com/jzg/commons/entity/quote/vo/base/OrderBase.java
  16. 4 4
      commons/src/main/java/com/jzg/commons/entity/report/po/ReportUploadExcelTask.java
  17. 100 103
      consoleStatistics/src/main/java/com/jzg/console/controller/ReportBusinessDataManageController.java
  18. 44 44
      consoleStatistics/src/main/java/com/jzg/console/controller/ReportQuotationDataManageController.java
  19. 13 17
      consoleStatistics/src/main/java/com/jzg/console/mapper/ReportCompanyDataManageMapper.java
  20. 21 21
      consoleStatistics/src/main/java/com/jzg/console/service/ReportBaseService.java
  21. 5 5
      consoleStatistics/src/main/java/com/jzg/console/service/ReportCompanyDataManageService.java
  22. 4 5
      consoleStatistics/src/main/java/com/jzg/console/service/ReportContactPersonDataManageService.java
  23. 4 4
      consoleStatistics/src/main/java/com/jzg/console/service/ReportQuotationOrderDataService.java
  24. 5 5
      consoleStatistics/src/main/java/com/jzg/console/service/ReportRiskDataManageService.java
  25. 13 16
      consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportBaseServiceImpl.java
  26. 26 27
      consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportCompanyDataManageServiceImpl.java
  27. 31 38
      consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportContactPersonDataManageServiceImpl.java
  28. 17 26
      consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportQuotationOrderDataServiceImpl.java
  29. 35 31
      consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportRiskDataManageServiceImpl.java
  30. 0 5
      gateway/src/main/resources/application-prod.yml
  31. 2 1
      partner/src/main/java/com/jzg/controller/DistributionController.java
  32. 3 3
      partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java
  33. 23 17
      partner/src/main/java/com/jzg/service/Impl/PartnerRuleServiceImpl.java
  34. 5 5
      partner/src/main/java/com/jzg/utils/TimedTaskUtils.java
  35. 5 5
      platform/src/main/java/com/jzg/controller/AttributionTemplateController.java
  36. 15 2
      platform/src/main/java/com/jzg/controller/SysMenuController.java
  37. 8 3
      platform/src/main/java/com/jzg/controller/SysSystemController.java
  38. 8 3
      platform/src/main/java/com/jzg/mapper/SysMenuMapper.java
  39. 3 1
      platform/src/main/java/com/jzg/mapper/SysUserRoleMapper.java
  40. 10 5
      platform/src/main/java/com/jzg/service/PtlInsAttributionTemplateService.java
  41. 15 1
      platform/src/main/java/com/jzg/service/SysMenuService.java
  42. 1 2
      platform/src/main/java/com/jzg/service/SysSystemService.java
  43. 37 3
      platform/src/main/java/com/jzg/service/impl/PtlInsAttributionTemplateServiceImpl.java
  44. 42 12
      platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java
  45. 7 2
      platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java
  46. 5 2
      platform/src/main/resources/mapper/SysMenuMapper.xml
  47. 7 3
      pom.xml
  48. 0 2
      tenant/costsorrule/src/main/java/com/jzg/costsorrule/CostsOrRuleApplication.java
  49. 30 0
      tenant/insurance/jzg和保险公司的交互方式.md
  50. 3 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/filter/CarModelsFilterUtils.java
  51. 3 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationApiBaseService.java
  52. 4 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  53. 3 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationCrawlerBaseService.java
  54. 3 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/conversion/ConfigureParametersConversion.java
  55. 5 1
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/service/impl/HuaNongCrawlerRequestImpl.java
  56. 5 0
      tenant/insurance/quotation-summary/pom.xml
  57. 12 5
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  58. 9 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/CompanyFactory.java
  59. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/decorator/quote/QuoteDispatchDecorator.java
  60. 1 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  61. 5 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  62. 1 0
      tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/componet/YangGuangApiRequestComponent.java
  63. 18 2
      tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/service/impl/YangGuangApiRequestImpl.java
  64. 5 0
      tenant/organization/pom.xml
  65. 20 0
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  66. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java
  67. 17 8
      tenant/organization/src/main/java/com/jzg/organization/controller/SysOrganizationController.java
  68. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java
  69. 26 0
      tenant/organization/src/main/java/com/jzg/organization/excel/listener/ReceivbleExcelListener.java
  70. 8 7
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysOrganizationMapper.java
  71. 4 3
      tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java
  72. 25 3
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  73. 13 6
      tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationService.java
  74. 8 1
      tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationUserLinkService.java
  75. 17 3
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  76. 84 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ExportBaseServiceImpl.java
  77. 2 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java
  78. 22 7
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java
  79. 134 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  80. 25 3
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysOrganizationServiceImpl.java
  81. 17 3
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysOrganizationUserLinkServiceImpl.java
  82. 41 2
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  83. 9 1
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 2 - 2
authentication/src/main/java/com/jzg/client/PartnerDistributionClient.java

@@ -12,10 +12,10 @@ public interface PartnerDistributionClient {
 
 
     @GetMapping("/partner/isTherePartner")
-    HttpResult<Boolean> isTherePartner(@RequestParam String userId, @RequestParam String systemCode);
+    HttpResult<Boolean> isTherePartner(@RequestParam String userId);
 
 
     @GetMapping("/partnerDistribution/initializeCommissionDetails")
-    HttpResult<Boolean> initializeCommissionDetails(@RequestParam String userId);
+    HttpResult<Boolean> initializeCommissionDetails(@RequestParam String userId,@RequestHeader("Authorization") String token);
 
 }

+ 4 - 1
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -99,6 +99,8 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         String type = ((JzgUsernamePasswordAuthenticationToken)authentication).getType();
         String code = ((JzgUsernamePasswordAuthenticationToken)authentication).getCode();
         boolean appLogin = ((JzgUsernamePasswordAuthenticationToken)authentication).isAppLogin();
+        log.info("登录认证:username=[{}],rawPassword=[{}],details=[{}],system=[{}], captchaId=[{}], captcha=[{}],type=[{}],code=[{}],appLogin=[{}]",
+                username,rawPassword,details,system, captchaId, captcha, type, code, appLogin);
         boolean isFirst = false;
         //调试时注销验证码
         //验证码校验
@@ -217,7 +219,8 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         }else{
             SysSystem sysSystem = sysSystemService.getBySystemCode(system);
             if(StringUtils.isNull(sysSystem)){
-                throw new SystemException("该租户已经禁用或者删除,请联系运营平台!");
+                log.info("租户代码为[{}]的租户已经被禁用或删除",system);
+                throw new SystemException("租户["+system+"]已经禁用或删除或不存在,请联系运营平台!");
             }
 
             if(system.equals(SystemConstants.SYSTEM_JZG_APP.getCode())){

+ 2 - 2
authentication/src/main/java/com/jzg/controller/AppAuthController.java

@@ -102,14 +102,14 @@ public class AppAuthController extends BaseController {
             if (!isApproved){
                 throw new ServletException("当前用户未审核通过");
             }
-            HttpResult<Boolean> isTherePartner = partnerDistributionClient.isTherePartner(sysUserJzgInfo.getId(), loginFormVo.getSystem());
+            HttpResult<Boolean> isTherePartner = partnerDistributionClient.isTherePartner(sysUserJzgInfo.getId());
             if (200 == isTherePartner.getCode()) {
                 if (!isTherePartner.getData()) {
                     throw new ServletException("当前用户无登录权限");
                 }
             }
             modifyPass(loginFormVo);
-            partnerCommissionService.initializePartnerCommission(sysUserJzgInfo.getId());
+            partnerCommissionService.initializePartnerCommission(sysUserJzgInfo.getId(),loginFormVo.getMobile());
         } catch (Exception e) {
             throw new ServletException("当前用户不存在或已注销");
         }

+ 8 - 11
authentication/src/main/java/com/jzg/controller/AuthController.java

@@ -16,7 +16,6 @@ import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.PasswordUtils;
 import com.jzg.config.JzgTokenService;
-import com.jzg.config.JzgUserDetailsService;
 import com.jzg.config.JzgUsernamePasswordAuthenticationToken;
 import com.jzg.commons.constants.RedisKeyConstants;
 import com.jzg.commons.core.base.BaseController;
@@ -29,10 +28,8 @@ import com.jzg.commons.exception.SystemException;
 import com.jzg.handler.JzgAuthenticationSuccessHandler;
 import com.jzg.mapper.SysUploadFilesMapper;
 import com.jzg.mapper.SysUserJzgAppMapper;
-import com.jzg.service.AlipayService;
 import com.jzg.service.SysUserService;
 import com.jzg.commons.util.ImageUtil;
-import com.jzg.service.WechatService;
 import com.wf.captcha.SpecCaptcha;
 import com.wf.captcha.base.Captcha;
 import io.swagger.v3.oas.annotations.Operation;
@@ -84,8 +81,8 @@ public class AuthController extends BaseController {
     @Autowired
     SysUserService sysUserService;
 
-    @Autowired
-    JzgUserDetailsService jzgUserDetailsService;
+//    @Autowired
+//    JzgUserDetailsService jzgUserDetailsService;
 
     @Autowired
     private JzgTokenService tokenStore;
@@ -96,11 +93,11 @@ public class AuthController extends BaseController {
     @Autowired
     SysUploadFilesMapper sysUploadFilesMapper;
 
-    @Autowired
-    private WechatService wechatService;
-
-    @Autowired
-    private AlipayService alipayService;
+//    @Autowired
+//    private WechatService wechatService;
+//
+//    @Autowired
+//    private AlipayService alipayService;
 
     @Autowired
     private SysUserJzgAppMapper sysUserJzgAppMapper;
@@ -114,7 +111,7 @@ public class AuthController extends BaseController {
      *      * 返回:无(直接通过过滤器向响应写入登录结果与令牌)
      *      * 注意:成功后在响应中返回认证信息,方法本身不返回 HttpResult
      *
-     * @param loginFormVo
+     * @param loginFormVo 登录参数
      * @throws ServletException
      * @throws IOException
      */

+ 2 - 3
authentication/src/main/java/com/jzg/mapper/SysRolePermsMapper.java

@@ -2,7 +2,6 @@ package com.jzg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.entity.SysRolePerms;
-import com.jzg.entity.SysUser;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -13,7 +12,7 @@ public interface SysRolePermsMapper extends BaseMapper<SysRolePerms> {
     /**
      * 获取用户权限
      * @param userId    用户id
-     * @param systemId  系统id
+     * @param systemId  租户编码
      */
-    public List<SysRolePerms> getUserPerms(String userId, String systemId);
+    List<SysRolePerms> getUserPerms(String userId, String systemId);
 }

+ 1 - 1
authentication/src/main/java/com/jzg/service/InitializePartnerCommissionService.java

@@ -5,7 +5,7 @@ public interface InitializePartnerCommissionService {
 
 
 
-    void initializePartnerCommission(String userId);
+    void initializePartnerCommission(String userId,String mobile);
 
 
 }

+ 6 - 4
authentication/src/main/java/com/jzg/service/SysSystemService.java

@@ -2,14 +2,16 @@ package com.jzg.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.entity.po.SysSystem;
-import com.jzg.entity.SysUserRole;
 
 public interface SysSystemService extends IService<SysSystem> {
 
     /**
      * 根据SystemCode 查询 System对象
-     * @param systemCode
-     * @return
+     *
+     * @param systemCode 系统编码, 也就是租户系统登录时的租户编码
+     * @return SysSystem
+     * @author lipf
+     * @date 2026年4月10日11:21:40
      */
-    public SysSystem getBySystemCode(String systemCode);
+    SysSystem getBySystemCode(String systemCode);
 }

+ 4 - 4
authentication/src/main/java/com/jzg/service/SysUserRoleService.java

@@ -19,11 +19,11 @@ public interface SysUserRoleService extends IService<SysUserRole> {
 
     /**
      * 获取用户的角色权限
-     * @param userId
-     * @param systemId
-     * @return
+     * @param userId 用户序号
+     * @param systemId 租户编码
+     * @return List<SysRolePerms>
      */
-    public List<SysRolePerms> getUserPerms(String userId,String systemId);
+    List<SysRolePerms> getUserPerms(String userId,String systemId);
 
     /**
      * 获取用户数据权限

+ 6 - 2
authentication/src/main/java/com/jzg/service/impl/InitializePartnerCommissionServiceImpl.java

@@ -1,9 +1,11 @@
 package com.jzg.service.impl;
 
 import com.jzg.client.PartnerDistributionClient;
+import com.jzg.config.JzgTokenService;
 import com.jzg.service.InitializePartnerCommissionService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -12,15 +14,17 @@ import org.springframework.stereotype.Service;
 @Service
 public class InitializePartnerCommissionServiceImpl implements InitializePartnerCommissionService {
 
+    @Autowired
+    private JzgTokenService tokenStore;
 
     @Resource
     private PartnerDistributionClient distributionClient;
 
     @Async
     @Override
-    public void initializePartnerCommission(String userId) {
+    public void initializePartnerCommission(String userId,String mobile) {
         try {
-            distributionClient.initializeCommissionDetails(userId);
+            distributionClient.initializeCommissionDetails(userId,tokenStore.getTokenByUsername(mobile));
         }catch (Exception e){
             log.error("初始化用户佣金失败:{}", e.getMessage());
             e.printStackTrace();

+ 8 - 0
authentication/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java

@@ -11,6 +11,14 @@ import org.springframework.stereotype.Service;
 @Service
 public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem> implements SysSystemService {
 
+    /**
+     * 根据SystemCode 查询 System对象
+     *
+     * @param systemCode 系统编码, 也就是租户系统登录时的租户编码
+     * @return SysSystem
+     * @author lipf
+     * @date 2026年4月10日11:21:40
+     */
     @Override
     public SysSystem getBySystemCode(String systemCode) {
         return this.getOne(new LambdaQueryWrapper<SysSystem>()

+ 12 - 0
authentication/src/main/java/com/jzg/service/impl/SysUserRoleServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.entity.SysRolePerms;
@@ -8,6 +9,8 @@ import com.jzg.entity.vo.SysRoleDataPreVo;
 import com.jzg.mapper.SysRolePermsMapper;
 import com.jzg.mapper.SysUserRoleMapper;
 import com.jzg.service.SysUserRoleService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -16,6 +19,8 @@ import java.util.List;
 @Service
 public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
 
+    private static final Logger log = LoggerFactory.getLogger(SysUserRoleServiceImpl.class);
+
     @Autowired
     SysRolePermsMapper sysRolePermsMapper;
 
@@ -26,9 +31,16 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
         return sysRoles;
     }
 
+    /**
+     * 获取用户的角色权限
+     * @param userId 用户序号
+     * @param systemId 租户编码
+     * @return List<SysRolePerms>
+     */
     @Override
     public List<SysRolePerms> getUserPerms(String userId, String systemId) {
         List<SysRolePerms> userPerms = sysRolePermsMapper.getUserPerms(userId, systemId);
+        log.info("根据用户序号[{}]和租户代码[{}]获取用户信息[{}]",userId, systemId, JSONUtil.toJsonStr(userPerms));
         return userPerms;
     }
 

+ 1 - 1
commons/src/main/java/com/jzg/commons/config/BaseFeignConfig.java

@@ -24,7 +24,7 @@ public class BaseFeignConfig {
                 }
                 String systemCode = request.getHeader("system_code");
                 if (systemCode != null) {
-                    requestTemplate.header("system_code", token);
+                     requestTemplate.header("system_code", systemCode);
                 }
             }
         };

+ 152 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceivableExportExcelDto.java

@@ -0,0 +1,152 @@
+package com.jzg.commons.entity.finance.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author tz
+ * @description 应收查询VO
+ * @createDate 2024-06-26 10:49:31
+ */
+@Data
+public class ReceivableExportExcelDto extends PageRequest {
+
+    @Schema(description = "选中类型")
+    @ExcelIgnore
+    // 1 全部数据选中  2 选中部分数据
+    private String selectedType;
+
+    @Schema(description = "选中id")
+    @ExcelIgnore
+    private List<String> selectedIds;
+
+    @Schema(description = "协议类型")
+    @ExcelProperty(value = "协议类型", index = 13)
+    private String agreementType;
+
+    @Schema(description = "id")
+    @ExcelIgnore
+    private String id;
+
+    @Schema(description = "ids")
+    @ExcelIgnore
+    private List<String> ids;
+
+    @Schema(description = "查询类型")
+    @ExcelProperty(value = "查询类型", index = 14)
+    private String queryType;
+
+    @Schema(description = "车牌号")
+    @ExcelProperty(value = "车牌号", index = 0)
+    private String licenseNo;
+
+    @Schema(description = "险种信息")
+    @ExcelProperty(value = "险种信息", index = 15)
+    private String productId;
+
+    @Schema(description = "保险公司")
+    @ExcelIgnore
+    private String companyId;
+
+    @Schema(description = "签单时间开始时间")
+    @ExcelProperty(value = "签单时间开始时间", index = 11)
+    private String signingTimeStart;
+
+    @Schema(description = "签单时间结束时间")
+    @ExcelProperty(value = "签单时间结束时间", index = 12)
+    private String signingTimeEnd;
+
+    @Schema(description = "订单号")
+    @ExcelProperty(value = "订单号", index = 16)
+    private String orderNo;
+
+    @Schema(description = "订单号集合")
+    @ExcelIgnore
+    private List<String> orderNos;
+
+    @Schema(description = "协议id")
+    @ExcelIgnore
+    private String agreementId;
+
+    @Schema(description = "出单机构")
+    @ExcelIgnore
+    private String deptId;
+
+    @Schema(description = "险种")
+    @ExcelProperty(value = "险种", index = 17)
+    private String riskCode;
+
+    @Schema(description = "订单类型")
+    @ExcelProperty(value = "订单类型", index = 18)
+    private String orderType;
+
+    @Schema(description = "被保人")
+    @ExcelProperty(value = "被保人", index = 19)
+    private String insuredName;
+
+    @Schema(description = "交强险保单号")
+    @ExcelProperty(value = "交强险保单号", index = 1)
+    private String jqPolicyNo;
+
+    @Schema(description = "交强险手续费比例")
+    @ExcelProperty(value = "交强险手续费比例(%)", index = 2)
+    private String jqSuperviseCostsProportion;
+
+    @Schema(description = "交强险跟单费比例")
+    @ExcelProperty(value = "交强险跟单费比例(%)", index = 3)
+    private String jqOtherCostsProportion;
+
+    @Schema(description = "商业险保单号")
+    @ExcelProperty(value = "商业险保单号", index = 4)
+    private String syPolicyNo;
+
+    @Schema(description = "商业险手续费比例")
+    @ExcelProperty(value = "商业险手续费比例(%)", index = 5)
+    private String sySuperviseCostsProportion;
+
+    @Schema(description = "商业险跟单费比例")
+    @ExcelProperty(value = "商业险跟单费比例(%)", index = 6)
+    private String syOtherCostsProportion;
+
+    @Schema(description = "驾意险保单号")
+    @ExcelProperty(value = "驾意险保单号", index = 7)
+    private String jyPolicyNo;
+
+    @Schema(description = "驾意险手续费比例")
+    @ExcelProperty(value = "驾意险手续费比例(%)", index = 8)
+    private String jySuperviseCostsProportion;
+
+    @Schema(description = "驾意险跟单费比例")
+    @ExcelProperty(value = "驾意险跟单费比例(%)", index = 9)
+    private String jyOtherCostsProportion;
+
+    @Schema(description = "对接人")
+    @ExcelProperty(value = "对接人", index = 10)
+    private String dockingPerson;
+
+    @Schema(description = "交强起保时间")
+    @ExcelProperty(value = "交强起保时间", index = 20)
+    private String jqStartDate;
+
+    @Schema(description = "交强到期时间")
+    @ExcelProperty(value = "交强到期时间", index = 21)
+    private String jqEndDate;
+
+    @Schema(description = "商业起保时间")
+    @ExcelProperty(value = "商业起保时间", index = 22)
+    private String syStartDate;
+
+    @Schema(description = "商业到期时间")
+    @ExcelProperty(value = "商业到期时间", index = 23)
+    private String syEndDate;
+
+    @Schema(description = "产品名称")
+    @ExcelProperty(value = "产品名称", index = 24)
+    private String productName;
+
+}

+ 187 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableExportExcelVo.java

@@ -0,0 +1,187 @@
+package com.jzg.commons.entity.finance.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author tz
+ * @description 应收查询VO
+ * @createDate 2024-06-26 10:49:31
+ */
+@Data
+public class ReceivableExportExcelVo {
+
+    @Schema(description = "选中类型")
+    @ExcelIgnore
+    // 1 全部数据选中  2 选中部分数据
+    private String selectedType;
+
+    @Schema(description = "协议类型")
+    @ExcelProperty(value = "协议类型", index = 13)
+    private String agreementType;
+
+    @Schema(description = "id")
+    @ExcelIgnore
+    private String id;
+
+    @Schema(description = "查询类型")
+    @ExcelProperty(value = "查询类型", index = 14)
+    private String queryType;
+
+    @Schema(description = "车牌号")
+    @ExcelProperty(value = "车牌号", index = 0)
+    private String licenseNo;
+
+    @Schema(description = "险种信息")
+    @ExcelProperty(value = "险种信息", index = 15)
+    private String productId;
+
+    @Schema(description = "保险公司")
+    @ExcelIgnore
+    private String companyId;
+
+    @Schema(description = "签单时间开始时间")
+    @ExcelProperty(value = "签单时间开始时间", index = 11)
+    private String signingTimeStart;
+
+    @Schema(description = "签单时间结束时间")
+    @ExcelProperty(value = "签单时间结束时间", index = 12)
+    private String signingTimeEnd;
+
+    @Schema(description = "订单号")
+    @ExcelProperty(value = "订单号", index = 16)
+    private String orderNo;
+
+    @Schema(description = "协议id")
+    @ExcelIgnore
+    private String agreementId;
+
+    @Schema(description = "出单机构")
+    @ExcelIgnore
+    private String deptId;
+
+    @Schema(description = "险种")
+    @ExcelProperty(value = "险种", index = 17)
+    private String riskCode;
+
+    @Schema(description = "订单类型")
+    @ExcelProperty(value = "订单类型", index = 18)
+    private String orderType;
+
+    @Schema(description = "被保人")
+    @ExcelProperty(value = "被保人", index = 19)
+    private String insuredName;
+
+    @Schema(description = "交强险保单号")
+    @ExcelProperty(value = "交强险保单号", index = 1)
+    private String jqPolicyNo;
+
+    @Schema(description = "交强险手续费比例")
+    @ExcelProperty(value = "交强险手续费比例(%)", index = 2)
+    private String jqSuperviseCostsProportion;
+
+    @Schema(description = "交强险跟单费比例")
+    @ExcelProperty(value = "交强险跟单费比例(%)", index = 3)
+    private String jqOtherCostsProportion;
+
+    @Schema(description = "商业险保单号")
+    @ExcelProperty(value = "商业险保单号", index = 4)
+    private String syPolicyNo;
+
+    @Schema(description = "商业险手续费比例")
+    @ExcelProperty(value = "商业险手续费比例(%)", index = 5)
+    private String sySuperviseCostsProportion;
+
+    @Schema(description = "商业险跟单费比例")
+    @ExcelProperty(value = "商业险跟单费比例(%)", index = 6)
+    private String syOtherCostsProportion;
+
+    @Schema(description = "驾意险保单号")
+    @ExcelProperty(value = "驾意险保单号", index = 7)
+    private String jyPolicyNo;
+
+    @Schema(description = "驾意险手续费比例")
+    @ExcelProperty(value = "驾意险手续费比例(%)", index = 8)
+    private String jySuperviseCostsProportion;
+
+    @Schema(description = "驾意险跟单费比例")
+    @ExcelProperty(value = "驾意险跟单费比例(%)", index = 9)
+    private String jyOtherCostsProportion;
+
+    @Schema(description = "对接人")
+    @ExcelProperty(value = "对接人", index = 10)
+    private String dockingPerson;
+
+    @Schema(description = "交强起保时间")
+    @ExcelProperty(value = "交强起保时间", index = 20)
+    private String jqStartDate;
+
+    @Schema(description = "交强到期时间")
+    @ExcelProperty(value = "交强到期时间", index = 21)
+    private String jqEndDate;
+
+    @Schema(description = "商业起保时间")
+    @ExcelProperty(value = "商业起保时间", index = 22)
+    private String syStartDate;
+
+    @Schema(description = "商业到期时间")
+    @ExcelProperty(value = "商业到期时间", index = 23)
+    private String syEndDate;
+
+    @Schema(description = "产品名称")
+    @ExcelProperty(value = "产品名称", index = 24)
+    private String productName;
+
+    @Schema(description = "错误信息")
+    private String errorMessage;
+
+    public ImportResultVo checkEmpty(){
+        ImportResultVo resultVo = new ImportResultVo();
+        resultVo.setSuccess(false);
+        if(Objects.isNull(this.licenseNo) || Objects.equals(this.licenseNo,"")){
+            resultVo.setMessage("车牌号不能为空");
+        }
+        if(Objects.isNull(this.jqPolicyNo) || Objects.equals(this.jqPolicyNo,"")){
+            resultVo.setMessage("交强险保单号不能为空");
+        }
+        if(Objects.isNull(this.jqSuperviseCostsProportion) || Objects.equals(this.jqSuperviseCostsProportion,"")){
+            resultVo.setMessage("交强险手续费比例不能为空");
+        }
+        if(Objects.isNull(this.jqOtherCostsProportion) || Objects.equals(this.jqOtherCostsProportion,"")){
+            resultVo.setMessage("交强险跟单费比例不能为空");
+        }
+        if(Objects.isNull(this.syPolicyNo) || Objects.equals(this.syPolicyNo,"")){
+            resultVo.setMessage("商业险保单号不能为空");
+        }
+        if(Objects.isNull(this.sySuperviseCostsProportion) || Objects.equals(this.sySuperviseCostsProportion,"")){
+            resultVo.setMessage("商业险手续费比例不能为空");
+        }
+        if(Objects.isNull(this.syOtherCostsProportion) || Objects.equals(this.syOtherCostsProportion,"")){
+            resultVo.setMessage("商业险跟单费比例不能为空");
+        }
+        if(Objects.isNull(this.jyPolicyNo) || Objects.equals(this.jyPolicyNo,"")){
+            resultVo.setMessage("驾意险保单号不能为空");
+        }
+        if(Objects.isNull(this.jySuperviseCostsProportion) || Objects.equals(this.jySuperviseCostsProportion,"")){
+            resultVo.setMessage("驾意险手续费比例不能为空");
+        }
+        if(Objects.isNull(this.jyOtherCostsProportion) || Objects.equals(this.jyOtherCostsProportion,"")){
+            resultVo.setMessage("驾意险跟单费比例不能为空");
+        }
+        if(Objects.isNull(this.dockingPerson) || Objects.equals(this.dockingPerson,"")){
+            resultVo.setMessage("对接人不能为空");
+        }
+        if(Objects.isNull(resultVo.getMessage())){
+            resultVo.setSuccess(true);
+        }
+        return resultVo;
+    }
+
+}

+ 3 - 3
commons/src/main/java/com/jzg/commons/entity/quote/vo/base/OrderBase.java

@@ -11,9 +11,9 @@ import java.io.Serial;
 import java.io.Serializable;
 
 /**
- * @description: 订单交互信息
- * @author: wenks
- * @date: 2025/2/21 16:28
+ * @description 订单交互信息
+ * @author wenks
+ * @date 2025/2/21 16:28
  **/
 @Data
 public class OrderBase implements Serializable {

+ 4 - 4
commons/src/main/java/com/jzg/commons/entity/report/po/ReportUploadExcelTask.java

@@ -15,10 +15,10 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/16 15:30
- *  @Description: 导入任务表
+ * 导入任务表
+ *
+ * @author hxl
+ * @Date 2025/9/16 15:30
  */
 @TableName(value ="report_upload_excel_task")
 @Builder

+ 100 - 103
consoleStatistics/src/main/java/com/jzg/console/controller/ReportBusinessDataManageController.java

@@ -3,7 +3,6 @@ package com.jzg.console.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
-import com.jzg.commons.entity.report.dto.ReportSearchConfigurationDto;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 import com.jzg.console.service.*;
 import io.swagger.v3.oas.annotations.Operation;
@@ -12,13 +11,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/22 17:56
- *  @Description: 业务数据管理
+ * 业务数据管理
+ *
+ * @author hxl
+ * @Date 2025/9/22 17:56
  */
 @Slf4j
 @Tag(name="业务数据管理")
@@ -52,10 +49,10 @@ public class ReportBusinessDataManageController extends BaseController {
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 业务数据-保险公司-列表
+     * 业务数据-保险公司-列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:08
      */
     @Operation(summary = "业务数据-保险公司-列表查询", description = "业务数据-保险公司-列表查询")
     @PostMapping(value = "/companyDataManagePageList")
@@ -64,14 +61,15 @@ public class ReportBusinessDataManageController extends BaseController {
             IPage<?> pageList = reportCompanyDataManageService.getPageListByParams(reportSearchCommonVo);
             return HttpResult.ok(pageList);
         }catch (Exception e){
+            log.error("业务数据-保险公司-列表查询", e);
             return HttpResult.error(e.getMessage());
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 业务数据-保险公司-列表导出
+     * 业务数据-保险公司-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:09
      */
     @Operation(summary = "业务数据-保险公司-列表导出", description = "业务数据-保险公司-列表导出")
     @PostMapping(value = "/companyDataManageToTask")
@@ -84,10 +82,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-保险公司-明细查询
+     * 业务数据-保险公司-明细查询
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-保险公司-明细查询", description = "业务数据-保险公司-明细查询")
     @PostMapping(value = "/companyDataManageDetailPageList")
@@ -100,10 +98,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-保险公司-明细导出
+     * 业务数据-保险公司-明细导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-保险公司-明细导出", description = "业务数据-保险公司-明细导出")
     @PostMapping(value = "/companyDataManageDetailToTask")
@@ -117,10 +115,10 @@ public class ReportBusinessDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 业务数据-险种报表-列表
+     * 业务数据-险种报表-列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:08
      */
     @Operation(summary = "业务数据-险种报表-列表查询", description = "业务数据-险种报表-列表查询")
     @PostMapping(value = "/riskDataManagePageList")
@@ -133,10 +131,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 业务数据-险种报表-列表导出
+     * 业务数据-险种报表-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:09
      */
     @Operation(summary = "业务数据-险种报表-列表导出", description = "业务数据-险种报表-列表导出")
     @PostMapping(value = "/riskDataManageToTask")
@@ -149,10 +147,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-保险公司-明细查询
+     * 业务数据-保险公司-明细查询
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-险种报表-明细查询", description = "业务数据-险种报表-明细查询")
     @PostMapping(value = "/riskDataManageDetailPageList")
@@ -165,10 +163,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-保险公司-明细导出
+     * 业务数据-保险公司-明细导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-险种报表-明细导出", description = "业务数据-险种报表-明细导出")
     @PostMapping(value = "/riskDataManageDetailToPage")
@@ -182,10 +180,10 @@ public class ReportBusinessDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 业务数据-对接人-列表
+     * 业务数据-对接人-列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:08
      */
     @Operation(summary = "业务数据-对接人-列表查询", description = "业务数据-对接人-列表查询")
     @PostMapping(value = "/contactPersonDataManagePageList")
@@ -198,10 +196,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 业务数据-对接人-列表导出
+     * 业务数据-对接人-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:09
      */
     @Operation(summary = "业务数据-对接人-列表导出", description = "业务数据-对接人-列表导出")
     @PostMapping(value = "/contactPersonDataManageToTask")
@@ -214,10 +212,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-对接人-明细查询
+     * 业务数据-对接人-明细查询
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-对接人-明细查询", description = "业务数据-对接人-明细查询")
     @PostMapping(value = "/contactPersonDataManageDetailPageList")
@@ -230,10 +228,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-对接人-明细导出
+     * 业务数据-对接人-明细导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-对接人-明细导出", description = "业务数据-对接人-明细导出")
     @PostMapping(value = "/contactPersonDataManageDetailToTask")
@@ -247,10 +245,10 @@ public class ReportBusinessDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 业务数据-业务员-列表
+     * 业务数据-业务员-列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:08
      */
     @Operation(summary = "业务数据-业务员-列表查询", description = "业务数据-业务员-列表查询")
     @PostMapping(value = "/salesmanDataManagePageList")
@@ -263,10 +261,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 业务数据-业务员-列表导出
+     * 业务数据-业务员-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:09
      */
     @Operation(summary = "业务数据-业务员-列表导出", description = "业务数据-业务员-列表导出")
     @PostMapping(value = "/salesmanDataManageToTask")
@@ -279,10 +277,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-保险公司-明细查询
+     * 业务数据-保险公司-明细查询
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-业务员-明细查询", description = "业务数据-业务员-明细查询")
     @PostMapping(value = "/salesmanDataManageDetailPageList")
@@ -295,10 +293,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-业务员-明细导出
+     * 业务数据-业务员-明细导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-业务员-明细导出", description = "业务数据-业务员-明细导出")
     @PostMapping(value = "/salesmanDataManageDetailToTask")
@@ -312,10 +310,10 @@ public class ReportBusinessDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 业务数据-渠道-列表
+     * 业务数据-渠道-列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:08
      */
     @Operation(summary = "业务数据-渠道-列表查询", description = "业务数据-渠道-列表查询")
     @PostMapping(value = "/channelDataManagePageList")
@@ -329,10 +327,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 业务数据-渠道-列表导出
+     * 业务数据-渠道-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:09
      */
     @Operation(summary = "业务数据-渠道-列表导出", description = "业务数据-渠道-列表导出")
     @PostMapping(value = "/channelDataManageToTask")
@@ -345,10 +343,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-渠道-明细查询
+     * 业务数据-渠道-明细查询
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-渠道-明细查询", description = "业务数据-渠道-明细查询")
     @PostMapping(value = "/channelDataManageDetailPageList")
@@ -361,10 +359,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-渠道-明细导出
+     * 业务数据-渠道-明细导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-渠道-明细导出", description = "业务数据-渠道-明细导出")
     @PostMapping(value = "/channelDataManageDetailToTask")
@@ -378,10 +376,10 @@ public class ReportBusinessDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 业务数据-电销-列表
+     * 业务数据-电销-列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:08
      */
     @Operation(summary = "业务数据-电销-列表查询", description = "业务数据-电销-列表查询")
     @PostMapping(value = "/telemarketingDataManagePageList")
@@ -394,10 +392,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 业务数据-电销-列表导出
+     * 业务数据-电销-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:09
      */
     @Operation(summary = "业务数据-电销-列表导出", description = "业务数据-电销-列表导出")
     @PostMapping(value = "/telemarketingDataManageToTask")
@@ -410,10 +408,10 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-电销-明细查询
+     * 业务数据-电销-明细查询
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-电销-明细查询", description = "业务数据-电销-明细查询")
     @PostMapping(value = "/telemarketingDataManageDetailPageList")
@@ -426,10 +424,9 @@ public class ReportBusinessDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-电销-明细导出
+     * 业务数据-电销-明细导出
+     * @author hxl
+     * @Date 2025/9/22 17:11
      */
     @Operation(summary = "业务数据-电销-明细导出", description = "业务数据-电销-明细导出")
     @PostMapping(value = "/telemarketingDataManageDetailToTask")

+ 44 - 44
consoleStatistics/src/main/java/com/jzg/console/controller/ReportQuotationDataManageController.java

@@ -12,10 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/22 17:56
- *  @Description: 报价数据管理
+ *  
+ * @author hxl
+ * @Date 2025/9/22 17:56
+ *  报价数据管理
  */
 @Slf4j
 @Tag(name="报价数据管理")
@@ -45,10 +45,10 @@ public class ReportQuotationDataManageController extends BaseController {
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 报价数据-报价订单-列表
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:08
+     *  报价数据-报价订单-列表
      */
     @Operation(summary = "报价数据-报价订单-列表查询", description = "报价数据-报价订单-列表查询")
     @PostMapping(value = "/quotationOrderDataPageList")
@@ -61,10 +61,10 @@ public class ReportQuotationDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 报价数据-报价订单-列表导出
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:09
+     *  报价数据-报价订单-列表导出
      */
     @Operation(summary = "报价数据-报价订单-列表导出", description = "报价数据-报价订单-列表导出")
     @PostMapping(value = "/quotationOrderDataToTask")
@@ -78,10 +78,10 @@ public class ReportQuotationDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 报价数据-保险公司-列表
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:08
+     *  报价数据-保险公司-列表
      */
     @Operation(summary = "报价数据-保险公司-列表查询", description = "报价数据-保险公司-列表查询")
     @PostMapping(value = "/companyQuotationDataPageList")
@@ -94,10 +94,10 @@ public class ReportQuotationDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 报价数据-保险公司-列表导出
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:09
+     *  报价数据-保险公司-列表导出
      */
     @Operation(summary = "报价数据-保险公司-列表导出", description = "报价数据-保险公司-列表导出")
     @PostMapping(value = "/companyQuotationDataToTask")
@@ -110,10 +110,10 @@ public class ReportQuotationDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 报价数据-业务员-列表
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:08
+     *  报价数据-业务员-列表
      */
     @Operation(summary = "报价数据--业务员-列表查询", description = "报价数据--业务员-列表查询")
     @PostMapping(value = "/salesmanQuotationDataPageList")
@@ -126,10 +126,10 @@ public class ReportQuotationDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 报价数据-业务员-列表导出
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:09
+     *  报价数据-业务员-列表导出
      */
     @Operation(summary = "报价数据-业务员-列表导出", description = "报价数据-业务员-列表导出")
     @PostMapping(value = "/salesmanQuotationDataToTask")
@@ -143,10 +143,10 @@ public class ReportQuotationDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 报价数据-渠道-列表
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:08
+     *  报价数据-渠道-列表
      */
     @Operation(summary = "报价数据-渠道-列表查询", description = "报价数据-渠道-列表查询")
     @PostMapping(value = "/channelQuotationDataPageList")
@@ -159,10 +159,10 @@ public class ReportQuotationDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 报价数据-渠道-列表导出
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:09
+     *  报价数据-渠道-列表导出
      */
     @Operation(summary = "报价数据-渠道-列表导出", description = "报价数据-渠道-列表导出")
     @PostMapping(value = "/channelQuotationDataToTask")
@@ -176,10 +176,10 @@ public class ReportQuotationDataManageController extends BaseController {
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:08
-     *  @Description: 报价数据-电销-列表
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:08
+     *  报价数据-电销-列表
      */
     @Operation(summary = "报价数据-电销-列表查询", description = "报价数据-电销-列表查询")
     @PostMapping(value = "/telemarketingQuotationDataPageList")
@@ -192,10 +192,10 @@ public class ReportQuotationDataManageController extends BaseController {
         }
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:09
-     *  @Description: 报价数据-电销-列表导出
+     *  
+     * @author hxl
+     * @Date 2025/9/22 17:09
+     *  报价数据-电销-列表导出
      */
     @Operation(summary = "报价数据-电销-列表导出", description = "报价数据-电销-列表导出")
     @PostMapping(value = "/telemarketingQuotationDataToTask")

+ 13 - 17
consoleStatistics/src/main/java/com/jzg/console/mapper/ReportCompanyDataManageMapper.java

@@ -1,37 +1,33 @@
 package com.jzg.console.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.report.dto.ReportCompanyDataManageDto;
-import com.jzg.commons.entity.report.dto.ReportUploadExcelTaskDto;
-import com.jzg.commons.entity.report.po.ReportUploadExcelTask;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
-import com.jzg.commons.entity.report.vo.ReportUploadExcelTaskVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/23 15:35
- *  @Description: 业务数据-保险公司
- */ 
+ * 业务数据-保险公司
+ *
+ *  @author hxl
+ *  @Date 2025/9/23 15:35
+ */
 public interface ReportCompanyDataManageMapper  {
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/23 15:37
-     *  @Description:  业务数据-保险公司-列表查询
+     * 业务数据-保险公司-列表查询
+     *
+     *  @author hxl
+     *  @Date 2025/9/23 15:37
      */
     IPage<ReportCompanyDataManageDto> getReportCompanyDataManagePageListByParams(@Param("page") Page<ReportCompanyDataManageDto> page, @Param("vo") ReportSearchCommonVo reportSearchCommonVo);
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/23 15:37
-     *  @Description:  业务数据-保险公司-导出查询
+     * 业务数据-保险公司-导出查询
+     *
+     *  @author hxl
+     *  @Date 2025/9/23 15:37
      */
     List<ReportCompanyDataManageDto> getReportCompanyDataManageAllListByParams(@Param("vo") ReportSearchCommonVo reportSearchCommonVo);
 }

+ 21 - 21
consoleStatistics/src/main/java/com/jzg/console/service/ReportBaseService.java

@@ -4,43 +4,43 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  基础的实现类
- */ 
+ * 基础的实现类
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:43
+ */
 public interface ReportBaseService {
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:02
-     *  @Description:  查询列表
+     *  业务数据-保险公司-列表
+     *
+     *  @author hxl
+     *  @Date 2025/9/22 17:02
      */
     IPage<?> getPageListByParams(ReportSearchCommonVo reportSearchCommonVo);
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:02
-     *  @Description:  导出列表
+     * 导出列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:02
      */
     void downloadListByParams(ReportSearchCommonVo reportSearchCommonVo);
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:02
-     *  @Description:  查询详情列表
+     * 查询详情列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:02
      */
     IPage<?> getPageDetailListByParams(ReportSearchCommonVo reportSearchCommonVo);
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/22 17:02
-     *  @Description:  导出详情列表
+     * 导出详情列表
+     *
+     * @author hxl
+     * @Date 2025/9/22 17:02
      */
     void downloadDetailListByParams(ReportSearchCommonVo reportSearchCommonVo);
 

+ 5 - 5
consoleStatistics/src/main/java/com/jzg/console/service/ReportCompanyDataManageService.java

@@ -1,11 +1,11 @@
 package com.jzg.console.service;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  业务数据-保险公司
- */ 
+ * 业务数据-保险公司
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:43
+ */
 public interface ReportCompanyDataManageService extends  ReportBaseService{
 
 }

+ 4 - 5
consoleStatistics/src/main/java/com/jzg/console/service/ReportContactPersonDataManageService.java

@@ -1,11 +1,10 @@
 package com.jzg.console.service;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  业务数据-对接人
- */ 
+ * 业务数据-对接人
+ * @author hxl
+ * @Date 2025/9/22 16:43
+ */
 public interface ReportContactPersonDataManageService extends  ReportBaseService{
 
 }

+ 4 - 4
consoleStatistics/src/main/java/com/jzg/console/service/ReportQuotationOrderDataService.java

@@ -1,10 +1,10 @@
 package com.jzg.console.service;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  报价数据-报价订单
+ * 报价数据-报价订单
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:43
  */ 
 public interface ReportQuotationOrderDataService extends  ReportBaseService{
 

+ 5 - 5
consoleStatistics/src/main/java/com/jzg/console/service/ReportRiskDataManageService.java

@@ -1,11 +1,11 @@
 package com.jzg.console.service;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  业务数据-险种报表
- */ 
+ * 业务数据-险种报表
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:43
+ */
 public interface ReportRiskDataManageService extends  ReportBaseService{
 
 }

+ 13 - 16
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportBaseServiceImpl.java

@@ -1,13 +1,10 @@
 package com.jzg.console.service.impl;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.jzg.commons.entity.report.dto.ReportCompanyDataManageDto;
 import com.jzg.commons.entity.report.po.ReportUploadExcelTask;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.console.service.ReportUploadExcelTaskService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -17,10 +14,10 @@ import java.util.List;
 import java.util.Set;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  基础的实现类处理导出excel逻辑
+ * 基础的实现类处理导出excel逻辑
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:43
  */
 @Slf4j
 @Service
@@ -35,11 +32,11 @@ public class ReportBaseServiceImpl {
     // 从配置文件获取存储桶名称
     @Value("${minio.bucket-name:excel-files}")
     private String bucketName;
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:28
-     *  @Description:  通用上传文件
+     * 通用上传文件
+     * @author hxl
+     * @Date 2025/9/24 10:28
      */
     public <T> void upLoadFile(ReportSearchCommonVo reportSearchCommonVo, Class<T> clazz, List<T> list, String upLoadName) {
         //打印导入数据的时间
@@ -54,14 +51,14 @@ public class ReportBaseServiceImpl {
                 .readStatus(0)
                 .build();
         reportUploadExcelTaskService.save(reportUploadExcelTask);
-        long endTime = System.currentTimeMillis();
+        long endTime;
         try{
             String fileName = MinioUtils.exportAndUploadToMinIO(upLoadName, clazz, list,bucketName,minioUrl);
             endTime = System.currentTimeMillis();
             long duration = endTime - startTime;
             double minutes = (double) duration / (1000 * 60);
-            log.info("方法执行时间: " + minutes + " 分钟");
-            log.debug("方法执行时间: " + minutes + " 分钟");
+            log.info("MinioUtils.exportAndUploadToMinIO方法执行时间:[{}]分钟", minutes);
+            log.debug("MinioUtils.exportAndUploadToMinIO方法执行时间[{}]分钟", minutes);
             reportUploadExcelTask.setTaskStatus(2);
             reportUploadExcelTask.setUploadMinutes(minutes);
             reportUploadExcelTask.setFilePath(fileName);
@@ -69,8 +66,8 @@ public class ReportBaseServiceImpl {
             endTime = System.currentTimeMillis();
             long duration = endTime - startTime;
             double minutes = (double) duration / (1000 * 60);
-            log.info("方法执行时间: " + minutes + " 分钟");
-            log.debug("方法执行时间: " + minutes + " 分钟");
+            log.info("MinioUtils.exportAndUploadToMinIO方法执行异常,方法执行时间[{}]分钟 ", minutes);
+            log.debug("MinioUtils.exportAndUploadToMinIO方法执行异常方法执行时间[{}]分钟",minutes);
             reportUploadExcelTask.setTaskStatus(0);
             reportUploadExcelTask.setUploadMinutes(minutes);
             reportUploadExcelTask.setUploadMsg(e.getMessage());

+ 26 - 27
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportCompanyDataManageServiceImpl.java

@@ -18,10 +18,10 @@ import java.util.Date;
 import java.util.List;
 
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/22 16:45
- *  @Description:  业务数据-保险公司
+ * 业务数据-保险公司
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:45
  */
 @Slf4j
 @Service
@@ -32,22 +32,21 @@ public class ReportCompanyDataManageServiceImpl extends ReportBaseServiceImpl im
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/23 11:49
-     *  @Description:  业务数据-保险公司-列表查询
+     * 业务数据-保险公司-列表查询
+     *
+     * @author hxl
+     * @Date 2025/9/23 11:49
      */
     @Override
     public IPage<?> getPageListByParams(ReportSearchCommonVo reportSearchCommonVo) {
         Page<ReportCompanyDataManageDto> page = new Page<>(reportSearchCommonVo.getPageNo(), reportSearchCommonVo.getPageSize());
-        IPage<ReportCompanyDataManageDto> orderList = reportCompanyDataManageMapper.getReportCompanyDataManagePageListByParams(page, reportSearchCommonVo);
-        return orderList;
+        return reportCompanyDataManageMapper.getReportCompanyDataManagePageListByParams(page, reportSearchCommonVo);
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:21
-     *  @Description: 列表导出
+     * 列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/24 10:21
      */
     @Async
     @Override
@@ -56,10 +55,10 @@ public class ReportCompanyDataManageServiceImpl extends ReportBaseServiceImpl im
         upLoadFile(reportSearchCommonVo, ReportCompanyDataManageDto.class,list,"业务数据-保险公司-列表查询-"+ reportSearchCommonVo.getUserId());
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/23 11:49
-     *  @Description:  业务数据-保险公司-明细查询
+     * 业务数据-保险公司-明细查询
+     *
+     *  @author hxl
+     *  @Date 2025/9/23 11:49
      */
     @Override
     public IPage<?> getPageDetailListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -67,17 +66,17 @@ public class ReportCompanyDataManageServiceImpl extends ReportBaseServiceImpl im
         IPage<ReportCompanyDataManageDetailDto> detailPageList = new Page<ReportCompanyDataManageDetailDto>();
         List<ReportCompanyDataManageDetailDto> detailList = getDetailList();
         detailPageList.setRecords(detailList);
-        detailPageList.setTotal(1l);
+        detailPageList.setTotal(1L);
         detailPageList.setCurrent(reportSearchCommonVo.getPageNo());
         detailPageList.setPages(reportSearchCommonVo.getPageNo());
         detailPageList.setPages(reportSearchCommonVo.getPageSize());
         return detailPageList;
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:39
-     *  @Description:  业务数据-保险公司-明细导出
+     * 业务数据-保险公司-明细导出
+     *
+     *  @author hxl
+     *  @Date 2025/9/24 10:39
      */
     @Override
     public void downloadDetailListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -85,10 +84,10 @@ public class ReportCompanyDataManageServiceImpl extends ReportBaseServiceImpl im
         upLoadFile(reportSearchCommonVo, ReportCompanyDataManageDetailDto.class,detailList,"业务数据-保险公司-明细导出-"+ reportSearchCommonVo.getUserId());
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:42
-     *  @Description:  模拟数据
+     * 模拟数据
+     *
+     *  @author hxl
+     *  @Date 2025/9/24 10:42
      */
     public List<ReportCompanyDataManageDetailDto>  getDetailList(){
          List<ReportCompanyDataManageDetailDto> list =new ArrayList<>();

+ 31 - 38
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportContactPersonDataManageServiceImpl.java

@@ -1,20 +1,12 @@
 package com.jzg.console.service.impl;
 
 
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.entity.report.dto.ReportContactPersonDataManageDetailDto;
 import com.jzg.commons.entity.report.dto.ReportContactPersonDataManageDto;
-import com.jzg.commons.entity.report.dto.ReportRiskDataManageDetailDto;
-import com.jzg.commons.entity.report.dto.ReportRiskDataManageDto;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 import com.jzg.console.service.ReportContactPersonDataManageService;
-import io.swagger.v3.oas.annotations.media.Schema;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -23,20 +15,20 @@ import java.util.Date;
 import java.util.List;
 
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/22 16:45
- *  @Description:  业务数据-对接人
+ * 业务数据-对接人
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:45
  */
 @Service
 public class ReportContactPersonDataManageServiceImpl extends ReportBaseServiceImpl  implements ReportContactPersonDataManageService {
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 14:12
-     *  @Description: 业务数据-对接人-列表查询
+     * 业务数据-对接人-列表查询
+     *
+     * @author hxl
+     * @Date 2025/9/24 14:12
      */
     @Override
     public IPage<?> getPageListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -44,17 +36,17 @@ public class ReportContactPersonDataManageServiceImpl extends ReportBaseServiceI
         IPage<ReportContactPersonDataManageDto> pageList = new Page<ReportContactPersonDataManageDto>();
         List<ReportContactPersonDataManageDto> list = getList();
         pageList.setRecords(list);
-        pageList.setTotal(1l);
+        pageList.setTotal(1L);
         pageList.setCurrent(reportSearchCommonVo.getPageNo());
         pageList.setPages(reportSearchCommonVo.getPageNo());
         pageList.setPages(reportSearchCommonVo.getPageSize());
         return pageList;
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 14:13
-     *  @Description:  业务数据-对接人-列表导出
+     * 业务数据-对接人-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/24 14:13
      */
     @Override
     public void downloadListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -62,10 +54,10 @@ public class ReportContactPersonDataManageServiceImpl extends ReportBaseServiceI
         upLoadFile(reportSearchCommonVo, ReportContactPersonDataManageDto.class,list,"业务数据-对接人-列表导出-"+ reportSearchCommonVo.getUserId());
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 14:13
-     *  @Description: 业务数据-对接人-明细列表
+     * 业务数据-对接人-明细列表
+     *
+     * @author hxl
+     * @Date 2025/9/24 14:13
      */
     @Override
     public IPage<?> getPageDetailListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -73,17 +65,17 @@ public class ReportContactPersonDataManageServiceImpl extends ReportBaseServiceI
         IPage<ReportContactPersonDataManageDetailDto> detailPageList = new Page<ReportContactPersonDataManageDetailDto>();
         List<ReportContactPersonDataManageDetailDto> detailList = getDetailList();
         detailPageList.setRecords(detailList);
-        detailPageList.setTotal(1l);
+        detailPageList.setTotal(1L);
         detailPageList.setCurrent(reportSearchCommonVo.getPageNo());
         detailPageList.setPages(reportSearchCommonVo.getPageNo());
         detailPageList.setPages(reportSearchCommonVo.getPageSize());
         return detailPageList;
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 14:13
-     *  @Description: 业务数据-对接人-明细导出
+     *  
+     * @author hxl
+     * @Date 2025/9/24 14:13
+     *   业务数据-对接人-明细导出
      */
     @Override
     public void downloadDetailListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -92,10 +84,11 @@ public class ReportContactPersonDataManageServiceImpl extends ReportBaseServiceI
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:42
-     *  @Description:  模拟数据
+     * 模拟数据
+     *  TODO 这里使用的也是假数据
+     * @author hxl
+     * @Date 2025/9/24 10:42
+     *
      */
     public List<ReportContactPersonDataManageDto>  getList(){
         List<ReportContactPersonDataManageDto> list =new ArrayList<>();
@@ -109,10 +102,10 @@ public class ReportContactPersonDataManageServiceImpl extends ReportBaseServiceI
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:42
-     *  @Description:  模拟数据
+     * 模拟数据
+     *
+     * @author hxl
+     * @Date 2025/9/24 10:42
      */
     public List<ReportContactPersonDataManageDetailDto>  getDetailList(){
         List<ReportContactPersonDataManageDetailDto> list =new ArrayList<>();

+ 17 - 26
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportQuotationOrderDataServiceImpl.java

@@ -1,38 +1,29 @@
 package com.jzg.console.service.impl;
 
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.report.dto.ReportQuotationOrderDataDto;
-import com.jzg.commons.entity.report.dto.ReportRiskDataManageDetailDto;
-import com.jzg.commons.entity.report.dto.ReportRiskDataManageDto;
-import com.jzg.commons.entity.report.dto.ReportSalesmanDataManageDto;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
-import com.jzg.console.service.ReportChannelDataManageService;
 import com.jzg.console.service.ReportQuotationOrderDataService;
-import io.swagger.v3.oas.annotations.media.Schema;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/22 16:45
- *  @Description:  报价数据-报价订单
+ *  
+ * @author hxl
+ * @Date 2025/9/22 16:45
+ *   报价数据-报价订单
  */
 @Service
 public class ReportQuotationOrderDataServiceImpl extends ReportBaseServiceImpl implements ReportQuotationOrderDataService {
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 15:37
-     *  @Description: 报价数据-报价订单-列表查询
+     *  
+     * @author hxl
+     * @Date 2025/9/24 15:37
+     *  报价数据-报价订单-列表查询
      */
     @Override
     public IPage<?> getPageListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -40,17 +31,17 @@ public class ReportQuotationOrderDataServiceImpl extends ReportBaseServiceImpl i
         IPage<ReportQuotationOrderDataDto> pageList = new Page<ReportQuotationOrderDataDto>();
         List<ReportQuotationOrderDataDto> list = getList();
         pageList.setRecords(list);
-        pageList.setTotal(1l);
+        pageList.setTotal(1L);
         pageList.setCurrent(reportSearchCommonVo.getPageNo());
         pageList.setPages(reportSearchCommonVo.getPageNo());
         pageList.setPages(reportSearchCommonVo.getPageSize());
         return pageList;
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/25 9:02
-     *  @Description:  报价数据-报价订单-列表导出
+     *  
+     * @author hxl
+     * @Date 2025/9/25 9:02
+     *   报价数据-报价订单-列表导出
      */
     @Override
     public void downloadListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -67,10 +58,10 @@ public class ReportQuotationOrderDataServiceImpl extends ReportBaseServiceImpl i
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:42
-     *  @Description:  模拟数据
+     *  
+     * @author hxl
+     * @Date 2025/9/24 10:42
+     *   模拟数据
      */
     public List<ReportQuotationOrderDataDto>  getList(){
         List<ReportQuotationOrderDataDto> list =new ArrayList<>();

+ 35 - 31
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportRiskDataManageServiceImpl.java

@@ -1,11 +1,14 @@
 package com.jzg.console.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.report.dto.ReportRiskDataManageDetailDto;
 import com.jzg.commons.entity.report.dto.ReportRiskDataManageDto;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 import com.jzg.console.service.ReportRiskDataManageService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -13,19 +16,20 @@ import java.util.Date;
 import java.util.List;
 
 /**
- *  @version
- *  @author: hxl
- *  @Date: 2025/9/22 16:45
- *  @Description:  业务数据-险种报表
+ * 业务数据-险种报表
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:45
  */
 @Service
 public class ReportRiskDataManageServiceImpl extends ReportBaseServiceImpl  implements ReportRiskDataManageService {
 
+    private static final Logger log = LoggerFactory.getLogger(ReportRiskDataManageServiceImpl.class);
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 11:26
-     *  @Description:  业务数据-险种报表-列表查詢
+     * 业务数据-险种报表-列表查詢
+     *
+     * @author hxl
+     * @Date 2025/9/24 11:26
      */
     @Override
     public IPage<?> getPageListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -33,17 +37,17 @@ public class ReportRiskDataManageServiceImpl extends ReportBaseServiceImpl  impl
         IPage<ReportRiskDataManageDto> pageList = new Page<ReportRiskDataManageDto>();
         List<ReportRiskDataManageDto> list = getList();
         pageList.setRecords(list);
-        pageList.setTotal(1l);
+        pageList.setTotal(1L);
         pageList.setCurrent(reportSearchCommonVo.getPageNo());
         pageList.setPages(reportSearchCommonVo.getPageNo());
         pageList.setPages(reportSearchCommonVo.getPageSize());
         return pageList;
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 11:27
-     *  @Description:  业务数据-险种报表-列表导出
+     * 业务数据-险种报表-列表导出
+     *
+     * @author hxl
+     * @Date 2025/9/24 11:27
      */
     @Override
     public void downloadListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -51,10 +55,10 @@ public class ReportRiskDataManageServiceImpl extends ReportBaseServiceImpl  impl
         upLoadFile(reportSearchCommonVo, ReportRiskDataManageDto.class,list,"业务数据-险种报表-列表导出-"+ reportSearchCommonVo.getUserId());
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 11:27
-     *  @Description:  业务数据-险种报表-明细
+     * 业务数据-险种报表-明细
+     *
+     * @author hxl
+     * @Date 2025/9/24 11:27
      */
     @Override
     public IPage<?> getPageDetailListByParams(ReportSearchCommonVo reportSearchCommonVo) {
@@ -62,45 +66,45 @@ public class ReportRiskDataManageServiceImpl extends ReportBaseServiceImpl  impl
         IPage<ReportRiskDataManageDetailDto> detailPageList = new Page<ReportRiskDataManageDetailDto>();
         List<ReportRiskDataManageDetailDto> detailList = getDetailList();
         detailPageList.setRecords(detailList);
-        detailPageList.setTotal(1l);
+        detailPageList.setTotal(1L);
         detailPageList.setCurrent(reportSearchCommonVo.getPageNo());
         detailPageList.setPages(reportSearchCommonVo.getPageNo());
         detailPageList.setPages(reportSearchCommonVo.getPageSize());
         return detailPageList;
     }
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 11:27
-     *  @Description:  业务数据-险种报表-明细导出
+     * 业务数据-险种报表-明细导出
+     *
+     * @author hxl
+     * @Date 2025/9/24 11:27
      */
     @Override
     public void downloadDetailListByParams(ReportSearchCommonVo reportSearchCommonVo) {
+        log.info("业务数据-险种报表-明细导出, 导出条件reportSearchCommonVo=[{}]", JSONUtil.toJsonStr(reportSearchCommonVo));
         List<ReportRiskDataManageDetailDto> detailList = getDetailList();
         upLoadFile(reportSearchCommonVo, ReportRiskDataManageDetailDto.class,detailList,"业务数据-险种报表-明细导出-"+ reportSearchCommonVo.getUserId());
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:42
-     *  @Description:  模拟数据
+     * 模拟数据
+     * TODO 这里使用的是假数据,没有从数据库里面获取数据
+     * @author hxl
+     * @Date 2025/9/24 10:42
      */
     public List<ReportRiskDataManageDto>  getList(){
         List<ReportRiskDataManageDto> list =new ArrayList<>();
         ReportRiskDataManageDto reportRiskDataManageDto = ReportRiskDataManageDto.builder()
                 .companyId("1").companyName("永诚财险").partnerCompanyId("1").partnerCompanyName("众安财险科技营销部")
-                .riskName("单交").quoteCountNum(1000l).quoteOrderNum(500l).underwriteOrderNum(300l).underwritePremium(new BigDecimal(456))
+                .riskName("单交").quoteCountNum(1000L).quoteOrderNum(500L).underwriteOrderNum(300L).underwritePremium(new BigDecimal(456))
                 .penetrationRate(new BigDecimal(23)).underwriteRate(new BigDecimal(32)).build();
         list.add(reportRiskDataManageDto);
         return list;
     }
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:42
-     *  @Description:  模拟数据
+     * 模拟数据
+     * @author hxl
+     * @Date 2025/9/24 10:42
      */
     public List<ReportRiskDataManageDetailDto>  getDetailList(){
         List<ReportRiskDataManageDetailDto> list =new ArrayList<>();

+ 0 - 5
gateway/src/main/resources/application-prod.yml

@@ -1,9 +1,4 @@
 spring:
-  redis:
-    redisson:
-      address: redis://xxx:xxx
-      password: xxx
-      database: 0
   minio:
     url: http://172.24.144.227:9000
     access-key: v7Zb8XhyLcYNcSHlxvyK

+ 2 - 1
partner/src/main/java/com/jzg/controller/DistributionController.java

@@ -3,6 +3,7 @@ package com.jzg.controller;
 
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.vo.DistributionVo;
 import com.jzg.utils.DistributionUtils;
@@ -13,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
 @Slf4j
 @RestController
 @RequestMapping("/partnerDistribution")
-public class DistributionController{
+public class DistributionController extends BaseController {
 
 
     @PostMapping("generateDistributionData")

+ 3 - 3
partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java

@@ -152,7 +152,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     UserRuleVo queryUserRuleVo(@Param("userId") String userId, @Param("grade")Integer grade,@Param("period") CommissionValidityPeriod period);
 
     @Select("SELECT upgrade_cycle_start_time as startDate FROM partner_user WHERE user_id = (SELECT info.id FROM sys_user_jzg_info info INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id " +
-            " WHERE sa.type_attr = 3 AND sa.partner_status = 3 AND info.user_id = #{userId}) AND grade = #{grade}")
+            " WHERE sa.type_attr = 3 AND sa.partner_status = 3 AND info.id = #{userId}) AND grade = #{grade}")
     CommissionValidityPeriod selectUpgradeCycleStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
     @Update("UPDATE partner_user SET upgrade_cycle_start_time = #{newDate} WHERE  user_id = #{userId} and grade = #{grade} ")
@@ -166,7 +166,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     @Update(" UPDATE partner_user pu JOIN( SELECT info.id AS user_id, DATE_ADD(DATE(sa.partner_review_time), INTERVAL 1 DAY) AS new_start_time FROM sys_user_jzg_info info " +
             " INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id WHERE sa.type_attr = 3 AND sa.partner_status = 3 " +
-            " AND info.user_id = #{userId} AND sa.partner_review_time IS NOT NULL LIMIT 1) t ON pu.user_id = t.user_id SET pu.upgrade_cycle_start_time = t.new_start_time WHERE pu.grade = #{grade} ")
+            " AND info.id = #{userId} AND sa.partner_review_time IS NOT NULL LIMIT 1) t ON pu.user_id = t.user_id SET pu.upgrade_cycle_start_time = t.new_start_time WHERE pu.grade = #{grade} ")
     void updateUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
     BigDecimal subordinateMembersInsurancePremiums(@Param("userId") String userId, @Param("grade")String grade,@Param("period") CommissionValidityPeriod period);
@@ -175,7 +175,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     BigDecimal selectFixedRatio(@Param("userId") String userId, @Param("grade") String  grade);
 
 
-    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id  WHERE sa.partner_status = 3 " +
+    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id  WHERE  sa.type_attr = 3 AND sa.partner_status = 3 " +
             " AND( p.grade, p.user_id) IN ( SELECT MIN( grade ) grade, user_id FROM partner_user WHERE grade IN ( '2', '3', '4' ) AND identity_status = 0 GROUP BY user_id )" +
             " ORDER BY p.create_time DESC")
     List<PartnerUser> queryDowngradedData();

+ 23 - 17
partner/src/main/java/com/jzg/service/Impl/PartnerRuleServiceImpl.java

@@ -260,24 +260,30 @@ public class PartnerRuleServiceImpl extends ServiceImpl<PartnerRuleMapper, Partn
     }
 
     private VerifyData downgradeUpgradeConditions(String userId, String grade) {
-        PartnerRuleEntity partnerRuleEntity = validateGradeAndFetchRuleEntity(grade);
-        if (partnerRuleEntity == null) {
-            throw new SystemException("合作伙伴规则实体不能为空");
-        }
-        partnerRuleEntity.getStrategyArray();
-        CommissionValidityPeriod period = partnerUserMapper.selectUpgradeCycleStartTime(userId, Integer.valueOf(grade));
-        period.setEndDate(SpringUtil.getBean(ExpiredCommissionUtils.class).generateDowngradeTime(grade,period.getStartDate()));
-        BigDecimal p = getInviteData(userId, grade, period);
-        BigDecimal bf = partnerUserMapper.subordinateMembersInsurancePremiums(userId, grade, period);
-        //  查询当前用户出单的保费
-        BigDecimal ownBf = partnerUserMapper.selectOwnSumPremium(userId, period);
-        if (bf == null){
-            bf = BigDecimal.ZERO;
-        }
-        if (ownBf == null){
-            ownBf = BigDecimal.ZERO;
+        try {
+            PartnerRuleEntity partnerRuleEntity = validateGradeAndFetchRuleEntity(grade);
+            if (partnerRuleEntity == null) {
+                throw new SystemException("合作伙伴规则实体不能为空");
+            }
+            partnerRuleEntity.getStrategyArray();
+            CommissionValidityPeriod period = partnerUserMapper.selectUpgradeCycleStartTime(userId, Integer.valueOf(grade));
+            period.setEndDate(SpringUtil.getBean(ExpiredCommissionUtils.class).generateDowngradeTime(grade,period.getStartDate()));
+            BigDecimal p = getInviteData(userId, grade, period);
+            BigDecimal bf = partnerUserMapper.subordinateMembersInsurancePremiums(userId, grade, period);
+            //  查询当前用户出单的保费
+            BigDecimal ownBf = partnerUserMapper.selectOwnSumPremium(userId, period);
+            if (bf == null){
+                bf = BigDecimal.ZERO;
+            }
+            if (ownBf == null){
+                ownBf = BigDecimal.ZERO;
+            }
+            return new VerifyData(partnerRuleEntity, p, bf,ownBf);
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("用户ID:{}" + userId + "报错信息:{}" + e.getMessage());
+            throw new SystemException(e.getMessage());
         }
-        return new VerifyData(partnerRuleEntity, p, bf,ownBf);
     }
 
     private static class VerifyData {

+ 5 - 5
partner/src/main/java/com/jzg/utils/TimedTaskUtils.java

@@ -13,10 +13,10 @@ import com.jzg.mapper.PartnerPartnerAccountMapper;
 import com.jzg.mapper.PartnerPremiumDetailsMapper;
 import com.jzg.mapper.PartnerUserMapper;
 import com.jzg.service.PartnerRuleService;
-import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
@@ -57,8 +57,8 @@ public class TimedTaskUtils {
     /**
      * TODO  每天晚上  记录佣金过期记录
      */
-    @XxlJob("updateOrderDateNoon")
-    //@Scheduled(cron = "0 0 0 * * *")
+    //@XxlJob("updateOrderDateNoon")
+    @Scheduled(cron = "0 0 0 * * *")
     public void updateOrderDateNoon() {
         log.info("记录佣金过期定时任务开始执行:{}", expireDays);
         List<PartnerUser> partnerUserList = partnerUserMapper.queryExpiredRecords(expireDays);
@@ -132,8 +132,8 @@ public class TimedTaskUtils {
     /**
      * TODO: 更新降级考核时间
      */
-    @XxlJob("checkCommissionExpireTime")
-    //@Scheduled(cron = "0 0 0 * * *")
+    //@XxlJob("checkCommissionExpireTime")
+    @Scheduled(cron = "0 0 0 * * *")
     public void checkCommissionExpireTime() {
         // TODO等级规则
         List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();

+ 5 - 5
platform/src/main/java/com/jzg/controller/AttributionTemplateController.java

@@ -8,7 +8,6 @@ import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateSaveVo;
 import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateVo;
 import com.jzg.service.PtlInsAttributionTemplateService;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -37,9 +36,9 @@ public class AttributionTemplateController {
 
     @Operation(summary = "提交模板信息",description = "提交模板信息")
     @PostMapping(value = "submit")
-    public HttpResult<Object> saveTemplate(@RequestBody List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo) {
+    public HttpResult<Boolean> saveTemplate(@RequestBody List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo) {
         ptlInsAttributionTemplateSaveVo.forEach(PtlInsAttributionTemplateSaveVo::converApi);
-        return ptlInsAttributionTemplateService.submit(ptlInsAttributionTemplateSaveVo) ? HttpResult.ok("提交模版信息成功") : HttpResult.error("提交模版信息失败");
+        return ptlInsAttributionTemplateService.submit(ptlInsAttributionTemplateSaveVo);
     }
 
     @PostMapping("/getPtlInsAttributionTemplate")
@@ -60,8 +59,9 @@ public class AttributionTemplateController {
     }
 
     /**
-     *获取协议属性信息
-     * @param companyId
+     * 获取协议属性信息
+     *
+     * @param companyId 保司的id
      * @return HttpResult<PtlAgreementAttribution>
      */
     @GetMapping("/getAgreementAttributionByCompanyId")

+ 15 - 2
platform/src/main/java/com/jzg/controller/SysMenuController.java

@@ -50,8 +50,15 @@ public class SysMenuController extends BaseController {
     }
 
 
+    /**
+     * 查询菜单的树形结构(基于租户的)
+     *      不同租户的菜单权限不一样
+     *
+     * @author lipf
+     * @date 2026/4/10 15:20
+     */
     @GetMapping(value = "/findMenuTree")
-    public HttpResult findMenuTree() {
+    public HttpResult<List<SysMenu>> findMenuTree() {
         String systemCode = getSystemCode();
         return HttpResult.ok(sysMenuService.findTree(systemCode, 0));
     }
@@ -86,8 +93,14 @@ public class SysMenuController extends BaseController {
         return HttpResult.ok(sysMenuService.getSystemMenu(systemCode));
     }
 
+    /**
+     * 为租户新增租户平台的顶级菜单权限
+     *
+     * @author lipf
+     * @date 2026/4/10 15:10
+     */
     @PostMapping(value = "/saveSystemMenu")
-    public HttpResult saveSystemMenu(@RequestBody SystemMenuVo systemMenuVo){
+    public HttpResult<Boolean> saveSystemMenu(@RequestBody SystemMenuVo systemMenuVo){
         return HttpResult.ok(sysMenuService.saveSystemMenu(systemMenuVo));
     }
 }

+ 8 - 3
platform/src/main/java/com/jzg/controller/SysSystemController.java

@@ -1,5 +1,6 @@
 package com.jzg.controller;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.core.page.HttpResult;
@@ -20,6 +21,8 @@ import com.jzg.service.SysUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -36,6 +39,7 @@ import java.util.List;
 @RequestMapping("/system")
 public class SysSystemController {
 
+    private static final Logger log = LoggerFactory.getLogger(SysSystemController.class);
     @Autowired
     private SysSystemService sysSystemService;
 
@@ -146,12 +150,13 @@ public class SysSystemController {
 
     /**
      * 租户添加
-     * @param param
-     * @return
+     * @param param 新增租户的租户以及管理员,密码等信息
+     * @return HttpResult<String>
      */
     @Operation(summary = "租户添加")
     @PostMapping("/sysAdd")
-    public HttpResult sysAdd(@Validated @RequestBody SysSystemAddParam param) {
+    public HttpResult<String> sysAdd(@Validated @RequestBody SysSystemAddParam param) {
+        log.info("新增租户: SysSystemAddParam=[{}]", JSONUtil.toJsonStr(param));
         // 编码和名称不允许重复
         boolean codeExists = sysSystemService.isExistsCode(param.getSysCode(), null);
         boolean nameExists = sysSystemService.isExistsName(param.getSysName(), null);

+ 8 - 3
platform/src/main/java/com/jzg/mapper/SysMenuMapper.java

@@ -3,8 +3,6 @@ package com.jzg.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.dto.SysCommonFunctionDto;
 import com.jzg.commons.entity.po.SysMenu;
-import com.jzg.commons.entity.po.SysSystemMenu;
-import com.jzg.commons.entity.vo.SystemMenuVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -14,9 +12,16 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
 
     public List<SysMenu> getSystemMenus(String systemCode);
 
+    /**
+     * 查询菜单的树形结构(基于租户的)
+     *      不同租户的菜单权限不一样
+     * @param systemCode 租户编码
+     * @author lipf
+     * @date 2026/4/10 15:20
+     */
     public List<SysMenu> getSystemMenusRecursion(String systemCode);
 
-    public List<SysMenu> getMenuByRoleId(String roleId);
+    public List<SysMenu> getMenuByRoleId(List<String> roleIds);
 
     /**
      * 获取常用菜单列表

+ 3 - 1
platform/src/main/java/com/jzg/mapper/SysUserRoleMapper.java

@@ -5,11 +5,13 @@ import com.jzg.commons.entity.po.SysUserRole;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
 
 
     void deleteByUserId(@Param("userId") String userId);
 
-    SysUserRole selectByUserIdAndSysCodeOne(@Param("userId") String userId,@Param("systemCode") String systemCode);
+    List<SysUserRole> selectByUserIdAndSysCodeOne(@Param("userId") String userId, @Param("systemCode") String systemCode);
 }

+ 10 - 5
platform/src/main/java/com/jzg/service/PtlInsAttributionTemplateService.java

@@ -20,9 +20,8 @@ public interface PtlInsAttributionTemplateService extends IService<PtlInsAttribu
     /**
      * 分页查询
      *
-     * @param page
      * @param ptlInsAttributionTemplateVo
-     * @return
+     * @return List<PtlInsAttributionTemplateVo>
      */
     List<PtlInsAttributionTemplateVo> getList(PtlInsAttributionTemplateQueryVo ptlInsAttributionTemplateVo);
 
@@ -36,10 +35,10 @@ public interface PtlInsAttributionTemplateService extends IService<PtlInsAttribu
     /**
      * 保存 保险公司归属信息模版
      *
-     * @param ptlInsAttributionTemplateSaveVo
-     * @return
+     * @param ptlInsAttributionTemplateSaveVo 保险公司归属信息模版, 内部包含多个对象
+     * @return boolean
      */
-    boolean submit(List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo);
+    HttpResult<Boolean> submit(List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo);
 
     HttpResult<PtlInsAttributionTemplate> getPtlInsAttributionTemplate(PtlInsAttributionTemplateVo ptlInsAttributionTemplateVo);
 
@@ -51,5 +50,11 @@ public interface PtlInsAttributionTemplateService extends IService<PtlInsAttribu
      */
     HttpResult<PtlAgreementAttribution> getAgreementAttribution(String agreementId);
 
+    /**
+     * 获取协议属性信息
+     *
+     * @param companyId 保司的id
+     * @return HttpResult<PtlAgreementAttribution>
+     */
     HttpResult<List<PtlAgreementAttribution>> getAgreementAttributionByCompanyId(String companyId);
 }

+ 15 - 1
platform/src/main/java/com/jzg/service/SysMenuService.java

@@ -9,6 +9,14 @@ import com.jzg.commons.entity.vo.SystemMenuVo;
 import java.util.List;
 
 public interface SysMenuService extends IService<SysMenu> {
+
+    /**
+     * 查询菜单的树形结构(基于租户的)
+     *      不同租户的菜单权限不一样
+     * @param systemCode 租户编码
+     * @author lipf
+     * @date 2026/4/10 15:20
+     */
     public List<SysMenu> findTree(String systemCode, int menuType);
 
     public List<SysMenu> getRoleMenuTree(String systemCode, String username);
@@ -19,6 +27,12 @@ public interface SysMenuService extends IService<SysMenu> {
 
     public List<SysMenu> getSystemMenu(String systemCode);
 
+    /**
+     * 为租户新增租户平台的顶级菜单权限
+     *
+     * @author lipf
+     * @date 2026/4/10 15:10
+     */
     public Boolean saveSystemMenu(SystemMenuVo systemMenuVo);
 
     /**
@@ -26,7 +40,7 @@ public interface SysMenuService extends IService<SysMenu> {
      * @param roleId
      * @return
      */
-    public List<SysMenu> getMenuByRoleId(String roleId);
+    public List<SysMenu> getMenuByRoleId(List<String> roleId);
 
     /**
      * 获取常用

+ 1 - 2
platform/src/main/java/com/jzg/service/SysSystemService.java

@@ -104,8 +104,7 @@ public interface SysSystemService extends IService<SysSystem> {
     /**
      * 租户新增
      *
-     * @param param
-     * @return
+     * @param param 租户以及租户管理员等信息
      */
     public void sysAdd(SysSystemAddParam param);
 

+ 37 - 3
platform/src/main/java/com/jzg/service/impl/PtlInsAttributionTemplateServiceImpl.java

@@ -1,9 +1,11 @@
 package com.jzg.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.constants.PtlApiType;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.agreement.dto.PtlAttributionTemplateDto;
 import com.jzg.commons.entity.agreement.po.PtlAgreementAttribution;
 import com.jzg.commons.entity.agreement.po.PtlCrawlerApi;
 import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
@@ -21,15 +23,22 @@ import com.jzg.service.PtlAgreementService;
 import com.jzg.service.PtlCrawlerApiService;
 import com.jzg.service.PtlInsAttributionTemplateService;
 import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Collections;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 @Service
 public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttributionTemplateMapper, PtlInsAttributionTemplate> implements PtlInsAttributionTemplateService {
 
+    private static final Logger log = LoggerFactory.getLogger(PtlInsAttributionTemplateServiceImpl.class);
+
     @Autowired
     EsmInsCompanyService esmInsCompanyService;
 
@@ -64,12 +73,30 @@ public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttr
         return baseMapper.selectOne(wrapper);
     }
 
+    /**
+     * 保存 保险公司归属信息模版
+     *
+     * @param ptlInsAttributionTemplateSaveVo 保险公司归属信息模版, 内部包含多个对象
+     * @return HttpResult<Boolean>
+     */
     @Override
     @Transactional
-    public boolean submit(List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo) {
+    public HttpResult<Boolean> submit(List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo) {
+        log.info("保存保险公司归属信息模板: ptlInsAttributionTemplateSaveVo=[{}]", JSONUtil.toJsonStr(ptlInsAttributionTemplateSaveVo));
         // 一个保险公司,一种api方式只能配置一种
         ptlInsAttributionTemplateSaveVo.forEach(this::validate);
-
+        List<PtlAttributionTemplateDto> fields = ptlInsAttributionTemplateSaveVo.get(0).getFields();
+        List<String> fieldList = fields.stream().map(PtlAttributionTemplateDto::getField).toList();
+        Set<String> duplicates = fieldList.stream()
+                .filter(n -> Collections.frequency(fieldList, n) > 1)
+                .collect(Collectors.toSet());
+        if(!duplicates.isEmpty()) {
+            log.info("存在字段名称重复的设置。duplicates=[{}]", JSONUtil.toJsonStr(duplicates));
+            HttpResult<Boolean> res = new HttpResult<Boolean>();
+            res.setData(Boolean.FALSE);
+            res.setMsg("存在字段名称重复的设置. 重复字段是" + JSONUtil.toJsonStr(duplicates));
+            return res;
+        }
         ptlInsAttributionTemplateSaveVo.forEach(saveVo -> {
             EsmInsCompany esmInsCompany = esmInsCompanyService.isExists(saveVo.getInsCompanyId());
             PtlInsAttributionTemplate ptlInsAttributionTemplate = new PtlInsAttributionTemplate(saveVo, esmInsCompany.getCnName());
@@ -86,7 +113,7 @@ public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttr
                 AssertionUtils.isSucceed(b, "保险公司api请求插入失败");
             }
         });
-        return true;
+        return HttpResult.ok("提交模板信息成功");
     }
 
     private void validate(PtlInsAttributionTemplateSaveVo ptlInsAttributionTemplateSaveVo) {
@@ -109,6 +136,7 @@ public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttr
         PtlInsAttributionTemplate ptlInsAttributionTemplate = lambdaQuery().eq(PtlInsAttributionTemplate::getInsCompanyId, companyId)
                 .eq(PtlInsAttributionTemplate::getApiType, ptlInsAttributionTemplateVo.getApiType())
                 .one();
+        log.info("保险公司归属信息模板查询失败.需要先添加协议 ");
         AssertionUtils.isEmpty(ptlInsAttributionTemplate, "保险公司归属信息模板查询失败");
         return HttpResult.ok(ptlInsAttributionTemplate);
     }
@@ -124,6 +152,12 @@ public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttr
         return HttpResult.ok(ptlAgreementAttribution);
     }
 
+    /**
+     * 获取协议属性信息
+     *
+     * @param companyId 保司的id
+     * @return HttpResult<PtlAgreementAttribution>
+     */
     @Override
     public HttpResult<List<PtlAgreementAttribution>> getAgreementAttributionByCompanyId(String companyId) {
         EsmInsCompany company = esmInsCompanyService.getById(companyId);

+ 42 - 12
platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java

@@ -2,6 +2,7 @@ package com.jzg.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.entity.dto.SysCommonFunctionDto;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.po.SysSystemMenu;
@@ -22,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -38,7 +40,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
 
     private final SysUserRoleMapper sysUserRoleMapper;
 
+    private final BaseController baseController;
 
+
+    /**
+     * 查询菜单的树形结构(基于租户的)
+     *      不同租户的菜单权限不一样
+     * @param systemCode 租户编码
+     * @author lipf
+     * @date 2026/4/10 15:20
+     */
     @Override
     public List<SysMenu> findTree(String systemCode, int menuType) {
         List<SysMenu> sysMenus = new ArrayList<>();
@@ -63,13 +74,13 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
 
     @Override
     public List<SysMenu> getRoleMenuTree(String systemCode, String userId) {
-        SysUserRole sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
+        List<SysUserRole> sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
         // modify by lipf ,2026年4月3日08:52:05, 解决NPE 异常
         if(sysUserRole == null){
             log.info("租户[{}]下的用户[{}]角色为空",systemCode, userId);
             return Collections.emptyList();
         }
-        List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
+        List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.stream().map(x->x.getRoleId()).toList());
         List<SysMenu> sysMenus = new ArrayList<>();
         for (SysMenu menu : menus) {
             if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
@@ -81,6 +92,14 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         }
         sysMenus.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()));
         findChildren(sysMenus, menus, 1);
+
+        List<SysSystemMenu> sysSystemMenus = sysSystemMenuMapper.selectList(new LambdaQueryWrapper<SysSystemMenu>().eq(SysSystemMenu::getSystemCode, baseController.getSystemCode()));
+        List<String> collect = sysSystemMenus.stream().map(x -> x.getMenuId()).collect(Collectors.toList());
+
+        sysMenus = sysMenus.stream()
+                .filter(menu -> collect.contains(menu.getId()))
+                .collect(Collectors.toList());
+
         return sysMenus;
     }
 
@@ -97,8 +116,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         LambdaQueryWrapper<SysMenu> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(SysMenu::getType,"2");
         List<SysMenu> sysMenus = baseMapper.selectList(lambdaQueryWrapper);
-        SysUserRole sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
-        List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
+        List<SysUserRole> sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
+        List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.stream().map(x->x.getRoleId()).toList());
 
         List<String> perms = new ArrayList<>();
         sysMenus.forEach(item->{
@@ -129,16 +148,18 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         return sysMenus;
     }
 
+    /**
+     * 为租户新增租户平台的顶级菜单权限
+     *
+     * @author lipf
+     * @date 2026/4/10 15:10
+     */
     @Override
     @Transactional
     public Boolean saveSystemMenu(SystemMenuVo systemMenuVo) {
         // 先删除原先的
-        Long count = sysSystemMenuMapper.selectCount(new LambdaQueryWrapper<SysSystemMenu>()
+        sysSystemMenuMapper.delete(new LambdaQueryWrapper<SysSystemMenu>()
                 .eq(SysSystemMenu::getSystemCode, systemMenuVo.getSystemCode()));
-        if(count > 0){
-            int delete = sysSystemMenuMapper.delete(new LambdaQueryWrapper<SysSystemMenu>()
-                    .eq(SysSystemMenu::getSystemCode, systemMenuVo.getSystemCode()));
-        }
 
         List<SysSystemMenu> sysSystemMenus = new ArrayList<>();
         // 添加
@@ -154,9 +175,18 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
     }
 
     @Override
-    public List<SysMenu> getMenuByRoleId(String roleId) {
-        List<SysMenu> menuByRoleId = sysMenuMapper.getMenuByRoleId(roleId);
-        return menuByRoleId;
+    public List<SysMenu> getMenuByRoleId(List<String> roleIds) {
+        List<SysMenu> menuByRoleId = sysMenuMapper.getMenuByRoleId(roleIds);
+        List<SysMenu> distinctMenuList = menuByRoleId.stream()
+                .collect(Collectors.toMap(
+                        SysMenu::getId,
+                        Function.identity(),
+                        (existing, replacement) -> existing
+                ))
+                .values()
+                .stream()
+                .toList();
+        return distinctMenuList;
     }
 
     private void findChildren(List<SysMenu> SysMenus, List<SysMenu> menus, int menuType) {

+ 7 - 2
platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java

@@ -314,6 +314,11 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
         return vo;
     }
 
+    /**
+     * 租户新增
+     *
+     * @param param 租户以及租户管理员等信息
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void sysAdd(SysSystemAddParam param) {
@@ -391,8 +396,8 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
 
 
     public void addDefaultRoles(String sysCode,String deptId){
-        List<SysRole> defaultRoleList = Arrays.asList(
-                buildRole(sysCode, deptId,"业务员")
+        List<SysRole> defaultRoleList = List.of(
+                buildRole(sysCode, deptId, "业务员")
         );
         sysRoleMapper.insert(defaultRoleList);
     }

+ 5 - 2
platform/src/main/resources/mapper/SysMenuMapper.xml

@@ -28,8 +28,11 @@
     <select id="getMenuByRoleId" resultType="com.jzg.commons.entity.po.SysMenu">
         SELECT sm.*
         FROM sys_role_perms srp
-                 LEFT JOIN sys_menu sm ON srp.perms_id = sm.id
-        WHERE srp.role_id = #{roleId}
+        LEFT JOIN sys_menu sm ON srp.perms_id = sm.id
+        WHERE srp.role_id IN
+        <foreach collection="roleIds" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
     </select>
 
     <select id="getCommonFunction" resultType="com.jzg.commons.entity.dto.SysCommonFunctionDto">

+ 7 - 3
pom.xml

@@ -40,7 +40,7 @@
     <guava.version>29.0-jre</guava.version>
     <rocketmq.version>2.2.1</rocketmq.version>
     <rocket.version>1.0-SNAPSHOT</rocket.version>
-    <seate.version>1.7.0</seate.version>
+    <seata.version>1.8.0</seata.version>
     <weixin-java.version>4.7.0</weixin-java.version>
     <spring-cloud.version>2022.0.0</spring-cloud.version>
     <opentelemetry.version>1.41.0</opentelemetry.version>
@@ -101,8 +101,6 @@
       <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
 
-
-
     <!-- OpenTelemetry 核心 -->
     <dependency>
       <groupId>io.opentelemetry</groupId>
@@ -283,6 +281,12 @@
         <version>${weixin-java.version}</version>
       </dependency>
 
+      <!--seata-->
+      <dependency>
+        <groupId>io.seata</groupId>
+        <artifactId>seata-all</artifactId>
+        <version>${seata.version}</version>
+      </dependency>
 
 
     </dependencies>

+ 0 - 2
tenant/costsorrule/src/main/java/com/jzg/costsorrule/CostsOrRuleApplication.java

@@ -3,11 +3,9 @@ package com.jzg.costsorrule;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
-//@EnableDiscoveryClient
 @ComponentScan(basePackages = {"com.jzg.commons","com.jzg.costsorrule"})
 @MapperScan({"com.jzg.costsorrule.mapper","com.jzg.commons.mapper"})
 public class CostsOrRuleApplication {

+ 30 - 0
tenant/insurance/jzg和保险公司的交互方式.md

@@ -0,0 +1,30 @@
+# jzg和保险公司的交互方式
+
+# 保险公司报价服务清单
+
+| 序号 | 服务名称 | 保险公司中文名 | 交互方式       |
+|----|------ |------ |------------|
+| 1  | quotation-ansheng | 安盛保险 | Python爬虫模拟           |
+| 2  | quotation-bohai | 渤海保险 |            |
+| 3  | quotation-chengtai | 诚泰保险 |            |
+| 4  | quotation-commons | 公共服务模块 |            |
+| 5  | quotation-dajia | 大家保险 |            |
+| 6  | quotation-guoren | 国任保险 |            |
+| 7  | quotation-guoshou | 国寿保险 |            |
+| 8  | quotation-hengbang | 恒邦保险 |            |
+| 9  | quotation-huanong | 华农保险 |            |
+| 10 | quotation-huatai | 华泰保险 |            |
+| 11 | quotation-renbao | 人保保险 |            |
+| 12 | quotation-shenneng | 神农保险 |            |
+| 13 | quotation-taikang | 泰康保险 |            |
+| 14 | quotation-taiping | 太平保险 |            |
+| 15 | quotation-taipingyang | 太平洋保险 |            |
+| 16 | quotation-taishan | 泰山保险 | Python爬虫模拟 |
+| 17 | quotation-yangguang | 阳光保险 | API接口      |
+| 18 | quotation-yongcheng | 永诚保险 |            |
+| 19 | quotation-zhongan | 众安保险 |            |
+| 20 | quotation-zhongmei | 中美保险 |            |
+| 21 | quotation-zijin | 紫金保险 |            |
+
+**备注:** 交互方式统一采用API接口方式进行系统集成。
+

+ 3 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/filter/CarModelsFilterUtils.java

@@ -9,9 +9,9 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 /**
- * @description: 过滤车型
- * @author: wenks
- * @date: 2023/8/22 9:54
+ * @description 过滤车型
+ * @author wenks
+ * @date 2023/8/22 9:54
  **/
 public final class CarModelsFilterUtils {
 

+ 3 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationApiBaseService.java

@@ -2,9 +2,9 @@ package com.jzg.quotation.commons.service;
 
 
 /**
- * @description: api报价基类
- * @author: wenks
- * @date: 2025/2/20 14:15
+ * @description api报价基类
+ * @author wenks
+ * @date 2025/2/20 14:15
  **/
 public interface QuotationApiBaseService extends QuotationBaseService {
 

+ 4 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java

@@ -4,9 +4,10 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
 
 /**
- * @description: 报价基类
- * @author: wenks
- * @date: 2025/2/18 15:57
+ * 报价基类
+ *
+ * @author wenks
+ * @date 2025/2/18 15:57
  **/
 public interface QuotationBaseService {
 

+ 3 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationCrawlerBaseService.java

@@ -5,9 +5,9 @@ import com.jzg.commons.entity.quote.vo.base.LoginBase;
 
 
 /**
- * @description: 爬虫报价基类
- * @author: wenks
- * @date: 2025/2/18 16:00
+ * @description 爬虫报价基类
+ * @author wenks
+ * @date 2025/2/18 16:00
  **/
 public interface QuotationCrawlerBaseService extends QuotationBaseService {
 

+ 3 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/conversion/ConfigureParametersConversion.java

@@ -10,9 +10,9 @@ import java.util.Map;
 
 
 /**
- * @description: 归属信息转换为配置实体
- * @author: wenks
- * @date: 2025/2/18 17:06
+ * @description 归属信息转换为配置实体
+ * @author wenks
+ * @date 2025/2/18 17:06
  **/
 public final class ConfigureParametersConversion {
 

+ 5 - 1
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/service/impl/HuaNongCrawlerRequestImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.huanong.crawler.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
@@ -28,17 +29,19 @@ import com.jzg.quotation.huanong.enums.dictionary.Risk;
 import lombok.RequiredArgsConstructor;
 import org.jetbrains.annotations.NotNull;
 import org.redisson.api.RMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpHeaders;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import java.util.concurrent.atomic.AtomicReference;
 
 @QuoteCrawlerService(InsuranceCode.INSURANCE_HNIC)
 @RequiredArgsConstructor
 public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
 
+    private static final Logger log = LoggerFactory.getLogger(HuaNongCrawlerRequestImpl.class);
     private final HuaNongCrawlerRequestComponent huaNongCrawlerRequestComponent;
 
     private final HuaNongCrawlerOrderService huaNongCrawlerOrderService;
@@ -54,6 +57,7 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
 
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) {
+        log.info("HuaNong: 通过爬虫爬取报价信息。 参数quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
         HttpHeaders httpHeaders = new HttpHeaders();
         AttributionInformationVo attributionInformationVo = quoteVo.getOrder().getAttributionInformationVo();
         LoginInfoBO loginInfoDto = getLoginInfoDto(attributionInformationVo);

+ 5 - 0
tenant/insurance/quotation-summary/pom.xml

@@ -164,6 +164,11 @@
             <version>1.0-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>io.seata</groupId>
+            <artifactId>seata-all</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 12 - 5
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.summary.controller;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -49,7 +50,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
-import lombok.val;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.RequestContextHolder;
@@ -67,6 +69,8 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class UnifyOrderManager {
 
+    private static final Logger log = LoggerFactory.getLogger(UnifyOrderManager.class);
+
     @Autowired
     private SysQuoteRedisService sysQuoteRedisService;
 
@@ -178,7 +182,7 @@ public class UnifyOrderManager {
      * 统一报价
      *
      * @param quoteVo
-     * @return
+     * @return HttpResult<QuoteResultsVo>
      */
     @OrderOperationLog(
             module = "车险订单",
@@ -192,6 +196,7 @@ public class UnifyOrderManager {
     @PostMapping("/quote")
     @QuoteVerification
     public HttpResult<QuoteResultsVo> quote(@RequestBody QuoteVo quoteVo) throws Exception {
+        log.info("进行车险报价:quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
         HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(quoteVo.getOrder().getInsuranceCompanyCode());
         AssertionUtils.isFail(esmInsCompanyHttpResult.getCode() != 200, esmInsCompanyHttpResult.getMsg());
         String systemCode = getSystemCode();
@@ -210,6 +215,9 @@ public class UnifyOrderManager {
         quoteVo.getOrder().setApiType(ptlAgreement.getApiType());
         // 设置人员区划
         insOrdersService.setUserAreaCode(quoteVo);
+        log.debug("设置人员区域后信息是:quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
+
+
         //获取保司实体
         QuotationBaseService quoteService = companyFactory.getQuoteService(esmInsCompanyHttpResult.getData()
                 .getCompanyCode(), quoteVo.getOrder()
@@ -234,9 +242,7 @@ public class UnifyOrderManager {
             if (CollUtil.isNotEmpty(quoteVo.getKindInfoVo())) {
                 QuoteInfoConverter.converterKindInfoVo(quoteVo.getKindInfoVo(), quoteKindMappingMap.get(QuoteRuleCategory.KIND.getCode()), quoteVo.getCarInfoVo());
             }
-
             quoteResultsVo = quoteService.quote(quoteVo);
-//            quoteResultsVo.setKindInfoVo(quoteVo.getKindInfoVo());
             quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
             quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
             quoteResultsVo.setQuoteStatus(quoteResultsVo.getQuoteStatusEnum().getCode());
@@ -244,7 +250,7 @@ public class UnifyOrderManager {
             // 报价后更新订单
             insOrdersService.orderAfterUpdateQuote(ordersNo, quoteResultsVo);
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("车险报价异常", e);
             Throwable root = e.getCause() != null ? e.getCause() : e;
             insOrdersService.orderAfterUpdateFailedQuote(ordersNo, root.getMessage());
             throw new SystemException(root.getMessage());
@@ -266,6 +272,7 @@ public class UnifyOrderManager {
     @PostMapping("/underwriting")
     @AuditVerification
     public HttpResult underwriting(@RequestBody UnderwritingVo underwritingVo) throws Exception {
+        log.info("统一核保. underwritingVo = [{}]", JSONUtil.toJsonStr(underwritingVo));
         //获取保司实体
         InsOrders insOrders = insOrdersService.getById(underwritingVo.getOrder().getOrdersNo());
         AssertionUtils.isFail(Objects.isNull(insOrders), "订单不存在");

+ 9 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/CompanyFactory.java

@@ -102,9 +102,16 @@ public class CompanyFactory {
         if (!ObjectUtils.isEmpty(quotationApiBaseService)) {
             return quotationApiBaseService;
         }
+        log.error("报价类型出错,请联系管理员:apiType=[{}],insuranceCode=[{}]", apiType, insuranceCode);
         throw new SystemException("报价类型出错,请联系管理员处理。");
     }
 
+    /**
+     * 获取保司实体
+     *
+     * @author lipf
+     * @date 2026/4/7 11:38
+     */
     public QuotationBaseService getQuoteService(String companyCode, int apiType, SysQuoteConfigService sysQuoteConfigService, SysQuoteRedisService sysQuoteRedisService,
                                                 PlatformClient platformClient, BaseController baseController) {
         // 获取service
@@ -124,9 +131,10 @@ public class CompanyFactory {
     public QuotationBaseService getUnderwritingService(InsOrders insOrders, String companyCode, BaseController baseController, UnderwritingVo underwritingVo) {
         //设置归属信息
         HttpResult<PtlAgreementAttribution> agreementAttribution = platformClient.getAgreementAttribution(insOrders.getAgreementId());
-        log.info("agreementAttribution对象的值:{}", JSON.toJSONString(agreementAttribution.getData()));
+        log.info("agreementId = [{}], agreementAttribution对象的值:[{}]",insOrders.getAgreementId(), JSON.toJSONString(agreementAttribution.getData()));
         AssertionUtils.isFail(agreementAttribution.getCode() == 500, "获取协议属性失败");
 
+        //JSONArray fields = agreementAttribution.getData().getFields();
         Map<String, String> fieldMap = agreementAttribution.getData().getFields().stream()
                 .map(obj -> new JSONObject((Map<String, Object>) obj))  // 转换为 JSONObject
                 .collect(Collectors.toMap(

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/decorator/quote/QuoteDispatchDecorator.java

@@ -63,7 +63,7 @@ public class QuoteDispatchDecorator {
                 systemCode = request.getHeader("system_code");
             }else{
                 //设置固定的信息
-                systemCode = "WWW001";
+                systemCode = baseController.getUserSystemCode();
             }
             log.info("systemCode参数的值:{}", systemCode);
             HttpResult<PtlAgreementAttribution> agreementAttribution = platformClient.getAgreementAttribution(agreementId);

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

@@ -1067,9 +1067,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     public Page<OrderListVo> queryList(InsOrdersParamVO insOrdersParam) {
         String userName = baseController.getUserName();
         insOrdersParam.setSalesman(userName);
-        Page<OrderListVo> orderListVoPage = insOrdersMapper.queryOrderList(insOrdersParam.getPage(), insOrdersParam);
-
-        return orderListVoPage;
+        return insOrdersMapper.queryOrderList(insOrdersParam.getPage(), insOrdersParam);
     }
 
     @Override

+ 5 - 2
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -786,8 +786,11 @@
         <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
             AND io.id = #{insOrdersParam.orderNo}
         </if>
-        <if test="insOrdersParam.parentId != null">
-            AND io.parent_id = #{insOrdersParam.parentId}
+        <if test="insOrdersParam.parentId == 0 ">
+            AND io.parent_id = 0
+        </if>
+        <if test="insOrdersParam.parentId == 1 ">
+            AND io.parent_id != 0
         </if>
         <if test="insOrdersParam.licenseNo != null and insOrdersParam.licenseNo != ''">
             AND ioci.license_no = #{insOrdersParam.licenseNo}

+ 1 - 0
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/componet/YangGuangApiRequestComponent.java

@@ -62,6 +62,7 @@ public class YangGuangApiRequestComponent {
         try {
             jsonObject = JSON.parseObject(decryptedResponse);
         }catch (Exception e){
+            log.error("解密decryptedResponse=[{}]异常。 请检查summary微服务中关于解密的配置", decryptedResponse, e);
             throw new SystemException(type + "解密失败");
         }
         S t = jsonObject.toJavaObject(tClass);

+ 18 - 2
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/service/impl/YangGuangApiRequestImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.yangguang.api.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
@@ -28,6 +29,8 @@ import com.jzg.quotation.yangguang.api.service.YangGuangApiOrderService;
 import com.jzg.quotation.yangguang.api.service.YangGuangApiRequest;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -40,11 +43,11 @@ import java.util.regex.Pattern;
  * @author quchen
  * @date 2025/3/6 16:54
  */
-
 @QuoteApiService(value = InsuranceCode.INSURANCE_YGBX)
 @RequiredArgsConstructor
 public class YangGuangApiRequestImpl implements YangGuangApiRequest {
 
+    private static final Logger log = LoggerFactory.getLogger(YangGuangApiRequestImpl.class);
     private final YangGuangApiRequestComponent yangGuangApiRequestComponent;
 
     private final YangGuangApiOrderService yangGuangApiOrderService;
@@ -60,6 +63,7 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
     }
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) throws JsonProcessingException {
+        log.info("阳光财险通过api获取报价信息。报价参数:quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
         OrderBase order = quoteVo.getOrder();
         AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
         String url = getApiUrl(order.getInsuranceCompanyCode());
@@ -82,7 +86,13 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         return recursiveQuote(yangGuangAccuracyCalculateRequest, carModel, yangGuangQueryVehicleModelResponse,quoteVo, parameters, url);
     }
-    // 递归报价
+
+    /**
+     * 递归报价
+     *
+     * @author Qchen
+     * @date 2026/4/7 16:07
+     */
     private QuoteResultsVo recursiveQuote(YangGuangAccuracyCalculateRequest request,
                                           YangGuangQueryVehicleModelResponse.carmodellist carModel,
                                           YangGuangQueryVehicleModelResponse yangGuangQueryVehicleModelResponse,
@@ -383,6 +393,12 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
         return orderStatusResultVo;
     }
 
+    /**
+     * 获取非车套餐列表
+     *
+     * @author lipf
+     * @date 2026/4/7 11:54
+     */
     public YangGuangGetNonVehicleProductsResponse getNonVehicleList(CarInfoVo carInfoVo, YangGuangConfigureParameters ygConfigureParameters,String apiUrl) throws JsonProcessingException {
         // 获取非车列表
         YangGuangGetNonVehicleProductsRequest yangGuangGetNonVehicleProductsRequest = new YangGuangGetNonVehicleProductsRequest(carInfoVo,ygConfigureParameters);

+ 5 - 0
tenant/organization/pom.xml

@@ -53,6 +53,11 @@
             <artifactId>jackson-dataformat-xml</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>io.seata</groupId>
+            <artifactId>seata-all</artifactId>
+        </dependency>
+
     </dependencies>
     <build>
         <plugins>

+ 20 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -201,6 +201,26 @@ public class ReceivableController {
         return HttpResult.ok(receivableService.getPlatFormReceivableList(receivableQueryVo));
     }
 
+    @PostMapping("/exportTemplatePlatFormReceivable")
+    @Operation(summary = "导出平台协议模板")
+    public HttpResult exportTemplatePlatFormReceivable() throws IOException {
+        return HttpResult.ok(receivableService.exportTemplatePlatFormReceivable());
+    }
+
+    @PostMapping("/exportPlatFormReceivable")
+    @Operation(summary = "导出平台协议数据")
+    public HttpResult exportPlatFormReceivable(@RequestBody ReceivableQueryVo receivableQueryVo) throws IOException {
+        return HttpResult.ok(receivableService.exportPlatFormReceivable(receivableQueryVo));
+    }
+
+
+    @PostMapping("/importPlatFormReceivable")
+    @Operation(summary = "导入平台协议")
+    public HttpResult importPlatFormReceivable(@RequestParam("file") MultipartFile file){
+        ImportExcelResultVo importExcelResultVo = receivableService.importPlatFormReceivable(file);
+        return HttpResult.ok(importExcelResultVo);
+    }
+
     @PostMapping("/invoiceRecord")
     @Operation(summary = "获取开票记录")
     public HttpResult getInvoiceRecord(@RequestBody InvoiceRecordQueryVo invoiceRecordQueryVo){

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

@@ -23,8 +23,8 @@ public class SchemeController {
     //region 基础方案配置
     @Operation(summary = "保存方案")
     @PostMapping("/saveScheme")
-    public HttpResult saveScheme(@RequestBody @Valid PtlSchemeSaveVo ptlSchemeSaveVo){
-        return ptlSchemeService.saveScheme(ptlSchemeSaveVo) ? HttpResult.ok("保存方案成功") : HttpResult.error("保存方案失败");
+    public HttpResult<Boolean> saveScheme(@RequestBody @Valid PtlSchemeSaveVo ptlSchemeSaveVo){
+        return ptlSchemeService.saveScheme(ptlSchemeSaveVo);
     }
 
     @Operation(summary = "获取方案")

+ 17 - 8
tenant/organization/src/main/java/com/jzg/organization/controller/SysOrganizationController.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.controller;
 
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.aop.OperatorTrajectory;
 import com.jzg.commons.constants.OperationTypeEnum;
@@ -8,10 +9,13 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.*;
 import com.jzg.commons.entity.po.SysOrganization;
 import com.jzg.commons.entity.vo.SysOrganizationUserLinkQueryVo;
+import com.jzg.commons.entity.vo.SysOrganizationUserLinkVo;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.organization.mapper.SysOrganizationMapper;
 import com.jzg.organization.service.SysOrganizationService;
 import io.swagger.v3.oas.annotations.Operation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -21,6 +25,8 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/sysOrganization")
 public class SysOrganizationController {
 
+    private static final Logger log = LoggerFactory.getLogger(SysOrganizationController.class);
+
 
     @Autowired
     private SysOrganizationService sysOrganizationService;
@@ -62,14 +68,16 @@ public class SysOrganizationController {
 //    }
 
     /**
-     * 新增
-     * @param organizationAdd
-     * @return
+     * 团队/渠道/电销组 新增
+     *
+     * @param organizationAdd 要新增的团队/渠道/电销组信息 =
+     * @return HttpResult<String> 新增操作的结果
      */
     @OperatorTrajectory(moduleName = "业务管理/团队管理/添加团队",mapperClass = SysOrganizationMapper.class,entityClass = SysOrganizationAdd.class)
     @Operation(summary = "团队、渠道、电销组 新增", description = "新增")
     @PostMapping("save")
-    public HttpResult save(@Validated  @RequestBody SysOrganizationAdd organizationAdd){
+    public HttpResult<String> save(@Validated  @RequestBody SysOrganizationAdd organizationAdd){
+        log.info(" 团队/渠道/电销组 新增。organizationAdd=[{}]", JSONUtil.toJsonStr(organizationAdd));
         boolean nameExists = sysOrganizationService.nameExists(organizationAdd);
         if (nameExists){
             return HttpResult.error("团队、渠道、电销组名称已存在");
@@ -115,12 +123,13 @@ public class SysOrganizationController {
 
     /**
      * 删除团队、电销、渠道关联的用户
-     * @param deleteAssociatedUsers
-     * @return
+     *
+     * @param deleteAssociatedUsers 删除所需的参数
+     * @return HttpResult<String>
      */
     @Operation(summary = "删除团队、电销、渠道关联的用户", description = "通过团队、电销、渠道删除")
     @PostMapping("deleteAssociatedUsers")
-    public HttpResult deleteAssociatedUsers(@Validated @RequestBody DeleteAssociatedUsers deleteAssociatedUsers){
+    public HttpResult<String> deleteAssociatedUsers(@Validated @RequestBody DeleteAssociatedUsers deleteAssociatedUsers){
         return sysOrganizationService.deleteAssociatedUsers(deleteAssociatedUsers);
     }
 
@@ -150,7 +159,7 @@ public class SysOrganizationController {
 
     @Operation(summary = "团队、渠道、电销组 人员查询")
     @PostMapping("getTeamUserPage")
-    public HttpResult getTeamUserPage(@Validated @RequestBody SysOrganizationUserLinkQueryVo sysOrganizationUserLinkQueryVo){
+    public HttpResult<Page<SysOrganizationUserLinkVo>> getTeamUserPage(@Validated @RequestBody SysOrganizationUserLinkQueryVo sysOrganizationUserLinkQueryVo){
         Page page = sysOrganizationUserLinkQueryVo.getPage();
         return HttpResult.ok(sysOrganizationService.getTeamUserPage(page,sysOrganizationUserLinkQueryVo));
     }

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

@@ -41,7 +41,7 @@ public class UserController extends BaseController {
 
     @Operation(summary = "分页获取业务员列表接口", description = "分页获取业务员列表接口")
     @PostMapping(value = "/getUserInfoList")
-    public HttpResult getUserInfoList(@RequestBody SysUserInfoListVo sysUserInfoListVo) {
+    public HttpResult<Page<SysUserJzgInfoDto>> getUserInfoList(@RequestBody SysUserInfoListVo sysUserInfoListVo) {
         Page page = sysUserInfoListVo.getPage();
         Page<SysUserJzgInfoDto> userInfoList = sysUserService.getUserInfoList(page, sysUserInfoListVo);
         return HttpResult.ok(userInfoList);
@@ -76,7 +76,7 @@ public class UserController extends BaseController {
     @OperatorTrajectory(moduleName = "业务管理/业务员管理/启用禁用成员",type = "U",OperationDict = OperationTypeEnum.UPDATE,mapperClass = SysUserJzgInfoMapper.class,entityClass = SysUserVo.class)
     @Operation(summary = "启用禁用业务员接口", description = "启用禁用业务员接口")
     @PostMapping(value = "/isEnable")
-    public HttpResult isEnableUser(@RequestBody IsEnableVo isEnableVo) {
+    public HttpResult<Boolean> isEnableUser(@RequestBody IsEnableVo isEnableVo) {
         return sysUserService.isEnableUser(isEnableVo);
     }
 

+ 26 - 0
tenant/organization/src/main/java/com/jzg/organization/excel/listener/ReceivbleExcelListener.java

@@ -0,0 +1,26 @@
+package com.jzg.organization.excel.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.jzg.commons.entity.finance.vo.ReceivableExportExcelVo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ReceivbleExcelListener extends AnalysisEventListener<ReceivableExportExcelVo> {
+    private final List<ReceivableExportExcelVo> dataList = new ArrayList<>();
+
+    @Override
+    public void invoke(ReceivableExportExcelVo data, AnalysisContext context) {
+        dataList.add(data);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        System.out.println("Total rows: " + dataList.size());
+    }
+
+    public List<ReceivableExportExcelVo> getDataList() {
+        return dataList;
+    }
+}

+ 8 - 7
tenant/organization/src/main/java/com/jzg/organization/mapper/SysOrganizationMapper.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.dto.SysOrganizationParam;
 import com.jzg.commons.entity.po.SysOrganization;
-import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -14,16 +13,18 @@ import java.util.List;
 
 public interface SysOrganizationMapper extends BaseMapper<SysOrganization> {
 
-
-
-
     @Select("")
     SysOrganizationUserDetailsVo getDetails(Long userId);
 
-
     List<LeftSysOrganizationVo> selectLeftList(@Param("params") SysOrganizationParam sysOrganizationParam);
 
+    /**
+     * 获取团队下的人员列表分页
+     *
+     * @param sysOrganizationUserLinkQueryVo 查询参数
+     * @return Page<SysOrganizationUserLinkVo> 此次分页得到的满足条件的分页数据
+     * @author lipf 维护
+     * @date 2026年4月10日10:09:12
+     */
     Page<SysOrganizationUserLinkVo> getTeamUserPage(Page page, @Param("param")SysOrganizationUserLinkQueryVo sysOrganizationUserLinkQueryVo);
-
-    SysUserJzgInfo getOrganizationManager();
 }

+ 4 - 3
tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java

@@ -2,6 +2,7 @@ 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.PtlAgreementUndwrtRulesAttr;
 import com.jzg.commons.entity.scheme.po.PtlScheme;
 import com.jzg.commons.entity.scheme.vo.*;
@@ -18,10 +19,10 @@ public interface PtlSchemeService extends IService<PtlScheme> {
 
     /**
      * 添加方案
-     * @param ptlSchemeSaveVo
-     * @return
+     * @param ptlSchemeSaveVo 车险报价的方案
+     * @return HttpResult<Boolean>
      */
-    public boolean saveScheme(PtlSchemeSaveVo ptlSchemeSaveVo);
+    HttpResult<Boolean> saveScheme(PtlSchemeSaveVo ptlSchemeSaveVo);
 
     /**
      * 获取方案

+ 25 - 3
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -7,10 +7,7 @@ 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.InsOrderAdjust;
-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;
 
 import java.io.IOException;
@@ -123,6 +120,14 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     List<JyExcelVo> importJyExcel(MultipartFile file);
 
+    /**
+     * 导入平台应收excel
+     *
+     * @param file
+     * @return
+     */
+    List<ReceivableExportExcelVo> importReceivableExcel(MultipartFile file);
+
     /**
      * 导入手续费excel  并处理数据
      * @param file
@@ -144,6 +149,13 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     ImportExcelResultVo importJyData(MultipartFile file);
 
+    /**
+     * 导入平台协议Excel  并处理数据
+     * @param file
+     * @return
+     */
+    ImportExcelResultVo importPlatFormReceivable(MultipartFile file);
+
     /**
      * 批量修改
      * @param batchModifyVo
@@ -194,6 +206,16 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     void exportSuperviseSettlementExcel(Page page,SettlementQueryVo settlementQueryVo) throws IOException;
 
+    /**
+     * 导出平台协议Excel模板
+     */
+    String exportTemplatePlatFormReceivable() throws IOException;
+
+    /**
+     * 导出平台协议Excel
+     */
+    String exportPlatFormReceivable(ReceivableQueryVo receivableQueryVo) throws IOException;
+
     /**
      * 应收手续费结算明细
      */

+ 13 - 6
tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationService.java

@@ -5,10 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.*;
 import com.jzg.commons.entity.po.SysOrganization;
-import com.jzg.commons.entity.po.SysOrganizationUserLink;
 import com.jzg.commons.entity.vo.SysOrganizationUserLinkQueryVo;
 import com.jzg.commons.entity.vo.SysOrganizationUserLinkVo;
-import com.jzg.commons.entity.vo.SysOrganizationVo;
 
 public interface SysOrganizationService extends IService<SysOrganization> {
 
@@ -24,17 +22,26 @@ public interface SysOrganizationService extends IService<SysOrganization> {
 
     HttpResult setResponsiblePerson(SysOrganizationSetPerson setPerson);
 
-    HttpResult deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers);
+    /**
+     * 删除团队、电销、渠道关联的用户
+     *
+     * @param deleteAssociatedUsers 删除所需的参数
+     * @author lipf
+     * @return HttpResult<String>
+     */
+    HttpResult<String> deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers);
 
     HttpResult getDetails(Long userId);
 
     HttpResult updateByIdDelete(String id);
 
-
     /**
      * 获取团队下的人员列表分页
-     * @param sysOrganizationUserLinkQueryVo
-     * @return
+     *
+     * @param sysOrganizationUserLinkQueryVo 查询参数
+     * @return Page<SysOrganizationUserLinkVo> 此次分页得到的满足条件的分页数据
+     * @author lipf 维护
+     * @date 2026年4月10日10:09:12
      */
     Page<SysOrganizationUserLinkVo> getTeamUserPage(Page page,SysOrganizationUserLinkQueryVo sysOrganizationUserLinkQueryVo);
 }

+ 8 - 1
tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationUserLinkService.java

@@ -12,7 +12,14 @@ public interface SysOrganizationUserLinkService extends IService<SysOrganization
 
     Long selectByOrgIdCount(String id);
 
-    HttpResult deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers);
+    /**
+     * 删除团队、电销、渠道关联的用户
+     *
+     * @param deleteAssociatedUsers 删除所需的参数
+     * @author lipf
+     * @return HttpResult<String>
+     */
+    HttpResult<String> deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers);
 
     SysOrganizationUserLink selectByOrgIdAndUserId(SysOrganizationUserLinkAdd organizationUserLinkAdd);
 

+ 17 - 3
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -37,14 +37,20 @@ public interface SysUserService extends IService<SysUser> {
     /**
      * 添加业务员
      *
-     * @param sysUserVo
-     * @return
+     * @param sysUserVo 要添加的业务员信息
+     * @return HttpResult
      */
     HttpResult addUserInfo(SysUserVo sysUserVo);
 
     HttpResult deleteUserInfo(IsDeleteVo isDeleteVo);
 
-    HttpResult isEnableUser(IsEnableVo isEnableVo);
+    /**
+     * 用户的启用/禁用/删除操作
+     *
+     * @author lipf
+     * @date 2026/4/10 9:25
+     */
+    HttpResult<Boolean> isEnableUser(IsEnableVo isEnableVo);
 
     HttpResult batchLeader(BatchLeaderVo batchLeaderVo);
 
@@ -56,6 +62,14 @@ public interface SysUserService extends IService<SysUser> {
 
     HttpResult getUserInfoById(String id);
 
+    /**
+     * 分页获取业务员列表
+     *
+     * @param page 分页参数
+     * @param sysUserInfoListVo 查询参数
+     * @author lipf
+     * @date 2026/4/10 10:01
+     */
     Page<SysUserJzgInfoDto> getUserInfoList(Page page, SysUserInfoListVo sysUserInfoListVo);
 
     /**

+ 84 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/ExportBaseServiceImpl.java

@@ -0,0 +1,84 @@
+package com.jzg.organization.service.impl;
+
+import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
+import com.jzg.commons.util.MinioUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ *  @version 
+ *  @author: hxl
+ *  @Date: 2025/9/22 16:43
+ *  @Description:  基础的实现类处理导出excel逻辑
+ */
+@Slf4j
+@Service
+public class ExportBaseServiceImpl {
+
+    @Value("${minio.url:}")
+    private String minioUrl;
+
+    // 从配置文件获取存储桶名称
+    @Value("${minio.bucket-name:excel-files}")
+    private String bucketName;
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/9/24 10:28
+     *  @Description:  通用上传文件
+     */
+    public <T> String upLoadFile(Class<T> clazz, List<T> list, String upLoadName) {
+        //打印导入数据的时间
+        long startTime = System.currentTimeMillis();
+        long endTime = System.currentTimeMillis();
+        try{
+            String fileName = MinioUtils.exportAndUploadToMinIO(upLoadName, clazz, list,bucketName,minioUrl);
+            endTime = System.currentTimeMillis();
+            long duration = endTime - startTime;
+            double minutes = (double) duration / (1000 * 60);
+            log.info("方法执行时间: " + minutes + " 分钟");
+            log.debug("方法执行时间: " + minutes + " 分钟");
+            return fileName;
+        }catch (Exception e){
+            endTime = System.currentTimeMillis();
+            long duration = endTime - startTime;
+            double minutes = (double) duration / (1000 * 60);
+            log.info("方法执行时间: " + minutes + " 分钟");
+            log.debug("方法执行时间: " + minutes + " 分钟");
+        }
+        return "";
+    }
+
+
+    /**
+     * 动态字段导出(新增,不影响原有)
+     */
+    public <T> String upLoadFileDynamic(
+            Class<T> clazz,
+            List<T> list,
+            Set<String> includeFields,
+            String upLoadName
+    ) {
+        long startTime = System.currentTimeMillis();
+        try {
+            // 调用动态导出
+            String fileName = MinioUtils.exportAndUploadToMinIO(
+                    upLoadName, clazz, list, includeFields, bucketName, minioUrl
+            );
+            long duration = System.currentTimeMillis() - startTime;
+            double minutes = (double) duration / (1000 * 60);
+            log.info("方法执行时间: " + minutes + " 分钟");
+            return fileName;
+        } catch (Exception e) {
+            e.printStackTrace();
+            long duration = System.currentTimeMillis() - startTime;
+            double minutes = (double) duration / (1000 * 60);
+            log.info("方法执行时间: " + minutes + " 分钟");
+        }
+        return "";
+    }
+}

+ 2 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java

@@ -20,6 +20,7 @@ import com.jzg.organization.mapper.PtlAgreementMapper;
 import com.jzg.organization.mapper.SysUploadFilesMapper;
 import com.jzg.organization.mapper.SysUserMapper;
 import com.jzg.organization.service.*;
+import io.seata.spring.annotation.GlobalTransactional;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -178,7 +179,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @GlobalTransactional(rollbackFor = Exception.class)
     public void agreementAdd(AgreementAddParam param) {
         PtlAgreement ptlAgreement = new PtlAgreement();
         BeanUtils.copyProperties(param,ptlAgreement);

+ 22 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -81,14 +81,26 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
     @Autowired
     OrgClient orgClient;
 
+    /**
+     * 添加方案
+     * @param ptlSchemeSaveVo 车险报价的方案
+     * @return HttpResult<Boolean>
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean saveScheme(PtlSchemeSaveVo ptlSchemeSaveVo) {
-        //校验方案是否存在
-        List<PtlScheme> ptlSchemes = ptlSchemeMapper.selectList(new LambdaQueryWrapper<PtlScheme>()
-                .eq(PtlScheme::getCompanyId, ptlSchemeSaveVo.getCompanyId())
-                .eq(PtlScheme::getProductId, ptlSchemeSaveVo.getProductId()));
-
+    public HttpResult<Boolean> saveScheme(PtlSchemeSaveVo ptlSchemeSaveVo) {
+        log.info("新增方案:ptlSchemeSaveVo=[{}]", JSONUtil.toJsonStr(ptlSchemeSaveVo));
+//        //校验方案是否存在
+//        List<PtlScheme> ptlSchemes = ptlSchemeMapper.selectList(new LambdaQueryWrapper<PtlScheme>()
+//                .eq(PtlScheme::getCompanyId, ptlSchemeSaveVo.getCompanyId())
+//                .eq(PtlScheme::getProductId, ptlSchemeSaveVo.getProductId()));
+//        // modify by lipf ,2026年4月7日10:47:42 校验方案是否存在
+//        if(CollUtil.isNotEmpty(ptlSchemes)){
+//            log.info("方案已存在。 companyId=[{}], productId=[{}]",ptlSchemeSaveVo.getCompanyId(), ptlSchemeSaveVo.getProductId());
+//            HttpResult<Boolean> res = HttpResult.error("方案已存在");
+//            res.setData(Boolean.FALSE);
+//            return res;
+//        }
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
         PtlScheme ptlScheme = ptlSchemeSaveVo.getPtlScheme(undwrtRulesAttrList);
         ptlSchemeMapper.insertOrUpdate(ptlScheme);
@@ -115,7 +127,10 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         cleanRules(ptlScheme);
         ptlSchemeRulesAttrLinkMapper.insertOrUpdate(ptlSchemeRulesAttrLinkList);
 
-        return true;
+        HttpResult<Boolean> ok = HttpResult.ok("保存方案成功");
+        ok.setData(Boolean.TRUE);
+        return ok;
+
     }
 
     /**

+ 134 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -1,6 +1,8 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -26,6 +28,7 @@ import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.organization.client.EsmInsCompanyClient;
 import com.jzg.organization.excel.listener.JyExcelListener;
 import com.jzg.organization.excel.listener.OtherExcelListener;
+import com.jzg.organization.excel.listener.ReceivbleExcelListener;
 import com.jzg.organization.excel.listener.SuperviseExcelListener;
 import com.jzg.organization.mapper.*;
 import com.jzg.organization.service.ReceivableService;
@@ -47,6 +50,7 @@ import java.math.BigInteger;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
@@ -90,6 +94,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Autowired
     private SysUploadFilesMapper sysUploadFilesMapper;
 
+    @Autowired
+    private ExportBaseServiceImpl exportBaseService;
+
     @Value("${upload.file.path}")
     private String uploadPath;
 
@@ -404,6 +411,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
     }
 
+    @Override
+    public List<ReceivableExportExcelVo> importReceivableExcel(MultipartFile file) {
+        ReceivbleExcelListener listener = new ReceivbleExcelListener();
+        try (InputStream inputStream = file.getInputStream()) {
+            EasyExcel.read(inputStream, ReceivableExportExcelVo.class, listener)
+                    .sheet()
+                    .doRead();
+            List<ReceivableExportExcelVo> dataList = listener.getDataList();
+            return dataList;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
     @Override
     public List<JyExcelVo> importJyExcel(MultipartFile file) {
         JyExcelListener listener = new JyExcelListener();
@@ -607,6 +629,84 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return importExcelResultVo;
     }
 
+    @Override
+    public ImportExcelResultVo importPlatFormReceivable(MultipartFile file) {
+        ImportExcelResultVo importExcelResultVo = new ImportExcelResultVo();
+
+        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
+        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
+
+        // 获取保司名称
+        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
+        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
+
+        int failedNumber = 0;
+        List<Object> failedExcel = new ArrayList<>();
+        List<InsPlyIncome> successExcel = new ArrayList<>();
+        // 处理数据
+        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
+            // 出现空数据则失败
+            ImportResultVo resultVo = vo.checkEmpty();
+            if (!resultVo.isSuccess()) {
+                failedNumber++;
+                vo.setErrorMessage(resultVo.getMessage());
+                failedExcel.add(vo);
+                continue;
+            }
+
+            // 检测是否有重复的保单号
+            InsPlyIncome checkInsPlyIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
+                    .eq(InsPlyIncome::getJqPolicyNo, vo.getJqPolicyNo()));
+            if (!Objects.isNull(checkInsPlyIncome)) {
+                failedNumber++;
+                vo.setErrorMessage("车险保单号重复");
+                failedExcel.add(vo);
+                continue;
+            }
+
+            // 判断应收数据是否已开票 / 已结算
+            InsPlyIncome checkInsPlyIncomeByOrderNo = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
+                    .eq(InsPlyIncome::getOrderNo, vo.getOrderNo()));
+            if (ObjectUtil.isNotNull(checkInsPlyIncomeByOrderNo)){
+                if ("1".equals(checkInsPlyIncomeByOrderNo.getSuperviseSettlement()) || "1".equals(checkInsPlyIncomeByOrderNo.getOtherSettlement())
+                        || "1".equals(checkInsPlyIncomeByOrderNo.getJySuperviseSettlement()) || "1".equals(checkInsPlyIncomeByOrderNo.getJyOtherSettlement())){
+                    failedNumber++;
+                    vo.setErrorMessage("应收数据已结算");
+                    failedExcel.add(vo);
+                    continue;
+                }
+            }
+
+            // 判断应收数据是否已锁定,暂无逻辑
+
+
+            // 处理数据
+            InsPlyIncome insPlyIncome = new InsPlyIncome();
+            insPlyIncome.setId(IdGenerate.nextId());
+            insPlyIncome.setLicenseNo(vo.getLicenseNo());
+            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
+            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
+            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
+            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
+            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
+            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
+            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
+            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
+            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
+            insPlyIncome.setContactPerson(vo.getDockingPerson());
+            successExcel.add(insPlyIncome);
+        }
+
+        importExcelResultVo.setFailedData(failedExcel);
+        importExcelResultVo.setSuccessNumber(successExcel.size());
+        importExcelResultVo.setFailedNumber(failedNumber);
+
+        // 批量插入数据
+        baseMapper.insert(successExcel);
+
+        return importExcelResultVo;
+    }
+
     @Override
     public ImportExcelResultVo importJyData(MultipartFile file) {
         ImportExcelResultVo importExcelResultVo = new ImportExcelResultVo();
@@ -905,6 +1005,40 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportSuperviseSettlementExcelDto.class, list, "车险手续费结算明细");
     }
 
+    /**
+     * 导出平台协议Excel
+     *
+     * @return
+     */
+    @Override
+    public String exportTemplatePlatFormReceivable() {
+        List<ReceivableExportExcelDto> emptyList = ListUtil.empty();
+
+        // 调用动态导出
+        return exportBaseService.upLoadFile(
+                ReceivableExportExcelDto.class,
+                emptyList,
+                "平台协议应收-批量导入-导出模板-" + Instant.now()
+        );
+    }
+
+    /**
+     * 导出平台协议Excel
+     *
+     * @return
+     */
+    @Override
+    public String exportPlatFormReceivable(ReceivableQueryVo receivableQueryVo) {
+        List<InsPlyIncome> receivableList = baseMapper.getReceivableList(receivableQueryVo);
+
+        // 调用动态导出
+        return exportBaseService.upLoadFile(
+                InsPlyIncome.class,
+                receivableList,
+                "平台协议应收-批量导入-导出-" + Instant.now()
+        );
+    }
+
     @Override
     public Page<ExportSuperviseSettlementDetailExcelDto> superviseSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) {
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);

+ 25 - 3
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysOrganizationServiceImpl.java

@@ -1,8 +1,9 @@
 package com.jzg.organization.service.impl;
 
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson2.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -19,6 +20,8 @@ import com.jzg.commons.util.StringUtils;
 import com.jzg.organization.mapper.SysOrganizationMapper;
 import com.jzg.organization.service.SysOrganizationService;
 import com.jzg.organization.service.SysOrganizationUserLinkService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -28,6 +31,7 @@ import java.util.List;
 
 @Service
 public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMapper, SysOrganization> implements SysOrganizationService {
+    private static final Logger log = LoggerFactory.getLogger(SysOrganizationServiceImpl.class);
 
 
     @Autowired
@@ -104,8 +108,15 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
         return HttpResult.error("所选团队、渠道、电销组不存在或以删除,请刷新");
     }
 
+    /**
+     * 删除团队、电销、渠道关联的用户
+     *
+     * @param deleteAssociatedUsers 删除所需的参数
+     * @author lipf
+     * @return HttpResult<String>
+     */
     @Override
-    public HttpResult deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers) {
+    public HttpResult<String> deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers) {
         return sysOrganizationUserLinkService.deleteAssociatedUsers(deleteAssociatedUsers);
     }
 
@@ -126,8 +137,19 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
                 HttpResult.ok("删除成功") : HttpResult.error("删除失败");
     }
 
+    /**
+     * 获取团队下的人员列表分页
+     *
+     * @param sysOrganizationUserLinkQueryVo 查询参数
+     * @return Page<SysOrganizationUserLinkVo> 此次分页得到的满足条件的分页数据
+     * @author lipf 维护
+     * @date 2026年4月10日10:09:12
+     */
     @Override
     public Page<SysOrganizationUserLinkVo> getTeamUserPage(Page page,SysOrganizationUserLinkQueryVo sysOrganizationUserLinkQueryVo) {
-        return baseMapper.getTeamUserPage(page,sysOrganizationUserLinkQueryVo);
+        log.info("获取团队下的人员列表分页. sysOrganizationUserLinkQueryVo=[{}], page=[{}]", JSONUtil.toJsonStr(sysOrganizationUserLinkQueryVo), JSONUtil.toJsonStr(page));
+        Page<SysOrganizationUserLinkVo> teamUserPage = baseMapper.getTeamUserPage(page, sysOrganizationUserLinkQueryVo);
+        log.debug("获取团队下的人员列表分页.查询出[{}]个业务员。 sysOrganizationUserLinkQueryVo=[{}], page=[{}]", CollUtil.size(teamUserPage.getRecords()), JSONUtil.toJsonStr(sysOrganizationUserLinkQueryVo), JSONUtil.toJsonStr(page));
+        return teamUserPage;
     }
 }

+ 17 - 3
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysOrganizationUserLinkServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.page.HttpResult;
@@ -8,12 +9,15 @@ import com.jzg.commons.entity.dto.SysOrganizationUserLinkAdd;
 import com.jzg.commons.entity.po.SysOrganizationUserLink;
 import com.jzg.organization.mapper.SysOrganizationUserLinkServiceMapper;
 import com.jzg.organization.service.SysOrganizationUserLinkService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class SysOrganizationUserLinkServiceImpl extends ServiceImpl<SysOrganizationUserLinkServiceMapper, SysOrganizationUserLink> implements SysOrganizationUserLinkService{
 
+    private static final Logger log = LoggerFactory.getLogger(SysOrganizationUserLinkServiceImpl.class);
 
     @Autowired
     private SysOrganizationUserLinkServiceMapper sysOrganizationUserLinkServiceMapper;
@@ -23,11 +27,21 @@ public class SysOrganizationUserLinkServiceImpl extends ServiceImpl<SysOrganizat
         return sysOrganizationUserLinkServiceMapper.selectCount(new LambdaQueryWrapper<SysOrganizationUserLink>().eq(SysOrganizationUserLink::getOrganizationId, id));
     }
 
+    /**
+     * 删除团队、电销、渠道关联的用户
+     *
+     * @param deleteAssociatedUsers 删除所需的参数
+     * @author lipf
+     * @return HttpResult<String>
+     */
     @Override
-    public HttpResult deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers) {
-        return sysOrganizationUserLinkServiceMapper.delete(new LambdaQueryWrapper<SysOrganizationUserLink>().
+    public HttpResult<String> deleteAssociatedUsers(DeleteAssociatedUsers deleteAssociatedUsers) {
+        log.info("删除机构关联的用户信息: deleteAssociatedUsers=[{}]", JSONUtil.toJsonStr(deleteAssociatedUsers));
+        int count = sysOrganizationUserLinkServiceMapper.delete(new LambdaQueryWrapper<SysOrganizationUserLink>().
                 eq(SysOrganizationUserLink::getOrganizationId,deleteAssociatedUsers.getId()).
-                in(SysOrganizationUserLink::getUserId,deleteAssociatedUsers.getUserIds())) > 0 ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
+                in(SysOrganizationUserLink::getUserId,deleteAssociatedUsers.getUserIds()));
+        log.debug("删除机构关联的用户信息:删除[{}]个用户。deleteAssociatedUsers=[{}]", count, JSONUtil.toJsonStr(deleteAssociatedUsers));
+        return count > 0 ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
     }
 
     @Override

+ 41 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -1,6 +1,8 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -29,6 +31,8 @@ import com.jzg.organization.state.listener.UserStateListener;
 import jakarta.annotation.Resource;
 import lombok.Setter;
 import org.redisson.api.RedissonClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -44,11 +48,13 @@ import java.util.stream.Collectors;
 /**
  * @author Administrator
  * @description 针对表【sys_area(省市县代码)】的数据库操作Service实现
- * @createDate 2023-11-15 11:23:28
+ * @date 2023-11-15 11:23:28
  */
 @Service
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService, HistoryDataService {
 
+    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
+
     @Value("${minio.bucket-name}")
     private String bucketName;
 
@@ -165,8 +171,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return HttpResult.ok(baseMapper.getUserSelect(sysUserInfoListVo));
     }
 
+    /**
+     * 分页获取业务员列表
+     *
+     * @param page 分页参数
+     * @param sysUserInfoListVo 查询参数
+     * @author lipf
+     * @date 2026/4/10 10:01
+     */
     @Override
     public Page<SysUserJzgInfoDto> getUserInfoList(Page page, SysUserInfoListVo sysUserInfoListVo) {
+        log.info("获取业务员列表:查询参数: sysUserInfoListVo=[{}]", JSONUtil.toJsonStr(sysUserInfoListVo));
         if(Objects.nonNull(sysUserInfoListVo.getStatus()) && sysUserInfoListVo.getStatus() == 0){
             List<Integer> typeStatus = new ArrayList<>();
             sysUserInfoListVo.setStatus(null);
@@ -174,7 +189,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             typeStatus.add(UserState.UserStateEnum.RESIGN_ING.getValue());
             sysUserInfoListVo.setTypeStatus(typeStatus);
         }
-        return sysUserJzgInfoMapper.getUserInfoList(page, sysUserInfoListVo);
+        Page<SysUserJzgInfoDto> userInfoList = sysUserJzgInfoMapper.getUserInfoList(page, sysUserInfoListVo);
+        log.info("获取业务员列表:查询出[{}]个业务员。 查询参数: sysUserInfoListVo=[{}]", CollUtil.size(userInfoList.getRecords()),JSONUtil.toJsonStr(sysUserInfoListVo));
+        return userInfoList;
     }
 
     @Override
@@ -366,9 +383,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return stateResult.isResult();
     }
 
+    /**
+     * 新增业务员信息
+     *
+     * @author lipf
+     * @date 2026/4/10 16:01
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult addUserInfo(SysUserVo sysUserVo) {
+        log.info("新增业务员信息。 sysUserVo=[{}]", JSONUtil.toJsonStr(sysUserVo));
         SysUser sysUser = baseMapper.getUserByMobile(sysUserVo.getMobile());
         String sysUserJzgInfoId = "", sysUserId = "";
         SysUserJzgInfo sysUserJzgInfo = new SysUserJzgInfo();
@@ -688,9 +712,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userJzgInfo != null ? userJzgInfo.getId() : null;
     }
 
+    /**
+     * 用户的启用/禁用/删除操作
+     *
+     * @author lipf
+     * @date 2026/4/10 9:25
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult<Boolean> isEnableUser(IsEnableVo isEnableVo) {
+        log.info("业务团队下用户的启用/停用操作。isEnableVo=[{}]", JSONUtil.toJsonStr(isEnableVo));
+        HttpResult<Boolean> res = new HttpResult<>();
         if (isEnableVo.getGetAll() == 1) {
             List<SysUserJzgInfo> sysUserJzgInfoList = sysUserJzgInfoService.list();
             for (SysUserJzgInfo sysUserJzgInfo : sysUserJzgInfoList) {
@@ -698,6 +730,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             }
             sysUserJzgInfoService.updateBatchById(sysUserJzgInfoList);
         } else {
+            List<String> ids = isEnableVo.getIds();
+            if(CollectionUtil.isEmpty(ids)) {
+                log.info("勾选的用户信息为空");
+                res.setData(Boolean.FALSE);
+                res.setMsg("请勾选要操作的数据");
+                return res;
+            }
             for (String id : isEnableVo.getIds()) {
                 SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoService.getById(id);
                 if (sysUserJzgInfo == null) {

+ 9 - 1
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -248,7 +248,9 @@
         WHERE
             1=1
         AND NOT EXISTS ( SELECT 1 FROM ins_ply_income_invoice_link ipil WHERE ipil.income_id = ipi.id )
-        AND ipi.agreement_type = #{receivableQueryVo.agreementType}
+        <if test = "receivableQueryVo.agreementType != null and receivableQueryVo.agreementType == 1">
+            AND ipi.agreement_type = #{receivableQueryVo.agreementType}
+        </if>
         <if test = "receivableQueryVo.ids != null and receivableQueryVo.ids.size > 0">
             AND ipi.id in
             <foreach collection="receivableQueryVo.ids" item="id" open="(" separator="," close=")">
@@ -365,6 +367,12 @@
         <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
             AND ipi.order_no = #{receivableQueryVo.orderNo}
         </if>
+        <if test="receivableQueryVo.ids != null and receivableQueryVo.ids != ''">
+            AND ipi.id IN
+            <foreach collection="receivableQueryVo.ids" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
         <if test="receivableQueryVo.orderNos != null and receivableQueryVo.orderNos != ''">
             AND ipi.order_no IN
             <foreach collection="receivableQueryVo.orderNos" item="orderNo" open="(" separator="," close=")">