Просмотр исходного кода

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

Qchen 1 год назад
Родитель
Сommit
ca62f08dc8
100 измененных файлов с 3880 добавлено и 307 удалено
  1. 64 0
      sql/Online.sql
  2. 0 8
      src/main/java/com/ydtech/config/MvcConfig.java
  3. 3 0
      src/main/java/com/ydtech/config/properties/ZijinApiConfigurationProperties.java
  4. 27 0
      src/main/java/com/ydtech/modules/admin/constants/IndustrySectorEnum.java
  5. 110 14
      src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java
  6. 30 6
      src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java
  7. 94 0
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerConfigController.java
  8. 18 3
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java
  9. 18 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  10. 32 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserLinkSysController.java
  11. 17 0
      src/main/java/com/ydtech/modules/admin/controller/profitAnalysis/ProfitAnalysisController.java
  12. 1 1
      src/main/java/com/ydtech/modules/admin/controller/websocket/PCSocketServer.java
  13. 1 1
      src/main/java/com/ydtech/modules/admin/controller/websocket/WebSocketServer.java
  14. 10 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerAccountMapper.java
  15. 19 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerConfigMapper.java
  16. 2 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java
  17. 17 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerTimeMapper.java
  18. 18 0
      src/main/java/com/ydtech/modules/admin/dao/SysPremiumDetailsMapper.java
  19. 1 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  20. 61 0
      src/main/java/com/ydtech/modules/admin/model/PartnerInfoVo.java
  21. 55 0
      src/main/java/com/ydtech/modules/admin/model/SysPartnerAccount.java
  22. 41 0
      src/main/java/com/ydtech/modules/admin/model/SysPartnerConfig.java
  23. 52 0
      src/main/java/com/ydtech/modules/admin/model/SysPartnerTime.java
  24. 112 0
      src/main/java/com/ydtech/modules/admin/model/SysPremiumDetails.java
  25. 24 0
      src/main/java/com/ydtech/modules/admin/model/dto/CommissionInfoDto.java
  26. 26 0
      src/main/java/com/ydtech/modules/admin/model/dto/FilterPartnerInfoDto.java
  27. 43 0
      src/main/java/com/ydtech/modules/admin/model/dto/PartnerGradeInfo.java
  28. 18 0
      src/main/java/com/ydtech/modules/admin/model/dto/PartnerInfoDto.java
  29. 14 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConfigDto.java
  30. 23 0
      src/main/java/com/ydtech/modules/admin/model/dto/TeamUserInfosDto.java
  31. 4 0
      src/main/java/com/ydtech/modules/admin/model/po/SysPcAddress.java
  32. 18 0
      src/main/java/com/ydtech/modules/admin/model/report/profitAnalysis/ProfitAnalysisDto.java
  33. 7 0
      src/main/java/com/ydtech/modules/admin/model/report/profitAnalysis/ProfitAnalysisQueryDto.java
  34. 18 4
      src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java
  35. 37 0
      src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfoFreeVo.java
  36. 66 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppPartnerNumVo.java
  37. 52 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppSysPartnerVo.java
  38. 56 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppUserInfoVo.java
  39. 35 0
      src/main/java/com/ydtech/modules/admin/model/vo/FilterPartnerInfoVo.java
  40. 34 0
      src/main/java/com/ydtech/modules/admin/model/vo/PartnerInfoFreeVo.java
  41. 39 0
      src/main/java/com/ydtech/modules/admin/model/vo/PartnerLeaderInfoVo.java
  42. 35 0
      src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosFreeVo.java
  43. 38 0
      src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosVo.java
  44. 8 0
      src/main/java/com/ydtech/modules/admin/service/ProfitAnalysisService.java
  45. 2 0
      src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java
  46. 8 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerAccountService.java
  47. 20 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerConfigService.java
  48. 23 10
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  49. 17 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerTimeService.java
  50. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysPremiumDetailsService.java
  51. 6 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  52. 68 4
      src/main/java/com/ydtech/modules/admin/service/impl/ProfitAnalysisServiceImpl.java
  53. 34 10
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java
  54. 109 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java
  55. 11 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerAccountServiceImpl.java
  56. 40 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerConfigServiceImpl.java
  57. 1045 110
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  58. 24 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerTimeServiceImpl.java
  59. 99 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressHistoryServiceImpl.java
  60. 20 2
      src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressServiceImpl.java
  61. 12 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPremiumDetailsServiceImpl.java
  62. 18 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  63. 1 1
      src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java
  64. 15 1
      src/main/java/com/ydtech/modules/console/controller/WithdrawalTaskController.java
  65. 19 0
      src/main/java/com/ydtech/modules/console/dao/ProfitAnalysisMapper.java
  66. 8 0
      src/main/java/com/ydtech/modules/console/dao/WithdrawalTaskMapper.java
  67. 34 26
      src/main/java/com/ydtech/modules/console/dto/WithdrawalTaskDto.java
  68. 8 0
      src/main/java/com/ydtech/modules/console/service/WithdrawalTaskService.java
  69. 15 0
      src/main/java/com/ydtech/modules/console/service/impl/WithdrawalTaskServiceImpl.java
  70. 3 1
      src/main/java/com/ydtech/modules/esm/controller/EsmUserController.java
  71. 57 0
      src/main/java/com/ydtech/modules/fnc/controller/InsPlyIncomeController.java
  72. 0 1
      src/main/java/com/ydtech/modules/fnc/entity/InsPlyIncome.java
  73. 97 56
      src/main/java/com/ydtech/modules/fnc/service/InsPlyIncomeService.java
  74. 34 4
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  75. 188 12
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  76. 3 0
      src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java
  77. 11 0
      src/main/java/com/ydtech/modules/order/components/zijin/ZijinRequestApiComponents.java
  78. 3 6
      src/main/java/com/ydtech/modules/order/controller/QrCodeController.java
  79. 59 0
      src/main/java/com/ydtech/modules/order/controller/QuoteController.java
  80. 7 2
      src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderApiController.java
  81. 12 1
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  82. 2 1
      src/main/java/com/ydtech/modules/order/entity/api/zijin/constants/enums/RequestUrl.java
  83. 38 0
      src/main/java/com/ydtech/modules/order/entity/api/zijin/request/SendCheckCarLinkRequest.java
  84. 3 0
      src/main/java/com/ydtech/modules/order/entity/crawler/response/CrawlerQuoteResponse.java
  85. 7 0
      src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java
  86. 28 0
      src/main/java/com/ydtech/modules/order/entity/vo/ModelsQueryQueryVo.java
  87. 6 5
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  88. 10 0
      src/main/java/com/ydtech/modules/order/service/ZijinOrderApiService.java
  89. 2 2
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  90. 2 2
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  91. 110 3
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  92. 25 8
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  93. 2 1
      src/main/resources/application-pre.yml
  94. 2 0
      src/main/resources/application-prod.yml
  95. 2 1
      src/main/resources/application-test.yml
  96. 16 0
      src/main/resources/mapper/modules/admin/SysPartnerAccountMapper.xml
  97. 14 0
      src/main/resources/mapper/modules/admin/SysPartnerConfigMapper.xml
  98. 8 0
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  99. 17 0
      src/main/resources/mapper/modules/admin/SysPartnerTimeMapper.xml
  100. 51 0
      src/main/resources/mapper/modules/admin/SysPremiumDetailsMapper.xml

+ 64 - 0
sql/Online.sql

@@ -1,3 +1,8 @@
+# 子订单
+alter table ins_area_company
+    add leader_id varchar(64) null comment '维护人工号';
+alter table ins_area_company
+    add leader_name varchar(64) null comment '维护人';
 --  2024-10-15 BY dongxin statr
 ALTER TABLE `agent`.`ins_fee_telemarketing`
 ADD COLUMN `jq_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT '交强优惠比例' AFTER `create_time`,
@@ -7,3 +12,62 @@ ADD COLUMN `first_jq_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT
 ADD COLUMN `first_sy_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT '初始商业优惠比例' AFTER `first_jq_total_proportion`,
 ADD COLUMN `first_no_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT '初始非车优惠比例' AFTER `first_sy_total_proportion`;
 --  2024-10-15 BY dongxin end
