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

Merge branch 'refs/heads/test' into test-20240815

wks 2 лет назад
Родитель
Сommit
07bf234db1
56 измененных файлов с 1447 добавлено и 630 удалено
  1. 12 0
      .gitignore
  2. 0 1
      sql/Online.sql
  3. 35 38
      src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java
  4. 14 0
      src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java
  5. 26 17
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java
  6. 2 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  7. 45 0
      src/main/java/com/ydtech/modules/admin/controller/deptBalance/DeptBalanceController.java
  8. 4 3
      src/main/java/com/ydtech/modules/admin/controller/kzt/KZTPermissionController.java
  9. 24 0
      src/main/java/com/ydtech/modules/admin/controller/kzt/KZTRoleController.java
  10. 16 0
      src/main/java/com/ydtech/modules/admin/controller/profitAnalysis/ProfitAnalysisController.java
  11. 13 0
      src/main/java/com/ydtech/modules/admin/dao/DeptBalanceMapper.java
  12. 7 0
      src/main/java/com/ydtech/modules/admin/dao/SysRoleMenuKztMapper.java
  13. 3 3
      src/main/java/com/ydtech/modules/admin/dao/SysRoleMenuMapper.java
  14. 1 1
      src/main/java/com/ydtech/modules/admin/model/SysUserInfo.java
  15. 23 0
      src/main/java/com/ydtech/modules/admin/model/dto/AgencyTeamDto.java
  16. 43 0
      src/main/java/com/ydtech/modules/admin/model/dto/DeptBalanceDto.java
  17. 1 1
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderDto.java
  18. 2 2
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderPageDto.java
  19. 25 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerAPPPageDto.java
  20. 5 2
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerPageDto.java
  21. 50 0
      src/main/java/com/ydtech/modules/admin/model/vo/AgencyTeamVo.java
  22. 33 0
      src/main/java/com/ydtech/modules/admin/model/vo/DeptBalanceVo.java
  23. 3 1
      src/main/java/com/ydtech/modules/admin/model/vo/SysAgencyLeaderVo.java
  24. 46 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysDeptTreeVo.java
  25. 47 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysPartnerAPPPageVo.java
  26. 7 1
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java
  27. 55 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserPartner.java
  28. 17 0
      src/main/java/com/ydtech/modules/admin/service/DeptBalanceService.java
  29. 2 0
      src/main/java/com/ydtech/modules/admin/service/ProfitAnalysisService.java
  30. 9 11
      src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java
  31. 4 0
      src/main/java/com/ydtech/modules/admin/service/SysDeptService.java
  32. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysMenuService.java
  33. 8 3
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  34. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysRoleMenuKztService.java
  35. 54 0
      src/main/java/com/ydtech/modules/admin/service/impl/DeptBalanceServiceImpl.java
  36. 11 0
      src/main/java/com/ydtech/modules/admin/service/impl/ProfitAnalysisServiceImpl.java
  37. 205 323
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java
  38. 26 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  39. 11 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysMenuServiceImpl.java
  40. 171 37
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  41. 10 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysRoleMenuKztServiceImpl.java
  42. 110 64
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  43. 3 0
      src/main/java/com/ydtech/modules/fnc/dao/InsPlyIncomeMapper.java
  44. 6 0
      src/main/java/com/ydtech/modules/fnc/dto/InsuranceHandlingSettlementMonthDto.java
  45. 4 0
      src/main/java/com/ydtech/modules/fnc/entity/InsuranceHandlingSettlementMonthEntity.java
  46. 3 0
      src/main/java/com/ydtech/modules/fnc/service/InsuranceHandlingSettlementMonthService.java
  47. 68 36
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  48. 52 24
      src/main/java/com/ydtech/modules/fnc/service/impl/InsuranceHandlingSettlementMonthServiceImpl.java
  49. 8 8
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/QuoteRequest.java
  50. 4 4
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/QuoteResponse.java
  51. 1 1
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  52. 50 0
      src/main/resources/mapper/modules/admin/DeptBalanceMapper.xml
  53. 9 0
      src/main/resources/mapper/modules/admin/SysRoleMenuKztMapper.xml
  54. 5 2
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  55. 38 45
      src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml
  56. 2 1
      src/main/resources/mapper/modules/insuranceHandlingSettlementMonth/InsuranceHandlingSettlementMonthMapper.xml

+ 12 - 0
.gitignore

@@ -0,0 +1,12 @@
+.idea
+http
+json
+
+target
+
+*.iml
+
+application-dev.yml
+application-local.yml
+logback-spring-dev.xml
+aSql

+ 0 - 1
sql/Online.sql

