Преглед на файлове

Merge branches 'test' and 'test' of http://www.baoxianzhanggui.com:8090/sxzgd/java-insagent-pc into test

hxl13994548489 преди 2 години
родител
ревизия
0d89d30b18
променени са 25 файла, в които са добавени 698 реда и са изтрити 42 реда
  1. 1 1
      sql/Online.sql
  2. 50 11
      src/main/java/com/ydtech/modules/admin/controller/deptBalance/DeptBalanceController.java
  3. 33 1
      src/main/java/com/ydtech/modules/admin/dao/DeptBalanceMapper.java
  4. 4 0
      src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java
  5. 20 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java
  6. 7 0
      src/main/java/com/ydtech/modules/admin/dao/SysRelationPersonMapper.java
  7. 2 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  8. 1 1
      src/main/java/com/ydtech/modules/admin/model/SysPartner.java
  9. 64 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConsoleDto.java
  10. 14 0
      src/main/java/com/ydtech/modules/admin/model/vo/DeptBalanceVo.java
  11. 31 0
      src/main/java/com/ydtech/modules/admin/model/vo/PartnerBalanceVo.java
  12. 4 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java
  13. 32 0
      src/main/java/com/ydtech/modules/admin/service/DeptBalanceService.java
  14. 2 0
      src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java
  15. 2 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  16. 214 9
      src/main/java/com/ydtech/modules/admin/service/impl/DeptBalanceServiceImpl.java
  17. 5 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java
  18. 2 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  19. 4 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  20. 102 16
      src/main/resources/mapper/modules/admin/DeptBalanceMapper.xml
  21. 17 1
      src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml
  22. 22 0
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  23. 49 0
      src/main/resources/mapper/modules/admin/SysRelationPersonMapper.xml
  24. 16 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  25. 0 1
      src/main/resources/mapper/modules/esm/EsmUserReferrerMapper.xml

+ 1 - 1
sql/Online.sql