+
+
+--  2024-10-16 BY helixiao
+CREATE TABLE `sys_premium_details` (
+    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `orderno` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单号',
+    `company_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '子订单id',
+    `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户id',
+    `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名称',
+    `issuer_id` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '代理人 id',
+    `issuer_name` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '代理人name',
+    `jqpremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '交强险费用',
+    `sypremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '商业险费用',
+    `jypremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '驾意险费用',
+    `sumpremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '总保费',
+    `proportional` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '抽成比例(总保费抽成)',
+    `extract_fee` decimal(10,5) unsigned DEFAULT NULL COMMENT '抽成费用',
+    `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0:未审核 1:审核通过)',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `type` tinyint DEFAULT NULL COMMENT '类型:1前线人员 2后线人员',
+    `industry_sector` tinyint DEFAULT NULL COMMENT '行业领域 1:汽车-车险',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='合伙人、工作室管理员保费抽成明细表';
+
+
+CREATE TABLE `sys_partner_account` (
+    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户id',
+    `sum_Premium` decimal(10,5) unsigned DEFAULT NULL COMMENT '总保费',
+    `extract_fee` decimal(10,5) unsigned DEFAULT NULL COMMENT '抽成费用',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `history_fee` decimal(10,5) DEFAULT NULL COMMENT '已提现费用',
+    `cash_fee` decimal(10,5) DEFAULT NULL COMMENT '可提现抽成费用',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='合伙人、工作室管理人员抽层账户表';
+
+
+CREATE TABLE `sys_partner_config` (
+    `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `logo` mediumblob COMMENT '图标',
+    `image` mediumblob COMMENT '背景',
+    `level` tinyint DEFAULT NULL COMMENT '等级',
+    `del_flag` tinyint NOT NULL DEFAULT '1' COMMENT '状态( 0:删除 1:正常)',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='合伙人APP等级背景配置表';
+
+CREATE TABLE `sys_partner_time` (
+    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户id',
+    `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户name',
+    `old_proportional` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '旧比例',
+    `new_proportional` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '新比例',
+    `create_time` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '月份',
+    `type` tinyint DEFAULT NULL COMMENT '类型1合伙人 2工作室管理员',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='抽成比例修改表';
+
+
+

+ 0 - 8
src/main/java/com/ydtech/config/MvcConfig.java

@@ -1,14 +1,6 @@
 package com.ydtech.config;
 
-import cn.dev33.satoken.SaManager;
-import cn.dev33.satoken.context.SaHolder;
-import cn.dev33.satoken.filter.SaServletFilter;
-import cn.dev33.satoken.router.SaHttpMethod;
-import cn.dev33.satoken.router.SaRouter;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.dev33.satoken.util.SaResult;
 import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.ydtech.aop.DynamicNameAspect;

+ 3 - 0
src/main/java/com/ydtech/config/properties/ZijinApiConfigurationProperties.java

@@ -30,4 +30,7 @@ public class ZijinApiConfigurationProperties {
     // 下载保单地址
     private String downLoadDocument;
 
+    // 对接三方渠道验车链接接口
+    private String sendCheckCarLink;
+
 }

+ 27 - 0
src/main/java/com/ydtech/modules/admin/constants/IndustrySectorEnum.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.admin.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum IndustrySectorEnum {
+
+    IS_01(1, "汽车-车险");
+//    IS_02(2, "保险-财险"),
+//    IS_03(3, "汽车-车险"),
+//    IS_04(4, "汽车-车险");
+
+    private final Integer code;
+
+    private final String desc;
+
+    public static String getDescByCode(Integer code){
+        for (UserWorkStatus value : UserWorkStatus.values()) {
+            if(value.getCode().equals(code)){
+                return value.getDesc();
+            }
+        }
+        return null;
+    }
+}

+ 110 - 14
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -1,53 +1,149 @@
 package com.ydtech.modules.admin.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
 import com.ydtech.modules.admin.model.SysPartner;
-import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysPartnerService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 @Api(tags = "合伙人app")
 @RestController
 @RequestMapping("/APPPartner")
-public class APPPartnerController {
+public class APPPartnerController extends BaseController {
 
     @Resource
     private SysPartnerService sysPartnerService;
 
+    /**
+     * 首页信息
+     */
+    @GetMapping("/getHomePage")
+    @ApiOperation(value = "APP首页信息")
+    public HttpResult<AppPartnerNumVo> getHomePage(@RequestParam("type") Integer type) {
+
+        return HttpResult.ok(this.sysPartnerService.getHomePage(type));
+    }
+
 
     /**
-     * 合伙人推荐下的合伙人
+     * 个人信息
+     *
+     * @return
      */
-    @GetMapping("/info")
-    @ApiOperation(value = "APP合伙人推荐下的合伙人")
-    public HttpResult<List<SysPartner>> partnerInfo(@RequestParam("beginTime") String beginTime,
-                                                    @RequestParam("endTime") String endTime) {
+    @GetMapping("/getUserInfo")
+    @ApiOperation(value = "APP个人信息")
+    public HttpResult<AppUserInfoVo> getUserInfo(@RequestParam("type") Integer type) {
 
-        return HttpResult.ok(this.sysPartnerService.partnerInfo(beginTime,endTime));
+        return HttpResult.ok(this.sysPartnerService.getUserInfo(type));
     }
 
     /**
-     * 合伙人信息包含下面所有工作室信息
+     * APP账户金额
+     *
+     * @return
      */
-    @GetMapping("/getLeaderInfo")
-    @ApiOperation(value = "查询合伙人有关的工作室管理员")
-    public HttpResult<APPPartnerInfo> getLeaderInfo(@RequestParam("userId") String userId) {
+    @GetMapping("/getFee")
+    @ApiOperation(value = "APP账户金额")
+    public HttpResult<SysPartnerAccount> getFee() {
 
-        return HttpResult.ok(this.sysPartnerService.getLeaderInfo(userId));
+        return HttpResult.ok(this.sysPartnerService.getFee());
     }
 
 
+
+
+    /**
+     * 登陆人下的每个等级合伙人统计信息
+     */
+    @PostMapping("/info")
+    @ApiOperation(value = "APP登陆人下的每个等级合伙人统计信息")
+    public HttpResult<List<AppSysPartnerVo>> partnerInfo(@RequestBody PartnerInfoDto partnerInfoDto) {
+
+        return HttpResult.ok(this.sysPartnerService.partnerInfo(partnerInfoDto));
+    }
+
     /**
-     * 根据id查询工作室信息包含西面所有成员
+     * 合伙人工作室详情 统计总费用
      */
+    @PostMapping("/partnerLeaderInfo")
+    @ApiOperation(value = "合伙人工作室详情")
+    public HttpResult<PartnerLeaderInfoVo> partnerLeaderInfo(@RequestBody PartnerGradeInfo partnerGradeInfo) {
+
+        return HttpResult.ok(this.sysPartnerService.partnerLeaderInfo(partnerGradeInfo));
+    }
 
 
+    /**
+     * 筛选合伙人详情
+     * @return
+     */
+    @PostMapping("/queryFilterPartnerInfo")
+    @ApiOperation(value = "筛选合伙人详情")
+    public HttpResult<FilterPartnerInfoVo> queryFilterPartnerInfo(@RequestBody FilterPartnerInfoDto filterPartnerInfoDto) {
+
+        return HttpResult.ok(this.sysPartnerService.queryFilterPartnerInfo(filterPartnerInfoDto));
+    }
 
+    /**
+     * 等级合伙人详情
+     * @param partnerGradeInfo
+     * @return
+     */
+    @PostMapping("/queryPartnerInfo")
+    @ApiOperation(value = "等级合伙人详情")
+    public HttpResult<PartnerInfoFreeVo> queryPartnerInfo(@RequestBody PartnerGradeInfo partnerGradeInfo) {
+
+        return HttpResult.ok(this.sysPartnerService.queryPartnerInfo(partnerGradeInfo));
+    }
+
+
+    /**
+     * 查看团队
+     */
+    @PostMapping("/getTeamInfo")
+    @ApiOperation(value = "查看机构下团队信息")
+    public HttpResult<APPPartnerInfoFreeVo> getTeamInfo(@RequestBody PartnerGradeInfo partnerGradeInfo) {
+
+        return HttpResult.ok(this.sysPartnerService.getTeamInfo(partnerGradeInfo));
+    }
+
+    @PostMapping("/getTeamUserInfo")
+    @ApiOperation(value = "查看团队下人员信息")
+    public HttpResult<TeamUserInfosFreeVo> getTeamUserInfo(@RequestBody TeamUserInfosDto teamUserInfosDto) {
+
+        return HttpResult.ok(this.sysPartnerService.getTeamUserInfo(teamUserInfosDto));
+    }
+
+    /**
+     * 总佣金组成明细
+     */
+    @PostMapping("/getCommissionInfo")
+    @ApiOperation(value = "总佣金组成明细")
+    public HttpResult<BasePageResult<SysPremiumDetails>> getCommissionInfo(@RequestBody CommissionInfoDto commissionInfoDto) {
+        if (commissionInfoDto.getPageNum() == 0) {
+            commissionInfoDto.setPageNum(1);
+        }
+        if (commissionInfoDto.getPageSize() == 0) {
+            commissionInfoDto.setPageSize(10);
+        }
+
+        return HttpResult.ok(this.sysPartnerService.getCommissionInfo(commissionInfoDto));
+    }
 
 
 }

+ 30 - 6
src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java

@@ -144,16 +144,28 @@ public class SysAgencyLeaderController extends BaseController {
      * 查询所有机构负责人的保费抽成明细
      */
 
+//    @PostMapping("/queryExtractFeeAll")
+//    @ApiOperation(value = "优化查询所有机构负责人的保费抽成明细")
+//    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeList(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+//        if (sysAgencyLeaderPageDto.getPageNum() == 0) {
+//            sysAgencyLeaderPageDto.setPageNum(1);
+//        }
+//        if (sysAgencyLeaderPageDto.getPageSize() == 0) {
+//            sysAgencyLeaderPageDto.setPageSize(10);
+//        }
+//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeList(sysAgencyLeaderPageDto));
+//    }
+
     @PostMapping("/queryExtractFeeAll")
-    @ApiOperation(value = "优化查询所有机构负责人的保费抽成明细")
-    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeList(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+    @ApiOperation(value = "最新查询所有机构负责人的保费抽成明细")
+    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeAlls(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
         if (sysAgencyLeaderPageDto.getPageNum() == 0) {
             sysAgencyLeaderPageDto.setPageNum(1);
         }
         if (sysAgencyLeaderPageDto.getPageSize() == 0) {
             sysAgencyLeaderPageDto.setPageSize(10);
         }
-        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeList(sysAgencyLeaderPageDto));
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeAlls(sysAgencyLeaderPageDto));
     }
 
 
@@ -212,16 +224,28 @@ public class SysAgencyLeaderController extends BaseController {
         return HttpResult.ok("success", this.sysAgencyLeaderService.queryAgencyUser(deptId));
     }
 
-    @PostMapping("/queryAgencyUserInsAreaPage")
+//    @PostMapping("/queryAgencyUserInsAreaPage")
+//    @ApiOperation(value = "查询机构下的单个员工的子订单费用")
+//    public HttpResult<IPage<AgencyUserInsAreaVo>> queryAgencyUserInsAreaPage(@RequestBody AgencyUserInsAreaDto agencyUserInsAreaDto){
+//        if (agencyUserInsAreaDto.getPageNum() == 0) {
+//            agencyUserInsAreaDto.setPageNum(1);
+//        }
+//        if (agencyUserInsAreaDto.getPageSize() == 0) {
+//            agencyUserInsAreaDto.setPageSize(10);
+//        }
+//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryAgencyUserInsAreaPage(agencyUserInsAreaDto));
+//    }
+
+    @PostMapping("/queryInsAreaPageById")
     @ApiOperation(value = "查询机构下的单个员工的子订单费用")
-    public HttpResult<IPage<AgencyUserInsAreaVo>> queryAgencyUserInsAreaPage(@RequestBody AgencyUserInsAreaDto agencyUserInsAreaDto){
+    public HttpResult<IPage<AgencyUserInsAreaVo>> queryInsAreaPageById(@RequestBody AgencyUserInsAreaDto agencyUserInsAreaDto){
         if (agencyUserInsAreaDto.getPageNum() == 0) {
             agencyUserInsAreaDto.setPageNum(1);
         }
         if (agencyUserInsAreaDto.getPageSize() == 0) {
             agencyUserInsAreaDto.setPageSize(10);
         }
-        return HttpResult.ok("success", this.sysAgencyLeaderService.queryAgencyUserInsAreaPage(agencyUserInsAreaDto));
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryInsAreaPageById(agencyUserInsAreaDto));
     }
 
     @PostMapping("/queryUserInsAreaExcel")

+ 94 - 0
src/main/java/com/ydtech/modules/admin/controller/SysPartnerConfigController.java

@@ -0,0 +1,94 @@
+package com.ydtech.modules.admin.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import com.ydtech.modules.admin.model.dto.SysPartnerConfigDto;
+import com.ydtech.modules.admin.service.SysPartnerConfigService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)表控制层
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+@RestController
+@RequestMapping("sysPartnerConfig")
+@Api(tags = "合伙人APP等级背景配置表")
+public class SysPartnerConfigController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysPartnerConfigService sysPartnerConfigService;
+
+    @PostMapping("/queryByPage")
+    @ApiOperation(value = "合伙人分页查询")
+    public HttpResult<BasePageResult<SysPartnerConfig>> queryByPage(@RequestBody SysPartnerConfigDto sysPartnerConfigDto) {
+        if (sysPartnerConfigDto.getPageNum() == 0) {
+            sysPartnerConfigDto.setPageNum(1);
+        }
+        if (sysPartnerConfigDto.getPageSize() == 0) {
+            sysPartnerConfigDto.setPageSize(10);
+        }
+        return HttpResult.ok(this.sysPartnerConfigService.queryByPage(sysPartnerConfigDto));
+    }
+
+
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("/queryById/{id}")
+    @ApiOperation(value = "通过主键查询单条数据")
+    public HttpResult<SysPartnerConfig> queryById(@PathVariable("id") Long id) {
+        return HttpResult.ok(this.sysPartnerConfigService.getById(id));
+    }
+
+    /**
+     * 新增数据
+     *
+     * @param sysPartnerConfig 实体
+     * @return 新增结果
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "新增数据")
+    public HttpResult add(@RequestBody SysPartnerConfig sysPartnerConfig) {
+        return HttpResult.ok(this.sysPartnerConfigService.save(sysPartnerConfig));
+    }
+
+    /**
+     * 编辑数据
+     *
+     * @param sysPartnerConfig 实体
+     * @return 编辑结果
+     */
+    @PostMapping("/edit")
+    @ApiOperation(value = "编辑数据")
+    public HttpResult edit(@RequestBody SysPartnerConfig sysPartnerConfig) {
+        return HttpResult.ok(this.sysPartnerConfigService.updateById(sysPartnerConfig));
+    }
+
+    /**
+     * 删除数据
+     *
+     * @param id 主键
+     * @return 删除是否成功
+     */
+    @DeleteMapping("/deleteById/{id}")
+    @ApiOperation(value = "删除数据")
+    public HttpResult deleteById(@PathVariable("id") Long id) {
+        return HttpResult.ok(this.sysPartnerConfigService.deleteById(id));
+    }
+
+}
+

+ 18 - 3
src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java

@@ -115,19 +115,34 @@ public class SysPartnerController extends BaseController {
         return HttpResult.ok("success", this.sysPartnerService.deleteById(id));
     }
 
+//    /**
+//     * 所有合伙人的抽层费用
+//     */
+//    @PostMapping("/queryPartnerByPages")
+//    @ApiOperation(value = "优化所有合伙人的抽层费用信息")
+//    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryPartnerByPages(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
+//        if (sysPartnerPageDto.getPageNum() == 0) {
+//            sysPartnerPageDto.setPageNum(1);
+//        }
+//        if (sysPartnerPageDto.getPageSize() == 0) {
+//            sysPartnerPageDto.setPageSize(10);
+//        }
+//        return HttpResult.ok(this.sysPartnerService.queryPartnerByPages(sysPartnerPageDto));
+//    }
+
     /**
      * 所有合伙人的抽层费用
      */
     @PostMapping("/queryPartnerByPage")
-    @ApiOperation(value = "优化所有合伙人的抽层费用信息")
-    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryPartnerByPages(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
+    @ApiOperation(value = "所有合伙人的抽层费用信息")
+    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryPartnerByPage(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
         if (sysPartnerPageDto.getPageNum() == 0) {
             sysPartnerPageDto.setPageNum(1);
         }
         if (sysPartnerPageDto.getPageSize() == 0) {
             sysPartnerPageDto.setPageSize(10);
         }
-        return HttpResult.ok(this.sysPartnerService.queryPartnerByPages(sysPartnerPageDto));
+        return HttpResult.ok(this.sysPartnerService.queryPartnerByPage(sysPartnerPageDto));
     }
 
     /**

+ 18 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -954,6 +954,24 @@ public class SysUserController extends BaseController {
 
     }
 
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/10/12 16:12
+     * @Description: 机构人员树
+     */
+    @ApiOperation(value = "获取机构人员树")
+    @GetMapping(value = "/getTreeUser")
+    public HttpResult getTreeUser() {
+        try {
+            List<SysUser> userList = sysUserService.getTreeUser();
+            return HttpResult.ok(userList);
+        } catch (Exception e) {
+            return HttpResult.error("查询失败" + e.getMessage());
+        }
+
+    }
+
 
     /**
      * @version

+ 32 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserLinkSysController.java

@@ -1,7 +1,9 @@
 package com.ydtech.modules.admin.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.dto.SysUserLinkSysAddDto;
@@ -118,4 +120,34 @@ public class SysUserLinkSysController extends BaseController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/10/17 17:14
+     *  @Description: 查询控制台用户是否授权
+     */
+    @GetMapping("authorizeByUserId")
+    @ApiOperation(value = "查看控制台用户是否授权")
+    public HttpResult<Boolean> authorizeByUserId(String userId) {
+        Boolean flag =false;
+        try{
+            if(StringUtils.isBlank(userId)){
+                throw new SystemException("用戶id为空!!");
+            }
+            if(userId.equals("admin")){
+                flag =true;
+            }else{
+                LambdaQueryWrapper<SysUserLinkSys> sysLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                sysLambdaQueryWrapper.eq(SysUserLinkSys::getUserId, userId);
+                sysLambdaQueryWrapper.eq(SysUserLinkSys::getSysId, "2");
+                List<SysUserLinkSys> list = sysUserLinkSysService.list(sysLambdaQueryWrapper);
+                if (list != null && list.size() > 0) {
+                    flag =true;
+                }
+            }
+            return HttpResult.ok(flag);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 }

+ 17 - 0
src/main/java/com/ydtech/modules/admin/controller/profitAnalysis/ProfitAnalysisController.java

@@ -62,5 +62,22 @@ public class ProfitAnalysisController {
         }
     }
 
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/10/16 15:35
+     *  @Description:  查询利润分析统计明细
+     */
+    @PostMapping("getProfitAnalysisQueryDetailsList")
+    @ApiOperation(value = "查询利润分析数据")
+    public HttpResult<List<ProfitAnalysisDto>> getProfitAnalysisQueryDetailsList(@RequestBody ProfitAnalysisQueryDto profitAnalysisQueryDto) {
+        try{
+            List<ProfitAnalysisDto> result = profitAnalysisService.getProfitAnalysisQueryDetailsList(profitAnalysisQueryDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
 
 }

+ 1 - 1
src/main/java/com/ydtech/modules/admin/controller/websocket/PCSocketServer.java

@@ -61,7 +61,7 @@ public class PCSocketServer {
             onlineCount.incrementAndGet();
         }
         editStatus(userId);
-        log.info("PC用户连接:" + userId + ",当前在线人数为:" + onlineCount);
+        log.info("PC用户连接成功:" + userId + ",当前在线人数为:" + onlineCount);
         sendMessage("连接成功");
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/admin/controller/websocket/WebSocketServer.java

@@ -59,7 +59,7 @@ public class WebSocketServer {
             onlineCount.incrementAndGet();
         }
         editStatus(userId);
-        log.info("APP用户连接:" + userId + ",当前在线人数为:" + onlineCount);
+        log.info("APP用户连接成功:" + userId + ",当前在线人数为:" + onlineCount);
         sendMessage("APP用户连接成功");
     }
 

+ 10 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerAccountMapper.java

@@ -0,0 +1,10 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysPartnerAccountMapper extends BaseMapper<SysPartnerAccount> {
+
+}

+ 19 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerConfigMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+@Mapper
+public interface SysPartnerConfigMapper extends BaseMapper<SysPartnerConfig> {
+
+
+
+}
+

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java

@@ -34,5 +34,7 @@ public interface SysPartnerMapper extends BaseMapper<SysPartner> {
      *  @Description:  机构树形
      */
     List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo partnerBalanceVo);
+
+    List<SysPartner> queryByLoginId(@Param("userId") String userId);
 }
 

+ 17 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerTimeMapper.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartnerTime;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+@Mapper
+public interface SysPartnerTimeMapper extends BaseMapper<SysPartnerTime> {
+
+}
+

+ 18 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPremiumDetailsMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.dto.AgencyUserInsAreaDto;
+import com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface SysPremiumDetailsMapper extends BaseMapper<SysPremiumDetails> {
+
+    void updateStatus(String id);
+
+    IPage<AgencyUserInsAreaVo> queryInsAreaPageById(Page page,@Param("dto") AgencyUserInsAreaDto agencyUserInsAreaDto);
+}

+ 1 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -519,6 +519,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SysUser> findHxUserListNew();
 
 
+    AppUserInfoVo queryByUserId(@Param("userId")String userId);
 }
 
 

+ 61 - 0
src/main/java/com/ydtech/modules/admin/model/PartnerInfoVo.java

@@ -0,0 +1,61 @@
+package com.ydtech.modules.admin.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerInfoVo {
+
+    @ApiModelProperty(value = "合伙人id")
+    private String userId;
+    @ApiModelProperty(value = "合伙人Name")
+    private String userName;
+    @ApiModelProperty(value = "推荐人Name")
+    private String suggestName;
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    @ApiModelProperty(value = "团队总数")
+    private Integer deptNum;
+
+    @ApiModelProperty(value = "工作室数量")
+    private Integer workNumber;
+
+    @ApiModelProperty(value = "数量")
+    private Integer partnerNumber;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+    @ApiModelProperty(value = "工作室下团队ids")
+    private List<String> deptIds;
+
+    @ApiModelProperty(value = "级别")
+    private Integer level;
+
+}

+ 55 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartnerAccount.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SysPartnerAccount {
+
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 抽成费用
+     */
+    @ApiModelProperty(value = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 已提现抽成费用
+     */
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+
+}

+ 41 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartnerConfig.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)实体类
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+@Data
+public class SysPartnerConfig implements Serializable {
+    private static final long serialVersionUID = 211257280715008838L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Long id;
+    /**
+     * 图标
+     */
+    private String logo;
+    /**
+     * 背景
+     */
+    private String image;
+    /**
+     * 等级
+     */
+    private Integer level;
+    /**
+     * 状态( 0:删除 1:正常)
+     */
+    private Integer delFlag;
+
+}
+

+ 52 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartnerTime.java

@@ -0,0 +1,52 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)实体类
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+@Data
+public class SysPartnerTime implements Serializable {
+    private static final long serialVersionUID = 104835295201241641L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 用户name
+     */
+    private String userName;
+    /**
+     * 旧比例
+     */
+    private String oldProportional;
+    /**
+     * 新比例
+     */
+    private String newProportional;
+    /**
+     * 月份
+     */
+    private String createTime;
+    /**
+     * 类型1合伙人 2工作室管理员
+     */
+    private Integer type;
+
+
+
+
+}
+

+ 112 - 0
src/main/java/com/ydtech/modules/admin/model/SysPremiumDetails.java

@@ -0,0 +1,112 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SysPremiumDetails {
+
+    /**
+     * 自增id
+     */
+    @ApiModelProperty(value = "自增id")
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+    /**
+     * 用户name
+     */
+    @ApiModelProperty(value = "用户name")
+    private String userName;
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value = "代理人id")
+    private String issuerId;
+    /**
+     * 用户name
+     */
+    @ApiModelProperty(value = "代理人name")
+    private String issuerName;
+    /**
+     * 订单号
+     */
+    @ApiModelProperty(value = "订单号")
+    private String orderno;
+    /**
+     * 子订单id
+     */
+    @ApiModelProperty(value = "子订单id")
+    private String companyId;
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+
+    /**
+     * 交强险费用
+     */
+    @ApiModelProperty(value = "交强险费用")
+    private BigDecimal jqpremium;
+
+    /**
+     * 商业险费用
+     */
+    @ApiModelProperty(value = "商业险费用")
+    private BigDecimal sypremium;
+
+    /**
+     * 驾意险费用
+     */
+    @ApiModelProperty(value = "驾意险费用")
+    private BigDecimal jypremium;
+    /**
+     * 抽层比例
+     */
+    @ApiModelProperty(value = "抽层比例")
+    private String proportional;
+
+    /**
+     * 佣金
+     */
+    @ApiModelProperty(value = "佣金")
+    private BigDecimal extractFee;
+
+
+    /**
+     * 状态(0:未审核 1:审核通过)
+     */
+    @ApiModelProperty(value = "状态(0:未审核 1:审核通过)")
+    private Integer status;
+    /**
+     * 类型:1前线人员 2后线人员
+     */
+    @ApiModelProperty(value = "类型:1前线人员 2后线人员")
+    private Integer type;
+    /**
+     * 行业领域 1:汽车-车险
+     */
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/admin/model/dto/CommissionInfoDto.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CommissionInfoDto {
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/admin/model/dto/FilterPartnerInfoDto.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FilterPartnerInfoDto {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "等级 1一级;2二级;3级")
+    private Integer partnerType;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+
+
+
+
+}

+ 43 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PartnerGradeInfo.java

@@ -0,0 +1,43 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@Data
+@ApiModel("每级合伙人详情")
+public class PartnerGradeInfo {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+    @ApiModelProperty(value = "合伙人:1;工作室:2 默认传:1")
+    private Integer type;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "工作室下团队ids")
+    private List<String> deptIds;
+
+    /**
+     * 前端埋点数据
+     */
+    @ApiModelProperty(value = "级别")
+    private Integer level;
+
+
+
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PartnerInfoDto.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PartnerInfoDto {
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = " 全部行业:0 行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "等级 1一级;2二级;3级")
+    private Integer partnerType;
+}

+ 14 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConfigDto.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysPartnerConfigDto {
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+}

+ 23 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TeamUserInfosDto.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TeamUserInfosDto {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+
+    @ApiModelProperty(value = "人员ids")
+    private List<String> userIds;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+}

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysPcAddress.java

@@ -91,5 +91,9 @@ public class SysPcAddress implements Serializable {
     @TableField(exist = false)
     private Integer type=1;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "所属机构")
+    private String deptName;
+
 
 }

+ 18 - 0
src/main/java/com/ydtech/modules/admin/model/report/profitAnalysis/ProfitAnalysisDto.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  *  @version
@@ -25,6 +26,7 @@ public class ProfitAnalysisDto {
 
     @ApiModelProperty("应收")
     private String sumcount;
+
     @ApiModelProperty("实付")
     private String paid;
 
@@ -69,4 +71,20 @@ public class ProfitAnalysisDto {
 
     @ApiModelProperty("转出银行卡")
     private String outCardNum;
+
+    @ApiModelProperty("支出类型")
+    private String expensesType;
+
+    @ApiModelProperty("支出类型id")
+    private String expensesId;
+
+    @ApiModelProperty("父id")
+    private String parentId;
+
+    @ApiModelProperty("类目")
+    private String category;
+
+    @ApiModelProperty("子级")
+    private List<ProfitAnalysisDto> children;
+
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/report/profitAnalysis/ProfitAnalysisQueryDto.java

@@ -43,4 +43,11 @@ public class ProfitAnalysisQueryDto {
     @ApiModelProperty("年月")
     private String yearAndMonth;
 
+
+    @ApiModelProperty("支出类型 人员成本 1 固定成本 2   变动成本 3")
+    private String expensesType;
+
+    @ApiModelProperty("支出ids")
+    private List<String> expensesIds;
+
 }

+ 18 - 4
src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java

@@ -12,22 +12,36 @@ import java.util.List;
 @ApiModel(value = "合伙人下的管理员信息")
 public class APPPartnerInfo {
 
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
 
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
 
     @ApiModelProperty(value = "总保费")
     @JsonFormat(pattern = "0.00")
-    private BigDecimal sumpremium;
+    private BigDecimal sumPremium;
 
     @ApiModelProperty(value = "总佣金")
     @JsonFormat(pattern = "0.00")
     private BigDecimal extractFee;
 
     @ApiModelProperty(value = "成员总人数")
-    private Long number;
+    private Integer teamManNum;
+
+    @ApiModelProperty(value = "机构id")
+    private String leaderId;
+
+    @ApiModelProperty(value = "机构name")
+    private String leaderName;
+
+
+    @ApiModelProperty(value = "出单员工ids")
+    private List<String> userIds;
+
+
 
 
-    @ApiModelProperty(value = "管理员信息")
-    private List<AgencyLeaderInfo> agencyLeaderInfo;
 
 
 }

+ 37 - 0
src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfoFreeVo.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class APPPartnerInfoFreeVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<APPPartnerInfo> appPartnerInfos;
+
+
+
+}

+ 66 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AppPartnerNumVo.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class AppPartnerNumVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+
+
+    /**
+     * 抽成费用
+     */
+    @ApiModelProperty(value = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer TeamManNum;
+
+    /**
+     * 所有合伙人数
+     */
+    @ApiModelProperty(value = "下级所有合伙人数")
+    private Integer partnerNum;
+
+
+    /**
+     * 合伙人直接工作室数
+     */
+    @ApiModelProperty(value = "合伙人直接工作室数")
+    private Integer workroomNum;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+
+    //工作室
+    @ApiModelProperty(value = "工作室下团队人数")
+    private Integer workroomManNum;
+
+    @ApiModelProperty(value = "工作室下团队数")
+    private Integer workroomTeamNum;
+
+    @ApiModelProperty(value = "工作室下团队ids")
+    private List<String> deptIds;
+
+
+
+
+
+
+}

+ 52 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AppSysPartnerVo.java

@@ -0,0 +1,52 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class AppSysPartnerVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer TeamManNum;
+
+    @ApiModelProperty(value = "合伙人+工作室数量")
+    private Integer number;
+
+    @ApiModelProperty(value = "工作室数量")
+    private Integer workNumber;
+    //二级以下使用
+    @ApiModelProperty(value = "合伙人数量")
+    private Integer partnerNumber;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+    @ApiModelProperty(value = "等级")
+    private Integer partnerType;
+
+
+}

+ 56 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AppUserInfoVo.java

@@ -0,0 +1,56 @@
+package com.ydtech.modules.admin.model.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+
+@Data
+public class AppUserInfoVo {
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+    @ApiModelProperty("岗位名称")
+    private String positionName;
+    /**
+     * 团队名称
+     */
+    @ApiModelProperty(value = "团队名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+    /**
+     * 性别
+     */
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "微信号")
+    private String weChat;
+
+
+    @ApiModelProperty("入司时间")
+    private Date entryTime;
+
+    @ApiModelProperty("年限")
+    private Long years;
+
+    @ApiModelProperty(value = "等级背景")
+    private SysPartnerConfig sysPartnerConfig;
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/admin/model/vo/FilterPartnerInfoVo.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class FilterPartnerInfoVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<PartnerInfoVo> partnerInfoVoList;
+}

+ 34 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerInfoFreeVo.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerInfoFreeVo {
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<PartnerInfoVo> partnerInfoVoList;
+}

+ 39 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerLeaderInfoVo.java

@@ -0,0 +1,39 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerLeaderInfoVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<PartnerInfoVo> partnerInfoVoList;
+
+    List<String> userIds;
+
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosFreeVo.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class TeamUserInfosFreeVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+
+    List<TeamUserInfosVo> teamUserInfosVoList;
+}

+ 38 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosVo.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TeamUserInfosVo {
+
+    @ApiModelProperty(value = "合伙人id")
+    private String userId;
+    @ApiModelProperty(value = "合伙人Name")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String leaderId;
+
+    @ApiModelProperty(value = "机构name")
+    private String leaderName;
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+
+
+    /**
+     * 抽成费用
+     */
+    @ApiModelProperty(value = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+}

+ 8 - 0
src/main/java/com/ydtech/modules/admin/service/ProfitAnalysisService.java

@@ -22,6 +22,14 @@ public interface ProfitAnalysisService {
     List<ProfitAnalysisDto> queryPage(ProfitAnalysisQueryDto profitAnalysisQueryDto);
 
     List<ProfitAnalysisDto> getProfitAnalysisQueryList(ProfitAnalysisQueryDto profitAnalysisQueryDto);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/10/16 15:35
+     *  @Description:  查询利润分析统计明细
+     */
+    List<ProfitAnalysisDto> getProfitAnalysisQueryDetailsList(ProfitAnalysisQueryDto profitAnalysisQueryDto);
+
 }
 
 

+ 2 - 0
src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java

@@ -45,6 +45,7 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
     AgencyExtractFee queryExtractFee(String userId);
 
     BasePageResult<AgencyExtractFeeVo> queryExtractFeeList(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+    BasePageResult<AgencyExtractFeeVo> queryExtractFeeAlls(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
     BasePageResult<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto);
 
@@ -60,6 +61,7 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
     List<SysUser> queryAgencyUser(String deptId);
 
     IPage<AgencyUserInsAreaVo> queryAgencyUserInsAreaPage(AgencyUserInsAreaDto agencyUserInsAreaDto);
+    IPage<AgencyUserInsAreaVo> queryInsAreaPageById(AgencyUserInsAreaDto agencyUserInsAreaDto);
 
     HttpResult queryUserInsAreaExcel(AgencyUserInsAreaDto agencyUserInsAreaDto);
 }

+ 8 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerAccountService.java

@@ -0,0 +1,8 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+
+public interface SysPartnerAccountService extends IService<SysPartnerAccount> {
+
+}

+ 20 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerConfigService.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import com.ydtech.modules.admin.model.dto.SysPartnerConfigDto;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)表服务接口
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+public interface SysPartnerConfigService extends IService<SysPartnerConfig> {
+
+    BasePageResult<SysPartnerConfig> queryByPage(SysPartnerConfigDto sysPartnerConfigDto);
+
+    boolean deleteById(Long id);
+}

+ 23 - 10
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -3,14 +3,10 @@ package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysPartner;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
-import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
-import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
-import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
-import com.ydtech.modules.admin.model.vo.SysUserPartner;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.order.entity.BasePageResult;
 
 import java.util.List;
@@ -36,6 +32,7 @@ public interface SysPartnerService extends IService<SysPartner> {
     boolean deleteById(String id);
 
     BasePageResult<AgencyExtractFeeVo> queryPartnerByPages(SysPartnerPageDto sysPartnerPageDto);
+    BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto);
 
     BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto);
 
@@ -43,7 +40,23 @@ public interface SysPartnerService extends IService<SysPartner> {
 
     BasePageResult<AgencyExtractFeeVo> queryAgencyLeaderById(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
-    List<SysPartner> partnerInfo(String beginTime, String endTime);
+    List<AppSysPartnerVo> partnerInfo(PartnerInfoDto partnerInfoDto);
 
-    APPPartnerInfo getLeaderInfo(String userId);
+    APPPartnerInfoFreeVo getTeamInfo(PartnerGradeInfo partnerGradeInfo);
+
+    AppPartnerNumVo getHomePage(Integer type);
+
+    AppUserInfoVo getUserInfo(Integer type);
+
+    SysPartnerAccount getFee();
+
+    PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo);
+
+    BasePageResult<SysPremiumDetails> getCommissionInfo(CommissionInfoDto commissionInfoDto);
+
+    TeamUserInfosFreeVo getTeamUserInfo(TeamUserInfosDto teamUserInfosDto);
+
+    FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto);
+
+    PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo);
 }