@@ -138,7 +138,6 @@ CREATE TABLE `sys_relation_person` (
                                        `del_flag` tinyint NOT NULL DEFAULT '1' COMMENT '删除( 0:删除 1:正常)',
                                        PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='合伙人/推荐人和机构负责人关系表';
-ALTER TABLE `sys_user_bank_card` ADD COLUMN `ascription` tinyint DEFAULT NULL COMMENT '归属端 1:渠道 2:个代 a:合伙人 b:机构负责人';
 
 --add by caiyaru 20240813
 ALTER TABLE `sys_user_bank_card` ADD COLUMN `bank_verify` tinyint  DEFAULT 0 COMMENT '0 未验证 1 已验证';

+ 35 - 38
src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java

@@ -1,16 +1,15 @@
 package com.ydtech.modules.admin.controller;
 
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderDto;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.TeamInformationDto;
-import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -24,25 +23,17 @@ public class SysAgencyLeaderController extends BaseController {
     @Resource
     private SysAgencyLeaderService sysAgencyLeaderService;
 
-    /**
-     * 查询正常的后线人员工  id 和姓名
-     */
-    @GetMapping("/getUserInfo")
-    @ApiOperation(value = "查询账号正常的后线人员工")
-    public HttpResult getUserInfo() {
-        return HttpResult.ok(sysAgencyLeaderService.getUserInfo());
-    }
-
 
     /**
-     * 查询有等级的机构comlevel 不为null
+     * 查询四级正常的后线人员
      */
-    @GetMapping("/getDeptInfo")
-    @ApiOperation(value = "查询有等级的机构")
-    public HttpResult getDeptInfo() {
-        return HttpResult.ok(sysAgencyLeaderService.getDeptInfo());
+    @GetMapping("/getUserInfo/{id}")
+    @ApiOperation(value = "添加管理员查询四级正常的后线人员")
+    public HttpResult<List<SysUser>> getLevelUser(@PathVariable("id") String id) {
+        return HttpResult.ok(sysAgencyLeaderService.getLevelUser(id));
     }
 
+
     /**
      * 根据id查询
      *
@@ -51,10 +42,22 @@ public class SysAgencyLeaderController extends BaseController {
      */
     @GetMapping("/queryById/{id}")
     @ApiOperation(value = "根据id查询")
-    public HttpResult queryById(@PathVariable("id") Integer id) {
+    public HttpResult<SysAgencyLeaderVo> queryById(@PathVariable("id") Integer id) {
         return HttpResult.ok("success", this.sysAgencyLeaderService.queryById(id));
     }
 
+    /**
+     * 五级机构下的合伙人
+     * @param id
+     * @return
+     */
+    @GetMapping("/queryInfo/{id}")
+    @ApiOperation(value = "根据id查询")
+    public HttpResult<List<SysAgencyLeaderVo>> queryInfo(@PathVariable("id")  @ApiParam("机构id") String id) {
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryInfo(id));
+    }
+
+
     /**
      * 保存配置机构负责人的信息
      *
@@ -71,16 +74,7 @@ public class SysAgencyLeaderController extends BaseController {
         return HttpResult.ok("添加成功");
     }
 
-//    /**
-//     * 查询所有配置机构负责人的信息
-//     *
-//     * @return
-//     */
-//    @PostMapping("/queryInfo")
-//    @ApiOperation(value = "查询所有配置机构负责人的信息")
-//    public HttpResult<List<SysAgencyLeaderVo>> queryInfo() {
-//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryInfo());
-//    }
+
 
     /**
      * 分页查询配置机构负责人的信息
@@ -160,15 +154,6 @@ public class SysAgencyLeaderController extends BaseController {
         return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeAll(sysAgencyLeaderPageDto));
     }
 
-    /**
-     * 查询机构下所有团队的信息
-     */
-//    @PostMapping("/queryTeamInfo")
-//    @ApiOperation(value = "查询机构下所有团队的信息")
-//    public HttpResult<List<TeamInformation>> queryTeamInfo(@RequestBody TeamInformationDto teamInformationDto){
-//
-//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryTeamInfo(teamInformationDto));
-//    }
 
     /**
      * 分页查询机构下所有团队的信息
@@ -180,6 +165,18 @@ public class SysAgencyLeaderController extends BaseController {
         return HttpResult.ok("success", this.sysAgencyLeaderService.queryTeamInfoPage(teamInformationDto));
     }
 
+    /**
+     * 合伙人直接机构、间接机构分页查询
+     */
+    @PostMapping("/queryWorkroomPage")
+    @ApiOperation(value = "合伙人查看直接机构、间接机构分页查询")
+    public HttpResult<BasePageResult<AgencyTeamVo>> queryWorkroomPage(@RequestBody AgencyTeamDto agencyTeamDto){
+
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryWorkroomPage(agencyTeamDto));
+    }
+
+
+
     /**
      * 查询团队下人员  报价笔数 核保笔数 出单笔数 签单保费
      */

+ 14 - 0
src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java

@@ -9,6 +9,7 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysPassword;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.SysDeptRemoveVo;
+import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
 import com.ydtech.modules.admin.model.vo.SysDeptVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysPasswordService;
@@ -171,4 +172,17 @@ public class SysDeptController extends BaseController {
         return HttpResult.ok(sysDeptList);
     }
 
+    /**
+     * 合伙人、工作室管理机构树
+     * @return
+     */
+    @ApiOperation(value = "合伙人、工作室管理机构树")
+    @GetMapping(value = "/getSysDeptTree")
+    public HttpResult<List<SysDeptTreeVo>> getSysDeptTree() {
+
+        return HttpResult.ok(sysDeptService.getSysDeptTree());
+    }
+
+
+
 }

+ 26 - 17
src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java

@@ -2,18 +2,22 @@ package com.ydtech.modules.admin.controller;
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysPartner;
+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.AgencyExtractFee;
 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.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 io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * 配置机构合伙人表(SysPartner)表控制层
@@ -39,7 +43,7 @@ public class SysPartnerController extends BaseController {
      */
     @PostMapping("/queryByPage")
     @ApiOperation(value = "合伙人分页查询")
-    public HttpResult<BasePageResult<SysPartner>> queryByPage(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
+    public HttpResult<BasePageResult<SysUserPartner>> queryByPage(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
         if (sysPartnerPageDto.getPageNum() == 0) {
             sysPartnerPageDto.setPageNum(1);
         }
@@ -50,25 +54,15 @@ public class SysPartnerController extends BaseController {
     }
 
     /**
-     * 通过主键查询单条数据
+     * 根据部门id查询配置的合伙人信息 --伙人和工作室管理员使用的推荐人接口
      *
      * @param id 主键
      * @return 单条数据
      */
-    @GetMapping("/queryById/{id}")
-    @ApiOperation(value = "根据id查询合伙人信息")
-    public HttpResult queryById(@PathVariable("id") String id) {
-        return HttpResult.ok("success", this.sysPartnerService.queryById(id));
-    }
-
-    /**
-     * 合伙人和机构负责人使用的推荐人接口
-     * @return
-     */
-    @GetMapping("/queryInfo")
-    @ApiOperation(value = "推荐人查询接口")
-    public HttpResult queryInfo() {
-        return HttpResult.ok("success", this.sysPartnerService.queryInfo());
+    @GetMapping("/queryRecommendAndPartner/{id}")
+    @ApiOperation(value = "根据部门id查询配置的推荐人接口")
+    public HttpResult<List<SysPartner>> queryRecommendAndPartner(@PathVariable("id") @ApiParam("部门id") String id) {
+        return HttpResult.ok("success", this.sysPartnerService.queryRecommendAndPartner(id));
     }
 
     /**
@@ -124,6 +118,21 @@ public class SysPartnerController extends BaseController {
         return HttpResult.ok(this.sysPartnerService.queryPartnerByPage(sysPartnerPageDto));
     }
 
+    /**
+     * 合伙人查看直接合伙人、间接合伙人分页查询
+     *
+     */
+    @PostMapping("/querySysPartnerAPPPage")
+    @ApiOperation(value = "合伙人查看直接合伙人、间接合伙人分页查询")
+    public HttpResult<BasePageResult<SysPartnerAPPPageVo>> SysPartnerAPPPage(@RequestBody SysPartnerAPPPageDto sysPartnerAPPPageDto) {
+        if (sysPartnerAPPPageDto.getPageNum() == 0) {
+            sysPartnerAPPPageDto.setPageNum(1);
+        }
+        if (sysPartnerAPPPageDto.getPageSize() == 0) {
+            sysPartnerAPPPageDto.setPageSize(10);
+        }
+        return HttpResult.ok(this.sysPartnerService.SysPartnerAPPPage(sysPartnerAPPPageDto));
+    }
 
 
 

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

@@ -526,6 +526,8 @@ public class SysUserController extends BaseController {
             sysUser.setReferrerId(operator != null ? operator.getId() : "");
             sysUser.setReferrerName(operator != null ? operator.getName() : "");
             sysUserVo.setSysUser(sysUser);
+            List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
+            sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
             return HttpResult.ok(sysUserVo);
         }
         // 查询推荐人

+ 45 - 0
src/main/java/com/ydtech/modules/admin/controller/deptBalance/DeptBalanceController.java

@@ -0,0 +1,45 @@
+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.vo.DeptBalanceVo;
+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;
+
+@Api(tags = "机构管理费统计")
+@RequestMapping("/deptBalance")
+@RestController
+public class DeptBalanceController {
+
+    @Autowired
+    private DeptBalanceService deptBalanceService;
+
+
+
+    /**
+     *  @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;
+    }
+
+
+
+
+
+
+}

+ 4 - 3
src/main/java/com/ydtech/modules/admin/controller/kzt/KZTPermissionController.java

@@ -63,8 +63,7 @@ public class KZTPermissionController extends BaseController {
      *  @Description: 控制台角色刪除
      */
     @ApiOperation(value = "控制台数据权限通过菜单id查询数据")
-    @PostMapping(value = "/findByMenuId")
-    @Transactional
+    @GetMapping(value = "/findByMenuId")
     public HttpResult findByMenuId(Long menuId) {
         if(menuId==null){
             throw  new SystemException("菜单id不能为空");
@@ -89,7 +88,9 @@ public class KZTPermissionController extends BaseController {
             throw  new SystemException("菜单id不能为空");
         }
         try{
-
+            LambdaQueryWrapper<KztDataPermission> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(KztDataPermission::getMenuId, menuId);
+            kztDataPermissionService.getBaseMapper().delete(lqw);
         }catch(Exception e){
             return HttpResult.error("删除失败");
         }

+ 24 - 0
src/main/java/com/ydtech/modules/admin/controller/kzt/KZTRoleController.java

@@ -194,4 +194,28 @@ public class KZTRoleController extends BaseController {
         }
         return HttpResult.ok(list);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/14 16:36
+     *  @Description:
+     */
+    @GetMapping(value = "/findUseId")
+    @ApiOperation(value = "通过用户Id查询权限表")
+    public HttpResult<Object> findByUseId(String userId) {
+        if (userId==null) {
+            throw new SystemException("用户id不能为空!!");
+        }
+        int  count =0;
+        try{
+            if("admin".equals(userId)){
+                count=1;
+            }else{
+                count= sysMenuService.findByUseId(userId,"2");
+            }
+        }catch(Exception e){
+        }
+        return HttpResult.ok(count>0?true:false);
+    }
+
 }

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

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

+ 13 - 0
src/main/java/com/ydtech/modules/admin/dao/DeptBalanceMapper.java

@@ -0,0 +1,13 @@
+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.vo.DeptBalanceVo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeptBalanceMapper {
+    IPage<DeptBalanceDto> queryDeptLeaderStatistics(Page page, DeptBalanceVo deptBalanceVo);
+
+}

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

@@ -29,6 +29,13 @@ public interface SysRoleMenuKztMapper extends BaseMapper<SysRoleMenuKzt> {
      *  @Description:   通过角色id删除数据
      */
     void deleteByRoleId(@Param("roleId") Long roleId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/20 15:40
+     *  @Description: 通过用户id查询是否有权限
+     */
+    int findByUseId(@Param("userId") String userId, @Param("sysType") String sysType);
 }
 
 

+ 3 - 3
src/main/java/com/ydtech/modules/admin/dao/SysRoleMenuMapper.java

@@ -22,11 +22,11 @@ public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
     List<SysMenu> gainSysMenuIds(@Param("userId") String userId);
 
 
-    String SysMenuSql_kzt = "select t.id, t.name, t.parent_id, t.url, t.perms, t.type, t.icon, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag,p.parent_id as parentId," +
+    String SysMenuSql_kzt = "select t.id, t.name, t.parent_id, t.url, t.perms, t.type, t.icon, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag," +
             " pp.NAME AS parentName," +
             " pp.url AS parentUrl  from sys_menu t  left join sys_menu pp ON t.parent_id = pp.id ";
-    String sysRoleMenuIdSql_kzt = " where t.id in (select menu_id from sys_role_menu t1 left join sys_user_role t2 on t1.role_id=t2.role_id where t2.user_id='${userId}') and del_flag=0  and  t.sys_type='${sysType}'";
-    String SysMenuSqlT1_kzt = SysMenuSql + sysRoleMenuIdSql;
+    String sysRoleMenuIdSql_kzt = " where t.id in (select menu_id from sys_role_menu_kzt t1 left join sys_user_role_kzt t2 on t1.role_id=t2.role_id where t2.user_id='${userId}') and t.del_flag=0  and  t.sys_type='${sysType}'";
+    String SysMenuSqlT1_kzt = SysMenuSql_kzt + sysRoleMenuIdSql_kzt;
 
     @Select(SysMenuSqlT1_kzt)
     List<SysMenu> gainMenuIdsByUserId(@Param("userId") String userId, @Param("sysType") String sysType);

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

@@ -136,7 +136,7 @@ public class SysUserInfo implements Serializable {
 
     @ApiModelProperty(value = "是否是计算机专业")
     @TableField(value = "is_speciality")
-    private BigDecimal isSpeciality;
+    private String isSpeciality;
 
 
     @ApiModelProperty(value = "")

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

@@ -0,0 +1,23 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "APP查询机构下团队信息")
+public class AgencyTeamDto {
+
+
+    @ApiModelProperty(value = "推荐等级(0:直接推荐;1:间接推荐)")
+    private int source;
+
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+}

+ 43 - 0
src/main/java/com/ydtech/modules/admin/model/dto/DeptBalanceDto.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 lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ *  机构管理费统计dto
+ */
+@Data
+@ApiModel("机构管理费")
+@NoArgsConstructor
+public class DeptBalanceDto implements Serializable {
+
+    @ApiModelProperty(value = "机构名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "机构负责人")
+    private String deptLeader;
+
+    @ApiModelProperty(value = "机构地址")
+    private String deptAddress;
+
+    @ApiModelProperty(value = "机构管理费")
+    private BigDecimal deptManagementFee;
+
+    @ApiModelProperty(value = "总收入")
+    private BigDecimal totalIncome;
+
+    @ApiModelProperty(value = "已提现")
+    private BigDecimal withdrawn;
+
+    @ApiModelProperty(value = "未体现")
+    private BigDecimal notWithdrawn;
+
+    @ApiModelProperty(value = "机构级别")
+    private BigDecimal comLevel;
+}

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

@@ -41,7 +41,7 @@ public class SysAgencyLeaderDto {
      * 业务来源
      */
     @ApiModelProperty(value = "业务来源")
-    private String[] source;
+    private String source;
     /**
      * 抽成比例(总保费抽成)
      */

+ 2 - 2
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderPageDto.java

@@ -12,8 +12,8 @@ public class SysAgencyLeaderPageDto {
      */
     @ApiModelProperty(value = "员工id")
     private String userId;
-    @ApiModelProperty(value = "推荐人id")
-    private String suggestId;
+    @ApiModelProperty(value = "员工id")
+    private String userName;
 
     /**
      * 机构id

+ 25 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerAPPPageDto.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+@Data
+@ApiModel(value = "直接、间接合伙人入参")
+public class SysPartnerAPPPageDto {
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "推荐等级(0:直接推荐;1:间接推荐)")
+    private int source;
+
+    @ApiModelProperty(value = "合伙人姓名")
+    private String userName;
+
+
+}

+ 5 - 2
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerPageDto.java

@@ -23,8 +23,11 @@ public class SysPartnerPageDto {
     @ApiModelProperty(value = "员工id")
     private String userId;
 
-    @ApiModelProperty(value = "推荐人id")
-    private String suggestId;
+    @ApiModelProperty(value = "员工id")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
     /**
      * 开始时间
      */

+ 50 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AgencyTeamVo.java

@@ -0,0 +1,50 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "机构下团队的信息实体")
+public class AgencyTeamVo {
+    /**
+     * 团队id
+     */
+    @ApiModelProperty(value = "团队id")
+    private String deptId;
+
+    /**
+     * 机构名称
+     */
+    @ApiModelProperty(value = "机构名称")
+    private String deptName;
+
+    /**
+     * 机构下总保费
+     */
+    @ApiModelProperty(value = "机构下总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty(value = "保费收入")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队人数
+     */
+    @ApiModelProperty(value = "团队人数")
+    private int deptManNum;
+
+    @ApiModelProperty(value = "团队数")
+    private int deptNum;
+
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @ApiModelProperty(value = "保费提层计算开始时间")
+    private Date startTime;
+}

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

@@ -0,0 +1,33 @@
+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;
+
+@Data
+@ApiModel("机构负责人统计")
+public class DeptBalanceVo 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 = "每页页数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    @Min(value = 1, message = "页数最小为1")
+    private int pageNum;
+}

+ 3 - 1
src/main/java/com/ydtech/modules/admin/model/vo/SysAgencyLeaderVo.java

@@ -28,6 +28,8 @@ public class SysAgencyLeaderVo {
      */
     @ApiModelProperty(value = "机构id")
     private String deptId;
+    @ApiModelProperty(value = "机构父id")
+    private String parentId;
     /**
      * 机构name
      */
@@ -48,7 +50,7 @@ public class SysAgencyLeaderVo {
      * 业务来源
      */
     @ApiModelProperty(value = "业务来源")
-    private String[] source;
+    private String source;
     /**
      * 抽成比例(总保费抽成)
      */

+ 46 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysDeptTreeVo.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.modules.admin.model.SysDept;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("机构树展示")
+public class SysDeptTreeVo {
+
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @TableField(value = "name")
+    @ApiModelProperty(value = "机构名称")
+    private String name;
+
+    @TableField(value = "parent_id")
+    @ApiModelProperty(value = "上级机构ID,一级机构为0")
+    private String parentId;
+
+    @TableField(value = "order_num")
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+
+    @ApiModelProperty(value = "机构级别")
+    private String comlevel;
+
+    @ApiModelProperty(value = "机构来源(渠道、个代)")
+    private String managementSource;
+
+    // 非数据库字段
+    @TableField(exist = false)
+    @ApiModelProperty(value = "下层机构")
+    private List<SysDeptTreeVo> children;
+    // 非数据库字段
+    @TableField(exist = false)
+    private Integer deptCount;
+
+
+
+}

+ 47 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysPartnerAPPPageVo.java

@@ -0,0 +1,47 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "直接、间接合伙人返参")
+public class SysPartnerAPPPageVo {
+
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    @JsonFormat(pattern = "0.00")
+    private String proportional;
+
+    @ApiModelProperty(value = "总保费抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @ApiModelProperty(value = "保费提层计算开始时间")
+    private Date startTime;
+
+}

+ 7 - 1
src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java

@@ -64,7 +64,6 @@ public class SysUserBaseVO {
     @ApiModelProperty(value = "报价单颜色")
     private String themeColour;
 
-
     @ApiModelProperty(value = "提交时间")
     private Date submitTime;
 
@@ -73,4 +72,11 @@ public class SysUserBaseVO {
 
     @ApiModelProperty(value = "审核人")
     private String approveBy;
+
+    @ApiModelProperty(value = "四级机构编号")
+    private String levelFourDeptId;
+
+    @ApiModelProperty(value = "四级机构名称")
+    private String levelFourDeptName;
+
 }

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

@@ -0,0 +1,55 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysUserPartner {
+
+    @ApiModelProperty(value = "用户ID")
+    @TableId(value = "id")
+    private String id;
+    /**
+     * 姓名
+     */
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    /**
+     * 状态  1:正常   0:离司 2:新注册
+     */
+    @ApiModelProperty(value = "状态  1:正常   0:删除 2:新注册 3:审批不通过")
+    @TableField(value = "status")
+    private Integer status;
+
+    /**
+     * 机构ID
+     */
+    @ApiModelProperty(value = "机构ID")
+    private String deptId;
+    /**
+     * 机构名称
+     */
+    @ApiModelProperty(value = "机构名称")
+    private String deptName;
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "所属机构父ID")
+    private String parentId;
+    @ApiModelProperty(value = "是否为合伙人: 1:是  0:否")
+    private String type;
+
+
+
+}

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

@@ -0,0 +1,17 @@
+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.vo.DeptBalanceVo;
+
+public interface DeptBalanceService {
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/14 9:04
+     *  @Description:  机构负责人统计
+     */
+    HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(DeptBalanceVo deptBalanceVo);
+}

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

@@ -20,6 +20,8 @@ public interface ProfitAnalysisService {
      *  @Description:  利润分析
      */
     List<ProfitAnalysisDto> queryPage(ProfitAnalysisQueryDto profitAnalysisQueryDto);
+
+    List<ProfitAnalysisDto> getProfitAnalysisQueryList(ProfitAnalysisQueryDto profitAnalysisQueryDto);
 }
 
 

+ 9 - 11
src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java

@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderDto;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.TeamInformationDto;
-import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.order.entity.BasePageResult;
 
@@ -30,16 +27,16 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
      */
     boolean insert(SysAgencyLeaderDto sysAgencyLeaderDto);
 
-
-    List<SysDept> getDeptInfo();
-
-    List<SysUser> getUserInfo();
+//
+//    List<SysDept> getDeptInfo();
+//
+//    List<SysUser> getUserInfo();
 
     boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto);
 
     boolean delById(Integer id);
 
-    List<SysAgencyLeaderVo> queryInfo();
+    List<SysAgencyLeaderVo> queryInfo(String id);
 
     BasePageResult<SysAgencyLeaderVo> queryPage(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
@@ -51,11 +48,12 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
 
     BasePageResult<AgencyExtractFeeVo> queryExtractFeeAll(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
-//    List<TeamInformation> queryTeamInfo(TeamInformationDto teamInformationDto);
-
     BasePageResult<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto);
 
     BasePageResult<TeamInformation> queryTeamInfoPage(TeamInformationDto teamInformationDto);
+    BasePageResult<AgencyTeamVo> queryWorkroomPage(AgencyTeamDto agencyTeamDto);
 
     List<SysAgencyLeaderVo> queryAgencyLeader(String userId);
+
+    List<SysUser> getLevelUser(String id);
 }

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

@@ -8,6 +8,7 @@ import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.model.SysArea;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.vo.SysDeptRemoveVo;
+import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
 import com.ydtech.modules.admin.model.vo.SysDeptVo;
 import com.ydtech.modules.admin.model.vo.TreeSysDeptVO;
 
@@ -111,6 +112,9 @@ public interface SysDeptService extends IService<SysDept> {
      *  @Description: 查询前线机构树
      */
     List<SysDept> queryQXDeptTree();
+
+    List<SysDeptTreeVo> getSysDeptTree();
+
 }
 
 

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

@@ -33,6 +33,13 @@ public interface SysMenuService extends IService<SysMenu> {
      *  @Description: 通过角色id查询控制台角色
      */
     List<SysMenu> getSysMenusByRoleId(Long roleId, String sysType);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/20 15:36
+     *  @Description:   通过类型查询数据是否有权限
+     */
+    int findByUseId(String userId, String sysType);
 }
 
 

+ 8 - 3
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -3,10 +3,14 @@ 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.SysUser;
+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.AgencyExtractFee;
 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.order.entity.BasePageResult;
 
 import java.util.List;
@@ -20,17 +24,18 @@ import java.util.List;
 public interface SysPartnerService extends IService<SysPartner> {
 
 
-    SysPartner queryById(String id);
+    List<SysPartner> queryRecommendAndPartner(String id);
 
-    BasePageResult<SysPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto);
+    BasePageResult<SysUserPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto);
 
     boolean insert(SysPartnerDto sysPartnerDto);
 
     boolean checkPartner(String userId);
 
-    List<SysPartner> queryInfo();
 
     boolean deleteById(Integer id);
 
     BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto);
+
+    BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto);
 }

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

@@ -27,4 +27,11 @@ public interface SysRoleMenuKztService extends IService<SysRoleMenuKzt> {
      *  @Description: 通过角色id查询菜单数据
      */
     List<SysMenu> findMenuIdsByRoleId(Long roleId, String sysType);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/20 15:38
+     *  @Description:  通过用户id查询是否有权险
+     */
+    int findByUseId(String userId, String sysType);
 }

+ 54 - 0
src/main/java/com/ydtech/modules/admin/service/impl/DeptBalanceServiceImpl.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.admin.service.impl;
+
+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.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.vo.DeptBalanceVo;
+import com.ydtech.modules.admin.service.DeptBalanceService;
+import com.ydtech.modules.admin.service.SysAgencyLeaderService;
+import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesSumEntity;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Service
+public class DeptBalanceServiceImpl implements DeptBalanceService {
+
+
+    @Autowired
+    private SysAgencyLeaderService sysAgencyLeaderService;
+
+    @Autowired
+    private DeptBalanceMapper deptBalanceMapper;
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/08/14 9:04
+     *  @Description:  机构负责人统计
+     */
+    @Override
+    public HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(DeptBalanceVo deptBalanceVo) {
+        try {
+            PageVo<DeptBalanceDto> pageVo = new PageVo<>();
+            Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
+            pageVo.setPageNum(deptBalanceVo.getPageNum());
+            pageVo.setPageSize(deptBalanceVo.getPageSize());
+            IPage<DeptBalanceDto> sysUserListPage = deptBalanceMapper.queryDeptLeaderStatistics(page, deptBalanceVo);
+            return HttpResult.ok(sysUserListPage);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResult.error("查询异常");
+        }
+    }
+
+}

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

@@ -41,6 +41,17 @@ public class ProfitAnalysisServiceImpl implements ProfitAnalysisService {
         List<ProfitAnalysisDto> list = insPlyIncomeMapper.queryPage(profitAnalysisQueryDto);
         return list;
     }
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/16 15:35
+     *  @Description:  查询利润分析统计
+     */
+    @Override
+    public List<ProfitAnalysisDto> getProfitAnalysisQueryList(ProfitAnalysisQueryDto profitAnalysisQueryDto) {
+
+        return insPlyIncomeMapper.getProfitAnalysisQueryList(profitAnalysisQueryDto);
+    }
 
     /**
      *  @version

+ 205 - 323
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.admin.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -9,10 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderDto;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.TeamInformationDto;
-import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
 import com.ydtech.modules.admin.service.SysDeptService;
@@ -32,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -103,20 +100,6 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         }
 
         SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
-        String[] source = sysAgencyLeaderDto.getSource();
-        StringBuilder stringBuilder = new StringBuilder();
-        if (source != null) {
-            int size = source.length;
-            if (size == 3) {
-                stringBuilder.append(source[0]).append(",").append(source[1]).append(",").append(source[2]);
-
-            } else if (size == 2) {
-                stringBuilder.append(source[0]).append(",").append(source[1]);
-            } else {
-                stringBuilder.append(source[0]);
-            }
-        }
-        sysAgencyLeader.setSource(stringBuilder.toString());
         sysAgencyLeader.setCreateTime(new Date());
         SysUser user = BaseController.getUser();
         sysAgencyLeader.setCreateBy(user.getId());
@@ -151,22 +134,42 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         return b;
     }
 
-    @Override
-    public List<SysDept> getDeptInfo() {
-        return sysDeptMapper.selectList(new QueryWrapper<SysDept>().lambda().eq(SysDept::getDelFlag, 0).isNotNull(SysDept::getComlevel));
-    }
 
     @Override
-    public List<SysUser> getUserInfo() {
-        List<SysUser> sysUsers = sysUserMapper.selectList(new QueryWrapper<SysUser>().lambda().eq(SysUser::getStatus, 1).notLike(SysUser::getId,"M"));
-        String id = BaseController.getUser().getId();
+    public List<SysUser> getLevelUser(String id) {
+        SysDept sysDept = sysDeptMapper.selectById(id);
         List<SysUser> sysUserList = null;
-        if (sysUsers.size() > 0) {
-            sysUserList = sysUsers.stream().filter(SysUser -> !SysUser.getId().equals(id)).collect(Collectors.toList());
+        if (sysDept.getComlevel().equals("5")) {
+            sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                    .eq(SysUser::getStatus, 1)
+                    .likeRight(SysUser::getId, sysDept.getParentId())
+                    .notLike(SysUser::getId, "M"));
+
+        } else {
+            sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                    .eq(SysUser::getStatus, 1)
+                    .likeRight(SysUser::getId, id)
+                    .notLike(SysUser::getId, "M"));
+
+
+        }
+
+        //工作室管理员: 已是管理员不能再成为管理员,已是合伙人的也不能设置为管理员
+        List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getCreateTime, 1));
+        if (sysPartnerList == null) {
+            List<String> stringList = sysPartnerList.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+            sysUserList = sysUserList.stream().filter(SysUser -> !stringList.contains(SysUser.getId())).collect(Collectors.toList());
+        }
+        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
+        if (sysAgencyLeaders == null) {
+            List<String> stringList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+            sysUserList = sysUserList.stream().filter(SysUser -> !stringList.contains(SysUser.getId())).collect(Collectors.toList());
         }
+
         return sysUserList;
     }
 
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto) {
@@ -190,19 +193,6 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
         }
         SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
-        String[] source = sysAgencyLeaderDto.getSource();
-        StringBuilder stringBuilder = new StringBuilder();
-        if (source != null) {
-            int size = source.length;
-            if (size == 3) {
-                stringBuilder.append(source[0]).append(",").append(source[1]).append(",").append(source[2]);
-            } else if (size == 2) {
-                stringBuilder.append(source[0]).append(",").append(source[1]);
-            } else {
-                stringBuilder.append(source[0]);
-            }
-        }
-        sysAgencyLeader.setSource(stringBuilder.toString());
         sysAgencyLeader.setUpdateTime(new Date());
         SysUser user = BaseController.getUser();
         sysAgencyLeader.setUpdateBy(user.getId());
@@ -228,23 +218,11 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
     }
 
     @Override
-    public List<SysAgencyLeaderVo> queryInfo() {
-        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
-        List<SysAgencyLeaderVo> sysAgencyLeaderVos = BeanUtil.copyToList(sysAgencyLeaders, SysAgencyLeaderVo.class);
-        if (sysAgencyLeaders.size() > 0) {
-            for (SysAgencyLeader record : sysAgencyLeaders) {
-                for (SysAgencyLeaderVo sysAgencyLeaderVo : sysAgencyLeaderVos) {
-                    if (record.getId().equals(sysAgencyLeaderVo.getId())) {
-                        String source = record.getSource();
-                        if (!StringUtils.isNullOrEmpty(source)) {
-                            String[] split = source.split(",");
-                            sysAgencyLeaderVo.setSource(split);
-                        }
-                    }
-                }
-            }
-        }
-        return sysAgencyLeaderVos;
+    public List<SysAgencyLeaderVo> queryInfo(String id) {
+        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                .eq(SysAgencyLeader::getDelFlag, 1).likeRight(StringUtils.isNotEmpty(id),SysAgencyLeader::getDeptId,id));
+
+        return BeanUtil.copyToList(sysAgencyLeaders, SysAgencyLeaderVo.class);
     }
 
     @Override
@@ -252,27 +230,21 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
         LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysAgencyLeader::getDelFlag, 1);
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getDeptId()), SysAgencyLeader::getDeptId, sysAgencyLeaderPageDto.getDeptId());
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getUserId()), SysAgencyLeader::getUserId, sysAgencyLeaderPageDto.getUserId());
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getSuggestId()), SysAgencyLeader::getSuggestId, sysAgencyLeaderPageDto.getSuggestId());
+        wrapper.likeRight(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getDeptId()), SysAgencyLeader::getDeptId, sysAgencyLeaderPageDto.getDeptId());
         wrapper.orderByAsc(SysAgencyLeader::getId);
 
         Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
         List<SysAgencyLeader> records = insOrdersPage.getRecords();
         List<SysAgencyLeaderVo> sysAgencyLeaderVos = BeanUtil.copyToList(records, SysAgencyLeaderVo.class);
-        if (records.size() > 0) {
-            for (SysAgencyLeader record : records) {
-                for (SysAgencyLeaderVo sysAgencyLeaderVo : sysAgencyLeaderVos) {
-                    if (record.getId().equals(sysAgencyLeaderVo.getId())) {
-                        String source = record.getSource();
-                        if (!StringUtils.isNullOrEmpty(source)) {
-                            String[] split = source.split(",");
-                            sysAgencyLeaderVo.setSource(split);
-                        }
-                    }
+        if (sysAgencyLeaderVos.size() > 0) {
+            for (SysAgencyLeaderVo sysAgencyLeaderVo : sysAgencyLeaderVos) {
+                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, sysAgencyLeaderVo.getDeptId()).eq(SysDept::getDelFlag, 0));
+                if (sysDept != null) {
+                    sysAgencyLeaderVo.setParentId(sysDept.getParentId());
                 }
             }
         }
+
         return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
                 sysAgencyLeaderVos);
     }
@@ -283,11 +255,7 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         sysAgencyLeader.setId(id);
         SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeader);
         SysAgencyLeaderVo sysAgencyLeaderVo = BeanUtil.copyProperties(sysAgencyLeader1, SysAgencyLeaderVo.class);
-        String source = sysAgencyLeader1.getSource();
-        if (!StringUtils.isNullOrEmpty(source)) {
-            String[] split = source.split(",");
-            sysAgencyLeaderVo.setSource(split);
-        }
+
         return sysAgencyLeaderVo;
     }
 
@@ -353,24 +321,30 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
                             agencyExtractFee.setStartTime(updateTime);
                         }
                         if (insOrderList.size() > 0) {
-                            for (InsOrders insOrders : insOrderList) {
-                                //查询订单下的所有子订单
-                                List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-                                        .eq(InsAreaCompany::getOrderstatus, 3));
-                                if (insAreaCompanies.size() > 0) {
-                                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-                                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-                                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
-
-                                    }
-                                }
+                            List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
+                            //查询订单下的所有子订单
+                            List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                                    .in(InsAreaCompany::getOrderno, collect)
+                                    .eq(InsAreaCompany::getOrderstatus, 3));
+                            if (insAreaCompanies.size() > 0) {
+                                BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                                bigDecimal = jqpremium.add(sypremium).add(jypremium);
+//                                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+//                                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+//                                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+//
+//                                    }
                             }
                         }
                     }
                 }
                 agencyExtractFee.setSumpremium(bigDecimal);
                 //总保费*比例/100  保留两位小数
-                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()).divide(new BigDecimal("100"))).setScale(2, RoundingMode.HALF_UP);
+                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>()
@@ -431,21 +405,22 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
                     agencyExtractFee.setStartTime(updateTime);
                 }
                 if (insOrderList.size() > 0) {
-                    for (InsOrders insOrders : insOrderList) {
-                        //查询订单下的所有子订单
-                        List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-                                .eq(InsAreaCompany::getOrderstatus, 3));
-                        if (insAreaCompanies.size() > 0) {
-                            for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-                                //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-                                bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
-
-                            }
-                        }
+                    List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
+                    //查询订单下的所有子订单
+                    List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                            .in(InsAreaCompany::getOrderno, collect)
+                            .eq(InsAreaCompany::getOrderstatus, 3));
+                    if (insAreaCompanies.size() > 0) {
+                        BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                        bigDecimal = jqpremium.add(sypremium).add(jypremium);
                     }
                 }
                 agencyExtractFee.setSumpremium(bigDecimal);
-                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()).divide(new BigDecimal("100"))).setScale(2, RoundingMode.HALF_UP);
+                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>()
@@ -480,6 +455,8 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
         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);
 
         Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
@@ -513,21 +490,22 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
                     agencyExtractFee.setStartTime(updateTime);
                 }
                 if (insOrderList.size() > 0) {
-                    for (InsOrders insOrders : insOrderList) {
-                        //查询订单下的所有子订单
-                        List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-                                .eq(InsAreaCompany::getOrderstatus, 3));
-                        if (insAreaCompanies.size() > 0) {
-                            for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-                                //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-                                bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
-
-                            }
-                        }
+                    List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
+                    //查询订单下的所有子订单
+                    List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                            .in(InsAreaCompany::getOrderno, collect)
+                            .eq(InsAreaCompany::getOrderstatus, 3));
+                    if (insAreaCompanies.size() > 0) {
+                        BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                        bigDecimal = jqpremium.add(sypremium).add(jypremium);
                     }
                 }
                 agencyExtractFee.setSumpremium(bigDecimal);
-                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()).divide(new BigDecimal("100"))).setScale(2, RoundingMode.HALF_UP);
+                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>()
@@ -558,223 +536,24 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
                 agencyExtractFeeList);
     }
 
-//    @Override
-//    public List<TeamInformation> queryTeamInfo(TeamInformationDto teamInformationDto) {
-//        String userId = BaseController.getUser().getId();
-//        List<TeamInformation> informationList = new ArrayList<>();
-//        //合伙人
-//        boolean c = sysPartnerService.checkPartner(userId);
-//        if (c) {
-//            return extracted(userId, informationList, teamInformationDto);
-//        }
-//        //校验当前用户是否为机构负责人
-//        boolean b = this.checkUserId(userId);
-//        if (b) {
-//            //机构负责人查询机构下的团队
-//            SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, userId)
-//                    .eq(SysAgencyLeader::getDelFlag, 1));
-//            String[] split = sysAgencyLeaders.getSource().split(",");
-//            //根据当前机构id查询出下面的团队,条件:机构来源相同,机构等级为null的团队
-//            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
-//                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0).in(SysDept::getManagementSource, split)
-//                    .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()), SysDept::getName, teamInformationDto.getDeptName()));
-//            if (sysDeptList.size() > 0) {
-//                //总保费
-//                BigDecimal bigDecimal = new BigDecimal("0.00");
-//                for (SysDept sysDept : sysDeptList) {
-//                    TeamInformation teamInformation = new TeamInformation();
-//                    teamInformation.setDeptId(sysDept.getId());
-//                    teamInformation.setDeptName(sysDept.getName());
-//                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().likeRight(SysUser::getId, sysDept.getId()).eq(SysUser::getStatus, 1));
-//                    teamInformation.setDeptManNum(sysUsers.size());
-//                    List<InsOrders> insOrderList;
-//                    //筛选订单,选择时间
-//                    Date updateTime = sysAgencyLeaders.getUpdateTime();
-//                    if (updateTime == null) {
-//                        //机构下所有订单
-//                        insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
-//                                .likeRight(InsOrders::getDeptid, sysDept.getId())
-//                                .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime())
-//                                .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
-//                                .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
-//                        teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
-//
-//                    } else {
-//                        insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
-//                                .likeRight(InsOrders::getDeptid, sysDept.getId())
-//                                .ge(InsOrders::getCreatetime, updateTime)
-//                                .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
-//                                .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
-//                        teamInformation.setStartTime(updateTime);
-//                    }
-//
-//                    if (insOrderList.size() > 0) {
-//                        for (InsOrders insOrders : insOrderList) {
-//                            //查询订单下的所有子订单
-//                            List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-//                                    .eq(InsAreaCompany::getOrderstatus, 3));
-//                            if (insAreaCompanies.size() > 0) {
-//                                for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-//                                    //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-//                                    bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
-//
-//                                }
-//                            }
-//                        }
-//                    }
-//                    teamInformation.setSumpremium(bigDecimal);
-//                    int num = 0;
-//                    // 查团队有几人出单 :订单表中userid相等同时在 子订单表中状态为3已承保才为出单
-//                    List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
-//                    for (String s : userIdList) {
-//                        List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
-//                        if (collect.size() > 0) {
-//                            InsOrders insOrders = collect.get(0);
-//                            List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-//                                    .eq(InsAreaCompany::getOrderstatus, 3));
-//                            if (insAreaCompanies1.size() > 0) {
-//                                num++;
-//                            }
-//
-//                        }
-//                    }
-//                    teamInformation.setOrderManNum(num);
-//                    informationList.add(teamInformation);
-//                    Integer type = teamInformationDto.getType();
-//                    if (type == 1) {
-//                        int size = informationList.size();
-//                        if (size == 2) {
-//                            return informationList;
-//                        }
-//                    }
-//                }
-//
-//            }
-//            return informationList;
-//        }
-//
-//
-//        return informationList;
-//    }
-//
-//    private List<TeamInformation> extracted(String userId, List<TeamInformation> informationList, TeamInformationDto teamInformationDto) {
-//        //查询所有推荐的机构负责人核算总保费
-//        List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-//                .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 1));
-//        if (sysRelationPeople.size() > 0) {
-//            //总保费
-//            BigDecimal bigDecimal = new BigDecimal("0.00");
-//            //获取所有推荐的机构负责人id
-//            List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-//            for (String agencyLeaderId : agencyLeaderIds) {
-//                //获取机构负责人信息
-//                SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
-//                        .eq(SysAgencyLeader::getUserId, agencyLeaderId)
-//                        .eq(SysAgencyLeader::getDelFlag, 1));
-//                String[] split = sysAgencyLeaders.getSource().split(",");
-//                //根据当前机构id查询出下面的团队,条件:机构来源相同,机构等级为null的团队
-//                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-//                        .likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
-//                        .isNull(SysDept::getComlevel)
-//                        .eq(SysDept::getDelFlag, 0)
-//                        .in(SysDept::getManagementSource, split)
-//                        .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()), SysDept::getName, teamInformationDto.getDeptName()));
-//                if (sysDeptList.size() > 0) {
-//                    for (SysDept sysDept : sysDeptList) {
-//                        TeamInformation teamInformation = new TeamInformation();
-//                        teamInformation.setDeptId(sysDept.getId());
-//                        teamInformation.setDeptName(sysDept.getName());
-//                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-//                                .likeRight(SysUser::getId, sysDept.getId())
-//                                .eq(SysUser::getStatus, 1));
-//                        teamInformation.setDeptManNum(sysUsers.size());
-//                        List<InsOrders> insOrderList;
-//                        //筛选订单,选择时间
-//                        Date updateTime = sysAgencyLeaders.getUpdateTime();
-//                        if (updateTime == null) {
-//                            //机构下所有订单
-//                            insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
-//                                    .likeRight(InsOrders::getDeptid, sysDept.getId())
-//                                    .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime())
-//                                    .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
-//                                    .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
-//                            teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
-//                        } else {
-//                            insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
-//                                    .likeRight(InsOrders::getDeptid, sysDept.getId())
-//                                    .ge(InsOrders::getCreatetime, updateTime)
-//                                    .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
-//                                    .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
-//                            teamInformation.setStartTime(updateTime);
-//                        }
-//
-//                        if (insOrderList.size() > 0) {
-//                            for (InsOrders insOrders : insOrderList) {
-//                                //查询订单下的所有子订单
-//                                List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
-//                                        .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-//                                        .eq(InsAreaCompany::getOrderstatus, 3));
-//                                if (insAreaCompanies.size() > 0) {
-//                                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-//                                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-//                                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
-//
-//                                    }
-//                                }
-//                            }
-//                        }
-//                        teamInformation.setSumpremium(bigDecimal);
-//                        int num = 0;
-//                        // 查团队有几人出单 :子订单中userid相等同时在 子订单表中状态为3已承保才为出单
-//                        List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
-//                        for (String s : userIdList) {
-//                            List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
-//                            if (collect.size() > 0) {
-//                                InsOrders insOrders = collect.get(0);
-//                                List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
-//                                        .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
-//                                        .eq(InsAreaCompany::getOrderstatus, 3));
-//                                if (insAreaCompanies1.size() > 0) {
-//                                    num++;
-//                                }
-//
-//                            }
-//                        }
-//                        teamInformation.setOrderManNum(num);
-//                        informationList.add(teamInformation);
-//                        Integer type = teamInformationDto.getType();
-//                        if (type == 1) {
-//                            int size = informationList.size();
-//                            if (size == 2) {
-//                                return informationList;
-//                            }
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//        return informationList;
-//    }
-
 
     @Override
     public BasePageResult<TeamInformation> queryTeamInfoPage(TeamInformationDto teamInformationDto) {
         String userId = teamInformationDto.getUserId();
         if (userId == null) {
-            userId=BaseController.getUserId();
+            userId = BaseController.getUserId();
         }
         List<TeamInformation> informationList = new ArrayList<>();
         //机构负责人查询机构下的团队
         SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, userId)
                 .eq(SysAgencyLeader::getDelFlag, 1));
         if (sysAgencyLeaders == null) return null;
-        String[] split = sysAgencyLeaders.getSource().split(",");
 
         Page<SysDept> page = new Page<>(teamInformationDto.getPageNum(), teamInformationDto.getPageSize());
 
         LambdaQueryWrapper<SysDept> wrapper = new LambdaQueryWrapper<>();
         wrapper.likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
-                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0).in(SysDept::getManagementSource, split)
+                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0).eq(SysDept::getManagementSource, sysAgencyLeaders.getSource())
                 .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()), SysDept::getName, teamInformationDto.getDeptName());
 
         Page<SysDept> insOrdersPage = sysDeptService.page(page, wrapper);
@@ -850,6 +629,114 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
                 informationList);
     }
 
+    @Override
+    public BasePageResult<AgencyTeamVo> queryWorkroomPage(AgencyTeamDto agencyTeamDto) {
+        List<AgencyTeamVo> agencyTeamVoList = new ArrayList<>();
+        String userId = BaseController.getUserId();
+        int source = agencyTeamDto.getSource();
+        List<SysRelationPerson> sysRelationPersonList = null;
+        //判断是0:直接推荐;1:间接推荐
+        if (source == 0) {
+            sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getSource, 0)
+                    .eq(SysRelationPerson::getType, 1));
+        } else {
+            sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getSource, 1)
+                    .eq(SysRelationPerson::getType, 1));
+
+        }
+        List<String> ids = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        if (CollectionUtil.isNotEmpty(ids)) {
+            //分页查询推荐的机构信息
+            Page<SysAgencyLeader> page = new Page<>(agencyTeamDto.getPageNum(), agencyTeamDto.getPageSize());
+
+            LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
+            wrapper.like(StringUtils.isNotEmpty(agencyTeamDto.getDeptName()), SysAgencyLeader::getDeptName, agencyTeamDto.getDeptName());
+            wrapper.in(SysAgencyLeader::getUserId, ids);
+
+            Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
+            List<SysAgencyLeader> leaderList = insOrdersPage.getRecords();
+            if (leaderList.size() > 0) {
+                for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                    //总保费
+                    BigDecimal bigDecimal = new BigDecimal("0.00");
+                    int deptManNum = 0;
+                    AgencyTeamVo agencyTeamVo = new AgencyTeamVo();
+                    agencyTeamVo.setDeptId(sysAgencyLeader.getDeptId());
+                    agencyTeamVo.setDeptName(sysAgencyLeader.getDeptName());
+                    //获取机构下的团队
+                    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()));
+
+                    agencyTeamVo.setDeptNum(sysDeptList.size());
+                    if (sysDeptList.size() > 0) {
+                        for (SysDept sysDept : sysDeptList) {
+
+                            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                    .likeRight(SysUser::getId, sysDept.getId()).eq(SysUser::getStatus, 1));
+                            deptManNum = deptManNum + sysUsers.size();
+                            List<InsOrders> insOrderList;
+                            //筛选订单,选择时间
+                            Date updateTime = sysAgencyLeader.getUpdateTime();
+                            if (updateTime == null) {
+                                //机构下所有订单
+                                insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                        .likeRight(InsOrders::getDeptid, sysDept.getId())
+                                        .ge(InsOrders::getCreatetime, sysAgencyLeader.getCreateTime()));
+                                agencyTeamVo.setStartTime(sysAgencyLeader.getCreateTime());
+
+                            } else {
+                                insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                        .likeRight(InsOrders::getDeptid, sysDept.getId())
+                                        .ge(InsOrders::getCreatetime, updateTime));
+                                agencyTeamVo.setStartTime(updateTime);
+                            }
+
+                            if (insOrderList.size() > 0) {
+                                List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
+                                //查询订单下的所有子订单
+                                List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                                        .in(InsAreaCompany::getOrderno, collect)
+                                        .eq(InsAreaCompany::getOrderstatus, 3));
+                                if (insAreaCompanies.size() > 0) {
+                                    BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                    BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                    BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                                    bigDecimal = jqpremium.add(sypremium).add(jypremium);
+
+                                }
+                            }
+
+                        }
+
+                    }
+                    agencyTeamVo.setDeptManNum(deptManNum);
+                    agencyTeamVo.setSumpremium(bigDecimal);
+                    BigDecimal multiply = bigDecimal.multiply(new BigDecimal(sysAgencyLeader.getProportional())
+                            .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
+                    agencyTeamVo.setExtractFee(multiply);
+                    agencyTeamVoList.add(agencyTeamVo);
+
+                }
+
+            }
+
+            return new BasePageResult<>(agencyTeamDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                    agencyTeamVoList);
+        }
+
+        return new BasePageResult<>(agencyTeamDto.getPageNum(), agencyTeamDto.getPageSize(), 0L, 0L,
+                agencyTeamVoList);
+    }
+
     @Override
     public List<SysAgencyLeaderVo> queryAgencyLeader(String userId) {
         List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
@@ -880,11 +767,6 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         Page<SysUser> insOrdersPage = sysUserService.page(page, wrapper);
         List<SysUser> sysUsers = insOrdersPage.getRecords();
 
-
-//        //团队下的人员 报价笔数 核保笔数 出单笔数 签单保费
-//        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-//                .likeRight(SysUser::getId, teamUserInfoDto.getDeptId())
-//                .eq(SysUser::getStatus, 1));
         //总保费
         for (SysUser sysUser : sysUsers) {
             List<InsOrders> insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
@@ -904,12 +786,12 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
                         .in(InsAreaCompany::getOrderno, orderNoList)
                         .eq(InsAreaCompany::getOrderstatus, 3));
                 if (insAreaCompanies.size() > 0) {
-                    //
-                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+                    //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                    BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
 
-                    }
+                    bigDecimal = jqpremium.add(sypremium).add(jypremium);
                 }
                 //出单笔数
                 teamUserInfoVo.setIssueNum(insAreaCompanies.size());

+ 26 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -16,6 +17,7 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.vo.SysDeptRemoveVo;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
+import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
 import com.ydtech.modules.admin.model.vo.SysDeptVo;
 import com.ydtech.modules.admin.model.vo.TreeSysDeptVO;
 import com.ydtech.modules.admin.service.SysAreaService;
@@ -558,6 +560,30 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
         return sysDeptMapper.queryListByQXDept();
     }
 
+    @Override
+    public List<SysDeptTreeVo> getSysDeptTree() {
+        SysDept sysDept = getById("9");
+        LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(SysDept::getDelFlag, 0);
+        lqw.isNotNull(SysDept::getComlevel);
+        lqw.likeRight(SysDept::getId, "9");
+        lqw.orderByAsc(SysDept::getOrderNum);
+        List<SysDept> sysDeptList = list(lqw);
+        SysDeptTreeVo sysDeptTreeVo = BeanUtil.copyProperties(sysDept, SysDeptTreeVo.class);
+        List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
+        sysDeptTreeVos.add(sysDeptTreeVo);
+        Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId)).collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
+        sysDeptTreeVos.forEach(i -> {
+            i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
+            i.setDeptCount(i.getChildren().size());
+        });
+        sysDeptTreeVos = map.get(sysDept.getParentId());
+
+
+        return sysDeptTreeVos;
+    }
+
+
 }
 
 

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

@@ -149,7 +149,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
             menus= sysMenuMapper.findBySysTypeList(sysType,"0");
            // menus = list(lqw);
         }else{
-            return sysRoleMenuService.gainMenuIdsByUserId(userId,sysType);
+            menus= sysRoleMenuService.gainMenuIdsByUserId(userId,sysType);
         }
         for (SysMenu menu : menus) {
             if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
@@ -200,6 +200,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         findChildren(sysMenus, menus, 0);
         return sysMenus;
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/20 15:37
+     *  @Description:  通過用戶id查询是否有权限
+     */
+    @Override
+    public int findByUseId(String userId, String sysType) {
+        return sysRoleMenuKztService.findByUseId(userId,sysType);
+    }
 }
 
 

+ 171 - 37
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -2,16 +2,22 @@ package com.ydtech.modules.admin.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 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.aop.exception.DescribeException;
 import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
+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.AgencyExtractFeeVo;
+import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
+import com.ydtech.modules.admin.model.vo.SysUserPartner;
+import com.ydtech.modules.admin.model.vo.TeamInformation;
 import com.ydtech.modules.admin.service.SysPartnerService;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
@@ -48,6 +54,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
     @Resource
     private SysDeptMapper sysDeptMapper;
+    @Resource
+    private SysUserService sysUserService;
 
     @Resource
     private SysUserMapper sysUserMapper;
@@ -63,26 +71,41 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
 
     @Override
-    public SysPartner queryById(String id) {
-        return sysPartnerMapper.selectById(id);
+    public List<SysPartner> queryRecommendAndPartner(String id) {
+        return sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1).likeRight(SysPartner::getUserId, id));
     }
 
     @Override
-    public BasePageResult<SysPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto) {
-        Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
-
-        LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(SysPartner::getDelFlag, 1);
-        wrapper.ge(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getStartTime()), SysPartner::getCreateTime, sysPartnerPageDto.getStartTime());
-        wrapper.le(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getEndTime()), SysPartner::getCreateTime, sysPartnerPageDto.getEndTime());
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getSuggestId()), SysPartner::getSuggestId, sysPartnerPageDto.getSuggestId());
-        wrapper.orderByAsc(SysPartner::getId);
+    public BasePageResult<SysUserPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto) {
+        Page<SysUser> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
+
+        LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysUser::getStatus, 1);
+        wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysUser::getId, sysPartnerPageDto.getDeptId());
+        wrapper.notLike(SysUser::getId, "M");
+
+        Page<SysUser> insOrdersPage = sysUserService.page(page, wrapper);
+        List<SysUser> records = insOrdersPage.getRecords();
+        List<SysUserPartner> sysUserPartners = BeanUtil.copyToList(records, SysUserPartner.class);
+        if (sysUserPartners.size() > 0) {
+            for (SysUserPartner user : sysUserPartners) {
+                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
+                user.setParentId(sysDept.getParentId());
+                user.setDeptName(sysDept.getName());
+                SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                        .eq(SysPartner::getUserId, user.getId()).eq(SysPartner::getDelFlag, 1));
+                if (sysPartner != null) {
+                    user.setType("1");
+                    user.setSuggestId(sysPartner.getSuggestId());
+                    user.setSuggestName(sysPartner.getSuggestName());
+                    user.setProportional(sysPartner.getProportional());
+                }
+            }
 