@@ -231,4 +231,4 @@ CREATE TABLE `pingan_sh_uploafile`  (
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '平安事后文件上传资料' ROW_FORMAT = Dynamic;
 
 --add by helixiao 20240827
-ALTER TABLE `sys_partner` ADD COLUMN `rank` tinyint NOT NULL DEFAULT '1' COMMENT '合伙人等级';
+ALTER TABLE `sys_partner` ADD COLUMN `type` tinyint NOT NULL DEFAULT '1' COMMENT '合伙人等级';

+ 50 - 11
src/main/java/com/ydtech/modules/admin/controller/deptBalance/DeptBalanceController.java

@@ -4,15 +4,16 @@ package com.ydtech.modules.admin.controller.deptBalance;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
+import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
 import com.ydtech.modules.admin.service.DeptBalanceService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @Api(tags = "机构管理费统计")
 @RequestMapping("/deptBalance")
@@ -23,22 +24,60 @@ public class DeptBalanceController {
     private DeptBalanceService deptBalanceService;
 
 
-
     /**
-     *  @version
-     *  @author: whp
-     *  @Date: 2024/08/14 9:04
-     *  @Description:  机构负责人统计
+     * @version
+     * @author: whp
+     * @Date: 2024/08/14 9:04
+     * @Description: 机构负责人统计
      */
     @PostMapping("deptLeaderStatistics")
     @ApiOperation(value = "机构负责人统计")
     public HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(@RequestBody DeptBalanceVo deptBalanceVo) {
-            HttpResult<IPage<DeptBalanceDto>> result = deptBalanceService.queryDeptLeaderStatistics(deptBalanceVo);
-            return result;
+        HttpResult<IPage<DeptBalanceDto>> result = deptBalanceService.queryDeptLeaderStatistics(deptBalanceVo);
+        return result;
+    }
+
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/23 9:04
+     * @Description: 合伙人统计
+     */
+    @PostMapping("queryPartnerStatistics")
+    @ApiOperation(value = "合伙人统计")
+    public HttpResult<IPage<SysPartnerConsoleDto>> queryPartnerStatistics(@RequestBody DeptBalanceVo deptBalanceVo) {
+        HttpResult<IPage<SysPartnerConsoleDto>> result = deptBalanceService.queryPartnerStatistics(deptBalanceVo);
+        return result;
+    }
+
+
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/26
+     * @Description: 机构树形
+     */
+    @PostMapping("treeDeptUser")
+    @ApiOperation(value = "机构用户树形")
+    public HttpResult<List<SysPartnerConsoleDto>> getTreeDeptUser(@RequestBody PartnerBalanceVo deptBalanceVo) {
+        List<SysPartnerConsoleDto> result = deptBalanceService.getTreeDeptUser(deptBalanceVo);
+        return HttpResult.ok(result);
     }
 
 
 
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/26
+     * @Description: 钱包代理人
+     */
+    @PostMapping("walletAgent")
+    @ApiOperation(value = "钱包代理人")
+    public HttpResult<IPage<SysPartnerConsoleDto>> getWalletAgent(@RequestBody DeptBalanceVo deptBalanceVo) {
+        IPage<SysPartnerConsoleDto> result = deptBalanceService.getWalletAgent(deptBalanceVo);
+        return HttpResult.ok(result);
+    }
 
 
 

+ 33 - 1
src/main/java/com/ydtech/modules/admin/dao/DeptBalanceMapper.java

@@ -3,11 +3,43 @@ package com.ydtech.modules.admin.dao;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
 
 @Mapper
 public interface DeptBalanceMapper {
-    IPage<DeptBalanceDto> queryDeptLeaderStatistics(Page page, DeptBalanceVo deptBalanceVo);
+    IPage<DeptBalanceDto> queryDeptLeaderStatistics(@Param("page") Page page,  @Param("vo")  DeptBalanceVo deptBalanceVo);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/23 9:04
+     *  @Description:  合伙人统计
+     */
+    IPage<SysPartnerConsoleDto> queryPartnerStatistics(@Param("page") Page page, @Param("vo") DeptBalanceVo deptBalanceVo);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/23 9:04
+     *  @Description:  合伙人保费金额
+     */
+    HashMap<String, BigDecimal> getByDeptId(String deptId);
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/26
+     * @Description: 钱包代理人
+     */
+    IPage<SysPartnerConsoleDto> getWalletAgent(@Param("page") Page page,@Param("vo") DeptBalanceVo deptBalanceVo);
 
+    /**
+     *
+     * @param userId
+     * @return  获取代理人 总收入
+     */
+    HashMap<String, BigDecimal> getWalletAgentAmount(String userId);
 }

+ 4 - 0
src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java

@@ -3,6 +3,9 @@ package com.ydtech.modules.admin.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 配置机构负责人(AgencyLeader)表数据库访问层
@@ -13,5 +16,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface SysAgencyLeaderMapper extends BaseMapper<SysAgencyLeader> {
 
+    List<SysAgencyLeader> getByUserIdList( @Param("userIds") List<String> collect);
 }
 

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

@@ -1,8 +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.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysPartner;
+import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
+import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
+import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 配置机构合伙人表(SysPartner)表数据库访问层
@@ -14,5 +24,15 @@ import org.apache.ibatis.annotations.Mapper;
 public interface SysPartnerMapper extends BaseMapper<SysPartner> {
 
 
+    List<SysPartner> getByUserId(List<String> recursion);
+
+    IPage<SysPartnerConsoleDto> queryPage(@Param("page") Page page, @Param("vo") DeptBalanceVo deptBalanceVo);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/26
+     *  @Description:  机构树形
+     */
+    List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo partnerBalanceVo);
 }
 

+ 7 - 0
src/main/java/com/ydtech/modules/admin/dao/SysRelationPersonMapper.java

@@ -3,7 +3,11 @@ package com.ydtech.modules.admin.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.admin.model.SysRelationPerson;
+import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 合伙人推荐人和机构负责人关系表(SysRelationPerson)表数据库访问层
@@ -15,6 +19,9 @@ import org.apache.ibatis.annotations.Mapper;
 public interface SysRelationPersonMapper extends BaseMapper<SysRelationPerson> {
 
 
+    List<SysRelationPerson> getByUserIdList(@Param("userIds") List<String> recursion);
 
+    List<SysRelationPerson> getByAgencyLeaderId(String userId);
+    List<SysPartnerConsoleDto> getBySuggestId( @Param("vo") SysPartnerConsoleDto sysPartnerConsoleDto);
 }
 

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

@@ -123,6 +123,8 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     List<SysUserVO> findListByDeptId(@Param("sysUser") SysUser sysUser);
 
+    List<SysUserVO> findListByDeptIdNew(@Param("sysUser") SysUser sysUser);
+
     Page<SysUserBaseVO> gainUserBaseInfo(@Param("page") Page page, @Param("user") SysUserDto user);
 
     IPage<SysUserBaseVO> findUserList(@Param("page") Page page, @Param("user") SysUserDto user);

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/SysPartner.java

@@ -37,7 +37,7 @@ public class SysPartner implements Serializable {
     private String userName;
 
     @ApiModelProperty(value = "合伙人等级")
-    private int rank;
+    private int type;
     /**
      * 抽成比例(总保费抽成)
      */

+ 64 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConsoleDto.java

@@ -0,0 +1,64 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "合伙人控制台")
+public class SysPartnerConsoleDto implements Serializable {
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+
+    @ApiModelProperty(value = "机构管理费")
+    private BigDecimal deptManagementFee;
+
+    @ApiModelProperty(value = "总收入")
+    private BigDecimal totalIncome;
+
+    @ApiModelProperty(value = "已提现")
+    private BigDecimal withdrawn;
+
+    @ApiModelProperty(value = "未体现")
+    private BigDecimal notWithdrawn;
+
+    @ApiModelProperty(value = "是否合伙人 0 是  1 否")
+    private String type;
+
+    @ApiModelProperty(value = "子级list")
+    private List<SysPartnerConsoleDto> childrenList;
+
+    @ApiModelProperty(value = "头像")
+    private String filePath;
+
+
+}

+ 14 - 0
src/main/java/com/ydtech/modules/admin/model/vo/DeptBalanceVo.java

@@ -7,6 +7,7 @@ import lombok.Data;
 
 import javax.validation.constraints.Min;
 import java.io.Serializable;
+import java.util.List;
 
 @Data
 @ApiModel("机构负责人统计")
@@ -30,4 +31,17 @@ public class DeptBalanceVo implements Serializable {
     @ApiModelProperty(value = "页数")
     @Min(value = 1, message = "页数最小为1")
     private int pageNum;
+
+
+    @ApiModelProperty(value = "部门id")
+    private String deptId;
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "用户idList")
+    private List<String> userIdList;
+
+    @ApiModelProperty(value = "是否是个代渠道")
+    private String managementSource;
 }