+ 17 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerTimeService.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPartnerTime;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)表服务接口
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+public interface SysPartnerTimeService extends IService<SysPartnerTime> {
+
+
+
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/SysPremiumDetailsService.java

@@ -0,0 +1,7 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+
+public interface SysPremiumDetailsService extends IService<SysPremiumDetails> {
+}

+ 6 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -284,6 +284,12 @@ public interface SysUserService extends BaseIService<SysUser> {
      */
     List<SysDeptTreeVo> getTreeDeptUser();
 
+    /**
+     * 获取人员数
+     * @return
+     */
+    List<SysUser> getTreeUser();
+
 
 }
 

+ 68 - 4
src/main/java/com/ydtech/modules/admin/service/impl/ProfitAnalysisServiceImpl.java

@@ -4,20 +4,20 @@ import com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisDto;
 import com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisQueryDto;
 import com.ydtech.modules.admin.service.ProfitAnalysisService;
 import com.ydtech.modules.admin.utils.SliceUpDateUtil;
+import com.ydtech.modules.console.dao.ProfitAnalysisMapper;
 import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper;
 import com.ydtech.modules.inv.dao.InvAccountMapper;
 import com.ydtech.modules.inv.model.InvAccount;
 import com.ydtech.modules.inv.model.InvAccountCardVo;
+import com.ydtech.modules.inv.model.InvAccountExpenses;
 import com.ydtech.utils.BigDecimalUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  *  @version
@@ -32,6 +32,8 @@ public class ProfitAnalysisServiceImpl implements ProfitAnalysisService {
 
     @Autowired
     private InsPlyIncomeMapper insPlyIncomeMapper;
+    @Autowired
+    private ProfitAnalysisMapper profitAnalysisMapper;
 
     /**
      *  @version
@@ -82,6 +84,68 @@ public class ProfitAnalysisServiceImpl implements ProfitAnalysisService {
         return profitAnalysisQueryList;
     }
 
+    @Override
+    public List<ProfitAnalysisDto> getProfitAnalysisQueryDetailsList(ProfitAnalysisQueryDto profitAnalysisQueryDto) {
+        List<ProfitAnalysisDto> resultList =new ArrayList<>();
+
+        if (StringUtils.isNotEmpty(profitAnalysisQueryDto.getExpensesType()) && "3".equals(profitAnalysisQueryDto.getExpensesType())) {
+            List<ProfitAnalysisDto> profitAnalysisDtos =  profitAnalysisMapper.selectAccountExpenses(profitAnalysisQueryDto);
+            resultList.addAll(profitAnalysisDtos) ;
+            List<ProfitAnalysisDto> addVariableCost = new ArrayList<>();
+            List<ProfitAnalysisDto> profitAnalysisDto1 = insPlyIncomeMapper.changeAmount(profitAnalysisQueryDto);
+            for (ProfitAnalysisDto analysisDto : profitAnalysisDto1) {
+                String outCardNum = analysisDto.getOutCardNum();
+                String enterCardNum = analysisDto.getEnterCardNum();
+                InvAccountCardVo outAccount = invAccountMapper.getByCarNumber(outCardNum);
+                InvAccountCardVo enterAccount = invAccountMapper.getByCarNumber(enterCardNum);
+                if (StringUtils.isNotEmpty(outAccount.getOuterFlag()) && StringUtils.isNotEmpty(enterAccount.getOuterFlag())) {
+                    if (!enterAccount.getOuterFlag().equals(outAccount.getOuterFlag())) {
+                        addVariableCost.add(analysisDto);
+
+                    }
+                }
+            }
+
+            Map<String, BigDecimal> profitAnalysisDtoMap = addVariableCost.stream()
+                    .collect(Collectors.toMap(
+                            ProfitAnalysisDto::getExpensesId,  // keyMapper,用于提取键(expensesId)
+                            ProfitAnalysisDto::getApplyAmount, // valueMapper,用于提取初始值(applyAmount)
+                            BigDecimal::add                    // mergeFunction,用于处理键冲突(相加 applyAmount)
+                    ));
+
+            for (ProfitAnalysisDto profitAnalysisDto : resultList) {
+                String expensesId = profitAnalysisDto.getExpensesId();
+                if (profitAnalysisDtoMap.containsKey(expensesId)) {
+                    BigDecimal bigDecimal = profitAnalysisDtoMap.get(expensesId);
+                    profitAnalysisDto.setApplyAmount(bigDecimal);
+                }
+            }
+        }else {
+            resultList.addAll(profitAnalysisMapper.getAllAccountExpenses(profitAnalysisQueryDto));
+        }
+        return getTree(resultList);
+    }
+
+    /**
+     * 组装树形结构结果集方法
+     */
+
+    public List<ProfitAnalysisDto> getTree(List<ProfitAnalysisDto> list){
+
+        return list.stream().filter(accountExpenses -> accountExpenses.getParentId().equals("0"))
+                .peek(accountExpenses -> accountExpenses.setChildren(getChildren(accountExpenses,list))).collect(Collectors.toList());
+    }
+
+    public List<ProfitAnalysisDto> getChildren(ProfitAnalysisDto user,List<ProfitAnalysisDto> userList){
+        return userList.stream().filter(u -> Objects.equals(u.getParentId(),user.getExpensesId())).map(
+                u -> {
+                    u.setChildren(getChildren(u,userList));
+                    return u;
+                }
+        ).collect(Collectors.toList());
+    }
+
+
     /**
      *  @version
      *  @author: hxl

+ 34 - 10
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java

@@ -7,9 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalMapper;
-import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalRecordMapper;
-import com.ydtech.modules.admin.dao.SysDeptMapper;
+import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto;
 import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalDto;
@@ -51,6 +49,11 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
 
     @Resource
     private SysDeptMapper sysDeptMapper;
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
 
 
 
@@ -65,9 +68,13 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
         //当前登录用户
         SysUser user = BaseController.getUser();
         //查询当前用户可提现金额
-        AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(user.getId());
+        //AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(user.getId());
+
+        SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                .eq(SysPartnerAccount::getUserId,user.getId()));
+
 
-        BigDecimal cashFee = agencyExtractFee.getCashFee();
+        BigDecimal cashFee = sysPartnerAccount.getCashFee();
         int compare = cashFee.compareTo(actualFee);
         if (compare < 0) {
             throw new SystemException("提现金额不能超过可提现金额");
@@ -83,20 +90,29 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
         }
         sysAgencyFeeApproval.setNumber(IdGenerate.nextId());
         //总保费
-        sysAgencyFeeApproval.setSumpremium(agencyExtractFee.getSumpremium());
+        sysAgencyFeeApproval.setSumpremium(sysPartnerAccount.getSumPremium());
         //总保费抽成费用
-        sysAgencyFeeApproval.setExtractFee(agencyExtractFee.getExtractFee().subtract(agencyExtractFee.getHistoryFee()));
+        sysAgencyFeeApproval.setExtractFee(sysPartnerAccount.getExtractFee());
         //已提现抽成费用
 //        sysAgencyFeeApproval.setHistoryFee(null);
         //可提现抽成费用
         sysAgencyFeeApproval.setCashFee(actualFee);
-        sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
-        sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
+//        sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
+//        sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
         sysAgencyFeeApproval.setCreateBy(user.getName());
         sysAgencyFeeApproval.setCreateTime(new Date());
         sysAgencyFeeApproval.setStatus("0");
         //提交审核信息
         this.save(sysAgencyFeeApproval);
+
+        sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().subtract(actualFee));
+        BigDecimal historyFee = sysPartnerAccount.getHistoryFee();
+        if (historyFee == null) {
+            sysPartnerAccount.setHistoryFee(actualFee);
+        }else {
+            sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().add(actualFee));
+        }
+        sysPartnerAccountMapper.updateById(sysPartnerAccount);
         //保存添加记录
         SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
         sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
@@ -121,7 +137,15 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
             //审批通过
             sysAgencyFeeApproval.setHistoryFee(sysAgencyFeeApproval.getCashFee());
             sysAgencyFeeApproval.setPicture(sysAgencyFeeApprovalEditDto.getPicture());
-            //sysAgencyFeeApproval.setExtractFee(sysAgencyFeeApproval1.getExtractFee().subtract(sysAgencyFeeApproval.getCashFee()));
+
+        }else {
+            SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                    .eq(SysPartnerAccount::getUserId,sysAgencyFeeApproval1.getUserId()));
+            sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysAgencyFeeApproval1.getCashFee()));
+            sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().subtract(sysAgencyFeeApproval1.getCashFee()));
+
+            sysPartnerAccountMapper.updateById(sysPartnerAccount);
+
         }
         sysAgencyFeeApproval.setId(sysAgencyFeeApprovalEditDto.getId());
         sysAgencyFeeApproval.setAuditTime(new Date());

+ 109 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java

@@ -77,6 +77,13 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
     @Resource
     private SysPartnerMapper sysPartnerMapper;
+    @Resource
+    private SysPartnerTimeMapper sysPartnerTimeMapper;
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
 
     @Value("${upload.file.path}")
     private String uploadPath;
@@ -148,6 +155,17 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
             }
         }
+        //添加抽层比例,一个月只能设置一次
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+        sysPartnerTime.setType(2);
+        sysPartnerTime.setCreateTime(format);
+        sysPartnerTime.setUserId(sysAgencyLeaderDto.getUserId());
+        sysPartnerTime.setUserName(sysAgencyLeaderDto.getUserName());
+        sysPartnerTime.setNewProportional(sysAgencyLeaderDto.getProportional());
+
+        sysPartnerTimeMapper.insert(sysPartnerTime);
         return b;
     }
 
@@ -197,6 +215,14 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto) {
+        //判断本月是否已修改比例
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        List<SysPartnerTime> sysPartnerTimes = sysPartnerTimeMapper.selectList(new LambdaQueryWrapper<SysPartnerTime>()
+                .eq(SysPartnerTime::getCreateTime,format).eq(SysPartnerTime::getUserId,sysAgencyLeaderDto.getUserId()));
+        if (sysPartnerTimes.size() > 0) {
+            throw new DescribeException(format+"已设置过抽成比例,每月只能修改一次");
+        }
         //不修改负责人userId传null
         String userId = sysAgencyLeaderDto.getUserId();
         String loginId = BaseController.getUserId();
@@ -307,6 +333,17 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
         }
 
+        //修改抽成比例记录改变过程
+        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+        sysPartnerTime.setType(2);
+        sysPartnerTime.setCreateTime(format);
+        sysPartnerTime.setUserId(sysAgencyLeaderDto.getUserId());
+        sysPartnerTime.setUserName(sysAgencyLeaderDto.getUserName());
+        sysPartnerTime.setNewProportional(sysAgencyLeaderDto.getProportional());
+        sysPartnerTime.setOldProportional(sysAgencyLeader1.getProportional());
+
+        sysPartnerTimeMapper.insert(sysPartnerTime);
+
         return b;
     }
 
@@ -620,6 +657,70 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
     }
 
 
+    @Override
+    public BasePageResult<AgencyExtractFeeVo> queryExtractFeeAlls(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+        List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
+
+        Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
+        LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserId()), SysAgencyLeader::getUserId, sysAgencyLeaderPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserName()), SysAgencyLeader::getUserName, sysAgencyLeaderPageDto.getUserName());
+        wrapper.eq(SysAgencyLeader::getDelFlag, 1);
+        wrapper.orderByDesc(SysAgencyLeader::getId);
+
+        Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
+        List<SysAgencyLeader> records = insOrdersPage.getRecords();
+        if (records.size() > 0) {
+            for (SysAgencyLeader sysAgencyLeaders : records) {
+                AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
+                String userId = sysAgencyLeaders.getUserId();
+                //已提现抽成费用
+                BigDecimal historyFee = BigDecimal.ZERO;
+                SysUser sysUser = sysUserMapper.selectById(userId);
+                SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
+                agencyExtractFee.setUserId(userId);
+                agencyExtractFee.setUserName(sysUser.getName());
+                agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
+                agencyExtractFee.setDeptName(sysDept.getName());
+
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>().eq(SysPartnerAccount::getUserId, userId));
+                if (sysPartnerAccount != null) {
+                    BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
+                    BigDecimal extractFee = sysPartnerAccount.getExtractFee();
+                    agencyExtractFee.setSumpremium(sumPremium);
+                    agencyExtractFee.setExtractFee(extractFee);
+
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                            .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
+                            .eq(SysAgencyFeeApproval::getStatus, 1));
+                    if (sysAgencyFeeApprovals.size() > 0) {
+                        for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                            historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                        }
+                    }
+
+                    if (!extractFee.equals(BigDecimal.ZERO)) {
+                        //已提现
+                        agencyExtractFee.setHistoryFee(historyFee);
+                        //可提现 = 总抽成-已提现
+                        agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
+                    } else {
+                        agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
+                        agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO));
+                    }
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+
+        }
+
+        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+    }
+
+
     @Override
     public BasePageResult<TeamInformation> queryTeamInfoPage(TeamInformationDto teamInformationDto) {
         String userId = BaseController.getUserId();
@@ -914,6 +1015,14 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         return agencyUserInsAreaVoIPage;
     }
 
+    @Override
+    public IPage<AgencyUserInsAreaVo> queryInsAreaPageById(AgencyUserInsAreaDto agencyUserInsAreaDto) {
+        Page page = new Page(agencyUserInsAreaDto.getPageNum(), agencyUserInsAreaDto.getPageSize());
+
+        IPage<AgencyUserInsAreaVo> agencyUserInsAreaVoIPage = sysPremiumDetailsMapper.queryInsAreaPageById(page, agencyUserInsAreaDto);
+        return agencyUserInsAreaVoIPage;
+    }
+
     @Override
     public HttpResult queryUserInsAreaExcel(AgencyUserInsAreaDto agencyUserInsAreaDto) {
 

+ 11 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerAccountServiceImpl.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPartnerAccountMapper;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import com.ydtech.modules.admin.service.SysPartnerAccountService;
+import org.springframework.stereotype.Service;
+
+@Service("sysPartnerAccountService")
+public class SysPartnerAccountServiceImpl extends ServiceImpl<SysPartnerAccountMapper, SysPartnerAccount> implements SysPartnerAccountService {
+}

+ 40 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerConfigServiceImpl.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPartnerConfigMapper;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import com.ydtech.modules.admin.model.dto.SysPartnerConfigDto;
+import com.ydtech.modules.admin.service.SysPartnerConfigService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import org.springframework.stereotype.Service;
+
+@Service("sysPartnerConfigService")
+public class SysPartnerConfigServiceImpl extends ServiceImpl<SysPartnerConfigMapper, SysPartnerConfig> implements SysPartnerConfigService {
+
+    @Override
+    public BasePageResult<SysPartnerConfig> queryByPage(SysPartnerConfigDto sysPartnerConfigDto) {
+
+        Page<SysPartnerConfig> page = new Page<>(sysPartnerConfigDto.getPageNum(), sysPartnerConfigDto.getPageSize());
+        LambdaQueryWrapper<SysPartnerConfig> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPartnerConfig::getDelFlag,1);
+        wrapper.orderByDesc(SysPartnerConfig::getId);
+
+
+        Page<SysPartnerConfig> insOrdersPage = page(page, wrapper);
+
+        return new BasePageResult<>(sysPartnerConfigDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
+    }
+
+    @Override
+    public boolean deleteById(Long id) {
+        SysPartnerConfig sysPartnerConfig = new SysPartnerConfig();
+        sysPartnerConfig.setId(id);
+        sysPartnerConfig.setDelFlag(0);
+        return baseMapper.updateById(sysPartnerConfig)>0;
+    }
+
+
+}

+ 1045 - 110
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -11,13 +11,12 @@ import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
+import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
 import com.ydtech.modules.admin.service.SysPartnerService;
+import com.ydtech.modules.admin.service.SysPremiumDetailsService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -29,10 +28,10 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -64,6 +63,23 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     @Resource
     private SysAgencyLeaderService sysAgencyLeaderService;
 
+    @Resource
+    private SysPartnerTimeMapper sysPartnerTimeMapper;
+
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+
+    @Resource
+    private SysPremiumDetailsService sysPremiumDetailsService;
+
+    @Resource
+    private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
+    @Resource
+    private SysPartnerConfigMapper sysPartnerConfigMapper;
+
 
     @Override
     public List<SysPartner> queryRecommendAndPartner(String id) {
@@ -205,8 +221,17 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             sysPartner.setType(1);
             b = sysPartnerMapper.insert(sysPartner) > 0;
         }
-
-
+        //添加抽层比例,一个月只能设置一次
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+        sysPartnerTime.setType(1);
+        sysPartnerTime.setCreateTime(format);
+        sysPartnerTime.setUserId(sysPartnerDto.getUserId());
+        sysPartnerTime.setUserName(sysPartnerDto.getUserName());
+        sysPartnerTime.setNewProportional(sysPartnerDto.getProportional());
+
+        sysPartnerTimeMapper.insert(sysPartnerTime);
         return b;
     }
 
@@ -355,6 +380,71 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
     }
 
+    @Override
+    public BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto) {
+        List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
+
+        Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
+        LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPartner::getDelFlag, 1);
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName());
+        wrapper.orderByDesc(SysPartner::getId);
+
+        Page<SysPartner> insOrdersPage = page(page, wrapper);
+        List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
+        if (sysPartnerList.size() > 0) {
+            for (SysPartner sysPartner : sysPartnerList) {
+                String userId = sysPartner.getUserId();
+
+                AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
+                //已提现抽成费用
+                BigDecimal historyFee = BigDecimal.ZERO;
+                SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getId, userId)
+                        .ne(SysUser::getStatus, 0));
+                //填充查询人的姓名和机构
+                agencyExtractFee.setUserId(userId);
+                agencyExtractFee.setUserName(sysUser.getName());
+                agencyExtractFee.setDeptId(sysUser.getDeptId());
+                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                        .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+                agencyExtractFee.setDeptName(sysDept.getName());
+
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                        .eq(SysPartnerAccount::getUserId, userId));
+                if (sysPartnerAccount != null) {
+
+                    BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
+                    BigDecimal extractFee = sysPartnerAccount.getExtractFee();
+                    agencyExtractFee.setSumpremium(sumPremium);
+                    agencyExtractFee.setExtractFee(extractFee);
+
+
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                            .eq(SysAgencyFeeApproval::getUserId, sysPartner.getUserId())
+                            .eq(SysAgencyFeeApproval::getStatus, 1));
+                    if (sysAgencyFeeApprovals.size() > 0) {
+                        for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                            historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                        }
+                    }
+                    agencyExtractFee.setHistoryFee(historyFee);
+                    //可提现 = 总抽成-已提现
+                    agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
+
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+        }
+
+        return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+
+    }
+
     @Override
     public BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto) {
         List<SysPartnerAPPPageVo> sysPartnerAPPPageVoList = new ArrayList<>();
@@ -466,12 +556,20 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean edit(SysPartnerDto sysPartnerDto) {
+        //判断本月是否已修改比例
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        List<SysPartnerTime> sysPartnerTimes = sysPartnerTimeMapper.selectList(new LambdaQueryWrapper<SysPartnerTime>()
+                .eq(SysPartnerTime::getCreateTime, format).eq(SysPartnerTime::getUserId, sysPartnerDto.getUserId()));
+        if (sysPartnerTimes.size() > 0) {
+            throw new DescribeException(format + "已设置过抽成比例,每月只能修改一次");
+        }
         boolean b;
         SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
                 .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId()));
         if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!");
 
-        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId()))  {
+        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId())) {
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
@@ -481,7 +579,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
                     .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
             if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
-            partner.setType(sysPartnerSuggest.getType()+1);
+            partner.setType(sysPartnerSuggest.getType() + 1);
             b = sysPartnerMapper.updateById(partner) > 0;
 
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
@@ -515,11 +613,19 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
-            //判断本月是否已修改比例 TODO
 
             b = sysPartnerMapper.updateById(partner) > 0;
         }
+        //修改抽成比例记录改变过程
+        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+        sysPartnerTime.setType(1);
+        sysPartnerTime.setCreateTime(format);
+        sysPartnerTime.setUserId(sysPartnerDto.getUserId());
+        sysPartnerTime.setUserName(sysPartnerDto.getUserName());
+        sysPartnerTime.setNewProportional(sysPartnerDto.getProportional());
+        sysPartnerTime.setOldProportional(sysPartner.getProportional());
 
+        sysPartnerTimeMapper.insert(sysPartnerTime);
 
         return b;
     }
@@ -544,138 +650,967 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         if (records.size() > 0) {
             for (SysAgencyLeader sysAgencyLeaders : records) {
                 AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
-                //总保费
-                BigDecimal bigDecimal = BigDecimal.ZERO;
+                String userId = sysAgencyLeaders.getUserId();
                 //已提现抽成费用
                 BigDecimal historyFee = BigDecimal.ZERO;
-                SysUser sysUser = sysUserMapper.selectById(sysAgencyLeaders.getUserId());
+                SysUser sysUser = sysUserMapper.selectById(userId);
                 SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
-                agencyExtractFee.setUserId(sysAgencyLeaders.getUserId());
+                agencyExtractFee.setUserId(userId);
                 agencyExtractFee.setUserName(sysUser.getName());
                 agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
                 agencyExtractFee.setDeptName(sysDept.getName());
-                agencyExtractFee.setProportional(sysAgencyLeaders.getProportional());
-                //筛选订单,选择时间
-                Date updateTime = sysAgencyLeaders.getUpdateTime();
-                Date createTime = sysAgencyLeaders.getCreateTime();
-                String dateStr = "";
-                if (updateTime != null) {
-                    dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
-                    agencyExtractFee.setStartTime(updateTime);
+
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                        .eq(SysPartnerAccount::getUserId, userId));
+                if (sysPartnerAccount != null) {
+                    BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
+                    BigDecimal extractFee = sysPartnerAccount.getExtractFee();
+                    agencyExtractFee.setSumpremium(sumPremium);
+                    agencyExtractFee.setExtractFee(extractFee);
+
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                            .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
+                            .eq(SysAgencyFeeApproval::getStatus, 1));
+                    if (sysAgencyFeeApprovals.size() > 0) {
+                        for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                            historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                        }
+                    }
+
+                    if (!extractFee.equals(BigDecimal.ZERO)) {
+                        //已提现
+                        agencyExtractFee.setHistoryFee(historyFee);
+                        //可提现 = 总抽成-已提现
+                        agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
+                    } else {
+                        agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
+                        agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO));
+                    }
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+
+        }
+
+        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+
+    }
+
+    @Override
+    public APPPartnerInfoFreeVo getTeamInfo(PartnerGradeInfo partnerGradeInfo) {
+        APPPartnerInfoFreeVo appPartnerInfoFreeVo = new APPPartnerInfoFreeVo();
+
+        List<APPPartnerInfo> appPartnerInfoList = new ArrayList<>();
+
+        List<String> deptIds = partnerGradeInfo.getDeptIds();
+        if (CollectionUtil.isEmpty(deptIds)) {
+            return appPartnerInfoFreeVo;
+        }
+        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                .in(SysDept::getId, deptIds).eq(SysDept::getDelFlag, 0));
+        if (sysDeptList.size() == 0) {
+            return appPartnerInfoFreeVo;
+        }
+        for (SysDept sysDept : sysDeptList) {
+            APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
+            appPartnerInfo.setDeptId(sysDept.getId());
+            appPartnerInfo.setDeptName(sysDept.getName());
+            String leaderId = sysDept.getLeaderId();
+            if (StringUtils.isNotEmpty(leaderId)) {
+                appPartnerInfo.setLeaderId(leaderId);
+                SysUser sysUser = sysUserMapper.selectById(leaderId);
+                appPartnerInfo.setLeaderName(sysUser.getName());
+            }
+
+            //获取机构下的团队
+            List<SysDept> sysDepTeam = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                    .likeRight(SysDept::getId, sysDept.getId())
+                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                    .eq(SysDept::getManagementSource, sysDept.getManagementSource()));
+            //机构下每个团队人数id集合
+            List<String> userIdList = new ArrayList<>();
+            int deptManNum = 0;
+            if (sysDepTeam.size() > 0) {
+                for (SysDept sysDept1 : sysDepTeam) {
+                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                            .likeRight(SysUser::getId, sysDept1.getId()).ne(SysUser::getStatus, 0));
+                    deptManNum = deptManNum + sysUsers.size();
+                    if (sysUsers.size() > 0) {
+                        List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                        userIdList.addAll(collect);
+                    }
+
+                }
+            }
+            appPartnerInfo.setTeamManNum(deptManNum);
+            appPartnerInfo.setUserIds(userIdList);
+
+            //查团队的保费
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(SysPremiumDetails::getUserId, userIdList)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            appPartnerInfo.setSumPremium(sumPremium);
+
+            List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                    .in(SysUserAccountHistory::getUserId, userIdList).eq(SysUserAccountHistory::getProperty, 3));
+
+            BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            appPartnerInfo.setExtractFee(extractFee);
+
+            appPartnerInfoList.add(appPartnerInfo);
+        }
+        List<String> ids = new ArrayList<>();
+        List<List<String>> collect = appPartnerInfoList.stream().map(APPPartnerInfo::getUserIds).collect(Collectors.toList());
+        if (collect.size() > 0) {
+            for (List<String> list : collect) {
+                ids.addAll(list);
+            }
+        }
+
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(SysPremiumDetails::getUserId, ids)
+                .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                        SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        appPartnerInfoFreeVo.setSumPremium(sumPremium);
+
+        List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                .in(SysUserAccountHistory::getUserId, ids).eq(SysUserAccountHistory::getProperty, 3));
+
+        BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        appPartnerInfoFreeVo.setExtractFee(extractFee);
+
+        int sum = appPartnerInfoList.stream().mapToInt(APPPartnerInfo::getTeamManNum).sum();
+        appPartnerInfoFreeVo.setTeamManNum(sum);
+
+        appPartnerInfoFreeVo.setAppPartnerInfos(appPartnerInfoList);
+
+        return appPartnerInfoFreeVo;
+    }
+
+    @Override
+    public AppPartnerNumVo getHomePage(Integer type) {
+        AppPartnerNumVo appPartnerNumVo = new AppPartnerNumVo();
+        //合伙人:1 ;工作室管理员:2
+        String userId = BaseController.getUserId();
+        SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                .eq(SysPartnerAccount::getUserId, userId));
+        appPartnerNumVo.setSumPremium(sysPartnerAccount.getSumPremium());
+        appPartnerNumVo.setExtractFee(sysPartnerAccount.getExtractFee());
+        if (type == 1) {
+            //下面合伙人(直接+间接)数量
+            List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getType, 0));
+
+            appPartnerNumVo.setPartnerNum(sysRelationPersonList1.size());
+
+            //直接工作室数量
+            List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getSource, 0)
+                    .eq(SysRelationPerson::getType, 1));
+            appPartnerNumVo.setWorkroomNum(sysRelationPersonList.size());
+            List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            appPartnerNumVo.setLeaderIds(collect);
+            //登录人下面的所有团队人数
+            List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getType, 1));
+
+            List<String> ids = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(CollectionUtil.isNotEmpty(ids), SysAgencyLeader::getUserId, ids).eq(SysAgencyLeader::getDelFlag, 1));
+            int deptManNum = 0;
+            if (leaderList.size() > 0) {
+                for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                    //获取机构下的团队
+                    List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                            .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                            .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                            .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                    if (sysDeptList.size() > 0) {
+                        for (SysDept sysDept : sysDeptList) {
+                            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                    .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                            deptManNum = deptManNum + sysUsers.size();
+
+                        }
+                    }
+                }
+
+                appPartnerNumVo.setTeamManNum(deptManNum);
+            }
+        } else {
+            int deptManNum = 0;
+            SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(SysAgencyLeader::getUserId, userId).eq(SysAgencyLeader::getDelFlag, 1));
+            //获取机构下的团队
+            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+            appPartnerNumVo.setWorkroomTeamNum(sysDeptList.size());
+            List<String> deptIds = new ArrayList<>();
+            if (sysDeptList.size() > 0) {
+                for (SysDept sysDept : sysDeptList) {
+                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                    deptManNum = deptManNum + sysUsers.size();
+                    deptIds.add(sysDept.getId());
+                }
+                appPartnerNumVo.setWorkroomManNum(deptManNum);
+                appPartnerNumVo.setTeamManNum(deptManNum);
+                appPartnerNumVo.setDeptIds(deptIds);
+            }
+
+        }
+
+        return appPartnerNumVo;
+    }
+
+    @Override
+    public AppUserInfoVo getUserInfo(Integer type) {
+        String userId = BaseController.getUserId();
+        AppUserInfoVo appUserInfoVo = sysUserMapper.queryByUserId(userId);
+        if (type == 1) {
+            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                    .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, userId));
+            SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper<SysPartnerConfig>()
+                    .eq(SysPartnerConfig::getDelFlag,1).eq(SysPartnerConfig::getLevel,sysPartner.getType()));
+
+            appUserInfoVo.setSysPartnerConfig(sysPartnerConfig);
+        }
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        ZoneId zoneId = ZoneId.systemDefault();
+        Date entryTime = appUserInfoVo.getEntryTime();
+        if (entryTime != null) {
+            LocalDate localDate = entryTime.toInstant().atZone(zoneId).toLocalDate();
+            // 计算年数
+            long years = ChronoUnit.YEARS.between(localDate, currentDate);
+            appUserInfoVo.setYears(years);
+        }
+
+        return appUserInfoVo;
+    }
+
+    @Override
+    public SysPartnerAccount getFee() {
+        String userId = BaseController.getUserId();
+
+        return sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>().eq(SysPartnerAccount::getUserId, userId));
+    }
+
+    @Override
+    public List<AppSysPartnerVo> partnerInfo(PartnerInfoDto partnerInfoDto) {
+        List<AppSysPartnerVo> appSysPartnerVos = new ArrayList<>();
+        String userId = BaseController.getUserId();
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
+        //查询登陆人下所有合伙人
+        List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
+
+        Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
+                .collect(Collectors.groupingBy(SysPartner::getType));
+        //按等级查询
+        Integer partnerType = partnerInfoDto.getPartnerType();
+        if (partnerType != null) {
+            List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType);
+
+            if (sysPartnerList1 != null) {
+                AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
+                //下级合伙人数
+                appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
+                List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                appSysPartnerVo.setPartnerIds(ids);
+                List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids)
+                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+//                appSysPartnerVo.setSumPremium(sumPremium);
+//                appSysPartnerVo.setExtractFee(extractFee);
+                //二级以下团队的总人数
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+                int deptManNum = 0;
+                if (sysRelationPersonList.size() > 0) {
+                    List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                    if (leaderList.size() > 0) {
+                        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                            //获取机构下的团队
+                            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                            if (sysDeptList.size() > 0) {
+                                for (SysDept sysDept : sysDeptList) {
+                                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
+                            }
+                        }
+                    }
+                }
+//                appSysPartnerVo.setTeamManNum(deptManNum);
+
+                List<String> list = new ArrayList<>();
+                if (partnerType == 1) {
+                    //一级获取登陆人的之际工作室
+                    list.add(userId);
                 } else {
-                    dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
-                    agencyExtractFee.setStartTime(createTime);
+
+                    //获取上一级合伙人,查询工作室数量
+                    List<SysPartner> sysPartners = listMap.get(sysPartner.getType() + partnerType - 1);
+                    //上一级直接推荐的工作室数量
+                    List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                    list.addAll(list1);
                 }
-                HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
-                if (CollectionUtil.isNotEmpty(map)) {
+                List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(list), SysRelationPerson::getSuggestId, list)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getSource, 0)
+                        .eq(SysRelationPerson::getType, 1));
+                appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
+                List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                appSysPartnerVo.setLeaderIds(list1);
+
+                //直接工作室保费
+                List<SysPremiumDetails> sysPremiumDetails1 = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, list1)
+                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                appSysPartnerVo.setSumPremium(sumPremium.add(sumPremium1));
+                appSysPartnerVo.setExtractFee(extractFee.add(extractFee1));
+                int leaderManNum=0;
+                //直接工作室总
+                List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                        .in(CollectionUtil.isNotEmpty(list1), SysAgencyLeader::getUserId, list1).eq(SysAgencyLeader::getDelFlag, 1));
+
+                if (leaderList.size() > 0) {
+                    for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                        //获取机构下的团队
+                        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                        if (sysDeptList.size() > 0) {
+                            for (SysDept sysDept : sysDeptList) {
+                                List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                        .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                leaderManNum = leaderManNum + sysUsers.size();
 
-                    bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
+                            }
+                        }
+                    }
                 }
-                agencyExtractFee.setSumpremium(bigDecimal);
-                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional())
-                        .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
-                agencyExtractFee.setExtractFee(multiply);
-                // 填充 已提现抽成费用和可提现抽成费用
-                List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
-                        .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
-                        .eq(SysAgencyFeeApproval::getStatus, 1));
-                if (sysAgencyFeeApprovals.size() > 0) {
-                    for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
-                        historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+
+                appSysPartnerVo.setTeamManNum(deptManNum+leaderManNum);
+
+                appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber());
+
+                //每一级存入map
+                appSysPartnerVo.setPartnerType(partnerType);
+                appSysPartnerVos.add(appSysPartnerVo);
+            }
+
+            return appSysPartnerVos;
+
+        }
+
+        for (int i = 1; i <= listMap.size(); i++) {
+            //二级
+            List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + i);
+            if (sysPartnerList1.size() > 0) {
+                AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
+                //下级合伙人数
+                appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
+                List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                appSysPartnerVo.setPartnerIds(ids);
+                List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids)
+                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                //同等级合伙人团队的总人数:
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+                int deptManNum = 0;
+                if (sysRelationPersonList.size() > 0) {
+                    List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                    if (leaderList.size() > 0) {
+                        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                            //获取机构下的团队
+                            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                            if (sysDeptList.size() > 0) {
+                                for (SysDept sysDept : sysDeptList) {
+                                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
+                            }
+                        }
                     }
                 }
 
-                if (!bigDecimal.equals(BigDecimal.ZERO)) {
-                    //已提现
-                    agencyExtractFee.setHistoryFee(historyFee);
-                    //可提现 = 总抽成-已提现
-                    agencyExtractFee.setCashFee(multiply.subtract(historyFee));
+                List<String> list = new ArrayList<>();
+                if (i == 1) {
+                    //一级获取登陆人的之际工作室
+                    list.add(userId);
                 } else {
-                    agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
-                    agencyExtractFee.setCashFee(multiply.subtract(BigDecimal.ZERO));
+
+                    //获取上一级合伙人,查询工作室数量
+                    List<SysPartner> sysPartners = listMap.get(sysPartner.getType() + i - 1);
+                    //上一级直接推荐的工作室数量
+                    List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                    list.addAll(list1);
                 }
-                agencyExtractFeeList.add(agencyExtractFee);
+                List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(list), SysRelationPerson::getSuggestId, list)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getSource, 0)
+                        .eq(SysRelationPerson::getType, 1));
+                appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
+                List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                appSysPartnerVo.setLeaderIds(list1);
+                //直接工作室保费
+                List<SysPremiumDetails> sysPremiumDetails1 = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, list1)
+                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                appSysPartnerVo.setSumPremium(sumPremium.add(sumPremium1));
+                appSysPartnerVo.setExtractFee(extractFee.add(extractFee1));
+                int leaderManNum=0;
+                //直接工作室总
+                List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                        .in(CollectionUtil.isNotEmpty(list1), SysAgencyLeader::getUserId, list1).eq(SysAgencyLeader::getDelFlag, 1));
+
+                if (leaderList.size() > 0) {
+                    for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                        //获取机构下的团队
+                        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                        if (sysDeptList.size() > 0) {
+                            for (SysDept sysDept : sysDeptList) {
+                                List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                        .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                leaderManNum = leaderManNum + sysUsers.size();
+
+                            }
+                        }
+                    }
+                }
+
+                appSysPartnerVo.setTeamManNum(deptManNum+leaderManNum);
+
+                appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber());
+                appSysPartnerVo.setPartnerType(i);
+                //每一级存入map
+                appSysPartnerVos.add(appSysPartnerVo);
+            }
+        }
+
+        return appSysPartnerVos;
+    }
+
+    @Override
+    public PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo) {
+        PartnerInfoFreeVo partnerInfoFreeVo = new PartnerInfoFreeVo();
+        List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
+        //合伙人:1;工作室:2
+        Integer type = partnerGradeInfo.getType();
+        if (type == 1) {
+            List<String> partnerIds = partnerGradeInfo.getPartnerIds();
+            if (CollectionUtil.isEmpty(partnerIds)) {
+                return partnerInfoFreeVo;
+            }
+            //费用
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(SysPremiumDetails::getUserId, partnerIds)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+            partnerInfoFreeVo.setSumPremium(sumPremium);
+            partnerInfoFreeVo.setExtractFee(extractFee);
+
+            //合伙人
+            List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                    .in(SysPartner::getUserId, partnerGradeInfo.getPartnerIds()).eq(SysPartner::getDelFlag, 1));
+            if (sysPartnerList.size() > 0) {
+                for (SysPartner sysPartner : sysPartnerList) {
+                    PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+                    partnerInfoVo.setLevel(partnerGradeInfo.getLevel());
+                    String userId = sysPartner.getUserId();
+                    partnerInfoVo.setUserId(userId);
+                    SysUser sysUser = sysUserMapper.selectById(userId);
+                    partnerInfoVo.setUserName(sysUser.getName());
+                    SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
+                    partnerInfoVo.setSuggestName(sysUser1.getName());
+                    //费用
+                    List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                            .eq(SysPremiumDetails::getUserId, userId)
+                            .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                                    SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                            .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+                    BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    partnerInfoVo.setSumPremium(sumPremium1);
+                    partnerInfoVo.setExtractFee(extractFee1);
+                    //直接合伙人
+                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 0)
+                            .eq(SysRelationPerson::getSource, 0));
+                    List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    partnerInfoVo.setPartnerIds(collect);
+                    partnerInfoVo.setPartnerNumber(collect.size());
+
+                    //直接管理员
+                    List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1)
+                            .eq(SysRelationPerson::getSource, 0));
+
+                    List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    partnerInfoVo.setLeaderIds(collects);
+                    partnerInfoVo.setWorkNumber(collects.size());
 
+                    //合伙人下所有工作室数
+                    List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1));
+
+                    int deptManNum = 0;
+                    if (sysRelationPersonList2.size() > 0) {
+                        List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                                .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                        if (leaderList.size() > 0) {
+                            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                                //获取机构下的团队
+                                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                                if (sysDeptList.size() > 0) {
+                                    for (SysDept sysDept : sysDeptList) {
+                                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                        deptManNum = deptManNum + sysUsers.size();
+
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    partnerInfoVo.setTeamManNum(deptManNum);
+
+                    partnerInfoVoList.add(partnerInfoVo);
+                }
+
+                partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
+            }
+        } else {
+            //工作室
+            List<String> leaderIds = partnerGradeInfo.getLeaderIds();
+            if (CollectionUtil.isEmpty(leaderIds)) {
+                return partnerInfoFreeVo;
+            }
+            //费用
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(SysPremiumDetails::getUserId, leaderIds)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+            partnerInfoFreeVo.setSumPremium(sumPremium);
+            partnerInfoFreeVo.setExtractFee(extractFee);
+
+
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
+
+            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+
+                String userId = sysAgencyLeader.getUserId();
+                partnerInfoVo.setUserId(userId);
+                SysUser sysUser = sysUserMapper.selectById(userId);
+                partnerInfoVo.setUserName(sysUser.getName());
+                SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
+                partnerInfoVo.setSuggestName(sysUser1.getName());
+
+                //费用
+                List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .eq(SysPremiumDetails::getUserId, userId)
+                        .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                        .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+                BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                partnerInfoVo.setSumPremium(sumPremium1);
+                partnerInfoVo.setExtractFee(extractFee1);
+
+                int deptManNum = 0;
+                //获取机构下的团队
+                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+
+                partnerInfoVo.setDeptNum(sysDeptList.size());
+                List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
+                partnerInfoVo.setDeptIds(collect);
+                if (sysDeptList.size() > 0) {
+                    for (SysDept sysDept : sysDeptList) {
+                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                        deptManNum = deptManNum + sysUsers.size();
+
+                    }
+                }
+                partnerInfoVo.setTeamManNum(deptManNum);
+
+                partnerInfoVoList.add(partnerInfoVo);
             }
 
         }
+        int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
+        partnerInfoFreeVo.setTeamManNum(sum);
+        partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
 
-        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
-                agencyExtractFeeList);
+        return partnerInfoFreeVo;
+    }
+
+    @Override
+    public BasePageResult<SysPremiumDetails> getCommissionInfo(CommissionInfoDto commissionInfoDto) {
+        String userId = BaseController.getUserId();
+
+        Page<SysPremiumDetails> page = new Page<>(commissionInfoDto.getPageNum(), commissionInfoDto.getPageSize());
+
+        LambdaQueryWrapper<SysPremiumDetails> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPremiumDetails::getUserId, userId);
+        wrapper.eq(commissionInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, commissionInfoDto.getIndustrySector());
+        wrapper.between(StringUtils.isNotEmpty(commissionInfoDto.getBeginTime()) && StringUtils.isNotEmpty(commissionInfoDto.getEndTime()),
+                SysPremiumDetails::getCreateTime, commissionInfoDto.getBeginTime(), commissionInfoDto.getEndTime());
+        wrapper.orderByDesc(SysPremiumDetails::getId);
+
+        Page<SysPremiumDetails> insOrdersPage = sysPremiumDetailsService.page(page, wrapper);
 
+
+        return new BasePageResult<>(commissionInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
     }
 
     @Override
-    public List<SysPartner> partnerInfo(String beginTime, String endTime) {
+    public TeamUserInfosFreeVo getTeamUserInfo(TeamUserInfosDto teamUserInfosDto) {
+        TeamUserInfosFreeVo teamUserInfosFreeVo = new TeamUserInfosFreeVo();
 
-        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                .eq(StringUtils.isNotEmpty(BaseController.getUserId()), SysRelationPerson::getSuggestId, BaseController.getUserId())
-                .eq(SysRelationPerson::getDelFlag, 1)
-                .eq(SysRelationPerson::getType, 0));
-        if (sysRelationPersonList.size() == 0) return null;
-        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-        List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
-                .eq(SysPartner::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysPartner::getUserId, collect)
-                .between(StringUtils.isNotEmpty(beginTime) && StringUtils.isNotEmpty(endTime)
-                        ,SysPartner::getCreateTime,beginTime,endTime));
+        List<TeamUserInfosVo> userInfosVoList = new ArrayList<>();
+        List<String> userIds = teamUserInfosDto.getUserIds();
+        if (CollectionUtil.isEmpty(userIds)) {
+            return teamUserInfosFreeVo;
+        }
+        //费用
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(SysPremiumDetails::getUserId, userIds)
+                .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()),
+                        SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime())
+                .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        teamUserInfosFreeVo.setSumPremium(sumPremium);
+        List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                .in(SysUserAccountHistory::getUserId, userIds).eq(SysUserAccountHistory::getProperty, 3)
+                .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector()));
+
+        BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        teamUserInfosFreeVo.setExtractFee(extractFee);
+
+
+        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                .ne(SysUser::getStatus, 0).in(SysUser::getId, teamUserInfosDto.getUserIds()));
+        for (SysUser sysUser : sysUsers) {
+            TeamUserInfosVo teamUserInfosVo = new TeamUserInfosVo();
+            teamUserInfosVo.setUserId(sysUser.getId());
+            teamUserInfosVo.setUserName(sysUser.getName());
+            String leaderId = sysUser.getLeaderId();
+            if (StringUtils.isNotEmpty(leaderId)) {
+                teamUserInfosVo.setLeaderId(sysUser.getLeaderId());
+                SysUser sysUser1 = sysUserMapper.selectById(sysUser.getLeaderId());
+                teamUserInfosVo.setLeaderName(sysUser1.getName());
+            }
 
-        return sysPartnerList;
+            //费用
+            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getUserId, sysUser.getId())
+                    .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()),
+                            SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime())
+                    .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector()));
+            BigDecimal sumPremium1 = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            teamUserInfosVo.setSumPremium(sumPremium1);
+            List<SysUserAccountHistory> sysUserAccountHistorie = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                    .in(SysUserAccountHistory::getUserId, sysUser.getId()).eq(SysUserAccountHistory::getProperty, 3)
+                    .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector()));
+
+            BigDecimal extractFee1 = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            teamUserInfosVo.setExtractFee(extractFee1);
+
+            userInfosVoList.add(teamUserInfosVo);
+        }
+        teamUserInfosFreeVo.setTeamManNum(userIds.size());
+        teamUserInfosFreeVo.setTeamUserInfosVoList(userInfosVoList);
+
+        return teamUserInfosFreeVo;
     }
 
     @Override
-    public APPPartnerInfo getLeaderInfo(String userId) {
-        APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
-        //查询合伙人有关系的工作室管理员
-        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                .eq(StringUtils.isNotEmpty(userId), SysRelationPerson::getSuggestId, userId)
-                .eq(SysRelationPerson::getDelFlag, 1)
-                .eq(SysRelationPerson::getType, 1));
-        if (sysRelationPersonList.size() == 0) return null;
+    public FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto) {
+        FilterPartnerInfoVo filterPartnerInfoVo = new FilterPartnerInfoVo();
 
-        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                .eq(SysAgencyLeader::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysAgencyLeader::getUserId, collect));
-
-        List<AgencyLeaderInfo> agencyLeaderInfos = BeanUtil.copyToList(leaderList, AgencyLeaderInfo.class);
-        for (AgencyLeaderInfo agencyLeaderInfo : agencyLeaderInfos) {
-
-            SysUser sysUser = sysUserMapper.selectById(agencyLeaderInfo.getUserId());
-            agencyLeaderInfo.setUserName(sysUser.getName());
-            SysUser sysUser1 = sysUserMapper.selectById(agencyLeaderInfo.getSuggestId());
-            agencyLeaderInfo.setSuggestName(sysUser1.getName());
-            SysDept sysDept = sysDeptMapper.selectById(agencyLeaderInfo.getDeptId());
-            agencyLeaderInfo.setDeptName(sysDept.getName());
-            //填充费用
-            AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(agencyLeaderInfo.getUserId());
-            BigDecimal sumpremium = agencyExtractFee.getSumpremium();
-            agencyLeaderInfo.setSumPremium(sumpremium);
-            BigDecimal percentage = new BigDecimal(agencyLeaderInfo.getProportional()).divide(new BigDecimal("100"));
-            agencyLeaderInfo.setProportional(percentage.toString());
-            BigDecimal extractFee = sumpremium.multiply(percentage).setScale(2, RoundingMode.DOWN);
-            agencyLeaderInfo.setExtractFee(extractFee);
-
-            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                    .likeRight(SysUser::getId, agencyLeaderInfo.getDeptId()).ne(SysUser::getStatus, 0));
-            agencyLeaderInfo.setNumber(sysUsers.size());
-        }
-        appPartnerInfo.setAgencyLeaderInfo(agencyLeaderInfos);
-        //机构总人数
-        long count = agencyLeaderInfos.stream().mapToInt(AgencyLeaderInfo::getNumber).count();
-        appPartnerInfo.setNumber(count);
-        //总保费
-        BigDecimal reduce = agencyLeaderInfos.stream().map(AgencyLeaderInfo::getSumPremium).reduce(BigDecimal.ZERO, BigDecimal::add);
-        appPartnerInfo.setSumpremium(reduce);
-
-        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, userId));
-        BigDecimal percentage = new BigDecimal(sysPartner.getProportional()).divide(new BigDecimal("100"));
-        appPartnerInfo.setExtractFee(reduce.multiply(percentage).setScale(2, RoundingMode.DOWN));
-
-        return appPartnerInfo;
+        String userId = BaseController.getUserId();
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
+        //查询登陆人下所有合伙人
+        List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
+
+        Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
+                .collect(Collectors.groupingBy(SysPartner::getType));
+        Integer partnerType = filterPartnerInfoDto.getPartnerType();
+
+        List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType);
+        List<String> collect1 = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+        if (collect1.size() == 0) {
+            return filterPartnerInfoVo;
+        }
+        //费用
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(CollectionUtil.isNotEmpty(collect1), SysPremiumDetails::getUserId, collect1)
+                .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()),
+                        SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime())
+                .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+        filterPartnerInfoVo.setSumPremium(sumPremium);
+        filterPartnerInfoVo.setExtractFee(extractFee);
+
+        if (sysPartnerList1.size() > 0) {
+
+            List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
+            for (SysPartner partner : sysPartnerList1) {
+
+                PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+
+                String id = sysPartner.getUserId();
+                partnerInfoVo.setUserId(id);
+                SysUser sysUser = sysUserMapper.selectById(id);
+                partnerInfoVo.setUserName(sysUser.getName());
+                SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
+                partnerInfoVo.setSuggestName(sysUser1.getName());
+                //费用
+                List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .eq(SysPremiumDetails::getUserId, userId)
+                        .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime())
+                        .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                partnerInfoVo.setSumPremium(sumPremium1);
+                partnerInfoVo.setExtractFee(extractFee1);
+                //直接合伙人
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 0)
+                        .eq(SysRelationPerson::getSource, 0));
+                List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                partnerInfoVo.setPartnerIds(collect);
+
+                //直接管理员
+                List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1)
+                        .eq(SysRelationPerson::getSource, 0));
+
+                List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                partnerInfoVo.setLeaderIds(collects);
+
+                partnerInfoVo.setPartnerNumber(collects.size() + collect.size());
+
+                //工作室数
+                List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+
+                int deptManNum = 0;
+                if (sysRelationPersonList2.size() > 0) {
+                    List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                    if (leaderList.size() > 0) {
+                        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                            //获取机构下的团队
+                            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                            if (sysDeptList.size() > 0) {
+                                for (SysDept sysDept : sysDeptList) {
+                                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
+                            }
+                        }
+                    }
+                    partnerInfoVo.setTeamManNum(deptManNum);
+                }
+
+                partnerInfoVoList.add(partnerInfoVo);
+
+            }
+            int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
+            filterPartnerInfoVo.setPartnerInfoVoList(partnerInfoVoList);
+            filterPartnerInfoVo.setTeamManNum(sum);
+
+        }
+
+        return filterPartnerInfoVo;
     }
 
+    @Override
+    public PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo) {
+        PartnerLeaderInfoVo partnerLeaderInfoVo = new PartnerLeaderInfoVo();
+
+        List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
+        //工作室
+        List<String> leaderIds = partnerGradeInfo.getLeaderIds();
+        if (CollectionUtil.isEmpty(leaderIds)) {
+            return partnerLeaderInfoVo;
+        }
+        //费用
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(SysPremiumDetails::getUserId, leaderIds)
+                .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                        SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+        partnerLeaderInfoVo.setSumPremium(sumPremium);
+        partnerLeaderInfoVo.setExtractFee(extractFee);
+
+        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
+        List<String> userIds = new ArrayList<>();
+
+        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+            PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+
+            String userId = sysAgencyLeader.getUserId();
+            partnerInfoVo.setUserId(userId);
+            SysUser sysUser = sysUserMapper.selectById(userId);
+            partnerInfoVo.setUserName(sysUser.getName());
+            SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
+            partnerInfoVo.setSuggestName(sysUser1.getName());
+
+            //费用
+            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getUserId, userId)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+            partnerInfoVo.setSumPremium(sumPremium1);
+            partnerInfoVo.setExtractFee(extractFee1);
+
+            int deptManNum = 0;
+            //获取机构下的团队
+            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
 
+            partnerInfoVo.setDeptNum(sysDeptList.size());
+            List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
 
+            partnerInfoVo.setDeptIds(collect);
 
+            if (sysDeptList.size() > 0) {
+                for (SysDept sysDept : sysDeptList) {
+                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                    deptManNum = deptManNum + sysUsers.size();
+                    if (sysUsers.size() > 0) {
+
+                        List<String> collect1 = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                        userIds.addAll(collect1);
+                    }
+
+                }
+            }
+            partnerInfoVo.setTeamManNum(deptManNum);
+            partnerInfoVo.setLevel(partnerGradeInfo.getLevel());
+
+            partnerInfoVoList.add(partnerInfoVo);
+        }
+        int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
+        partnerLeaderInfoVo.setUserIds(userIds);
+        partnerLeaderInfoVo.setTeamManNum(sum);
+        partnerLeaderInfoVo.setPartnerInfoVoList(partnerInfoVoList);
+
+
+        return partnerLeaderInfoVo;
+    }
 
 
 }

+ 24 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerTimeServiceImpl.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPartnerTimeMapper;
+import com.ydtech.modules.admin.model.SysPartnerTime;
+import com.ydtech.modules.admin.service.SysPartnerTimeService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+@Service("sysPartnerTimeService")
+public class SysPartnerTimeServiceImpl extends ServiceImpl<SysPartnerTimeMapper, SysPartnerTime> implements SysPartnerTimeService {
+    @Resource
+    private SysPartnerTimeMapper sysPartnerTimeMapper;
+
+
+}

+ 99 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressHistoryServiceImpl.java

@@ -3,15 +3,22 @@ package com.ydtech.modules.admin.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysDeptMapper;
 import com.ydtech.modules.admin.dao.SysPcAddressHistoryMapper;
+import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.po.SysPcAddressHistory;
 import com.ydtech.modules.admin.service.SysPcAddressHistoryService;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.utils.StringUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【sys_pc_address_history(pc获取ip地址记录表)】的数据库操作Service实现
@@ -20,6 +27,12 @@ import org.springframework.stereotype.Service;
 @Service
 public class SysPcAddressHistoryServiceImpl extends ServiceImpl<SysPcAddressHistoryMapper, SysPcAddressHistory>
     implements SysPcAddressHistoryService {
+    @Resource
+    private SysUserService sysUserService;
+
+    @Resource
+    private SysDeptMapper sysDeptMapper;
+
 
     @Override
     public BasePageResult<SysPcAddressHistory> queryPositionList(SysGeographyPositionPageDto sysGeographyPositionPageDto) {
@@ -30,11 +43,97 @@ public class SysPcAddressHistoryServiceImpl extends ServiceImpl<SysPcAddressHist
         wrapper.orderByDesc(SysPcAddressHistory::getOperationTime);
 
         Page<SysPcAddressHistory> insOrdersPage = page(page, wrapper);
+        List<SysPcAddressHistory> records = insOrdersPage.getRecords();
+        for (SysPcAddressHistory record : records) {
+            SysUser sysUser = sysUserService.getById(record.getUserId());
+            if (sysUser == null) continue;
+            record.setLeaderName(sysUser.getLeaderName());
+            String deptName = getDeptName(sysUser.getDeptId());
+            record.setDeptName(deptName);
+        }
 
         return new BasePageResult<>(sysGeographyPositionPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
                 insOrdersPage.getRecords());
     }
 
+    private String getDeptName(String deptId) {
+        StringBuilder stringBuilder = new StringBuilder();
+        SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                .eq(SysDept::getId, deptId).eq(SysDept::getDelFlag, 0));
+        if (StringUtils.isEmpty(sysDept.getComlevel())) {
+            SysDept sysDept5 = sysDeptMapper.selectById(sysDept.getParentId());
+            if (sysDept5 == null) {
+                stringBuilder.append(sysDept.getName());
+            } else {
+                SysDept sysDept4 = sysDeptMapper.selectById(sysDept5.getParentId());
+                if (sysDept4 == null) {
+                    stringBuilder.append(sysDept5.getName()).append("-").append(sysDept.getName());
+                } else {
+                    SysDept sysDept3 = sysDeptMapper.selectById(sysDept4.getParentId());
+                    if (sysDept3 == null) {
+                        stringBuilder.append(sysDept4.getName())
+                                .append("-").append(sysDept5.getName()).append("-").append(sysDept.getName());
+                    } else {
+                        SysDept sysDept2 = sysDeptMapper.selectById(sysDept3.getParentId());
+                        if (sysDept2 == null) {
+                            stringBuilder.append(sysDept3.getName()).append("-").append(sysDept4.getName())
+                                    .append("-").append(sysDept5.getName()).append("-").append(sysDept.getName());
+                        } else {
+                            stringBuilder.append(sysDept2.getName()).append("-").append(sysDept3.getName())
+                                    .append("-").append(sysDept4.getName()).append("-").append(sysDept5.getName()).append("-").append(sysDept.getName());
+                        }
+                    }
+                }
+            }
+        } else if (sysDept.getComlevel().equals("5")) {
+            SysDept sysDept4 = sysDeptMapper.selectById(sysDept.getParentId());
+            if (sysDept4 == null) {
+                stringBuilder.append(sysDept.getName());
+            } else {
+                SysDept sysDept3 = sysDeptMapper.selectById(sysDept4.getParentId());
+                if (sysDept3 == null) {
+                    stringBuilder.append(sysDept4.getName()).append("-").append(sysDept.getName());
+                } else {
+                    SysDept sysDept2 = sysDeptMapper.selectById(sysDept3.getParentId());
+                    if (sysDept2 == null) {
+                        stringBuilder.append(sysDept3.getName()).append("-").append(sysDept4.getName()).append("-").append(sysDept.getName());
+                    } else {
+                        stringBuilder.append(sysDept2.getName()).append("-").append(sysDept3.getName()).append("-").append(sysDept4.getName()).append("-").append(sysDept.getName());
+                    }
+                }
+            }
+        } else if (sysDept.getComlevel().equals("4")) {
+            SysDept sysDept3 = sysDeptMapper.selectById(sysDept.getParentId());
+            if (sysDept3 == null) {
+                stringBuilder.append(sysDept.getName());
+            } else {
+                SysDept sysDept2 = sysDeptMapper.selectById(sysDept3.getParentId());
+                if (sysDept2 == null) {
+                    stringBuilder.append(sysDept3.getName()).append("-").append(sysDept.getName());
+                } else {
+                    stringBuilder.append(sysDept2.getName()).append("-").append(sysDept3.getName()).append("-").append(sysDept.getName());
+                }
+            }
+        } else if (sysDept.getComlevel().equals("3")) {
+            SysDept sysDept2 = sysDeptMapper.selectById(sysDept.getParentId());
+            if (sysDept2 == null) {
+                stringBuilder.append(sysDept.getName());
+            } else {
+                stringBuilder.append(sysDept2.getName()).append("-").append(sysDept.getName());
+            }
+
+        } else if (sysDept.getComlevel().equals("2")) {
+            stringBuilder.append(sysDept.getName());
+        }
+        String s = stringBuilder.toString();
+        if (s.contains("总部-")) {
+            stringBuilder.replace(0, 3, "");
+        }
+
+
+        return stringBuilder.toString();
+    }
+
 }
 
 

+ 20 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressServiceImpl.java

@@ -159,6 +159,8 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
             SysUser sysUser = sysUserService.getById(sysPcAddress.getUserId());
             if (sysUser == null) continue;
             sysPcAddress.setLeaderName(sysUser.getLeaderName());
+            String deptName = getDeptName(sysUser.getDeptId());
+            sysPcAddress.setDeptName(deptName);
         }
 
         return sysPcAddresses;
@@ -375,6 +377,15 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
 
             insOrdersPage = page(page, wrapper);
         }
+        List<SysPcAddress> records = insOrdersPage.getRecords();
+        for (SysPcAddress sysPcAddress : records) {
+            SysUser sysUser = sysUserService.getById(sysPcAddress.getUserId());
+            if (sysUser == null) continue;
+            sysPcAddress.setLeaderName(sysUser.getLeaderName());
+            String deptName = getDeptName(sysUser.getDeptId());
+            sysPcAddress.setDeptName(deptName);
+        }
+
 
         return new BasePageResult<>(addressInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
                 insOrdersPage.getRecords());
@@ -520,10 +531,17 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
 
             sysPcAddressHistoryIPage = sysPcAddressHistoryMapper.queryAddressHistory(page, addressInfoDto);
         }
-
+        List<SysPcAddressHistory> records = sysPcAddressHistoryIPage.getRecords();
+        for (SysPcAddressHistory record : records) {
+            SysUser sysUser = sysUserService.getById(record.getUserId());
+            if (sysUser == null) continue;
+            record.setLeaderName(sysUser.getLeaderName());
+            String deptName = getDeptName(sysUser.getDeptId());
+            record.setDeptName(deptName);
+        }
 
         return new BasePageResult<>(addressInfoDto.getPageNum(), addressInfoDto.getPageSize(), sysPcAddressHistoryIPage.getTotal(), sysPcAddressHistoryIPage.getPages(),
-                sysPcAddressHistoryIPage.getRecords());
+                records);
     }
 
     /**

+ 12 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPremiumDetailsServiceImpl.java

@@ -0,0 +1,12 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPremiumDetailsMapper;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.service.SysPremiumDetailsService;
+import org.springframework.stereotype.Service;
+
+@Service("SysPremiumDetailsService")
+public class SysPremiumDetailsServiceImpl extends ServiceImpl<SysPremiumDetailsMapper, SysPremiumDetails> implements SysPremiumDetailsService {
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -1767,4 +1767,22 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         return sysDeptTreeVos;
     }
+    /**
+     * 获取人员数
+     * @return
+     */
+    @Override
+    public List<SysUser> getTreeUser() {
+        HashMap<String, Object> params = new HashMap<>();
+        List<SysUser> users = sysUserMapper.selectByParams(params);
+        if (users == null || users.isEmpty()) {
+            return new ArrayList<>();
+        }
+        List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
+        // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
+        topUsers.add(sysUserMapper.selectById("99D1501"));
+        // 递归构建用户树结构
+        buildUserTree(topUsers, users);
+        return topUsers;
+    }
 }

+ 1 - 1
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -696,7 +696,7 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
      **/
     @Override
     public BusinessAgentData getBusinessAgentDataTotal(TaskStatisticsVo taskStatisticsVo) {
-        HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
 

+ 15 - 1
src/main/java/com/ydtech/modules/console/controller/WithdrawalTaskController.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.HashMap;
 
 /**
  *   控制台体现任务
@@ -30,10 +31,23 @@ public class WithdrawalTaskController {
      * @return  控制台 提现任务  分页
      */
     @PostMapping("/queryPage")
-    @ApiOperation(value = "银行卡号分页")
+    @ApiOperation(value = "提现任务分页")
     public HttpResult<BasePageResult<WithdrawalTaskDto>> queryPageOrder(@RequestBody @Valid WithdrawalTaskVo withdrawalTaskVo) {
         BasePageResult<WithdrawalTaskDto> result = withdrawalTaskService.queryByVo(withdrawalTaskVo);
         return HttpResult.ok("success", result);
     }
 
+
+     /**
+     *
+     * @param withdrawalTaskVo
+     * @return  控制台 提现任务  统计
+     */
+    @PostMapping("/countWithdrawal")
+    @ApiOperation(value = "提现任务统计")
+    public HttpResult<HashMap<String, Object>> countWithdrawal(@RequestBody  WithdrawalTaskVo withdrawalTaskVo) {
+        HashMap<String, Object> result = withdrawalTaskService.countWithdrawal(withdrawalTaskVo);
+        return HttpResult.ok("success", result);
+    }
+
 }

+ 19 - 0
src/main/java/com/ydtech/modules/console/dao/ProfitAnalysisMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.console.dao;
+
+import com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisDto;
+import com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisQueryDto;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Mapper
+public interface ProfitAnalysisMapper {
+    List<ProfitAnalysisDto> getAllAccountExpenses(@Param("vo") ProfitAnalysisQueryDto profitAnalysisQueryDto);
+
+    List<ProfitAnalysisDto> getAllAccountExpensesId(@Param("vo") ProfitAnalysisQueryDto profitAnalysisQueryDto);
+
+    List<ProfitAnalysisDto> selectAccountExpenses(@Param("vo") ProfitAnalysisQueryDto profitAnalysisQueryDto);
+
+}

+ 8 - 0
src/main/java/com/ydtech/modules/console/dao/WithdrawalTaskMapper.java

@@ -6,10 +6,18 @@ import com.ydtech.modules.console.vo.WithdrawalTaskVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.HashMap;
+
 @Mapper
 public interface WithdrawalTaskMapper {
 
 
     Page<WithdrawalTaskDto> queryByVo(@Param("page") Page<WithdrawalTaskDto> page,@Param("vo") WithdrawalTaskVo withdrawalTaskVo);
+    /**
+     *
+     * @param withdrawalTaskVo
+     * @return  控制台 提现任务  统计
+     */
+    HashMap<String, Object> countWithdrawal( @Param("vo") WithdrawalTaskVo withdrawalTaskVo);
 
 }

+ 34 - 26
src/main/java/com/ydtech/modules/console/dto/WithdrawalTaskDto.java

@@ -4,54 +4,62 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 @Data
 public class WithdrawalTaskDto implements Serializable {
-    @ApiModelProperty(value = "用户id")
+    @ApiModelProperty(value = "提现单号")
+    private String id;
+
+    @ApiModelProperty(value = "业务员工号")
     private String userId;
 
-    @ApiModelProperty(value = "用户名称")
+    @ApiModelProperty(value = "业务员名称")
     private String userName;
 
+    @ApiModelProperty(value = "业务来源")
+    private String source;
 
-    @ApiModelProperty(value = "银行卡号")
-    private String bankNumber;
+    @ApiModelProperty(value = "维护人工号")
+    private String  leaderId;
 
-    @ApiModelProperty(value = "开户行")
-    private String bankAccount;
 
-    @ApiModelProperty(value = "开户行地址")
-    private String bankAddress;
+    @ApiModelProperty(value = "维护人")
+    private String  leaderName;
 
-    @ApiModelProperty(value = "创建时间")
-    private String createTime;
+    @ApiModelProperty(value = "电话")
+    private String  mobile;
 
-    @ApiModelProperty(value = "账户审核状态  0未审核 1通过 2驳回")
-    private Integer auditStatus;
 
+    @ApiModelProperty(value = "机构代码")
+    private String  deptId;
 
-    @ApiModelProperty(value = "审核时间")
-    private String auditTime;
 
-    @ApiModelProperty(value = "审核人id")
-    private String auditUserId;
+    @ApiModelProperty(value = "机构名称")
+    private String  deptName;
 
-    @ApiModelProperty(value = "审核人名称")
-    private String auditUserName;
 
+    @ApiModelProperty(value = "提现金额")
+    private BigDecimal amount;
 
-    @ApiModelProperty(value = "驳回原因")
-    private String remark;
 
-    @ApiModelProperty(value = "删除标志 0未删除 1删除")
-    private String delFlag;
+    @ApiModelProperty(value = "账户余额")
+    private BigDecimal surplusAmount;
+
 
     @ApiModelProperty(value = "真实姓名")
     private String realUserName;
 
-    @ApiModelProperty(value = "0 未验证 1 已验证")
-    private String bankVerify;
+    @ApiModelProperty(value = "开户行")
+    private String bankAddress;
+
+    @ApiModelProperty(value = "银行")
+    private String bankAccount;
+
+    @ApiModelProperty(value = "银行账号")
+    private String bankNumber;
+
+    @ApiModelProperty(value = "提现时间")
+    private String createTime;
 
-    @ApiModelProperty(value = "归属端 1:渠道 2:个代 a:合伙人 b:机构负责人")
-    private String ascription;
 }

+ 8 - 0
src/main/java/com/ydtech/modules/console/service/WithdrawalTaskService.java

@@ -5,7 +5,15 @@ import com.ydtech.modules.console.dto.WithdrawalTaskDto;
 import com.ydtech.modules.console.vo.WithdrawalTaskVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
+import java.util.HashMap;
+
 public interface WithdrawalTaskService {
     BasePageResult<WithdrawalTaskDto> queryByVo(WithdrawalTaskVo withdrawalTaskVo);
+    /**
+     *
+     * @param withdrawalTaskVo
+     * @return  控制台 提现任务  统计
+     */
+    HashMap<String, Object> countWithdrawal(WithdrawalTaskVo withdrawalTaskVo);
 
 }

+ 15 - 0
src/main/java/com/ydtech/modules/console/service/impl/WithdrawalTaskServiceImpl.java

@@ -23,12 +23,27 @@ public class WithdrawalTaskServiceImpl implements WithdrawalTaskService {
         HashMap<String, String> dateMapByType = getDateMapByType(withdrawalTaskVo.getDateType(), withdrawalTaskVo.getBeginDate(), withdrawalTaskVo.getEndDate());
         withdrawalTaskVo.setBeginDate(dateMapByType.get("startDate"));
         withdrawalTaskVo.setEndDate(dateMapByType.get("endDate"));
+
         Page<WithdrawalTaskDto> page = new Page<>(withdrawalTaskVo.getPageNum(), withdrawalTaskVo.getPageSize());
         Page<WithdrawalTaskDto> result = withdrawalTaskMapper.queryByVo(page, withdrawalTaskVo);
         return new BasePageResult<>(withdrawalTaskVo.getPageNum(), page.getSize(), result.getTotal(), page.getPages(),
                 result.getRecords());
     }
 
+    /**
+     *
+     * @param withdrawalTaskVo
+     * @return  控制台 提现任务  统计
+     */
+    @Override
+    public HashMap<String, Object> countWithdrawal(WithdrawalTaskVo withdrawalTaskVo) {
+        HashMap<String, String> dateMapByType = getDateMapByType(withdrawalTaskVo.getDateType(), withdrawalTaskVo.getBeginDate(), withdrawalTaskVo.getEndDate());
+        withdrawalTaskVo.setBeginDate(dateMapByType.get("startDate"));
+        withdrawalTaskVo.setEndDate(dateMapByType.get("endDate"));
+        HashMap<String, Object> resultItem = withdrawalTaskMapper.countWithdrawal(withdrawalTaskVo);
+        return resultItem;
+    }
+
 
     private static HashMap<String, String> getDateMapByType(String type, String startDate, String endDate) {
         HashMap<String, String> map = new HashMap<>();

+ 3 - 1
src/main/java/com/ydtech/modules/esm/controller/EsmUserController.java

@@ -165,8 +165,10 @@ public class EsmUserController extends BaseController {
         if(!"20".equals(String.valueOf(sysUser.getRoleId()))&&!"21".equals(String.valueOf(sysUser.getRoleId()))){
             return HttpResult.error("只有团队长和代理角色可以查询");
         }
+        // 修改时间查询问题
+        record.setStartdate(record.getStartdate() + " 00:00:00");
+        record.setEnddate(record.getEnddate() + " 23:59:59");
         EsmUserCountVO esmUserCountVO = esmUserReferrerService.queryUserCount(record);
-
         return HttpResult.ok(esmUserCountVO);
     }
 

+ 57 - 0
src/main/java/com/ydtech/modules/fnc/controller/InsPlyIncomeController.java

@@ -565,6 +565,63 @@ public class InsPlyIncomeController extends BaseController {
             throw new RuntimeException("导入失败");
         }
     }
+
+    /**   批量修改 手续费金额
+     *
+     * @param multipartFile
+     * @param isNotCar 是否是非车
+     * @return
+     */
+    @PostMapping("/insuranceHandlingFeeBathImport")
+    @ApiOperation(value = "保险手续费批量修改导入(excel)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "file", value = "excel文件", required = true, dataType = "__file")
+    })
+    public HttpResult<HashMap<String, Object>> insuranceHandlingFeeBathUpdate(@RequestParam MultipartFile multipartFile, @RequestParam("isNotCar") String isNotCar) {
+        HashMap<String, Object> result = insPlyIncomeService.insuranceHandlingFeeBathUpdate(multipartFile, isNotCar);
+        return HttpResult.ok(result);
+    }
+
+
+    /**
+     * 保险手续费批量修改
+     * @param insPlyIncomeVo
+     */
+    @PutMapping("/insuranceHandlingFeeBathConfirm")
+    @ApiOperation(value = "批量保险修改比例确认")
+    public HttpResult<HashMap<String, Object>> insuranceHandlingFeeBathConfirm(@RequestBody InsPlyIncomeVo insPlyIncomeVo) {
+        insPlyIncomeService.insuranceHandlingFeeBathConfirm(insPlyIncomeVo);
+        return HttpResult.ok();
+    }
+
+
+    /**   批量修改 手续费金额
+     *
+     * @param multipartFile
+     * @param isNotCar 是否是非车
+     * @return
+     */
+    @PostMapping("/insuranceHandlingFeeBathNotCarImport")
+    @ApiOperation(value = "保险非车手续费批量修改导入(excel)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "file", value = "excel文件", required = true, dataType = "__file")
+    })
+    public HttpResult<HashMap<String, Object>> insuranceHandlingFeeBathNotCarImport(@RequestParam MultipartFile multipartFile, @RequestParam("isNotCar") String isNotCar) {
+        HashMap<String, Object> result = insPlyIncomeService.insuranceHandlingFeeBathNotCarImport(multipartFile, isNotCar);
+        return HttpResult.ok(result);
+    }
+
+    /**
+     * 保险非车手续费批量修改
+     * @param insPlyIncomeVo
+     */
+    @PutMapping("/insuranceHandlingNotCarFeeBathConfirm")
+    @ApiOperation(value = "批量保险非车修改比例确认")
+    public HttpResult<HashMap<String, Object>> insuranceHandlingNotCarFeeBathConfirm(@RequestBody InsPlyIncomeVo insPlyIncomeVo) {
+        insPlyIncomeService.insuranceHandlingNotCarFeeBathConfirm(insPlyIncomeVo);
+        return HttpResult.ok();
+    }
+
 }
 
 