-        Page<SysPartner> insOrdersPage = page(page, wrapper);
+        }
 
         return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
-                insOrdersPage.getRecords());
+                sysUserPartners);
     }
 
     @Override
@@ -109,8 +132,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         SysPartner sysPartner = BeanUtil.copyProperties(sysPartnerDto, SysPartner.class);
         sysPartner.setCreateTime(new Date());
         sysPartner.setCreateBy(BaseController.getUser().getId());
-        boolean b = sysPartnerMapper.insert(sysPartner)>0;
-        if (sysPartnerDto.getSuggestId()!=null) {
+        boolean b = sysPartnerMapper.insert(sysPartner) > 0;
+        if (sysPartnerDto.getSuggestId() != null) {
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
             sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
             sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
@@ -125,7 +148,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
                     .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId())
                     .eq(SysRelationPerson::getType, 0));
-            if (sysRelationPeople.size()>0) {
+            if (sysRelationPeople.size() > 0) {
                 for (SysRelationPerson relationPerson : sysRelationPeople) {
                     SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
                     sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
@@ -153,11 +176,6 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         return false;
     }
 
-    @Override
-    public List<SysPartner> queryInfo() {
-        return sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
-    }
-
     @Override
     public boolean deleteById(Integer id) {
         SysPartner partner = new SysPartner();
@@ -173,15 +191,13 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
         LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysPartner::getDelFlag, 1);
-        wrapper.ge(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getStartTime()), SysPartner::getCreateTime, sysPartnerPageDto.getStartTime());
-        wrapper.le(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getEndTime()), SysPartner::getCreateTime, sysPartnerPageDto.getEndTime());
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
-        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getSuggestId()), SysPartner::getSuggestId, sysPartnerPageDto.getSuggestId());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName());
         wrapper.orderByAsc(SysPartner::getId);
 
         Page<SysPartner> insOrdersPage = page(page, wrapper);
         List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