+ 31 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerBalanceVo.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@ApiModel(value = "合伙人控制台")
+public class PartnerBalanceVo  implements Serializable {
+    @ApiModelProperty(value = "省机构id")
+    private String provinceId;
+
+    @ApiModelProperty(value = "市机构id")
+    private String cityId;
+
+    @ApiModelProperty(value = "县机构id")
+    private String countyId;
+
+    @ApiModelProperty(value = "门店机构id")
+    private String houseId;
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "用户idList")
+    private List<String> userIdList;
+}

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java

@@ -10,6 +10,7 @@ import lombok.Data;
 import javax.validation.constraints.Min;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 @Data
 @ApiModel("查询Vo")
@@ -150,4 +151,7 @@ public class SysAmountAuditingVo {
 
     @ApiModelProperty("支付结束时间")
     private String  endAuditingTime;
+
+    @ApiModelProperty("用户idList")
+    private List<String> userIdList;
 }

+ 32 - 0
src/main/java/com/ydtech/modules/admin/service/DeptBalanceService.java

@@ -3,7 +3,11 @@ package com.ydtech.modules.admin.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
+import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
+
+import java.util.List;
 
 public interface DeptBalanceService {
 
@@ -14,4 +18,32 @@ public interface DeptBalanceService {
      *  @Description:  机构负责人统计
      */
     HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(DeptBalanceVo deptBalanceVo);
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/23 9:04
+     *  @Description:  合伙人统计
+     */
+    HttpResult<IPage<SysPartnerConsoleDto>> queryPartnerStatistics(DeptBalanceVo deptBalanceVo);
+
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/26
+     *  @Description:  机构树形
+     */
+
+    List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo deptBalanceVo);
+
+
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/26
+     * @Description: 钱包代理人
+     */
+    IPage<SysPartnerConsoleDto> getWalletAgent(DeptBalanceVo deptBalanceVo);
+
 }

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

@@ -52,4 +52,6 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
     List<SysAgencyLeaderVo> queryAgencyLeader(String userId);
 
     List<SysUser> getLevelUser(String id);
+
+    List<SysAgencyLeader> getByUserIdList(List<String> collect);
 }

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