+ 0 - 1
src/main/java/com/ydtech/modules/fnc/entity/InsPlyIncome.java

@@ -480,7 +480,6 @@ public class InsPlyIncome implements Serializable {
     @TableField("add_type")
     private String addType;
 
-
     public InsPlyIncome(String orderno, String policyno, String syPolicyno, String noPolicyno, String settleno, String deptId, String deptName, String riskcode, LocalDateTime payDate, LocalDateTime signDate, String companyId, String companyName, String agreementId, String licenseno, BigDecimal taxamount, BigDecimal noTaxPremium, BigDecimal commissionFeerate, BigDecimal otherFeerate, BigDecimal commissionFeevalue, BigDecimal otherFeevalue, BigDecimal allFeeValue, BigDecimal finalFeeValue, BigDecimal doingFeeValue, LocalDateTime createTime, String voucherNumber, String contractId, String contractFileId, String handlingFeesStatus, String documentaryFeesStatus, String isNotCar, String isNotDocumentary) {
         this.orderno = orderno;
         this.policyno = policyno;

+ 97 - 56
src/main/java/com/ydtech/modules/fnc/service/InsPlyIncomeService.java

@@ -52,7 +52,16 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
     HttpResult<BasePageResult<InsPlyIncome>> nonSettlementQuery(InsPlyIncomeVo insPlyIncomeVo);
 
 
-    void saveBalanceNew(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany);
+    /**
+     * 保司结算 手续费 跟单单
+     *
+     * @param order          订单数据
+     * @param insFeeOrderNew 费用数据
+     * @param insAreaCompany 子订单
+     * @param leaderId       维护人id
+     * @param leaderName     维护人姓名
+     */
+    void saveBalanceNew(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany, String leaderId, String leaderName);
 
     HttpResult<List<InsPlyIncome>> nonSettldetail(InsPlyIncomeVo insPlyIncomeVo);
 
@@ -66,7 +75,7 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
 
     HttpResult<InsPlyIncome> insertByEntity(InsPlyIncomeVo insPlyIncomeVo);
 
-    HashMap<String,Object> totalAmount(List<String> selectIds);
+    HashMap<String, Object> totalAmount(List<String> selectIds);
 
     HttpResult<Object> batchPinBalance(InsPlyIncomeVo insPlyIncomeVo);
 
@@ -95,17 +104,15 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
     InsPlyIncome bxTotalAmount(InsPlyIncomeVo insPlyIncomeVo);
 
     /**
-     *
      * @param multipartFile
-     * @param isNotCar    是否是非车
-     * @return  返回总金额 以及未匹配的数据
+     * @param isNotCar      是否是非车
+     * @return 返回总金额 以及未匹配的数据
      */
-    HashMap<String, Object> bxImportData(MultipartFile multipartFile ,String isNotCar);
+    HashMap<String, Object> bxImportData(MultipartFile multipartFile, String isNotCar);
 
-    HashMap<String, Object> bxImportNoData(MultipartFile multipartFile,String isNotCar);
+    HashMap<String, Object> bxImportNoData(MultipartFile multipartFile, String isNotCar);
 
     /**
-     *
      * @param insPlyIncomeVo 参数对象
      * @param request
      * @param response
@@ -114,30 +121,28 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
     HttpResult bxOtherDetailsExcel(InsPlyIncomeVo insPlyIncomeVo, HttpServletRequest request, HttpServletResponse response);
 
     /**
-     *
-     * @param insPlyIncomeVo  传参字段
-     * @return  开票未结算金额  开票号   ids  开票时间
+     * @param insPlyIncomeVo 传参字段
+     * @return 开票未结算金额  开票号   ids  开票时间
      */
     HttpResult<List<SettlementDocumentaryFeesEntity>> invicdetail(InsPlyIncomeVo insPlyIncomeVo);
 
     HttpResult bxNoOtherDetailsExcel(InsPlyIncomeVo insPlyIncomeVo, HttpServletRequest request, HttpServletResponse response);
 
     /**
-     *
-     * @param incomeIds  开票ids
-     * @return  通过开票id分组查出的金额总和
+     * @param incomeIds 开票ids
+     * @return 通过开票id分组查出的金额总和
      */
-    HttpResult<List<HashMap<String,Object>>> otherSettldetail(InsPlyIncomeVo insPlyIncomeVo);
+    HttpResult<List<HashMap<String, Object>>> otherSettldetail(InsPlyIncomeVo insPlyIncomeVo);
 
     InsPlyIncome getEntityById(String id);
 
-    HttpResult<List<HashMap<String,Object>>> otherTimeDetail(InsPlyIncomeVo insPlyIncomeVo);
+    HttpResult<List<HashMap<String, Object>>> otherTimeDetail(InsPlyIncomeVo insPlyIncomeVo);
 
     HttpResult<Object> singleInvoic(InsPlyIncomeVo insPlyIncomeVo);
 
     void batchUpdate(InsPlyIncomeVo insPlyIncomeVo);
 
-    HashMap<String, Object> bxImportOther(MultipartFile multipartFile,String isNotCar);
+    HashMap<String, Object> bxImportOther(MultipartFile multipartFile, String isNotCar);
 
     InsPlyIncome ptTotalAmount(InsPlyIncomeVo insPlyIncomeVo);
 
@@ -148,36 +153,39 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
     HttpResult<Object> reconciliation(InsPlyIncomeVo insPlyIncomeVo);
 
     HttpResult<Object> batchSumBalance(InsPlyIncomeVo insPlyIncomeVo);
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/6/18 10:10
-     *  @Description:  查询平台已结算记录
+     * @version
+     * @author: hxl
+     * @Date: 2024/6/18 10:10
+     * @Description: 查询平台已结算记录
      */
     List<PlatformSettlementRecordDto> platformSettlementRecord(InsPlyIncomeVo insPlyIncomeV);
 
     /**
      * @param insPlyIncomeVo
-     * @Description:  平台新增
-     * @return   InsPlyIncome
+     * @return InsPlyIncome
+     * @Description: 平台新增
      */
     HttpResult<InsPlyIncome> ptInsert(InsPlyIncomeVo insPlyIncomeVo);
 
     void updateNoHand(InsPlyIncomeVo insPlyIncomeVo);
 
     HttpResult<Object> batchPinBalanceNew(InsPlyIncomeVo insPlyIncomeVo);
+
     /***
      *
      * @param insPlyIncomeVo
-     * @return  返回私有 平台  应收 已收  未收
+     * @return 返回私有 平台  应收 已收  未收
      */
-    HttpResult<ArrayList<Map<String,Object>>> totalReceivables(InsPlyIncomeVo insPlyIncomeVo);
+    HttpResult<ArrayList<Map<String, Object>>> totalReceivables(InsPlyIncomeVo insPlyIncomeVo);
 
-    HttpResult<List<HashMap<String,Object>>> monthTotalReceivables(InsPlyIncomeVo insPlyIncomeVo);
+    HttpResult<List<HashMap<String, Object>>> monthTotalReceivables(InsPlyIncomeVo insPlyIncomeVo);
 
     /**
-     *      平台批量修改比例
-     * @param multipartFile  文件
+     * 平台批量修改比例
+     *
+     * @param multipartFile 文件
      * @return
      */
     HashMap<String, Object> ptImportOther(MultipartFile multipartFile);
@@ -185,56 +193,89 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
     void bxImportOtherConfirm(InsPlyIncomeVo insPlyIncomeVo);
 
     void noBxImportOtherConfirm(InsPlyIncomeVo insPlyIncomeVo);
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/8/1 9:27
-     *  @Description:  获取平台、私有协议数据
+     * @version
+     * @author: hxl
+     * @Date: 2024/8/1 9:27
+     * @Description: 获取平台、私有协议数据
      */
     FinancialReceivablesAllVo queryDateByType(FinancialReceivablesQueryVo financialReceivablesQueryVo);
+
     /**
-     *  @version 
-     *  @author: hxl
-     *  @Date: 2024/8/5 9:43
-     *  @Description:
+     * @version
+     * @author: hxl
+     * @Date: 2024/8/5 9:43
+     * @Description:
      */
     FinancialReceivablesAllMonthVo queryDateByTypeByMonth(FinancialReceivablesQueryMonthVo financialReceivablesQueryVo);
+
     /**
-     *  @version
-     *  @author: whp
-     *  @Date: 2024/8/7 9:20
-     *  @Description:  私有 车险
+     * @version
+     * @author: whp
+     * @Date: 2024/8/7 9:20
+     * @Description: 私有 车险
      */
     FinancialReceivablesAllVo queryPrivateCar(FinancialReceivablesQueryVo financialReceivablesQueryVo);
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/8/7 11:20
-     *  @Description: 添加修正协议修改类型重新生成数据的逻辑
+     * @version
+     * @author: hxl
+     * @Date: 2024/8/7 11:20
+     * @Description: 添加修正协议修改类型重新生成数据的逻辑
      */
     HttpResult<List<InsPlyIncome>> createData(InsPlyIncomeIdsVo insPlyIncomeIdsVo);
 
     List<InsuranceHandlingSettlementMonthDto> getInvociAmount(InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo);
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/9/20 9:57
-     *  @Description:  平台结算情况统计
+     * @version
+     * @author: hxl
+     * @Date: 2024/9/20 9:57
+     * @Description: 平台结算情况统计
      */
     List<InsPlyIncomePTDto> totalPTAmount(InsPlyIncomePTVo insPlyIncomeVo);
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/9/20 11:00
-     *  @Description: 通过对接人查询结算数据
+     * @version
+     * @author: hxl
+     * @Date: 2024/9/20 11:00
+     * @Description: 通过对接人查询结算数据
      */
     List<InsPlyIncomePTCompanyDto> findListByDockingPerson(InsPlyIncomeQueryPTVo insPlyIncomeVo);
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/9/21 14:13
-     *  @Description:  导出数据
+     * @version
+     * @author: hxl
+     * @Date: 2024/9/21 14:13
+     * @Description: 导出数据
      */
     void importDataAddType(MultipartFile file, String type) throws Exception;
+    /**   批量修改 手续费金额
+     *
+     * @param multipartFile
+     * @param isNotCar 是否是非车
+     * @return
+     */
+    HashMap<String, Object> insuranceHandlingFeeBathUpdate(MultipartFile multipartFile, String isNotCar);
+
+    /**
+     * 保险手续费批量修改
+     * @param insPlyIncomeVo
+     */
+    void insuranceHandlingFeeBathConfirm(InsPlyIncomeVo insPlyIncomeVo);
+
+    /**   批量修改 手续费金额
+     *
+     * @param multipartFile
+     * @param isNotCar 是否是非车
+     * @return
+     */
+    HashMap<String, Object> insuranceHandlingFeeBathNotCarImport(MultipartFile multipartFile, String isNotCar);
+    /**
+     * 保险非车手续费批量修改
+     * @param insPlyIncomeVo
+     */
+    void insuranceHandlingNotCarFeeBathConfirm(InsPlyIncomeVo insPlyIncomeVo);
+
 }

+ 34 - 4
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -8,9 +8,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
 import com.ydtech.constants.enums.dict.ins.InsFeeAuditDistributionStatusEnum;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysDeptAccount;
-import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.dao.SysPartnerAccountMapper;
+import com.ydtech.modules.admin.dao.SysPremiumDetailsMapper;
+import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.po.SysChannelCost;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
@@ -115,6 +115,11 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Autowired
     private SysChannelCostService sysChannelCostService;
 
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
     @Autowired
     private Redisson redisson;
 
@@ -169,7 +174,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             //生成机构费用
             gene_deptfee(order, insFeeOrderNew, insAreaCompany);
             //结算费用生成
-            insPlyIncomeService.saveBalanceNew(order, insFeeOrderNew, insAreaCompany);
+            insPlyIncomeService.saveBalanceNew(order, insFeeOrderNew, insAreaCompany, user.getLeaderId(), user.getLeaderName());
 
             //生成  用户账户表  数据
             if (StringUtils.isNotEmpty(order.getUserid())) {
@@ -318,6 +323,31 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 }
                 sysChannelCostService.updateBatchById(costList);
             }