-        if (sysPartnerList.size()>0) {
+        if (sysPartnerList.size() > 0) {
             for (SysPartner sysPartner : sysPartnerList) {
                 AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
                 //总保费
@@ -200,7 +216,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 agencyExtractFee.setDeptName(sysDept.getName());
                 //查询所有推荐的机构负责人核算总保费
                 List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                        .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId()).eq(SysRelationPerson::getType,1));
+                        .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId()).eq(SysRelationPerson::getType, 1));
                 if (sysRelationPeople.size() > 0) {
                     List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
                     for (String agencyLeaderId : agencyLeaderIds) {
@@ -226,24 +242,26 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                                 agencyExtractFee.setStartTime(updateTime);
                             }
                             if (insOrderList.size() > 0) {
-                                for (InsOrders insOrders : insOrderList) {
+                                List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
                                     //查询订单下的所有子订单
                                     List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
-                                            .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                            .in(InsAreaCompany::getOrderno, collect)
                                             .eq(InsAreaCompany::getOrderstatus, 3));
                                     if (insAreaCompanies.size() > 0) {
-                                        for (InsAreaCompany insAreaCompany : insAreaCompanies) {
-                                            //累加每一个子订单的交强险费用+商业险费用+驾意险费用
-                                            bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+                                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                        BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                        BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                        BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
 
-                                        }
+                                        bigDecimal = jqpremium.add(sypremium).add(jypremium);
                                     }
-                                }
+
                             }
                         }
                     }
                     agencyExtractFee.setSumpremium(bigDecimal);