@@ -72,6 +72,8 @@ public interface SysUserService extends BaseIService<SysUser> {
 
     List<SysUserVO> findListByDeptId(SysUser sysUser);
 
+    List<SysUserVO> findListByDeptIdNew(SysUser sysUser);
+
     PageVo<SysUserBaseVO> gainUserPage(PageDto<SysUserDto> pageDto);
 
 

+ 214 - 9
src/main/java/com/ydtech/modules/admin/service/impl/DeptBalanceServiceImpl.java

@@ -1,23 +1,35 @@
 package com.ydtech.modules.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.DeptBalanceMapper;
+import com.ydtech.modules.admin.dao.SysPartnerMapper;
+import com.ydtech.modules.admin.dao.SysRelationPersonMapper;
+import com.ydtech.modules.admin.model.SysAgencyLeader;
+import com.ydtech.modules.admin.model.SysPartner;
+import com.ydtech.modules.admin.model.SysRelationPerson;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
-import com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO;
-import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
+import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
+import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
+import com.ydtech.modules.admin.model.vo.SysUserVO;
 import com.ydtech.modules.admin.service.DeptBalanceService;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
+import com.ydtech.modules.admin.service.SysAmountAuditingService;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.model.vo.PageVo;
-import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesSumEntity;
-import org.apache.commons.lang3.ObjectUtils;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -29,12 +41,22 @@ public class DeptBalanceServiceImpl implements DeptBalanceService {
 
     @Autowired
     private DeptBalanceMapper deptBalanceMapper;
+    @Autowired
+    private SysRelationPersonMapper sysRelationPersonMapper;
+    @Autowired
+    private SysPartnerMapper sysPartnerMapper;
+    @Autowired
+    private InsOrdersService insOrdersService;
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private SysAmountAuditingService sysAmountAuditingService;
 
     /**
-     *  @version
-     *  @author: whp
-     *  @Date: 2024/08/14 9:04
-     *  @Description:  机构负责人统计
+     * @version
+     * @author: whp
+     * @Date: 2024/08/14 9:04
+     * @Description: 机构负责人统计
      */
     @Override
     public HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(DeptBalanceVo deptBalanceVo) {
@@ -51,4 +73,187 @@ public class DeptBalanceServiceImpl implements DeptBalanceService {
         }
     }
 
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/23 9:04
+     * @Description: 合伙人统计
+     */
+    @Override
+    public HttpResult<IPage<SysPartnerConsoleDto>> queryPartnerStatistics(DeptBalanceVo deptBalanceVo) {
+        try {
+            PageVo<SysPartnerConsoleDto> pageVo = new PageVo<>();
+            Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
+            pageVo.setPageNum(deptBalanceVo.getPageNum());
+            pageVo.setPageSize(deptBalanceVo.getPageSize());
+            SysUser sysUserQuery = new SysUser();
+            sysUserQuery.setDeptId(deptBalanceVo.getDeptId());
+            List<SysUserVO> listByDeptIdUser = this.sysUserService.findListByDeptIdNew(sysUserQuery);
+            List<String> userListDept = listByDeptIdUser.stream().map(SysUserVO::getId).collect(Collectors.toList());
+            if (userListDept.isEmpty()) {
+                userListDept.add("0");
+            }
+            deptBalanceVo.setUserIdList(userListDept);
+            IPage<SysPartnerConsoleDto> sysPartnersPage = sysPartnerMapper.queryPage(page, deptBalanceVo);
+
+            List<SysPartnerConsoleDto> sysPartners = sysPartnersPage.getRecords();
+            for (SysPartnerConsoleDto item : sysPartners) {
+                BigDecimal allTotalIncome = BigDecimal.ZERO;  // 总保费
+                BigDecimal allDeptManagementFee = BigDecimal.ZERO;//机构管理费
+                BigDecimal allWithdrawn = BigDecimal.ZERO;//已体现
+                BigDecimal allNotWithdrawn = BigDecimal.ZERO;//未提现
+//              查询机构负责人
+                List<SysRelationPerson> byUserIdList = this.sysRelationPersonMapper.getByAgencyLeaderId(item.getUserId());
+                List<String> collect = byUserIdList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                if (!collect.isEmpty()) {
+//                  机构负责人
+                    List<SysAgencyLeader> deptLeader = sysAgencyLeaderService.getByUserIdList(collect);
+                    for (SysAgencyLeader itemLeader : deptLeader) {
+                        String deptId = itemLeader.getDeptId();
+                        if (StringUtils.isNotEmpty(deptId)) {
+                            HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getByDeptId(deptId);
+                            if (orderAmount != null && !orderAmount.isEmpty()) {
+                                allTotalIncome = this.calculateTotal(orderAmount.get("totalIncome"), allTotalIncome, null);  // 总保费
+                                allDeptManagementFee = this.calculateTotal(orderAmount.get("deptManagementFee"), allDeptManagementFee, null);//机构管理费
+                            }
+                            SysUser sysUser = new SysUser();
+                            sysUser.setDeptId(deptId);
+//                          机构下的userId
+                            List<SysUserVO> listByDeptId = sysUserService.findListByDeptId(sysUser);
+                            List<String> institutionId = listByDeptId.stream().map(SysUserVO::getId).collect(Collectors.toList());
+//                          已提现
+                            SysAmountAuditingVo sysAmountAuditingVo = new SysAmountAuditingVo();
+                            sysAmountAuditingVo.setUserIdList(institutionId);
+                            sysAmountAuditingVo.setAuditingStatus("3");
+                            BigDecimal withdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
+                            allWithdrawn = this.calculateTotal(withdrawn, allWithdrawn, null);
+//                          未提现
+                            sysAmountAuditingVo.setAuditingStatus("2");
+                            BigDecimal notWithdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
+                            allNotWithdrawn = this.calculateTotal(notWithdrawn, allNotWithdrawn, null);
+                        }
+                    }
+                }
+                item.setTotalIncome(allTotalIncome);
+                item.setDeptManagementFee(allDeptManagementFee);
+                item.setWithdrawn(allWithdrawn);
+                item.setNotWithdrawn(allNotWithdrawn);
+
+            }
+            return HttpResult.ok(sysPartnersPage);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResult.error("查询异常");
+        }
+    }
+
+
+    private List<String> recursion(String userId) {
+        QueryWrapper<SysRelationPerson> objectQueryWrapper = new QueryWrapper<>();
+//       合伙人
+        QueryWrapper<SysRelationPerson> sysRelationPerson = objectQueryWrapper.eq("suggest_id", userId)
+                .eq("type", "0");
+        List<SysRelationPerson> sysRelationPeople = this.sysRelationPersonMapper.selectList(sysRelationPerson);
+        List<String> collect = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        collect.add(userId);
+
+        return collect;
+    }
+
+    private BigDecimal calculateTotal(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
+        BigDecimal total = BigDecimal.ZERO;
+
+        if (value1 != null) {
+            total = total.add(value1);
+        }
+
+        if (value2 != null) {
+            total = total.add(value2);
+        }
+        if (value3 != null) {
+            total = total.add(value3);
+        }
+
+        return total;
+    }
+
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/26
+     * @Description: 机构树形
+     */
+    @Override
+    public List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo deptBalanceVo) {
+//      所有最上级合伙人
+        List<SysPartnerConsoleDto> result = sysPartnerMapper.getTreeDeptUser(deptBalanceVo);
+//       合伙人的下级
+        for (SysPartnerConsoleDto item : result) {
+            this.treeRecursion(item);
+        }
+        return result;
+    }
+
+
+    private void treeRecursion(SysPartnerConsoleDto item) {
+        String userId = item.getUserId();
+        if (StringUtils.isNotEmpty(userId)) {
+//          合伙人
+            SysPartnerConsoleDto sysPartnerConsoleDto = new SysPartnerConsoleDto();
+            sysPartnerConsoleDto.setUserId(userId);
+            sysPartnerConsoleDto.setType("0");
+            List<SysPartnerConsoleDto> sysPartnerList = this.sysRelationPersonMapper.getBySuggestId(sysPartnerConsoleDto);
+            item.setChildrenList(sysPartnerList);
+//          机构负责人
+            sysPartnerConsoleDto.setType("1");
+            List<SysPartnerConsoleDto> sysHeadList = this.sysRelationPersonMapper.getBySuggestId(sysPartnerConsoleDto);
+            List<SysPartnerConsoleDto> childrenList = item.getChildrenList();
+            childrenList.addAll(sysHeadList);
+            if (!sysPartnerList.isEmpty()) {
+                for (SysPartnerConsoleDto sysPartnerItem : sysPartnerList) {
+                    this.treeRecursion(sysPartnerItem);
+                }
+            }
+        }
+    }
+
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/08/26
+     * @Description: 钱包代理人
+     */
+    @Override
+    public IPage<SysPartnerConsoleDto> getWalletAgent(DeptBalanceVo deptBalanceVo) {
+        PageVo<SysPartnerConsoleDto> pageVo = new PageVo<>();
+        Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
+        pageVo.setPageNum(deptBalanceVo.getPageNum());
+        pageVo.setPageSize(deptBalanceVo.getPageSize());
+        IPage<SysPartnerConsoleDto> sysUserListPage = deptBalanceMapper.getWalletAgent(page, deptBalanceVo);
+        List<SysPartnerConsoleDto> records = sysUserListPage.getRecords();
+        if (!records.isEmpty()) {
+            for (SysPartnerConsoleDto record : records) {
+                String userId = record.getUserId();
+                HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getWalletAgentAmount(userId);
+//              总金额
+                if (orderAmount != null && !orderAmount.isEmpty()) {
+                    record.setTotalIncome(orderAmount.get("totalIncome"));
+                }
+//                          已提现
+                SysAmountAuditingVo sysAmountAuditingVo = new SysAmountAuditingVo();
+                sysAmountAuditingVo.setUserId(userId);
+                sysAmountAuditingVo.setAuditingStatus("3");
+                BigDecimal withdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
+                record.setWithdrawn(withdrawn);
+//                          未提现
+                sysAmountAuditingVo.setAuditingStatus("2");
+                BigDecimal notWithdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
+                record.setNotWithdrawn(notWithdrawn);
+            }
+        }
+        return sysUserListPage;
+    }
 }