+//            //抽层状态修改
+//            sysPremiumDetailsMapper.updateStatus(insAreaCompany.getId());
+//            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+//                    .eq(SysPremiumDetails::getCompanyId,insAreaCompany.getId()).eq(SysPremiumDetails::getType,2));
+//            if (sysPremiumDetails.size()>0) {
+//                for (SysPremiumDetails sysPremiumDetail : sysPremiumDetails) {
+//                    SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+//                            .eq(SysPartnerAccount::getUserId,sysPremiumDetail.getUserId()));
+//                    if (sysPartnerAccount == null) {
+//                        SysPartnerAccount sysPartnerAccount1 = new SysPartnerAccount();
+//                        sysPartnerAccount1.setCreateTime(new Date());
+//                        sysPartnerAccount1.setSumPremium(sysPremiumDetail.getSumpremium());
+//                        sysPartnerAccount1.setExtractFee(sysPremiumDetail.getExtractFee());
+//                        sysPartnerAccount1.setCashFee(sysPremiumDetail.getExtractFee());
+//                        sysPartnerAccount1.setUserId(sysPremiumDetail.getUserId());
+//                        sysPartnerAccountMapper.insert(sysPartnerAccount1);
+//                    }else {
+//                        sysPartnerAccount.setSumPremium(sysPartnerAccount.getSumPremium().add(sysPremiumDetail.getSumpremium()));
+//                        sysPartnerAccount.setExtractFee(sysPartnerAccount.getExtractFee().add(sysPremiumDetail.getExtractFee()));
+//                        sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysPremiumDetail.getExtractFee()));
+//                        sysPartnerAccountMapper.updateById(sysPartnerAccount);
+//                    }
+//                }
+//
+//            }
         } catch (Exception e) {
             throw new SystemException("当前业务繁忙,请稍后重试");
         } finally {

+ 188 - 12
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -16,7 +16,9 @@ import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.report.financialReceivables.*;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.EsmInsCompany;
@@ -104,8 +106,9 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
     @Autowired
     @Lazy
     private InsOrdersService insOrdersService;
+
     @Autowired
-    private InsAreaCompanyService insAreaCompanyService;
+    private SysUserService sysUserService;
 
     @Autowired
     private InsFeeOrderNewService insFeeOrderNewService;
@@ -156,7 +159,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
     }
 
     @Override