-                    BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()).divide(new BigDecimal("100"))).setScale(2, RoundingMode.HALF_UP);
+                    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>()
@@ -260,7 +278,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                         agencyExtractFee.setHistoryFee(historyFee);
                         //可提现 = 总抽成-已提现
                         agencyExtractFee.setCashFee(multiply.subtract(historyFee));
-                    }else {
+                    } else {
                         agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
                         agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
                     }
@@ -276,10 +294,126 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
     }
 
+    @Override
+    public BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto) {
+        List<SysPartnerAPPPageVo> sysPartnerAPPPageVoList = new ArrayList<>();
+        String userId = BaseController.getUserId();
+        int source = sysPartnerAPPPageDto.getSource();
+        List<SysRelationPerson> sysRelationPersonList = null;
+        //判断是0:直接推荐;1:间接推荐
+        if (source == 0) {
+            sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getSource, 0)
+                    .eq(SysRelationPerson::getType, 0));
+
+        } else {
+            sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getSource, 1)
+                    .eq(SysRelationPerson::getType, 0));
 
+        }
+        List<String> ids = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        if (CollectionUtil.isNotEmpty(ids)) {
+            //分页查询合伙人信息
+            Page<SysPartner> page = new Page<>(sysPartnerAPPPageDto.getPageNum(), sysPartnerAPPPageDto.getPageSize());
+
+            LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
+            wrapper.like(StringUtils.isNotEmpty(sysPartnerAPPPageDto.getUserName()), SysPartner::getUserName, sysPartnerAPPPageDto.getUserName());
+            wrapper.in(SysPartner::getUserId, ids);
+
+            Page<SysPartner> insOrdersPage = page(page, wrapper);
+            List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
+            if (sysPartnerList.size() > 0) {
+                for (SysPartner sysPartner : sysPartnerList) {
+                    //总保费
+                    BigDecimal bigDecimal = new BigDecimal("0.00");
+                    SysPartnerAPPPageVo sysPartnerAPPPageVo = new SysPartnerAPPPageVo();
+                    sysPartnerAPPPageVo.setUserId(sysPartner.getUserId());
+                    sysPartnerAPPPageVo.setUserName(sysPartner.getUserName());
+                    //填充机构信息
+                    SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                            .eq(SysUser::getId, sysPartner.getUserId())
+                            .eq(SysUser::getStatus, 1));
+                    SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                            .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+                    sysPartnerAPPPageVo.setDeptId(sysDept.getId());
+                    sysPartnerAPPPageVo.setDeptName(sysDept.getName());
+                    sysPartnerAPPPageVo.setProportional(sysPartner.getProportional());
+
+                    List<SysRelationPerson> relationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId())
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1));
+                    if (relationPersonList.size() > 0) {
+                        List<String> agencyLeaderIds = relationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                                .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, agencyLeaderIds));
+                        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 sysDept1 : sysDeptList) {
+
+                                    List<InsOrders> insOrderList;
+                                    //筛选订单,选择时间
+                                    Date updateTime = sysAgencyLeader.getUpdateTime();
+                                    if (updateTime == null) {
+                                        //机构下所有订单
+                                        insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                                .likeRight(InsOrders::getDeptid, sysDept1.getId())
+                                                .ge(InsOrders::getCreatetime, sysAgencyLeader.getCreateTime()));
+                                        sysPartnerAPPPageVo.setStartTime(sysAgencyLeader.getCreateTime());
+
+                                    } else {
+                                        insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                                .likeRight(InsOrders::getDeptid, sysDept1.getId())
+                                                .ge(InsOrders::getCreatetime, updateTime));
+                                        sysPartnerAPPPageVo.setStartTime(updateTime);
+                                    }
 