+
+
+

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

@@ -175,6 +175,11 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         return sysUserList;
     }
 
+    @Override
+    public List<SysAgencyLeader> getByUserIdList(List<String> collect) {
+        return baseMapper.getByUserIdList(collect);
+    }
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)

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

@@ -164,7 +164,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                     .eq(SysPartner::getUserId, sysPartnerDto.getSuggestId())
                     .eq(SysPartner::getDelFlag, 1));
             if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
-            sysPartner.setRank(sysPartnerSuggest.getRank() + 1);
+            sysPartner.setType(sysPartnerSuggest.getType() + 1);
             b = sysPartnerMapper.insert(sysPartner) > 0;
             //保存关系
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
@@ -196,6 +196,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             }
         } else {
             //无推荐人,等级为一级
+            sysPartner.setType(1);
             b = sysPartnerMapper.insert(sysPartner) > 0;
         }
 

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

@@ -446,6 +446,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public List<SysUserVO> findListByDeptId(SysUser sysUser) {
         return super.baseMapper.findListByDeptId(sysUser);
     }
+  @Override
+    public List<SysUserVO> findListByDeptIdNew(SysUser sysUser) {
+        return super.baseMapper.findListByDeptIdNew(sysUser);
+    }
 
     @Override
     public PageVo<SysUserBaseVO> gainUserPage(PageDto<SysUserDto> pageDto) {

+ 102 - 16
src/main/resources/mapper/modules/admin/DeptBalanceMapper.xml

@@ -9,30 +9,32 @@
         sd.name as "deptName",
         sd.address as "deptAddress",
         su.name as "userName",
-        su.comlevel as "comLevel",
-        IFNULL(b.sumPremium,0)  as "deptManagementFee",
+        sd.comlevel as "comLevel",
+        IFNULL(b.sumPremium,0) as "deptManagementFee",
         IFNULL(b.sumPremium,0) * IFNULL((sal.proportional /100),0) as "totalIncome",
-        IFNULL(b.sumPremium,0) * IFNULL((sal.proportional /100)) -IFNULL(c.sumHistoryFee,0) as "notWithdrawn",
+        IFNULL(b.sumPremium,0) * IFNULL((sal.proportional /100),0) -IFNULL(c.sumHistoryFee,0) as "notWithdrawn",
         IFNULL(c.sumHistoryFee,0) as "withdrawn"
         FROM
-        sys_dept  sd
-        left  join  sys_agency_leader sal on sal.dept_id =sd.id
-        left  join  sys_user su on su.id =sal.user_id
-        left join  (
-        select io.userid as "userId", sum(iac.sumpremium) as "sumPremium"  from  ins_orders  io
-
+        sys_dept sd
+        left join sys_agency_leader sal on sal.dept_id =sd.id
+        left join sys_user su on su.id =sal.user_id
+        left join (
+        select io.userid as "userId", sum(iac.sumpremium) as "sumPremium"
+        from ins_orders io
+        left join ins_area_company iac on iac.orderno =io.orderno
         where iac.orderstatus='3'
-        GROUP BY   io.userid
-        )  b  on b.userId = su.id
-        left  join  (
-        select sum(safa.history_fee) as "sumHistoryFee",safa.user_id  as "userId"  from  sys_agency_fee_approval_record safa
+        GROUP BY io.userid
+        ) b on b.userId = su.id
+        left join (
+        select sum(safa.history_fee) as "sumHistoryFee",safa.user_id as "userId" from sys_agency_fee_approval_record
+        safa
         where safa.`status`='1'
-        group  by  safa.user_id
-        )  c  on  c.userId =su.id
+        group by safa.user_id
+        ) c on c.userId =su.id
         <where>
             1=1
             <if test="vo.provinceId != null and vo.provinceId != ''">
-                and sd.id like  concat('%',#{vo.provinceId},'%')
+                and sd.id like concat('%',#{vo.provinceId},'%')
             </if>
             <if test="vo.cityId != null and vo.cityId != ''">
                 and sd.id like concat('%',#{vo.cityId},'%')
@@ -46,5 +48,89 @@
         </where>
     </select>
 
+    <select id="queryPartnerStatistics" resultType="com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto">
+        select
+        sp.id as "id",
+        sp.user_id as "userId",
+        sp.user_name as "userName",
+        sp.proportional as "proportional",
+        sp.suggest_id as "suggestId",
+        sp.suggest_name as "suggestName",
+        sp.create_time as "createTime",
+        sp.create_by as "createBy",
+        sp.del_flag as "delFlag",
+        sd.name as "deptName"
+        from sys_partner sp
+        left join sys_user su on su.id = sp.user_id
+        left join sys_dept sd on sd.id= su.dept_id
+        <where>
+            sp.del_flag='0'
+            <if test="vo.userId !=null  and  vo.userId!='' ">
+                and sp.user_id =#{vo.userId}
+            </if>
+            <if test="vo.userIdList !=null and  vo.userIdList!=''  and vo.userIdList .size() >0">
+                and a.user_id IN
+                <foreach item="item" index="index" collection="userIdList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <select id="getByDeptId" resultType="java.util.HashMap">
+        SELECT
+        sum(IFNULL(iac.jqpremium,0) + IFNULL(iac.sypremium,0) + IFNULL(iac.jypremium,0)) * (sal.proportional /100) as
+        "totalIncome",
+        sum(IFNULL(iac.jqpremium,0) + IFNULL(iac.sypremium,0) + IFNULL(iac.jypremium,0)) * (sal.proportional /100) as
+        "deptManagementFee"
+        FROM
+        ins_orders io
+        left join ins_area_company iac on iac.orderno =io.orderno
+        left join sys_agency_leader sal on sal.dept_id = iac.deptid
+        <where>
+            io.orderstatus ='3'
+            and iac.orderstatus ='3'
+            and sal.del_flag ='1'
+            <if test="deptId  != null  and  deptId !=''">
+                iac.deptid =#{deptId}
+            </if>
+        </where>
+    </select>
+
+    <select id="getWalletAgent" resultType="com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto">
+        select
+        su.id as "userId",
+        su.name as "userName",
+        sd.id as "deptId",
+        sd.name as "deptName",
+        inf.file_path  as "filePath"
+        from sys_user su
+        left join sys_dept sd on sd.id=su.dept_id
+        LEFT JOIN  ins_upload_files   inf on  su.head_sculpture  =inf.id
+        <where>
+            1=1
+            <if test="vo.managementSource !=null  and  vo.managementSource !=''">
+              and  sd.management_source =#{vo.managementSource}
+            </if>
+            <if test="vo.deptId !=null  and  vo.deptId !=''">
+                and sd.id like  concat('%',#{vo.deptId},'%')
+            </if>
+
+        </where>
+    </select>
 
+    <select id="getWalletAgentAmount" resultType="java.util.HashMap">
+        SELECT
+        sum(IFNULL(iac.jqpremium,0) + IFNULL(iac.sypremium,0) + IFNULL(iac.jypremium,0)) as "totalIncome"
+        FROM
+        ins_orders io
+        left join ins_area_company iac on iac.orderno =io.orderno
+        <where>
+            io.orderstatus ='3'
+            and iac.orderstatus ='3'
+            <if test="userId  != null  and  userId !=''">
+             and   io.userid =#{userId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 17 - 1
src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml

@@ -18,10 +18,26 @@
         <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
     </resultMap>
     <sql id="Base_Column_List">
-        id,user_id,user_name,
+        id
+        ,user_id,user_name,
         dept_id,dept_name,comlevel,
         source,proportional,create_time,create_by,update_time,update_by,del_flag
     </sql>
+    <select id="getByUserIdList" resultType="com.ydtech.modules.admin.model.SysAgencyLeader">
+        select *
+        from sys_agency_leader sal
+        <where>
+            1=1
+            <if test="userIds != null and userIds != '' and userIds.size() > 0">
+                and sal.agency_leader_id in
+                <foreach collection="userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+        </where>
+
+    </select>
 
 </mapper>
 

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

@@ -12,6 +12,28 @@
         <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
     </resultMap>
 
+    <select id="queryPage" resultType="com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto">
+        select *
+        from sys_partner sp
+        <where>
+            1=1
+            and sp.del_flag ='1'
+            <if test="vo.userIdList !=null and  vo.userIdList!=''  and vo.userIdList.size() >0">
+                and sp.user_id IN
+                <foreach item="item" index="index" collection="vo.userIdList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <select id="getTreeDeptUser" resultType="com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto">
+        select sal.user_id   as "userId",
+               sal.user_name as "userName"
+        from sys_partner sal
+        where sal.del_flag = '1'
+          and sal.suggest_id is null
+    </select>
 
 </mapper>
 

+ 49 - 0
src/main/resources/mapper/modules/admin/SysRelationPersonMapper.xml

@@ -12,6 +12,55 @@
         <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
     </resultMap>
 
+    <select id="getByUserIdList" resultType="com.ydtech.modules.admin.model.SysRelationPerson">
+        select  *
+        from sys_relation_person a
+        <where>
+            1=1
+            <if test="userIds != null and userIds != '' and userIds.size() > 0">
+                and a.agency_leader_id in
+                <foreach collection="userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
 
+    </select>
+
+    <select id="getByAgencyLeaderId" resultType="com.ydtech.modules.admin.model.SysRelationPerson">
+        select  *
+        from sys_relation_person a
+        <where>
+            1=1
+            and  a.del_flag ='1'
+            and  a.type ='1'
+         <if test="userId != null  and userId !=''">
+             and a.agency_leader_id =#{userId}
+         </if>
+        </where>
+
+    </select>
+
+    <select id="getBySuggestId" resultType="com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto">
+        select
+        a.agency_leader_id as "userId",
+        su.name as "userName"
+        from sys_relation_person a
+        left  join  sys_user  su  on su.id = a.agency_leader_id
+        <where>
+            1=1
+            and  a.del_flag ='1'
+            and  a.source ='0'
+            and  a.type ='0'
+         <if test="vo.userId != null  and vo.userId !=''">
+             and a.suggest_id =#{vo.userId}
+         </if>
+
+         <if test="vo.type != null  and vo.type !=''">
+             and a.type =#{vo.type}
+         </if>
+        </where>
+
+    </select>
 </mapper>
 

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

@@ -495,6 +495,22 @@
             and su.id != #{sysUser.id}
         </if>
     </select>
+
+    <select id="findListByDeptIdNew" resultType="com.ydtech.modules.admin.model.vo.SysUserVO">
+        SELECT
+        su.id,
+        su.name
+        FROM
+        sys_user su
+        WHERE
+        su.status = 1
+        <if test="sysUser.deptId != null and sysUser.deptId != ''">
+            and su.id like  concat('%',#{sysUser.deptId},'%')
+        </if>
+        <if test="sysUser.id != null and sysUser.id != ''">
+            and su.id != #{sysUser.id}
+        </if>
+    </select>
     <select id="getUserNum" resultType="com.ydtech.modules.admin.model.QuUserNum">
         SELECT
         SUBSTRING(io.userid, 3, #{quUserNumDto.grouping}) AS areacode,

+ 0 - 1
src/main/resources/mapper/modules/esm/EsmUserReferrerMapper.xml

@@ -338,7 +338,6 @@
         esm_user_referrer eur
         LEFT JOIN sys_user su ON su.id = eur.id
         LEFT JOIN sys_dept sd ON sd.id = su.dept_id
-
         <where>
             su.id != 'admin'
             AND su.STATUS = 1