-    public void saveBalanceNew(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) {
+    public void saveBalanceNew(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany, String leaderId, String leaderName) {
         if (ObjectUtils.isEmpty(order) || ObjectUtils.isEmpty(insFeeOrderNew) || ObjectUtils.isEmpty(insAreaCompany)) {
             return;
         }
@@ -168,22 +171,22 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
                 this.savePinTai(order, insFeeOrderNew, insAreaCompany);  //手续费不分非车不非车 跟单也不分
             } else {  // 保险  逻辑: 手续费生成一条  跟单费生成一条   非车手续费一条  非车跟单费一条
                 if (((insFeeOrderNew.getJqSuperviseCostsPremiums() != null && insFeeOrderNew.getJqSuperviseCostsPremiums().compareTo(BigDecimal.ZERO) != 0)) || (insFeeOrderNew.getSySuperviseCostsPremiums() != null && insFeeOrderNew.getSySuperviseCostsPremiums().compareTo(BigDecimal.ZERO) != 0)) { //手续费
-                    this.saveInsuranceProcedures(order, insFeeOrderNew, insAreaCompany);
+                    this.saveInsuranceProcedures(order, insFeeOrderNew, insAreaCompany, leaderId, leaderName);
                 }
                 if (insFeeOrderNew.getJqOtherCostsPremiums() != null && insFeeOrderNew.getJqOtherCostsPremiums().compareTo(BigDecimal.ZERO) != 0) {   //跟单费
-                    this.saveOtherAmount(order, insFeeOrderNew, insAreaCompany);
+                    this.saveOtherAmount(order, insFeeOrderNew, insAreaCompany, leaderId, leaderName);
                 }
                 if (insFeeOrderNew.getNoSuperviseCostsPremiums() != null && insFeeOrderNew.getNoSuperviseCostsPremiums().compareTo(BigDecimal.ZERO) != 0) {  // 非车手续费
-                    this.saveNoSupervise(order, insFeeOrderNew, insAreaCompany);
+                    this.saveNoSupervise(order, insFeeOrderNew, insAreaCompany, leaderId, leaderName);
                 }
                 if (insFeeOrderNew.getNoOtherCostsPremiums() != null && insFeeOrderNew.getNoOtherCostsPremiums().compareTo(BigDecimal.ZERO) != 0) {  // 非车跟单费
-                    this.saveNoOtherAmount(order, insFeeOrderNew, insAreaCompany);
+                    this.saveNoOtherAmount(order, insFeeOrderNew, insAreaCompany, leaderId, leaderName);
                 }
             }
         }
     }
 