+                                    if (insOrderList.size() > 0) {
+                                        List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
+                                        //查询订单下的所有子订单
+                                        List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                                                .in(InsAreaCompany::getOrderno, collect)
+                                                .eq(InsAreaCompany::getOrderstatus, 3));
+                                        if (insAreaCompanies.size() > 0) {
+                                            BigDecimal jqpremium = insAreaCompanies.stream().map(InsAreaCompany::getJqpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                            BigDecimal sypremium = insAreaCompanies.stream().map(InsAreaCompany::getSypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                            BigDecimal jypremium = insAreaCompanies.stream().map(InsAreaCompany::getJypremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                                            bigDecimal = jqpremium.add(sypremium).add(jypremium);
+                                        }
+                                    }
 
+                                }
+                            }
+                        }
+                    }
+                    sysPartnerAPPPageVo.setSumpremium(bigDecimal);
+                    BigDecimal multiply = bigDecimal.multiply(new BigDecimal(sysPartner.getProportional())
+                            .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
+                    sysPartnerAPPPageVo.setExtractFee(multiply);
+                    sysPartnerAPPPageVoList.add(sysPartnerAPPPageVo);
+
+                }
 
+            }
+
+            return new BasePageResult<>(sysPartnerAPPPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                    sysPartnerAPPPageVoList);
+        }
+        return new BasePageResult<>(sysPartnerAPPPageDto.getPageNum(), sysPartnerAPPPageDto.getPageSize(), 0L, 0L,
+                sysPartnerAPPPageVoList);
+    }
 
 
 }

+ 10 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysRoleMenuKztServiceImpl.java

@@ -61,6 +61,16 @@ public class SysRoleMenuKztServiceImpl extends ServiceImpl<SysRoleMenuKztMapper,
     public List<SysMenu> findMenuIdsByRoleId(Long roleId, String sysType) {
         return sysRoleMenuKztMapper.findMenuIdsByRoleId(roleId,sysType);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/20 15:39
+     *  @Description:  通过用户id查询是否有权限
+     */
+    @Override
+    public int findByUseId(String userId, String sysType) {
+        return sysRoleMenuKztMapper.findByUseId(userId,sysType);
+    }
 }
 
 

+ 110 - 64
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -21,6 +21,7 @@ import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.QuUserNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
+import com.ydtech.modules.admin.model.po.KztDataPermission;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
 import com.ydtech.modules.admin.model.vo.*;
@@ -447,10 +448,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    public PageVo gainUserPage(PageDto pageDto) {
+    public PageVo<SysUserBaseVO> gainUserPage(PageDto<SysUserDto> pageDto) {
 
-        PageVo<SysUserBaseVO> pageVo = new PageVo();
-        Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
+        PageVo<SysUserBaseVO> pageVo = new PageVo<>();
+        Page<SysUserBaseVO> page = new Page<>(pageDto.getPageNum(), pageDto.getPageSize());
         pageVo.setPageNum(pageDto.getPageNum());
         pageVo.setPageSize(pageDto.getPageSize());
 
@@ -594,50 +595,66 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         } else {
             return HttpResult.error("密码不能为空");
         }
+        String userId="";
         if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
-            return checkChuDanUser(sysUser);
-        }
-        String userId = gainNextUserId(sysUser.getDeptId());
-
-        if (RoleConstants.R22.getCode().equals(sysUser.getRoleId())) {//22	后线人员
-            if (!SysConstants.isAdministration(userId)) {
-                throw new SystemException("后线人员只能公司部门中");
+            // add by  hxl  2024-08-20
+            // return checkChuDanUser(sysUser);
+            if (StringUtils.isEmpty(sysUser.getReferrerId())) {
+                return HttpResult.error("业务员工号不能为空");
             }
-        }
-
-        sysUser.setId(userId);
-        save(sysUser);
+            //归属业务员和出单员部门必须一致
+            SysUser user = getById(sysUser.getReferrerId());
+            if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
+                return HttpResult.error("出单员机构必须和归属业务员机构一致");
+            }
+            sysUser.setOperatorCode(sysUser.getReferrerId());
+            if (StringUtils.isEmpty(sysUser.getId())) {
+                userId = gainNextUserId(sysUser.getDeptId());
+                sysUser.setId(userId);
+                save(sysUser);
+                //角色配置
+                SysUserRole userRole = new SysUserRole();
+                userRole.setUserId(sysUser.getId());
+                userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
+                sysUserRoleService.save(userRole);
+            } else {
+                userId = sysUser.getId();
+                updateById(sysUser);
+            }
+        }else{
+            userId = gainNextUserId(sysUser.getDeptId());
 
-        //角色配置
-        SysUserRole userRole = new SysUserRole();
-        userRole.setUserId(sysUser.getId());
-        userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
-        sysUserRoleService.save(userRole);
-
-        if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
-            //推荐人
-            esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
-        } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
-            //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
-            esmUserReferrerService.addReferrer(sysUser.getId(), userId);
-        }
+            if (RoleConstants.R22.getCode().equals(sysUser.getRoleId())) {//22	后线人员
+                if (!SysConstants.isAdministration(userId)) {
+                    throw new SystemException("后线人员只能公司部门中");
+                }
+            }
 
-//        EsmUserReferrer eur = new EsmUserReferrer();
-//        eur.setId(sysUser.getId());
-//        eur.setReferrerName(sysUser.getReferrerName());
-//        eur.setReferrerId(sysUser.getReferrerId());
-//        eur.setLevel(1);
-//
-//        esmUserReferrerService.save(eur);
+            sysUser.setId(userId);
+            save(sysUser);
 
-        SysUserInfo userInfo = sysUserVo.getSysUserInfo();
-        if (userInfo != null) {
-            userInfo.setId(sysUser.getId());
-        }
+            //角色配置
+            SysUserRole userRole = new SysUserRole();
+            userRole.setUserId(sysUser.getId());
+            userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
+            sysUserRoleService.save(userRole);
+            if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
+                //推荐人
+                esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
+            } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
+                //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
+                esmUserReferrerService.addReferrer(sysUser.getId(), userId);
+            }
+            SysUserInfo userInfo = sysUserVo.getSysUserInfo();
+            if (userInfo != null) {
+                userInfo.setId(sysUser.getId());
+            }
 //        userInfo.setId(sysUser.getId());
-        sysUserInfoService.save(userInfo);
+            sysUserInfoService.save(userInfo);
+        }
         List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
-        List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
+        String finalUserId = userId;
+        List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
         esmUserImageService.saveBatch(esmUserImages);
 
         return HttpResult.ok("新增成功");
@@ -719,40 +736,63 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             sysUser.setPassword(sysUser_org.getPassword());
             sysUser.setSalt(sysUser_org.getSalt());
         }
-
         if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
-            return checkChuDanUser(sysUser);
-        }
-
-        sysUser.setStatus(sysUserVo.getSysUser().getStatus());
-        updateById(sysUser);
-
-        //角色配置
-        SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
-        sysUserRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
-        sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
-        sysUserRole.setLastUpdateTime(new Date());
-        sysUserRoleService.updateById(sysUserRole);
+            // add by  hxl  2024-08-20
+            // return checkChuDanUser(sysUser);
+            if (StringUtils.isEmpty(sysUser.getReferrerId())) {
+                return HttpResult.error("业务员工号不能为空");
+            }
+            //归属业务员和出单员部门必须一致
+            SysUser user = getById(sysUser.getReferrerId());
+            if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
+                return HttpResult.error("出单员机构必须和归属业务员机构一致");
+            }
+            sysUser.setOperatorCode(sysUser.getReferrerId());
+            if (StringUtils.isEmpty(sysUser.getId())) {
+                userId = gainNextUserId(sysUser.getDeptId());
+                sysUser.setId(userId);
+                save(sysUser);
+                //角色配置
+                SysUserRole userRole = new SysUserRole();
+                userRole.setUserId(sysUser.getId());
+                userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
+                sysUserRoleService.save(userRole);
+            } else {
+                userId = sysUser.getId();
+                updateById(sysUser);
+            }
+        }else{
+            sysUser.setStatus(sysUserVo.getSysUser().getStatus());
+            updateById(sysUser);
 
-        if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
-            //推荐人
-            esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
-        }
+            //角色配置
+            SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
+            sysUserRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
+            sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
+            sysUserRole.setLastUpdateTime(new Date());
+            sysUserRoleService.updateById(sysUserRole);
+
+            if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
+                //推荐人
+                esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
+            }
 
-        //用户详情信息
-        SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
-        sysUserInfo.setId(userId);
-        if (null == sysUserInfo.getRemark()) {
-            sysUserInfo.setRemark("");
+            //用户详情信息
+            SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
+            sysUserInfo.setId(userId);
+            if (null == sysUserInfo.getRemark()) {
+                sysUserInfo.setRemark("");
+            }
+            sysUserInfoService.saveOrUpdate(sysUserInfo);
         }
-        sysUserInfoService.saveOrUpdate(sysUserInfo);
         // 影像资料
         LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(EsmUserImage::getUserId, userId);
         esmUserImageService.remove(wrapper);
 
         List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
-        List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
+        String finalUserId = userId;
+        List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
         esmUserImageService.saveBatch(esmUserImages);
 
         if (UserWorkStatus.UWS_5.getCode() == beStatus ||
@@ -1524,6 +1564,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         this.updateById(byId);
 
         //添加离职证明
+        //判斷是否存在先刪除   add by hxl
+        LambdaQueryWrapper<EsmUserImage> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(EsmUserImage::getUserId, sysUserVO.getSysUser().getId());
+        lqw.eq(EsmUserImage::getType, InsuranceImageEnum.LZ_01.getCode());
+        esmUserImageService.getBaseMapper().delete(lqw);
+
         EsmUserImageVo esmUserImageVo = sysUserVO.getEsmUserImageVo().get(0);
         esmUserImageVo.setType(InsuranceImageEnum.LZ_01.getCode());
         EsmUserImage esmUserImage = new EsmUserImage(esmUserImageVo, sysUserVO.getSysUser().getId());

+ 3 - 0
src/main/java/com/ydtech/modules/fnc/dao/InsPlyIncomeMapper.java

@@ -15,6 +15,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
 import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 
@@ -199,4 +200,6 @@ public interface InsPlyIncomeMapper extends BaseMapper<InsPlyIncome> {
 
     List<InsuranceHandlingSettlementMonthDto> getInvociAmount(@Param("vo") InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo);
 
+    Collection<? extends FinancialReceivablesVo> queryDateByTypePt(FinancialReceivablesQueryVo financialReceivablesQueryVo);
+
 }

+ 6 - 0
src/main/java/com/ydtech/modules/fnc/dto/InsuranceHandlingSettlementMonthDto.java

@@ -23,6 +23,9 @@ public class InsuranceHandlingSettlementMonthDto implements Serializable {
     @ApiModelProperty("结算金额")
     private BigDecimal settlementAmount;
 
+    @ApiModelProperty("结算金额(表中)")
+    private BigDecimal insuraSettlementAmount;
+
     @ApiModelProperty("开票金额")
     private BigDecimal totalAmount;
 
@@ -49,4 +52,7 @@ public class InsuranceHandlingSettlementMonthDto implements Serializable {
 
     @ApiModelProperty("是否手续费")
     private String isNotDocumentary;
+
+    @ApiModelProperty("是否非车")
+    private String isNotCar;
 }

+ 4 - 0
src/main/java/com/ydtech/modules/fnc/entity/InsuranceHandlingSettlementMonthEntity.java

@@ -67,4 +67,8 @@ public class InsuranceHandlingSettlementMonthEntity implements Serializable {
     @ApiModelProperty("签单日期")
     @TableField(exist = false)
     private String incomeSigningTime;
+
+    @ApiModelProperty("是否非车")
+    @TableField("is_not_car")
+    private String isNotCar;
 }

+ 3 - 0
src/main/java/com/ydtech/modules/fnc/service/InsuranceHandlingSettlementMonthService.java

@@ -28,4 +28,7 @@ public interface InsuranceHandlingSettlementMonthService  extends IService<Insur
      */
     HttpResult<InsuranceHandlingSettlementMonthDto> insertByEntity(InsuranceHandlingSettlementMonthEntity insuranceHandlingSettlementMonthVo);
 
+    List<InsuranceHandlingSettlementMonthDto> getQueryLists(InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo);
+
+
 }

+ 68 - 36
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -78,6 +78,7 @@ import java.time.LocalTime;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -384,7 +385,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
     }
 
-    private String setNoPolicyno(com.ydtech.modules.fnc.entity.InsAreaCompany insAreaCompany) {
+    private String setNoPolicyno(InsAreaCompany insAreaCompany) {
         if (insAreaCompany.getJypremium() == null || insAreaCompany.getJypremium().compareTo(BigDecimal.ZERO) == 0) {  // 非车跟单费
             return null;
         }
@@ -2073,37 +2074,6 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
                 }
             }
         }