-    private void saveNoOtherAmount(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) {
+    private void saveNoOtherAmount(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany,  String leaderId, String leaderName) {
         InsPlyIncome insPlyIncome = new InsPlyIncome();
         insPlyIncome.setOrderno(insFeeOrderNew.getInsOrderNo());  // 子订单号
         String noPolicyno = this.setNoPolicyno(insAreaCompany);
@@ -219,6 +222,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncome.setNoOtherCostsPremium(insFeeOrderNew.getNoOtherCostsPremiums());
         insPlyIncome.setNoOtherCostsProportion(insFeeOrderNew.getNoOtherCostsProportion());
         this.saveByCompanyId(insFeeOrderNew, insAreaCompany.getCompanyId(), insPlyIncome);
+
         this.getDeptId(insPlyIncome);
         baseMapper.insert(insPlyIncome);
 
@@ -230,7 +234,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
     }
 
-    private void saveNoSupervise(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) {
+    private void saveNoSupervise(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany,  String leaderId, String leaderName) {
         InsPlyIncome insPlyIncome = new InsPlyIncome();
         insPlyIncome.setOrderno(insFeeOrderNew.getInsOrderNo());  // 子订单号
         insPlyIncome.setCommissionFeevalue(insFeeOrderNew.getNoSuperviseCostsPremiums());// 非车手续费
@@ -265,6 +269,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncome.setSyEndDate(StringOperations.emptyStringToNull(insAreaCompany.getSyEndDate()));
         insPlyIncome.setNoSuperviseCostsPremiums(insFeeOrderNew.getNoSuperviseCostsPremiums());
         insPlyIncome.setNoSuperviseCostsProportion(insFeeOrderNew.getNoSuperviseCostsProportion());
+
         this.getDeptId(insPlyIncome);
         this.saveByCompanyId(insFeeOrderNew, insAreaCompany.getCompanyId(), insPlyIncome);
         insPlyIncome.setReceivableAmount(insFeeOrderNew.getNoSuperviseCostsPremiums());
@@ -297,7 +302,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
 
     }
 
-    private void saveOtherAmount(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) {
+    private void saveOtherAmount(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany,  String leaderId, String leaderName) {
         BigDecimal otherAmount = this.calculateTotal(insFeeOrderNew.getJqOtherCostsPremiums(), insFeeOrderNew.getSyOtherCostsPremiums(),
                 null);
         BigDecimal otherProportion = this.calculateTotal(insFeeOrderNew.getSyOtherCostsProportion(),
@@ -344,7 +349,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
     }
 
-    private void saveInsuranceProcedures(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) {
+    private void saveInsuranceProcedures(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany,  String leaderId, String leaderName) {
 //        保险手续费
         BigDecimal handlingAmount = this.calculateTotal(insFeeOrderNew.getJqSuperviseCostsPremiums(),
                 insFeeOrderNew.getSySuperviseCostsPremiums(), null);
@@ -3617,11 +3622,11 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
             InsAreaCompany insAreaCompany = fncInsAreaCompanyMapper.selectById(subOrderId);
             //大订单对象
             InsOrders order = insOrdersService.existOrder(insAreaCompany.getOrderno());
-
+            SysUser sysUser = sysUserService.getById(order.getUserid());
             //获取该订单的费用
             InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
                     .eq(InsFeeOrderNew::getInsOrderNo, insAreaCompany.getId()));
-            saveBalanceNew(order, insFeeOrderNew,insAreaCompany) ;
+            saveBalanceNew(order, insFeeOrderNew,insAreaCompany, sysUser.getLeaderId(), sysUser.getLeaderName()) ;
         }
         return HttpResult.ok(newList);
     }
@@ -3712,6 +3717,177 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         }
 
     }
+    /**   批量修改 手续费金额
+     *
+     * @param multipartFile
+     * @param isNotCar  是否是非车
+     * @return
+     */
+    @Override
+    public HashMap<String, Object> insuranceHandlingFeeBathUpdate(MultipartFile multipartFile, String isNotCar) {
+        HashMap<String, Object> resultMap = new HashMap<>();
+        List<HashMap<String, Object>> resultList = new ArrayList<>();
+        HashMap<String, Object> params = new HashMap<>();
+        BigDecimal allAmount = BigDecimal.ZERO;
+        params.put("isNotCar", isNotCar);
+        try {
+            List<InsBxPlyIncomeExcelDto> dtoList = ExcelEasypoiUtils.importExcel(multipartFile, InsBxPlyIncomeExcelDto.class, 0, 1, 1);
+            for (InsBxPlyIncomeExcelDto item : dtoList) {
+                if (StringUtils.isNotEmpty(item.getLicenseno())) {
+                    params.put("licenseno", item.getLicenseno());
+                }
+
+                if (StringUtils.isNotEmpty(item.getPolicyno())) {
+                    params.put("policyno", item.getPolicyno());
+                }
+
+                if (StringUtils.isNotEmpty(item.getSyPolicyno())) {
+                    params.put("syPolicyno", item.getSyPolicyno());
+                }
+                params.put("handlingFeesStatus", "0");
+                params.put("isOther", "0");
+                params.put("isNotCar", "0");
+                InsPlyIncome byBxLicenseno = baseMapper.findByBxLicenseno(params);
+                if (item.getJqSuperviseCostsProportion() == null) {
+                    item.setJqSuperviseCostsProportion(BigDecimal.ZERO);
+                }
+                if (item.getSySuperviseCostsProportion() == null) {
+                    item.setSySuperviseCostsProportion(BigDecimal.ZERO);
+                }
+                if (ObjectUtils.isNotEmpty(byBxLicenseno) && (byBxLicenseno.getJqOtherCostsProportion().compareTo(item.getJqSuperviseCostsProportion()) != 0 || byBxLicenseno.getSySuperviseCostsProportion().compareTo(item.getSySuperviseCostsProportion()) != 0)) {
+                    // 如果比例不相等
+                    BigDecimal jqSuperviseCostsProportion = item.getJqSuperviseCostsProportion();
+                    BigDecimal sySuperviseCostsProportion = item.getSySuperviseCostsProportion();
+                    BigDecimal jqSupervisePremium =  getBigDecimal( byBxLicenseno.getJqPremium(),jqSuperviseCostsProportion);
+                    BigDecimal sySupervisePremium =  getBigDecimal( byBxLicenseno.getSyPremium(),sySuperviseCostsProportion);
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("licenseno", item.getLicenseno());
+                    map.put("policyno", item.getPolicyno());
+                    map.put("syPolicyno", item.getSyPolicyno());
+                    map.put("jqSuperviseCostsPremiums", jqSupervisePremium);
+                    map.put("sySuperviseCostsPremiums", sySupervisePremium);
+                    map.put("jqSuperviseCostsProportion", jqSuperviseCostsProportion);
+                    map.put("sySuperviseCostsProportion", sySuperviseCostsProportion);
+                    map.put("id", byBxLicenseno.getId());
+                    resultList.add(map);
+                    allAmount = allAmount.add(jqSupervisePremium).add(sySupervisePremium);
+                }
+
+            }
+            resultMap.put("allAmount", allAmount);
+            resultMap.put("resultList", resultList);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return resultMap;
+    }
+
+    /**
+     * 保险手续费批量修改
+     * @param insPlyIncomeVo
+     */
+    @Override
+    @Transactional
+    public void insuranceHandlingFeeBathConfirm(InsPlyIncomeVo insPlyIncomeVo) {
+        if (ObjectUtils.isEmpty(insPlyIncomeVo)) {
+            throw new SystemException("请导入文件");
+        }
+        if(CollectionUtils.isEmpty(insPlyIncomeVo.getResultList())){
+            throw new SystemException("请导入文件");
+        }
+        ArrayList<InsPlyIncome> batchUpdateItem = new ArrayList<>();
+        for (InsPlyIncome item : insPlyIncomeVo.getResultList()) {
+            InsPlyIncomeLog insPlyIncomeLog = new InsPlyIncomeLog();
+            insPlyIncomeLog.setIncomeId(item.getId());
+            BeanUtils.copyProperties(item, insPlyIncomeLog);
+            insPlyIncomeLog.setOperationStatus("2");
+            insPlyIncomeLog.setId(null);
+            insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
+            item.setAllFeeValue(this.calculateTotal(item.getJqSuperviseCostsPremiums(), item.getSySuperviseCostsPremiums(), null));
+            item.setCommissionFeevalue(this.calculateTotal(item.getJqSuperviseCostsPremiums(), item.getSySuperviseCostsPremiums(), null));
+            item.setCommissionFeerate(this.calculateTotal(item.getJqSuperviseCostsProportion(), item.getSySuperviseCostsProportion(), null));
+            batchUpdateItem.add(item);
+            // baseMapper.updateById(item);
+        }
+        this.saveOrUpdateBatch(batchUpdateItem);
+    }
+
+    @Override
+    public HashMap<String, Object> insuranceHandlingFeeBathNotCarImport(MultipartFile multipartFile, String isNotCar) {
+        HashMap<String, Object> resultMap = new HashMap<>();
+        List<HashMap<String, Object>> resultList = new ArrayList<>();
+        HashMap<String, Object> params = new HashMap<>();
+        BigDecimal allAmount = BigDecimal.ZERO;
+        params.put("isNotCar", isNotCar);
+        try {
+            List<InsBxNoPlyIncomeExcelDto> dtoList = ExcelEasypoiUtils.importExcel(multipartFile, InsBxNoPlyIncomeExcelDto.class, 0, 1, 1);
+            for (InsBxNoPlyIncomeExcelDto item : dtoList) {
+                if (StringUtils.isNotEmpty(item.getLicenseno())) {
+                    params.put("licenseno", item.getLicenseno());
+                }
+
+                if (StringUtils.isNotEmpty(item.getNoPolicyno())) {
+                    params.put("noPolicyno", item.getNoPolicyno());
+                }
+                params.put("handlingFeesStatus", "0");
+                params.put("isOther", "0");
+                params.put("isNotCar", "1");
+                InsPlyIncome byBxLicenseno = baseMapper.findByBxLicenseno(params);
+                if (item.getNoSuperviseCostsProportion() == null) {
+                    item.setNoSuperviseCostsProportion(BigDecimal.ZERO);
+                }
+                if (ObjectUtils.isNotEmpty(byBxLicenseno) && (byBxLicenseno.getNoSuperviseCostsProportion().compareTo(item.getNoSuperviseCostsProportion()) != 0 )) {
+                    // 如果比例不相等
+                    BigDecimal noSuperviseCostsProportion = item.getNoSuperviseCostsProportion();
+                    BigDecimal noSuperviseCostsPremiums =  getBigDecimal(byBxLicenseno.getNoPremium(),noSuperviseCostsProportion);
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("licenseno", item.getLicenseno());
+                    map.put("noPolicyno", item.getNoPolicyno());
+                    map.put("noSuperviseCostsPremiums", noSuperviseCostsPremiums);
+                    map.put("noSuperviseCostsProportion", noSuperviseCostsProportion);
+                    map.put("id", byBxLicenseno.getId());
+                    resultList.add(map);
+                    allAmount = allAmount.add(noSuperviseCostsPremiums);
+                }
+            }
+            resultMap.put("allAmount", allAmount);
+            resultMap.put("resultList", resultList);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return resultMap;
+    }
+
+    /**
+     * 保险手续费批量修改
+     * @param insPlyIncomeVo
+     */
+    @Override
+    @Transactional
+    public void insuranceHandlingNotCarFeeBathConfirm(InsPlyIncomeVo insPlyIncomeVo) {
+        if (ObjectUtils.isEmpty(insPlyIncomeVo)) {
+            throw new SystemException("请导入文件");
+        }
+        if(CollectionUtils.isEmpty(insPlyIncomeVo.getResultList())){
+            throw new SystemException("请导入文件");
+        }
+        ArrayList<InsPlyIncome> batchUpdateItem = new ArrayList<>();
+        for (InsPlyIncome item : insPlyIncomeVo.getResultList()) {
+            InsPlyIncomeLog insPlyIncomeLog = new InsPlyIncomeLog();
+            insPlyIncomeLog.setIncomeId(item.getId());
+            BeanUtils.copyProperties(item, insPlyIncomeLog);
+            insPlyIncomeLog.setOperationStatus("2");
+            insPlyIncomeLog.setId(null);
+            insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
+            item.setAllFeeValue(this.calculateTotal(item.getNoSuperviseCostsPremiums(), null, null));
+            item.setCommissionFeevalue(this.calculateTotal(item.getNoSuperviseCostsPremiums(), null, null));
+            item.setCommissionFeerate(this.calculateTotal(item.getNoSuperviseCostsProportion(), null, null));
+            batchUpdateItem.add(item);
+            // baseMapper.updateById(item);
+        }
+        this.saveOrUpdateBatch(batchUpdateItem);
+    }
+
 
     public  List<InsPlyIncome>   checkData(String type,List<AddTypeCXSXFExcel> cxsxfList,List<AddTypeCXGDExcel> cxgdList, List<AddTypeFCSXFExcel> fcsxfList, List<AddTypeFCGDExcel> fcgdList,List<AddTypePTJSExcel> ptjsList)  throws SystemException{
         List<InsPlyIncome>  list  =new ArrayList<InsPlyIncome>();

+ 3 - 0
src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java

@@ -197,6 +197,9 @@ public class QuoteRespVo {
     @ApiModelProperty("请求类型")
     private Integer apiType;
 
+    @ApiModelProperty("验车链接")
+    private String vehicleInspectionUrl;
+
     public void setJqClaims(String jqClaims) {
         this.jqClaims = StringUtils.isEmpty(jqClaims) ? null : jqClaims;
     }

+ 11 - 0
src/main/java/com/ydtech/modules/order/components/zijin/ZijinRequestApiComponents.java

@@ -304,6 +304,17 @@ public class ZijinRequestApiComponents {
         return request(RequestUrl.UPLOAD_IMAGE_INFO_LIST, uploadImageInfoListRequest, BaseResponse.class, httpHeaders);
     }
 
+    /**
+     * 对接三方渠道验车链接接口
+     *
+     * @param sendCheckCarLinkRequest 紫金财险 对接三方渠道验车链接接口 入参实体
+     * @return 出参实体
+     */
+    public void sendCheckCarLink(SendCheckCarLinkRequest sendCheckCarLinkRequest, HttpHeaders httpHeaders) {
+         request(zijinApiConfigurationProperties.getSendCheckCarLink(), RequestUrl.SEND_CHECK_CAR_LINK.getDesc(), sendCheckCarLinkRequest,
+                BaseResponse.class, httpHeaders);
+    }
+
     /**
      * 特约查询
      *

+ 3 - 6
src/main/java/com/ydtech/modules/order/controller/QrCodeController.java

@@ -36,6 +36,7 @@ import javax.annotation.Resource;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -151,11 +152,9 @@ public class QrCodeController {
         //更新二维码扫描时间
         insOrderQrCode.setScanCodeTime(new Date());
         insOrderQrCodeService.updateById(insOrderQrCode);
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String qrcodeCreateTimeStr = dateFormat.format(insAreaCompany.getCreatetime());
-        LocalDate qrcodeCreateTime = LocalDate.parse(qrcodeCreateTimeStr);
+        LocalDateTime createtime = insAreaCompany.getCreatetime();
+        LocalDate qrcodeCreateTime = createtime.toLocalDate();
         LocalDate currentDate = LocalDate.now();
-
         if (Math.abs(currentDate.toEpochDay() - qrcodeCreateTime.toEpochDay()) >= 1) {
             //重定向到错误页面中
             ModelAndView modelAndView = new ModelAndView("qrcode_error");
@@ -197,9 +196,7 @@ public class QrCodeController {
             modelAndView.addObject("data",qrCodeVo);
             return modelAndView;
         } else if(UserConstants.CONFIG_TYPE_0.equals(configType)){
-
             return "redirect:" + insOrderQrCode.getJumpUrl();
-
         }else{
             //重定向到错误页面中
             ModelAndView modelAndView = new ModelAndView("qrcode_error");

+ 59 - 0
src/main/java/com/ydtech/modules/order/controller/QuoteController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.core.page.HttpResult;
@@ -13,6 +14,8 @@ import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.order.aop.QuoteVerification;
 import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
@@ -96,6 +99,13 @@ public class QuoteController extends BaseController {
     @Autowired
     InsOrdersService insOrdersService;
 
+    @Autowired
+    InsAreaCompanyService insAreaCompanyService;
+
+
+    @Autowired
+    YongAnOrderService yongAnOrderService;
+
     @QuoteVerification("报价授权")
     @PostMapping(value = "/quote")
     public HttpResult<QuoteRespVo> quote(@RequestBody BaseQuoteVo<Object> quoteVo) throws Exception {
@@ -247,4 +257,53 @@ public class QuoteController extends BaseController {
         }
         return respVo;
     }
+
+    @PostMapping(value = "submitImage")
+    public HttpResult submitImage(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(companyId);
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        if(Objects.isNull(ptlAgreementAttribution) || Objects.isNull(ptlAgreementAttribution.getApiType())){
+            throw new SystemException("协议数据出错,请联系管理员");
+        }
+        HttpResult httpResult = null;
+        //判断是否是爬虫
+        if(ptlAgreementAttribution.getApiType() == 2){
+            httpResult = insCrawlerOrderService.submitImage(companyId);
+        }else if(ptlAgreementAttribution.getApiType() == 1){
+            //渤海
+            if(insAreaCompany.getCompanyId().equals("BPIC1000000")){
+                httpResult = boHaiOrderApiService.submitImage(companyId);
+            }
+            //大家
+            if(insAreaCompany.getCompanyId().equals("DJPC1000000")){
+                httpResult = daJiaOrderService.submitImage(companyId);
+            }
+            //国任
+            if(insAreaCompany.getCompanyId().equals("XDCX1000000")){
+                httpResult = guorenOrderApiService.uploadImageApi(companyId);
+            }
+            //华泰
+            if(insAreaCompany.getCompanyId().equals("HTIC1000000")){
+                httpResult = huaTaiOrderApiService.submitImage(companyId);
+            }
+            //永安
+            if(insAreaCompany.getCompanyId().equals("YAIC1000000")){
+                httpResult = yongAnOrderService.submitImage(companyId);
+            }
+            //永诚
+            if(insAreaCompany.getCompanyId().equals("AICS1000000")){
+                httpResult = yongchengOrderApiService.uploadImageApi(companyId);
+            }
+            //中煤
+            if(insAreaCompany.getCompanyId().equals("ZMBX1000000")){
+                httpResult = zhongMeiOrderApiService.submitImage(companyId);
+            }
+            //紫金
+            if(insAreaCompany.getCompanyId().equals("ZKIC1000000")){
+                httpResult = zijinOrderApiService.submitImage(companyId);
+            }
+        }
+
+        return httpResult;
+    }
 }

+ 7 - 2
src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderApiController.java

@@ -21,6 +21,7 @@ import com.ydtech.modules.order.utils.AESUtilsWithDataBase;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -53,10 +54,14 @@ public class ZhongMeiOrderApiController {
 
     @PostMapping(value = "/modelsQuery")
     @ApiOperation(value = "车型查询接口")
-    public HttpResult<List<CarModelDTO>> modelsQuery(@RequestSingleParam(value = "modelName") String modelName) {
-        List<CarModelDTO> map = this.zhongMeiOrderApiService.modelsQuery(modelName);
+    public HttpResult<List<CarModelDTO>> modelsQuery(@RequestBody ModelsQueryQueryVo modelsQueryQueryVo) {
+        List<CarModelDTO> map = this.zhongMeiOrderApiService.modelsQuery(modelsQueryQueryVo.getModelName());
         List<CarModelDTO> carModelDTOS =
                 map.stream().sorted(Comparator.comparing(CarModelDTO::getReplacementValue)).collect(Collectors.toList());
+        if (!StringUtils.isEmpty(modelsQueryQueryVo.getMarketYear())) {
+            List<CarModelDTO> collect = carModelDTOS.stream().filter(x -> !StringUtils.isEmpty(x.getMarketYear()) && x.getMarketYear().startsWith(modelsQueryQueryVo.getMarketYear())).collect(Collectors.toList());
+            return HttpResult.ok(collect);
+        }
         return HttpResult.ok(carModelDTOS);
     }
 

+ 12 - 1
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
-import com.ydtech.modules.order.constants.UnderwritingStatus;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
@@ -547,6 +546,18 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "update_status_time")
     private Date updateStatusTime;
 
+    /**
+     * 维护人id
+     */
+    @TableField(value = "leader_id")
+    private String leaderId;
+
+    /**
+     * 维护人名称
+     */
+    @TableField(value = "leader_name")
+    private String leaderName;
+
     public InsAreaCompany(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
         this.id = IdGenerate.nextId();
         this.orderno = quoteRespVo.getOrderno();

+ 2 - 1
src/main/java/com/ydtech/modules/order/entity/api/zijin/constants/enums/RequestUrl.java

@@ -26,7 +26,8 @@ public enum RequestUrl {
     GET_ORDER_DETAIL("getOrderDetail", "订单详情查询服务"),
     CANCEL("cancel", "未缴费保单撤单"),
     QUERY_VEHIC_PRODUCTS("queryVehicProducts", "查询“车+意”中意外险方案信息(非摩托车险)"),
-    DOWN_LOAD_DOCUMENT("downLoadDocument", "第三方电子保单下载接口");
+    DOWN_LOAD_DOCUMENT("downLoadDocument", "第三方电子保单下载接口"),
+    SEND_CHECK_CAR_LINK("sendCheckCarLink", "第三方电子保单下载接口");
 
     private final String uri;
 

+ 38 - 0
src/main/java/com/ydtech/modules/order/entity/api/zijin/request/SendCheckCarLinkRequest.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.order.entity.api.zijin.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+
+/**
+ * @description: 紫金财险 对接三方渠道验车链接接口
+ * @author: wenks
+ * @date: 2024/10/17 11:31
+ **/
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class SendCheckCarLinkRequest {
+
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+
+    /**
+     * 车主名
+     */
+    @JsonProperty("carOwner")
+    private String carOwner;
+
+    /**
+     * 验车人接收验车链接短信的手机号
+     */
+    @JsonProperty("phoneNum")
+    private String phoneNum;
+
+}

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/crawler/response/CrawlerQuoteResponse.java

@@ -304,6 +304,9 @@ public class CrawlerQuoteResponse extends CrawlerBaseResponse {
         @JsonProperty("predict_info")
         private List<PredictInfoDTO> predictInfo;
 
+        @JsonProperty("upimage_url")
+        private String upimageUrl;
+
         public String getDiscount() {
             return StringUtils.isEmpty(discount) ? "0" : discount;
         }

+ 7 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java

@@ -27,6 +27,7 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 
 //@EqualsAndHashCode(callSuper = true)
@@ -262,6 +263,9 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         @ApiModelProperty("状态信息")
         private String orderStatusInfo;
 
+        @ApiModelProperty("接口类型")
+        private String apiType;
+
         public void feeVacant() {
             this.jqExportFee = null;
             this.syExportFee = null;
@@ -308,6 +312,9 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
             this.feeMatchErrMsg = insAreaCompany.getFeeMatchErrMsg();
             this.quoteErrMsg = insAreaCompany.getQuoteErrMsg();
             this.orderStatusInfo = InsOrderStatusEnum.matchKey(insAreaCompany.getOrderstatus()).getDesc();
+            if(!Objects.isNull(insAreaCompany.getApiType())) {
+                this.apiType = insAreaCompany.getApiType().toString();
+            }
         }
     }
 

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

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * 品牌型号
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ModelsQueryQueryVo implements Serializable {
+
+    private static final long serialVersionUID = -1276536546447504673L;
+
+    @ApiModelProperty("品牌型号")
+    private String modelName;
+
+    @ApiModelProperty("年款")
+    private String marketYear;
+
+}

+ 6 - 5
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -69,8 +69,6 @@ public interface InsOrdersService extends IService<InsOrders> {
     InsOrders generateOrder(SysUser user, BaseQuoteInfoVo quoteInfoVo);
 
 
-
-
     BasePageResult<InsOrders> newQueryPageOrder(OrderQueryVo orderQueryVo);
 
     /**
@@ -232,7 +230,6 @@ public interface InsOrdersService extends IService<InsOrders> {
 
 
     /**
-     *
      * @param telemarketingAuditOrderQueryVo 电销审核状态查询实体
      * @return
      */
@@ -241,7 +238,7 @@ public interface InsOrdersService extends IService<InsOrders> {
     /**
      * 更新订单的起保与终保时间
      */
-    void updateOrderStartingInsruanceTime(String orderno,String jqStartTime,String jqEndTime,String syStartTime,String syEndTime);
+    void updateOrderStartingInsruanceTime(String orderno, String jqStartTime, String jqEndTime, String syStartTime, String syEndTime, InsAreaCompany insAreaCompany);
 
     /**
      * 刷新订单的缓存信息
@@ -250,6 +247,7 @@ public interface InsOrdersService extends IService<InsOrders> {
 
     /**
      * 根据订单id 产品id 获取订单缓存信息
+     *
      * @param orderno
      * @return
      */
@@ -257,12 +255,14 @@ public interface InsOrdersService extends IService<InsOrders> {
 
     /**
      * 对比订单
+     *
      * @return
      */
-    boolean contrastOrder(InsOrders oldOrder,InsOrders newOrder);
+    boolean contrastOrder(InsOrders oldOrder, InsOrders newOrder);
 
     /**
      * 查询订单中的车牌
+     *
      * @param queryLicenseInOrderVo 查询参数
      * @return 车牌列表
      */
@@ -270,6 +270,7 @@ public interface InsOrdersService extends IService<InsOrders> {
 
     /**
      * 查询订单中的被保人
+     *
      * @param queryInsuredInOrderVo 查询实体
      * @return 被保人列表
      */

+ 10 - 0
src/main/java/com/ydtech/modules/order/service/ZijinOrderApiService.java

@@ -108,4 +108,14 @@ public interface ZijinOrderApiService {
      * @return 是否成功
      */
     boolean cancelOrder(InsAreaCompany insAreaCompany);
+
+
+    /**
+     * 验车链接接口
+     * @param companyId 子订单
+     * @return 验车链接
+     */
+    HttpResult sendCheckCarLink(String companyId);
+
+
 }

+ 2 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -175,7 +175,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
         //更新主订单的投保时间
         insOrdersService.updateOrderStartingInsruanceTime(insAreaCompany.getOrderno(), insAreaCompany.getJqStartDate(), insAreaCompany.getJqEndDate(),
-                insAreaCompany.getSyStartDate(), insAreaCompany.getSyEndDate());
+                insAreaCompany.getSyStartDate(), insAreaCompany.getSyEndDate(), insAreaCompany);
 
 
         baseMapper.insert(insAreaCompany);
@@ -202,7 +202,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
         //更新主订单的投保时间
         insOrdersService.updateOrderStartingInsruanceTime(insAreaCompany.getOrderno(), insAreaCompany.getJqStartDate(), insAreaCompany.getJqEndDate(),
-                insAreaCompany.getSyStartDate(), insAreaCompany.getSyEndDate());
+                insAreaCompany.getSyStartDate(), insAreaCompany.getSyEndDate(), insAreaCompany);
 
         baseMapper.insert(insAreaCompany);
         //保存驾意险信息

+ 2 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -449,6 +449,8 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             quoteRespVo.setTips(CrawlerQuoteResponse.QuoteGreenWayEnum.Q_1.getDesc());
             quoteRespVo.setWarnMessageList(response.getOther().getErrorCodeMap());
         }
+        // 验车支付链接
+        quoteRespVo.setVehicleInspectionUrl(response.getOther().getUpimageUrl());
 
         //太平绿黄红区
         for (String item : quoteRespVo.getWarnMessageList()) {
@@ -466,14 +468,12 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             }
         }
 
-
         // 保险公司订单号
         insAreaCompany.setInsOrderNo(response.getOrderNo());
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, insAreaCompanyAccidentalDriving);
         //清空驾意险信息 重新复制
 //        quoteRespVo.getAccident().clear();
 
-
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         return quoteRespVo;
     }

+ 110 - 3
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -25,8 +25,7 @@ import com.ydtech.core.page.PageRequest;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.ManagementSource;
 import com.ydtech.modules.admin.constants.RoleConstants;
-import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper;
-import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
+import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
@@ -93,9 +92,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
 import javax.validation.constraints.NotBlank;
 import java.io.File;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
@@ -185,6 +186,18 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private InsBusinessInsuranceService insBusinessInsuranceService;
 
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+    @Resource
+    private SysAgencyLeaderMapper sysAgencyLeaderMapper;
+    @Resource
+    private SysRelationPersonMapper sysRelationPersonMapper;
+    @Resource
+    private SysPartnerMapper sysPartnerMapper;
+    @Resource
+    private InsOrdersMapper insOrdersMapper;
+
+
 
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
@@ -240,6 +253,81 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrders.setCompanyId(insAreaCompany.getCompanyId());
             insOrders.setInsCompany(insAreaCompany.getInscompany());
             insOrders.setInsureTime(insAreaCompany.getPayDate());
+            //已承保记录保费数据
+//            String userId = insOrders.getUserid();
+//
+//            SysDept sysDept = sysDeptService.getById(insOrders.getDeptid());
+//            if (sysDept != null) {
+//                SysPremiumDetails sysPremiumDetailsInfo = new SysPremiumDetails();
+//                sysPremiumDetailsInfo.setUserId(userId);
+//                sysPremiumDetailsInfo.setUserName(insOrders.getUsername());
+//                sysPremiumDetailsInfo.setCompanyId(insAreaCompany.getId());
+//                sysPremiumDetailsInfo.setOrderno(insAreaCompany.getOrderno());
+//                sysPremiumDetailsInfo.setJqpremium(insAreaCompany.getJqpremium());
+//                sysPremiumDetailsInfo.setJypremium(insAreaCompany.getJypremium());
+//                sysPremiumDetailsInfo.setSypremium(insAreaCompany.getSypremium());
+//                sysPremiumDetailsInfo.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
+//                sysPremiumDetailsInfo.setStatus(0);
+//                sysPremiumDetailsInfo.setType(1);
+//                sysPremiumDetailsInfo.setCreateTime(new Date());
+//                sysPremiumDetailsInfo.setIndustrySector(1);
+//                sysPremiumDetailsMapper.insert(sysPremiumDetailsInfo);
+//
+//                String deptId=getFiveDeptId(sysDept);
+//                //工作室管理员抽层费用记录
+//                SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
+//                        .eq(SysAgencyLeader::getDeptId, deptId).eq(SysAgencyLeader::getDelFlag,1));
+//                if (sysAgencyLeader != null) {
+//                    SysPremiumDetails sysPremiumDetails = new SysPremiumDetails();
+//                    sysPremiumDetails.setUserId(sysAgencyLeader.getUserId());
+//                    sysPremiumDetails.setUserName(sysAgencyLeader.getUserName());
+//                    sysPremiumDetails.setCompanyId(insAreaCompany.getId());
+//                    sysPremiumDetails.setOrderno(insAreaCompany.getOrderno());
+//                    sysPremiumDetails.setJqpremium(insAreaCompany.getJqpremium());
+//                    sysPremiumDetails.setJypremium(insAreaCompany.getJypremium());
+//                    sysPremiumDetails.setSypremium(insAreaCompany.getSypremium());
+//                    sysPremiumDetails.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
+//                    sysPremiumDetails.setProportional(sysAgencyLeader.getProportional());
+//                    sysPremiumDetails.setStatus(0);
+//                    sysPremiumDetails.setType(2);
+//                    sysPremiumDetails.setIssuerId(userId);
+//                    sysPremiumDetails.setIssuerName(insOrders.getUsername());
+//                    sysPremiumDetails.setExtractFee(sysPremiumDetails.getSumpremium().multiply(new BigDecimal(sysAgencyLeader.getProportional())
+//                            .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+//                    sysPremiumDetails.setCreateTime(new Date());
+//                    sysPremiumDetails.setIndustrySector(1);
+//                    sysPremiumDetailsMapper.insert(sysPremiumDetails);
+//                    //工合伙人抽层费用记录
+//                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+//                            .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader.getUserId()).eq(SysRelationPerson::getType, 1));
+//                    if (sysRelationPersonList.size()>0) {
+//                        for (SysRelationPerson sysRelationPerson : sysRelationPersonList) {
+//                            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+//                                    .eq(SysPartner::getUserId, sysRelationPerson.getSuggestId()).eq(SysPartner::getDelFlag, 1));
+//                            if (sysPartner == null) continue;
+//                            SysPremiumDetails sysPremiumDetail = new SysPremiumDetails();
+//                            sysPremiumDetail.setUserId(sysPartner.getUserId());
+//                            sysPremiumDetail.setUserName(sysPartner.getUserName());
+//                            sysPremiumDetail.setCompanyId(insAreaCompany.getId());
+//                            sysPremiumDetail.setOrderno(insAreaCompany.getOrderno());
+//                            sysPremiumDetail.setJqpremium(insAreaCompany.getJqpremium());
+//                            sysPremiumDetail.setJypremium(insAreaCompany.getJypremium());
+//                            sysPremiumDetail.setSypremium(insAreaCompany.getSypremium());
+//                            sysPremiumDetail.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
+//                            sysPremiumDetail.setProportional(sysPartner.getProportional());
+//                            sysPremiumDetail.setStatus(0);
+//                            sysPremiumDetail.setType(2);
+//                            sysPremiumDetail.setIssuerId(userId);
+//                            sysPremiumDetail.setIssuerName(insOrders.getUsername());
+//                            sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(sysPartner.getProportional())
+//                                    .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+//                            sysPremiumDetail.setCreateTime(new Date());
+//                            sysPremiumDetail.setIndustrySector(1);
+//                            sysPremiumDetailsMapper.insert(sysPremiumDetail);
+//                        }
+//                    }
+//                }
+//            }
         }
 
         if (InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insOrders.getOrderstatus())) {
@@ -254,6 +342,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     }
 
+    private String getFiveDeptId(SysDept sysDept) {
+        String comlevel = sysDept.getComlevel();
+        if (StringUtils.isNotEmpty(comlevel) && comlevel.equals("5")) {
+            return sysDept.getId();
+        }else {
+            SysDept sysDept1 = sysDeptService.getById(sysDept.getParentId());
+            return getFiveDeptId(sysDept1);
+        }
+    }
+
 
     @Override
     public List<CarModelDTO> vinSearch(String vin) {
@@ -2075,8 +2173,17 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      * 更新订单的起保与终保时间
      */
     @Override
-    public void updateOrderStartingInsruanceTime(String orderno, String jqStartTime, String jqEndTime, String syStartTime, String syEndTime) {
+    public void updateOrderStartingInsruanceTime(String orderno, String jqStartTime, String jqEndTime, String syStartTime, String syEndTime, InsAreaCompany insAreaCompany) {
         InsOrders order = this.getById(orderno);
+        SysUser sysUser = sysUserService.getById(order.getUserid());
+
+        // 更新维护人
+        String s = Optional.ofNullable(sysUser).map(SysUser::getLeaderId).orElse(null);
+        if(StringUtils.isNotEmpty(s)){
+            insAreaCompany.setLeaderId(sysUser.getLeaderId());
+            insAreaCompany.setLeaderName(sysUser.getLeaderName());
+        }
+
         if ((Objects.isNull(order.getJqstartdate()) || !order.getJqstartdate().equals(jqStartTime)) &&
                 (Objects.isNull(order.getJqenddate()) || !order.getJqenddate().equals(jqEndTime)) &&
                 (Objects.isNull(order.getSystartdate()) || !order.getSystartdate().equals(syStartTime)) &&

+ 25 - 8
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -88,7 +88,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
     private String apiUrl;
 
     @Autowired
-    private  InsSubOrderUpdateDetailService insSubOrderUpdateDetailService;
+    private InsSubOrderUpdateDetailService insSubOrderUpdateDetailService;
 
 
     @Override
@@ -247,7 +247,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
             if (OrderStatusEnum.O_3.getCode().equals(resultObj.getOrderStatus())) {
                 //  add  by  hxl  添加手动更新状态
-                insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.TO_BACK.getCode(),"1");
+                insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.TO_BACK.getCode(), "1");
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
                 return HttpResult.error(OrderStatusEnum.O_3.getName() + ":" + uwMsg);
@@ -255,7 +255,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
             } else if (OrderStatusEnum.O_1.getCode().equals(resultObj.getOrderStatus())) {
                 insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
                 //  add  by  hxl  添加手动更新状态
-                insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
+                insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.WAIT_AUDIT.getCode(), "1");
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
                 return HttpResult.error("人工核保" + ":" + uwMsg);
@@ -380,7 +380,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
             List<DrivingInsuranceDto> drivingInsuranceDto = queryOrderDetailResponse.getDrivingInsuranceDto();
             insAreaCompany.setCrossInsurance(JSON.parseArray(JSON.toJSONString(drivingInsuranceDto)));
             //  add  by  hxl  添加手动更新状态
-            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
+            insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(), "1");
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             return HttpResult.ok("订单已支付,订单状态修改完成");
@@ -424,7 +424,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
             String proposalNo = paymentCallbacksRequest.getOrderId();
             InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(proposalNo);
             //  add  by  hxl  添加自动更新状态
-            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"2");
+            insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(), "2");
             // 保单号
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
@@ -452,7 +452,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
         if (OrderStatusEnum.O_2.getCode().equals(resultObj.getOrderStatus())) {
             //  add  by  hxl  添加手动更新状态
-            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_PAY.getCode(),"1");
+            insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.WAIT_PAY.getCode(), "1");
             QueryOrderDetailResponse.BaseInfoDTO baseInfo = queryOrderDetailResponse.getResultObj().getBaseInfo();
 
             insAreaCompany.setJqpolicyno(baseInfo.getPolicyNoCI());
@@ -470,7 +470,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
             return HttpResult.ok("核保成功");
         } else if (OrderStatusEnum.O_3.getCode().equals(resultObj.getOrderStatus())) {
             //  add  by  hxl  添加手动更新状态
-            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.TO_BACK.getCode(),"1");
+            insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.TO_BACK.getCode(), "1");
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
 
             List<QueryOrderDetailResponse.OrderPolicyListDTO> orderPolicyListDTOS = resultObj.getOrderPolicyList()
@@ -649,7 +649,6 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         HttpHeaders httpHeaders = zijinRequestApiComponents.getHttpHeaders(insAreaCompany.getAgreementId());
 
         // 2 请求查看订单状态
-        OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
         QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(insAreaCompany.getInsOrderNo(), httpHeaders);
         QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
 
@@ -688,4 +687,22 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         return true;
     }
 
+    @Override
+    public HttpResult sendCheckCarLink(String companyId) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        // 1 通过 协议id获取配置实体
+        HttpHeaders httpHeaders = zijinRequestApiComponents.getHttpHeaders(insAreaCompany.getAgreementId());
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+        String ownerName = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class).getName();
+        String applyMobile = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class).getMobile();
+
+        SendCheckCarLinkRequest sendCheckCarLinkRequest = new SendCheckCarLinkRequest(
+                insAreaCompany.getInsOrderNo(),
+                ownerName,
+                applyMobile
+        );
+        zijinRequestApiComponents.sendCheckCarLink(sendCheckCarLinkRequest, httpHeaders);
+        return HttpResult.ok("【验车链接】短信已发送投保人,请及时处理。");
+    }
+
 }

+ 2 - 1
src/main/resources/application-pre.yml

@@ -285,7 +285,8 @@ zijin:
     orderDetailUrl: http://open.zking.com/api/v1/insurance/autoMobile/geelyCarInsurance/queryOrderDetail
     # 下载保单地址
     downLoadDocument: http://open.zking.com/temp/api/v1/insurance/nonAutoMobile/queryPolicy/downLoadDocument
-
+    # 对接三方渠道验车链接接口
+    sendCheckCarLink:  http://open.zking.com/api/v1/open/open-aggregate/auth/wanJiaYun/sendCheckCarLink
 
 agreement:
   shutdown: true

+ 2 - 0
src/main/resources/application-prod.yml

@@ -278,6 +278,8 @@ zijin:
     orderDetailUrl: http://open.zking.com/api/v1/insurance/autoMobile/geelyCarInsurance/queryOrderDetail
     # 下载保单地址
     downLoadDocument: http://open.zking.com/temp/api/v1/insurance/nonAutoMobile/queryPolicy/downLoadDocument
+    # 对接三方渠道验车链接接口
+    sendCheckCarLink:  http://open.zking.com/api/v1/open/open-aggregate/auth/wanJiaYun/sendCheckCarLink
 
 
 agreement:

+ 2 - 1
src/main/resources/application-test.yml

@@ -355,7 +355,8 @@ zijin:
     orderDetailUrl: http://test-open.zking.com/api/v1/insurance/autoMobile/geelyCarInsurance/queryOrderDetail
     # 下载保单地址
     downLoadDocument: http://test-open.zking.com/temp/api/v1/insurance/nonAutoMobile/queryPolicy/downLoadDocument
-
+    # 对接三方渠道验车链接接口
+    sendCheckCarLink:  http://open.zking.com/api/v1/open/open-aggregate/auth/wanJiaYun/sendCheckCarLink
 
 image:
   # 验证码识别

+ 16 - 0
src/main/resources/mapper/modules/admin/SysPartnerAccountMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysPartnerAccountMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartnerAccount" id="SysPartnerTimeMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="sumPremium" column="sum_Premium" jdbcType="NUMERIC"/>
+        <result property="extractFee" column="extract_fee" jdbcType="NUMERIC"/>
+        <result property="cashFee" column="cash_fee" jdbcType="NUMERIC"/>
+        <result property="historyFee" column="history_fee" jdbcType="NUMERIC"/>
+        <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
+    </resultMap>
+
+
+</mapper>

+ 14 - 0
src/main/resources/mapper/modules/admin/SysPartnerConfigMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysPartnerConfigMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartnerConfig" id="SysPartnerConfigMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="logo" column="logo" jdbcType="VARCHAR"/>
+        <result property="image" column="image" jdbcType="VARCHAR"/>
+        <result property="level" column="level" jdbcType="INTEGER"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+    </resultMap>
+
+</mapper>
+

+ 8 - 0
src/main/resources/mapper/modules/admin/SysPartnerMapper.xml

@@ -69,5 +69,13 @@
           and sal.suggest_id is null
     </select>
 
+    <select id="queryByLoginId" resultType="com.ydtech.modules.admin.model.SysPartner">
+        select sal.*
+        from sys_partner sal
+        left join sys_relation_person srp on srp.agency_leader_id=sal.user_id
+        where srp.type = 0 and srp.suggest_id = #{userId}
+    </select>
+
+
 </mapper>
 

+ 17 - 0
src/main/resources/mapper/modules/admin/SysPartnerTimeMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysPartnerTimeMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartnerTime" id="SysPartnerTimeMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="oldProportional" column="old_proportional" jdbcType="VARCHAR"/>
+        <result property="newProportional" column="new_proportional" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
+        <result property="type" column="type" jdbcType="INTEGER"/>
+    </resultMap>
+
+
+</mapper>
+

+ 51 - 0
src/main/resources/mapper/modules/admin/SysPremiumDetailsMapper.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysPremiumDetailsMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPremiumDetails" id="SysPartnerTimeMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="orderno" column="orderno" jdbcType="VARCHAR"/>
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+        <result property="jqpremium" column="jqpremium" jdbcType="NUMERIC"/>
+        <result property="sypremium" column="sypremium" jdbcType="NUMERIC"/>
+        <result property="jypremium" column="jypremium" jdbcType="NUMERIC"/>
+        <result property="sumpremium" column="sumpremium" jdbcType="NUMERIC"/>
+        <result property="extractFee" column="extract_fee" jdbcType="NUMERIC"/>
+        <result property="status" column="status" jdbcType="INTEGER"/>
+        <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
+        <result property="proportional" column="proportional" jdbcType="VARCHAR"/>
+    </resultMap>
+    <update id="updateStatus">
+        update sys_premium_details set status = 1 where company_id = #{id}
+    </update>
+    <select id="queryInsAreaPageById" resultType="com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo">
+        select
+            io.userid as userId,
+            io.username as userName,
+            io.licenseno as licenseno,
+            apd.company_id as companyId,
+            apd.jqpremium as jqpremium,
+            apd.sypremium as sypremium,
+            apd.jypremium as jypremium,
+            apd.sumpremium as sumpremium,
+            apd.create_time as createtime,
+            iac.orderstatus as orderstatus
+        from sys_premium_details apd
+        left join ins_orders io on io.orderno = apd.orderno
+        left join ins_area_company iac on iac.id = apd.company_id
+        <where>
+            apd.status = 1 and apd.type = 1
+            <if test="dto.userId !=null  and  dto.userId !=''">
+                and io.userid = #{dto.userId}
+            </if>
+            <if test="dto.deptId !=null  and  dto.deptId !=''">
+                and io.deptid like concat( #{dto.deptId}, '%')
+            </if>
+        </where>
+        ORDER BY apd.create_time desc
+
+    </select>
+
+
+</mapper>

Некоторые файлы не были показаны из-за большого количества измененных файлов