-//      分批结算
-        List<InsuranceHandlingSettlementMonthEntity> insuranceHandlingList = insPlyIncomeVo.getInsuranceHandlingList();
-        BigDecimal allsettlementAmount = BigDecimal.ZERO;
-        for(InsuranceHandlingSettlementMonthEntity item :  insuranceHandlingList){
-            String incomeSigningTime = item.getIncomeSigningTime();
-
-            DateTimeFormatter yearMonthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
-
-            // 尝试解析为LocalDate(这里实际上解析为YearMonth,但使用LocalDate的parse方法,因为它会接受只有年和月的TemporalQuery)
-            // 注意:这里直接解析为LocalDate可能会引发异常,因为DateTimeFormatter应该与要解析的Temporal类型精确匹配。
-            // 但由于Java的灵活性,以及默认行为(假设日为1),这通常可以工作。
-            LocalDate date = YearMonth.parse(incomeSigningTime, yearMonthFormatter).atDay(1);
-
-            // 将LocalDate转换为LocalDateTime,时间为00:00:00
-            LocalDateTime localDateTime = date.atStartOfDay();
-
-
-            BigDecimal totalAmount = item.getTotalAmount();  //开票金额
-            BigDecimal settlementAmount = item.getSettlementAmount();  //结算金额
-
-            if(settlementAmount.compareTo(BigDecimal.ZERO) > 0){
-                allsettlementAmount =    this.calculateTotal(settlementAmount,allsettlementAmount,null);
-                BigDecimal subtract = totalAmount.subtract(settlementAmount);
-                item.setRemainingAmount(subtract);
-                item.setCreateTime(LocalDateTime.now());
-            }
-            item.setPartnerCompaniesId(insPlyIncomeVo.getPartnerCompaniesId());
-            item.setSigningTime(localDateTime);
-            item.setTotalAmount(item.getRemainingAmount());
-        }
-        insuranceHandlingSettlementMonthService.saveBatch(insuranceHandlingList);
 
         SettlementDocumentaryFeesVo settlementDocumentaryFeesVo = new SettlementDocumentaryFeesVo();
         settlementDocumentaryFeesVo.setInvoiceId(insPlyIncomeVo.getInvoicId());   //开票号
@@ -2139,6 +2109,62 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
 
         settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo);
 
+
+
+        List<InsuranceHandlingSettlementMonthEntity> insuranceHandlingList = insPlyIncomeVo.getInsuranceHandlingList();
+
+        ArrayList<InsuranceHandlingSettlementMonthEntity> insuranceHandlingListNew = new ArrayList<>();
+
+
+//        判断是否是第一次结算
+        InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo = new InsuranceHandlingSettlementMonthVo();
+        insuranceHandlingSettlementMonthVo.setPartnerCompaniesId(insPlyIncomeVo.getPartnerCompaniesId());
+        insuranceHandlingSettlementMonthVo.setTaskId(insPlyIncomeVo.getTaskId());
+
+        List<InsuranceHandlingSettlementMonthDto> insuranceHandlingSettlementMonthDtos = insuranceHandlingSettlementMonthService.getQueryLists(insuranceHandlingSettlementMonthVo);
+
+
+//      分批结算
+        BigDecimal allsettlementAmount = BigDecimal.ZERO;
+        for(InsuranceHandlingSettlementMonthEntity item :  insuranceHandlingList){
+
+
+            String incomeSigningTime = item.getIncomeSigningTime();
+
+            DateTimeFormatter yearMonthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+
+            // 尝试解析为LocalDate(这里实际上解析为YearMonth,但使用LocalDate的parse方法,因为它会接受只有年和月的TemporalQuery)
+            // 注意:这里直接解析为LocalDate可能会引发异常,因为DateTimeFormatter应该与要解析的Temporal类型精确匹配。
+            // 但由于Java的灵活性,以及默认行为(假设日为1),这通常可以工作。
+            LocalDate date = YearMonth.parse(incomeSigningTime, yearMonthFormatter).atDay(1);
+
+            // 将LocalDate转换为LocalDateTime,时间为00:00:00
+            LocalDateTime localDateTime = date.atStartOfDay();
+            item.setIsNotCar(insPlyIncomeVo.getIsNotCar());
+
+            BigDecimal totalAmount = item.getRemainingAmount();  //开票未结算
+            BigDecimal settlementAmount = item.getSettlementAmount();  //结算金额
+                InsuranceHandlingSettlementMonthEntity byId = insuranceHandlingSettlementMonthService.getById(item.getId());
+                if(ObjectUtils.isNotEmpty(byId)){
+                    allsettlementAmount = this.calculateTotal(byId.getSettlementAmount(),item.getSettlementAmount(),null);
+                    item.setSettlementAmount(allsettlementAmount);
+                }else {
+                    item.setSettlementAmount(item.getSettlementAmount());
+                }
+                BigDecimal subtract1 = totalAmount.subtract(settlementAmount);
+                item.setRemainingAmount(subtract1);
+                item.setCreateTime(LocalDateTime.now());
+                item.setPartnerCompaniesId(insPlyIncomeVo.getPartnerCompaniesId());
+                item.setSigningTime(localDateTime);
+                item.setSettlementDocumentaryFeesId(byIdSettlementDocumentaryFeesEntity.getId());
+                insuranceHandlingListNew.add(item);
+        }
+        if(insuranceHandlingSettlementMonthDtos.size()>0){
+            insuranceHandlingSettlementMonthService.updateBatchById(insuranceHandlingListNew);
+        }else{
+            insuranceHandlingSettlementMonthService.saveBatch(insuranceHandlingListNew);
+        }
+
         return HttpResult.ok();
     }
 
@@ -3338,8 +3364,14 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         }else{
             year = Integer.parseInt(financialReceivablesQueryVo.getYear());
         }
+        List<FinancialReceivablesVo> list = new ArrayList<>();
+        if("2".equals(financialReceivablesQueryVo.getType())){
+            list.addAll(baseMapper.queryDateByType(financialReceivablesQueryVo))  ;
+        }else {
+            list.addAll(baseMapper.queryDateByTypePt(financialReceivablesQueryVo))  ;
+
+        }
 
-        List<FinancialReceivablesVo> list  =  baseMapper.queryDateByType(financialReceivablesQueryVo);
 
         financialReceivablesQueryVo.setBeginDate(SliceUpDateUtil.getYearBeginDateStr(year)+" 00:00:00");
         financialReceivablesQueryVo.setEndDate(SliceUpDateUtil.getYearEndDateStr(year)+" 23:59:59");
@@ -3416,9 +3448,9 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         } else {
              amountMap = this.platformSett(resultData, financialReceivablesQueryVo);
         }
-        vo.setYisSumAmount(amountMap.get("yishouAmount").toString());
-        vo.setYsSumAmount(amountMap.get("yinshouAmount").toString());
-        vo.setWsSumAmount(amountMap.get("weishouAmount").toString());
+//        vo.setYisSumAmount(amountMap.get("yishouAmount").toString());
+//        vo.setYsSumAmount(amountMap.get("yinshouAmount").toString());
+//        vo.setWsSumAmount(amountMap.get("weishouAmount").toString());
         return vo;
     }
 

+ 52 - 24
src/main/java/com/ydtech/modules/fnc/service/impl/InsuranceHandlingSettlementMonthServiceImpl.java

@@ -9,16 +9,18 @@ import com.ydtech.modules.fnc.entity.InsuranceHandlingSettlementMonthEntity;
 import com.ydtech.modules.fnc.service.InsPlyIncomeService;
 import com.ydtech.modules.fnc.service.InsuranceHandlingSettlementMonthService;
 import com.ydtech.modules.fnc.vo.InsuranceHandlingSettlementMonthVo;
+import com.ydtech.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -35,42 +37,62 @@ import java.util.stream.Collectors;
 @Service
 public class InsuranceHandlingSettlementMonthServiceImpl extends ServiceImpl<InsuranceHandlingSettlementMonthMapper, InsuranceHandlingSettlementMonthEntity> implements InsuranceHandlingSettlementMonthService {
     @Autowired
-    private InsPlyIncomeService  insPlyIncomeService;
+    private InsPlyIncomeService insPlyIncomeService;
+
     @Override
     public List<InsuranceHandlingSettlementMonthDto> queryList(InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo) {
-        List<InsuranceHandlingSettlementMonthDto>  incomeList=  insPlyIncomeService.getInvociAmount(insuranceHandlingSettlementMonthVo);
         List<InsuranceHandlingSettlementMonthDto> resultList = baseMapper.queryList(insuranceHandlingSettlementMonthVo);
-        if(resultList.size()>0){
-            Map<String, InsuranceHandlingSettlementMonthDto> latestByTaskId = resultList.stream()
+        if (resultList.size() > 0) {
+            return resultList;
+        } else {
+            List<InsuranceHandlingSettlementMonthDto> invociAmount = insPlyIncomeService.getInvociAmount(insuranceHandlingSettlementMonthVo);
+
+            Map<String, InsuranceHandlingSettlementMonthDto> latestByTaskId = invociAmount.stream()
                     .collect(Collectors.toMap(
                             InsuranceHandlingSettlementMonthDto::getIncomeSigningTime, // 用于生成Map的键
                             Function.identity(),// 值是Stream中的元素本身
                             // 如果两个元素有相同的key(即相同的taskId),则选择createTime更晚的那个
                             BinaryOperator.maxBy(Comparator.comparing(InsuranceHandlingSettlementMonthDto::getCreateTime))
                     ));
+            for (InsuranceHandlingSettlementMonthDto item : invociAmount) {
+                if (item.getTotalAmount() != null && item.getTotalAmount().compareTo(BigDecimal.ZERO) < 0) {
+                    String formattedDateString = formatDateMinusOneMonth(item.getIncomeSigningTime());
+                    if (StringUtils.isNotEmpty(formattedDateString)) {
+                        InsuranceHandlingSettlementMonthDto insuranceHandlingSettlementMonthDto = latestByTaskId.get(formattedDateString);
+                        insuranceHandlingSettlementMonthDto.setTotalAmount(insuranceHandlingSettlementMonthDto.getTotalAmount().add(item.getTotalAmount()));
+                        latestByTaskId.remove(item.getIncomeSigningTime());
+                        latestByTaskId.put(formattedDateString, insuranceHandlingSettlementMonthDto);
 
-            for (InsuranceHandlingSettlementMonthDto   incomeItem   : incomeList){
-                String incomeSigningTime = incomeItem.getIncomeSigningTime();
-                InsuranceHandlingSettlementMonthDto insuranceHandlingSettlementMonthDto = latestByTaskId.get(incomeSigningTime);
-                incomeItem.setRemainingAmount(insuranceHandlingSettlementMonthDto.getRemainingAmount());
-                incomeItem.setTotalAmount(insuranceHandlingSettlementMonthDto.getTotalAmount());
-                incomeItem.setCreateTime(null);
-                if( incomeItem.getSettlementAmount() ==null || incomeItem.getSettlementAmount().compareTo(BigDecimal.ZERO)==0){
-                    incomeItem.setSettlementAmount(new BigDecimal("0.00"));
-
+                    }
                 }
             }
-        }else {
-            for (InsuranceHandlingSettlementMonthDto   incomeItem   : incomeList){
-                    incomeItem.setRemainingAmount(incomeItem.getTotalAmount());
+            List<InsuranceHandlingSettlementMonthDto> list = new ArrayList<>(latestByTaskId.values());
+            list.stream().forEach(item -> {
+                if (item.getRemainingAmount() == null || item.getRemainingAmount().compareTo(BigDecimal.ZERO) == 0) {
+                    item.setRemainingAmount(item.getTotalAmount());
+                    item.setSettlementAmount(BigDecimal.ZERO);
+                }
+            });
+            return list;
+        }
+    }
 
-                if( incomeItem.getSettlementAmount() ==null || incomeItem.getSettlementAmount().compareTo(BigDecimal.ZERO)==0){
-                    incomeItem.setSettlementAmount(new BigDecimal("0.00"));
+    public static String formatDateMinusOneMonth(String originalDateString) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+        try {
+            Date date = sdf.parse(originalDateString);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(date);
+            calendar.add(Calendar.MONTH, -1); // 月份减一
 
-                }
-            }
+            // 注意:如果原始月份是1月,这里将变成12月,而不是0或1
+            // 如果你需要特别处理这种情况(比如保持为1月或循环到前一年的12月),你需要添加逻辑来检查
+
+            return sdf.format(calendar.getTime());
+        } catch (ParseException e) {
+            e.printStackTrace();
+            return null; // 或者返回原始字符串,或者抛出一个自定义异常
         }
-        return incomeList;
     }
 
     /**
@@ -84,4 +106,10 @@ public class InsuranceHandlingSettlementMonthServiceImpl extends ServiceImpl<Ins
         baseMapper.insert(insuranceHandlingSettlementMonthVo);
         return HttpResult.ok("结算成功");
     }
+
+    @Override
+    public List<InsuranceHandlingSettlementMonthDto> getQueryLists(InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo) {
+        List<InsuranceHandlingSettlementMonthDto> resultList = baseMapper.queryList(insuranceHandlingSettlementMonthVo);
+        return resultList;
+    }
 }

+ 8 - 8
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/QuoteRequest.java

@@ -372,7 +372,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 任意主险投保则带出
      * c
      */
-    @PingAnQuoteRequest(key="",remark="道路救援服务特约条款",flag="FXNY")
+    @PingAnQuoteRequest(key="TY1",remark="道路救援服务特约条款",flag="FXNY")
     private String amount01Sv;
     /***
      *车辆安全检测特约条款(9座以下非营业客车,界面可以勾选,默认带出一次)
@@ -382,7 +382,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 任意主险投保则带出
      * c
      */
-    @PingAnQuoteRequest(key="",remark="车辆安全检测特约条款",flag="FXNY")
+    @PingAnQuoteRequest(key="TY2",remark="车辆安全检测特约条款",flag="FXNY")
     private String amount02Sv;
     /***
      * 代为驾驶服务特约条款(9座以下非营业客车,界面可以勾选,默认带出一次)
@@ -392,7 +392,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 任意主险投保则带出
      * c
      */
-    @PingAnQuoteRequest(key="",remark="代为驾驶服务特约条款",flag="FXNY")
+    @PingAnQuoteRequest(key="TY3",remark="代为驾驶服务特约条款",flag="FXNY")
     private String amount03Sv;
     /***
      * 代为送检服务特约条款(
@@ -403,7 +403,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 任意主险投保则带出
      * c
      */
-    @PingAnQuoteRequest(key="",remark="代为送检服务特约条款",flag="FXNY")
+    @PingAnQuoteRequest(key="TY4",remark="代为送检服务特约条款",flag="FXNY")
     private String amount04Sv;
     /***
      * 新增加设备损失险设备信息列表
@@ -783,7 +783,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 同机动车传值
      * c
      */
-    @PingAnQuoteRequest(key="",remark="道路救援服务特约条款",flag="XNY")
+    @PingAnQuoteRequest(key="TY1",remark="道路救援服务特约条款",flag="XNY")
     private String amount01SvXNY;
     /***
      * 车辆安全检测特约条款(9座以下非营业客车,界面可以勾选,默认带出一次)
@@ -791,7 +791,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 同机动车传值
      * c
      */
-    @PingAnQuoteRequest(key="",remark="车辆安全检测特约条款",flag="XNY")
+    @PingAnQuoteRequest(key="TY2",remark="车辆安全检测特约条款",flag="XNY")
     private String amount02SvXNY;
     /***
      * 代为驾驶服务特约条款(9座以下非营业客车,界面可以勾选,默认带出一次)
@@ -799,7 +799,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 同机动车传值
      * c
      */
-    @PingAnQuoteRequest(key="",remark="代为驾驶服务特约条款",flag="XNY")
+    @PingAnQuoteRequest(key="TY3",remark="代为驾驶服务特约条款",flag="XNY")
     private String amount03SvXNY;
     /***
      * 代为送检服务特约条款(
@@ -809,7 +809,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 同机动车传值
      * c
      */
-    @PingAnQuoteRequest(key="",remark="代为送检服务特约条款",flag="XNY")
+    @PingAnQuoteRequest(key="TY4",remark="代为送检服务特约条款",flag="XNY")
     private String amount04SvXNY;
     /***
      *  新增加设备损失险设备信息列表

+ 4 - 4
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/QuoteResponse.java

@@ -336,25 +336,25 @@ public class QuoteResponse extends PingAnBaseResponse {
          * 道路救援服务特约条款次数(暂时忽略)
          * c
          */
-        @PingAnQuoteRequest(key="",remark="道路救援服务特约条款次数(暂时忽略)",flag="FXNY")
+        @PingAnQuoteRequest(key="TY1",remark="道路救援服务特约条款次数(暂时忽略)",flag="FXNY")
         private String premium01Sv;
         /***
          * 车辆安全检测特约条款次数(暂时忽略)
          * c
          */
-        @PingAnQuoteRequest(key="",remark="车辆安全检测特约条款次数(暂时忽略)",flag="FXNY")
+        @PingAnQuoteRequest(key="TY2",remark="车辆安全检测特约条款次数(暂时忽略)",flag="FXNY")
         private String premium02Sv;
         /***
          * 代为驾驶服务特约条款次数(暂时忽略)
          * c
          */
-        @PingAnQuoteRequest(key="",remark="代为驾驶服务特约条款次数(暂时忽略)",flag="FXNY")
+        @PingAnQuoteRequest(key="TY3",remark="代为驾驶服务特约条款次数(暂时忽略)",flag="FXNY")
         private String premium03Sv;
         /***
          * 代为送检服务特约条款次数(暂时忽略)
          * c
          */
-        @PingAnQuoteRequest(key="",remark="代为驾驶服务特约条款次数(暂时忽略)",flag="FXNY")
+        @PingAnQuoteRequest(key="TY4",remark="代为驾驶服务特约条款次数(暂时忽略)",flag="FXNY")
         private String premium04Sv;
         /***
          * 商业险出险次数

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -197,7 +197,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                 throw new SystemException(responseMsg);
             }
         }
-        List<BoHaiQuoteAccidentVo> accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
+        List<BoHaiQuoteAccidentVo> accidentalDrivingVo = Optional.ofNullable(quoteVo.getAccidentalDrivingVo()).orElse(new ArrayList<>());
 //        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
 //        insAreaCompanyAccidentalDriving.setQuantity(quoteVo.getAccidentalDrivingVo());
         return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);

+ 50 - 0
src/main/resources/mapper/modules/admin/DeptBalanceMapper.xml

@@ -0,0 +1,50 @@
+<?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.DeptBalanceMapper">
+
+
+    <select id="queryDeptLeaderStatistics" resultType="com.ydtech.modules.admin.model.dto.DeptBalanceDto">
+        SELECT
+        sd.id as "deptId",
+        sd.name as "deptName",
+        sd.address as "deptAddress",
+        su.name as "userName",
+        su.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(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
+
+        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
+        where safa.`status`='1'
+        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},'%')
+            </if>
+            <if test="vo.cityId != null and vo.cityId != ''">
+                and sd.id like concat('%',#{vo.cityId},'%')
+            </if>
+            <if test="vo.countyId != null and vo.countyId != ''">
+                and sd.id like concat('%',#{vo.countyId},'%')
+            </if>
+            <if test="vo.houseId != null and vo.houseId != ''">
+                and sd.id like concat('%',#{vo.houseId},'%')
+            </if>
+        </where>
+    </select>
+
+
+</mapper>

+ 9 - 0
src/main/resources/mapper/modules/admin/SysRoleMenuKztMapper.xml

@@ -51,4 +51,13 @@
           AND t.sys_type = ${sysType}
           AND t.del_flag =0
     </select>
+    <select id="findByUseId" resultType="java.lang.Integer">
+        SELECT
+            count( rm.menu_id ) as num
+        FROM
+            sys_user_role_kzt ur
+                LEFT JOIN sys_role_menu_kzt rm ON ur.role_id = rm.role_id
+        WHERE
+            ur.user_id = #{userId}
+    </select>
 </mapper>

+ 5 - 2
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -88,8 +88,11 @@
         psd.name as pDeptName,
         t4.id as roleId,
         t4.name as roleName,
-        (select approve_by from sys_user_track  where user_id = su.id ORDER BY approve_time desc LIMIT 1) as approveBy,
-        (select approve_time from sys_user_track  where user_id = su.id ORDER BY approve_time desc LIMIT 1) as approveTime
+        (select approve_by from sys_user_track where user_id = su.id ORDER BY approve_time desc LIMIT 1) as approveBy,
+        (select approve_time from sys_user_track where user_id = su.id ORDER BY approve_time desc LIMIT 1) as
+        approveTime,
+        (select id from sys_dept where id = psd.id ) as levelFourDeptId,
+        (select name from sys_dept where id = psd.id) as levelFourDeptName
         from sys_user su
         left join sys_dept sd on su.dept_id=sd.id
         left join sys_dept psd on sd.parent_id=psd.id

+ 38 - 45
src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml

@@ -2462,54 +2462,47 @@
 
     <select id="queryDateByType"
             resultType="com.ydtech.modules.admin.model.report.financialReceivables.FinancialReceivablesVo">
-        select
-        a.years as yearAndMonth,
-        a.commissionFeevalue as commissionFeevalue,
-        a.noInvoicCommissionFeevalue as noInvoicCommissionFeevalue,
-        a.readyCommissionFeevalue  as readyCommissionFeevalue,
-        ifnull(b.settlementAmount,0) as settlementAmount,
-        ifnull(b.noSettlementAmount,0) as noSettlementAmount
-        from (
         SELECT
-        DATE_FORMAT( a.create_time, '%Y-%m' ) as years,
-        SUM(IFNULL(a.commission_feevalue ,0 ) + IFNULL(a.other_feevalue ,0 )) AS commissionFeevalue,
-        SUM(CASE WHEN a.handling_fees_status = '0' THEN IFNULL(a.commission_feevalue ,0 ) + IFNULL(a.other_feevalue ,0 ) ELSE 0 END ) AS noInvoicCommissionFeevalue,
-        SUM(CASE WHEN a.handling_fees_status = '1' THEN IFNULL(a.commission_feevalue ,0 ) + IFNULL(a.other_feevalue ,0 ) ELSE 0 END) AS readyCommissionFeevalue
+            a.subSigning as "yearAndMonth",
+            a.allAmount as "commissionFeevalue",
+            b.commSettLement +c.otherSettlementAmount as "noInvoicCommissionFeevalue",
+            a.allAmount-( b.commSettLement +c.otherSettlementAmount) as "readyCommissionFeevalue",
+            (c.invoicAmount - c.otherSettlementAmount) +  (b.remainingAmount) as "settlementAmount"
         FROM
-        ins_ply_income a
-        LEFT JOIN
-        ptl_agreement pa ON pa.id = a.agreement_id
-        <where>
-            1=1
-            <if test="vo.type !=null  and  vo.type  !=''">
-                and pa.agreement_type =#{vo.type}
-            </if>
-            <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
-                AND  a.create_time  BETWEEN #{vo.beginDate} AND #{vo.endDate}
-            </if>
-        </where>
-        GROUP BY
-        DATE_FORMAT( a.create_time, '%Y-%m' )
+            (
+                SELECT
+                    sum( a.all_fee_value ) AS "allAmount",
+                    DATE_FORMAT( a.signdate, '%Y-%m' ) AS "subSigning"
+                FROM
+                    ins_ply_income a
+                        LEFT JOIN ptl_agreement pa ON pa.id = a.agreement_id
+                WHERE
+                    pa.agreement_type = '2'
+                GROUP BY
+                    DATE_FORMAT( a.signdate, '%Y-%m' )
+            )  a    left  join  (
+                SELECT
+                    sum( a.settlement_amount ) as "commSettLement",
+                    sum( a.remaining_amount ) as "remainingAmount",
+                    DATE_FORMAT( a.signing_time, '%Y-%m' )  as "subSigning"
+                FROM
+                    sys_insurance_handling_settlement_month a
+                GROUP BY
+                    DATE_FORMAT( a.signing_time, '%Y-%m' )
+            ) b  on  b.subSigning=a.subSigning
+                    left  join  (
+                SELECT
+                    SUM( CASE WHEN a.settlement_status = '2' THEN IFNULL( a.settlement_amount, 0 ) ELSE 0 END ) AS "otherSettlementAmount",
+                    SUM( CASE WHEN a.settlement_status = '1' THEN IFNULL( a.settlement_amount, 0 ) ELSE 0 END ) AS "invoicAmount",
+                    DATE_FORMAT( a.signing_time, '%Y-%m' ) AS "subSigning"
+                FROM
+                    settlement_documentary_fees a
+                WHERE
+                    a.handling_fees_status = '1'
+                GROUP BY
+                    DATE_FORMAT( a.signing_time, '%Y-%m' )
+            )  c  on  c.subSigning=a.subSigning
 
-        )  a   left join
-        (
-        SELECT
-        DATE_FORMAT( a.create_time, '%Y-%m' ) as years,
-        SUM(IFNULL(a.settlement_amount ,0 )) as  settlementAmount,
-        SUM(IFNULL(a.total_amount ,0 ) -IFNULL(a.settlement_amount ,0 ) ) AS noSettlementAmount
-        FROM
-        settlement_documentary_fees a
-        <where>
-            a.settlement_status=2
-            <if test="vo.type !=null  and  vo.type  !=''">
-                and  a.agreement_type =#{vo.type}
-            </if>
-            <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
-                AND  a.create_time  BETWEEN #{vo.beginDate} AND #{vo.endDate}
-            </if>
-        </where>
-        GROUP BY DATE_FORMAT( a.create_time, '%Y-%m' )
-        )  b  on a.years =b.years
     </select>
 
     <select id="queryDateByTypeMonthSumAmount" resultType="java.math.BigDecimal">

+ 2 - 1
src/main/resources/mapper/modules/insuranceHandlingSettlementMonth/InsuranceHandlingSettlementMonthMapper.xml

@@ -7,11 +7,12 @@
                 a.task_id  as  "taskId",
                 a.settlement_documentary_fees_id  as  "settlementDocumentaryFeesId",
                 a.partner_companies_id  as  "partnerCompaniesId",
-                IFNULL(a.settlement_amount,0)  as  "settlementAmount",
+                IFNULL(a.settlement_amount,0)  as  "insuraSettlementAmount",
                 a.total_amount  as  "totalAmount",
                 a.remaining_amount  as  "remainingAmount",
                 a.create_time  as  "createTime",
                 a.signing_time  as  "signingTime",
+                0  as "settlementAmount",
                 DATE_FORMAT( a.signing_time, '%Y-%m' )  as  "incomeSigningTime",
                 a.creater_id  as  "createrId"
     </sql>