Selaa lähdekoodia

Merge branch 'test' into test-dj

dongxin 1 vuosi sitten
vanhempi
commit
25fe2933af
56 muutettua tiedostoa jossa 2073 lisäystä ja 364 poistoa
  1. 5 0
      pom.xml
  2. 2 0
      src/main/java/com/ydtech/components/TokenInterceptor.java
  3. 125 0
      src/main/java/com/ydtech/config/RabbitMQConfig.java
  4. 14 1
      src/main/java/com/ydtech/constants/RabbitMqEnum.java
  5. 3 1
      src/main/java/com/ydtech/constants/enums/InsurKind.java
  6. 2 2
      src/main/java/com/ydtech/modules/admin/controller/PushOrder.java
  7. 6 2
      src/main/java/com/ydtech/modules/admin/controller/SysQyWeChatController.java
  8. 2 2
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  9. 16 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserLinkAreaController.java
  10. 66 0
      src/main/java/com/ydtech/modules/admin/controller/deptBalance/DeptBalanceController.java
  11. 7 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  12. 67 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConsoleDto.java
  13. 34 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerInfoConsoleDto.java
  14. 7 0
      src/main/java/com/ydtech/modules/admin/model/po/SysQyWeChat.java
  15. 23 0
      src/main/java/com/ydtech/modules/admin/model/vo/DeptBalanceVo.java
  16. 27 0
      src/main/java/com/ydtech/modules/admin/service/DeptBalanceService.java
  17. 8 0
      src/main/java/com/ydtech/modules/admin/service/SysUserLinkAreaService.java
  18. 753 48
      src/main/java/com/ydtech/modules/admin/service/impl/DeptBalanceServiceImpl.java
  19. 36 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  20. 115 196
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  21. 14 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkAreaServiceImpl.java
  22. 2 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  23. 4 1
      src/main/java/com/ydtech/modules/admin/utils/SliceUpDateUtil.java
  24. 4 4
      src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java
  25. 7 1
      src/main/java/com/ydtech/modules/fnc/dao/InsPlyIncomeMapper.java
  26. 7 1
      src/main/java/com/ydtech/modules/fnc/service/InsPlyIncomeService.java
  27. 10 0
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  28. 17 7
      src/main/java/com/ydtech/modules/order/controller/InsOrderReadPdfController.java
  29. 1 2
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  30. 1 0
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java
  31. 72 0
      src/main/java/com/ydtech/modules/order/orderThread/OrderFailRunnableThread.java
  32. 20 12
      src/main/java/com/ydtech/modules/order/orderThread/OrderRunnableThread.java
  33. 72 0
      src/main/java/com/ydtech/modules/order/orderThread/OrderSignRunnableThread.java
  34. 7 0
      src/main/java/com/ydtech/modules/order/service/InsOrderPayDateRecordService.java
  35. 1 1
      src/main/java/com/ydtech/modules/order/service/InsOrderPushMsgService.java
  36. 7 0
      src/main/java/com/ydtech/modules/order/service/InsOrderReadPdfService.java
  37. 1 1
      src/main/java/com/ydtech/modules/order/service/impl/IdentifyServiceImpl.java
  38. 15 0
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  39. 7 0
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  40. 61 2
      src/main/java/com/ydtech/modules/order/service/impl/InsOrderPayDateRecordServiceImpl.java
  41. 92 30
      src/main/java/com/ydtech/modules/order/service/impl/InsOrderPushMsgServiceImpl.java
  42. 45 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrderReadPdfServiceImpl.java
  43. 3 0
      src/main/java/com/ydtech/modules/order/service/impl/SysQuoteConfigServiceImpl.java
  44. 42 0
      src/main/java/com/ydtech/modules/order/timer/UpdateOrderMQTimer.java
  45. 82 13
      src/main/java/com/ydtech/modules/order/timer/UpdateOrderTimer.java
  46. 4 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  47. 2 1
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  48. 27 2
      src/main/resources/application-pre.yml
  49. 27 2
      src/main/resources/application-prod.yml
  50. 27 2
      src/main/resources/application-test.yml
  51. 5 3
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  52. 34 4
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  53. 15 0
      src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml
  54. 1 0
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml
  55. 9 12
      src/main/resources/mapper/modules/order/InsOrderPushMsgMapper.xml
  56. 10 9
      src/main/resources/mapper/modules/order/SysQuoteRecordMapper.xml

+ 5 - 0
pom.xml

@@ -678,6 +678,11 @@
             <artifactId>sunecm-url-encode-1</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <!--add  by hxl  2024-11-22  mq-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 2 - 0
src/main/java/com/ydtech/components/TokenInterceptor.java

@@ -111,6 +111,8 @@ public class TokenInterceptor {
         notMatchList.add("/ttqf/aa/*");
         notMatchList.add("/ttqf/**");
 
+        notMatchList.add("/push/**");
+
         return new SaInterceptor(handler -> {
             // 指定一条 match 规则
             SaRouter

+ 125 - 0
src/main/java/com/ydtech/config/RabbitMQConfig.java

@@ -0,0 +1,125 @@
+package com.ydtech.config;
+
+import com.ydtech.constants.RabbitMqEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.*;
+import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RabbitMQConfig {
+
+    /**
+     * 消费者数量,默认10
+     */
+    public static final int DEFAULT_CONCURRENT = 10;
+
+    /**
+     * 每个消费者获取最大投递数量 默认50
+     */
+    public static final int DEFAULT_PREFETCH_COUNT = 50;
+
+    private final static Logger log = LoggerFactory.getLogger(RabbitMQConfig.class);
+
+    @Bean
+        //设置队列持久化 第二个参数  保证数据不丢失
+    Queue queue() {
+        return new Queue(RabbitMqEnum.ORDER_QUEUE.getCode(), true);
+    }
+
+    @Bean
+        //设置队列持久化 第二个参数  保证数据不丢失
+    Queue queueFail() {
+        return new Queue(RabbitMqEnum.ORDER_QUEUE_FAIL.getCode(), true);
+    }
+
+    @Bean
+        //设置队列持久化 第二个参数  保证数据不丢失
+    Queue queueSign() {
+        return new Queue(RabbitMqEnum.ORDER_QUEUE_SIGN.getCode(), true);
+    }
+
+    @Bean
+        //设置队列持久化 第二个参数  保证数据不丢失
+    DirectExchange exchange() {
+        return new DirectExchange(RabbitMqEnum.ORDER_EXCHANGE.getCode(),true,false);
+    }
+
+
+    @Bean
+        //设置队列持久化 第二个参数  保证数据不丢失
+    DirectExchange exchangeFail() {
+        return new DirectExchange(RabbitMqEnum.ORDER_EXCHANGE_FAIL.getCode(),true,false);
+    }
+
+    @Bean
+        //设置队列持久化 第二个参数  保证数据不丢失
+    DirectExchange exchangeSign() {
+        return new DirectExchange(RabbitMqEnum.ORDER_EXCHANGE_SIGN.getCode(),true,false);
+    }
+
+    @Bean
+    Binding binding(Queue queue, DirectExchange exchange) {
+        return BindingBuilder.bind(queue).to(exchange).with(RabbitMqEnum.ORDER_ROUTINGKEY.getCode());
+    }
+
+
+    @Bean
+    Binding bindingFail(Queue queueFail, DirectExchange exchangeFail) {
+        return BindingBuilder.bind(queueFail).to(exchangeFail).with(RabbitMqEnum.ORDER_ROUTINGKEY_FAIL.getCode());
+    }
+    @Bean
+    Binding bindingSign(Queue queueSign, DirectExchange exchangeSign) {
+        return BindingBuilder.bind(queueSign).to(exchangeSign).with(RabbitMqEnum.ORDER_ROUTINGKEY_SIGN.getCode());
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/5 10:27
+     *  @Description:  手动确认保证消息消费成功
+     */
+    @Bean
+    public RabbitTemplate createRabbitTemplate(ConnectionFactory connectionFactory) {
+        RabbitTemplate rabbitTemplate = new RabbitTemplate();
+        rabbitTemplate.setConnectionFactory(connectionFactory);
+        rabbitTemplate.setMandatory(true);
+        // 设置配置回调函数
+        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
+            @Override
+            public void confirm(CorrelationData correlationData, boolean ack, String cause) {
+                log.info("ConfirmCallback:     " + "相关数据:" + correlationData);
+                log.info("ConfirmCallback:     " + "确认情况:" + ack);
+                log.info("ConfirmCallback:     " + "原因:" + cause);
+            }
+        });
+        rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
+            @Override
+            public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
+                log.info("ReturnCallback:     " + "消息:" + message);
+                log.info("ReturnCallback:     " + "回应码:" + replyCode);
+                log.info("ReturnCallback:     " + "回应信息:" + replyText);
+                log.info("ReturnCallback:     " + "交换机:" + exchange);
+                log.info("ReturnCallback:     " + "路由键:" + routingKey);
+            }
+        });
+        return rabbitTemplate;
+    }
+
+
+
+    @Bean
+    public SimpleRabbitListenerContainerFactory pointTaskContainerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) {
+        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
+        factory.setPrefetchCount(DEFAULT_PREFETCH_COUNT);
+        factory.setConcurrentConsumers(DEFAULT_CONCURRENT);
+        factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
+        configurer.configure(factory, connectionFactory);
+        return factory;
+    }
+}

+ 14 - 1
src/main/java/com/ydtech/constants/RabbitMqEnum.java

@@ -11,7 +11,20 @@ public enum RabbitMqEnum {
     ORDER_QUEUE("order_push_queue", "队列"),
     ORDER_EXCHANGE("order_push_exchange", "交换机"),
 
-    ORDER_ROUTINGKEY("order_push_routingKey", "关键字");
+    ORDER_ROUTINGKEY("order_push_routingKey", "关键字"),
+
+    ORDER_QUEUE_FAIL("order_push_fail_queue", "消息失败队列"),
+
+    ORDER_EXCHANGE_FAIL("order_push_fail_exchange", "失败交换机"),
+
+    ORDER_ROUTINGKEY_FAIL("order_push_fail_routingKey", "消息失败关键字"),
+
+    ORDER_QUEUE_SIGN("order_push_sign_queue", "承保订单队列"),
+
+    ORDER_EXCHANGE_SIGN("order_push_fail_exchange", "承保交换机"),
+
+
+    ORDER_ROUTINGKEY_SIGN("order_push_sign_routingKey", "承保订单关键字");
 
     private final String code;
     private final String desc;

+ 3 - 1
src/main/java/com/ydtech/constants/enums/InsurKind.java

@@ -33,7 +33,9 @@ public enum InsurKind {
     TY1("TY1", "道路救援服务特约条款"),
     TY2("TY2", "车辆安全检测特约条款"),
     TY3("TY3", "代为驾驶服务特约条款"),
-    TY4("TY4", "代为送检服务特约条款");
+    TY4("TY4", "代为送检服务特约条款"),
+    SY_WBDWGZ("SY_WBDWGZ","附加外部电网故障损失险");
+
 
     private final String code;
 

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

@@ -27,8 +27,8 @@ public class PushOrder {
 
     @GetMapping("pushHistoryOrders")
     @ApiOperation(value = "测试推送历史订单数据消息")
-    public HttpResult pushHistoryOrders() {
-        insOrderPushMsgService.getPushInsAreaCompanyList();
+    public HttpResult pushHistoryOrders(String month) {
+        insOrderPushMsgService.getPushInsAreaCompanyList(month);
         return HttpResult.ok();
     }
 

+ 6 - 2
src/main/java/com/ydtech/modules/admin/controller/SysQyWeChatController.java

@@ -11,6 +11,7 @@ import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.admin.service.WechatCustomerService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
+import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -87,8 +88,11 @@ public class SysQyWeChatController {
             sysQyWeChat = list.get(new Random().nextInt(list.size()));
         }
         String s = wechatCustomerService.addContactWay(sysQyWeChat.getOpenKfId());
-        String url = s + "&scene_param=" + userId;
-        return HttpResult.ok(url);
+        if(StringUtils.isNotEmpty(s)){
+            String url = s + "&scene_param=" + userId;
+            return HttpResult.ok(url);
+        }
+        return HttpResult.ok(sysQyWeChat.getSupportStaffUrl());
     }
 
 }

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

@@ -148,9 +148,9 @@ public class SysUserController extends BaseController {
      */
     @PostMapping(value = "/queryPage")
     public HttpResult queryPage(@RequestBody PageRequest pageRequest) {
-        String deptId = pageRequest.getColumnFilterValue(pageRequest, "deptId");
+        String deptId = pageRequest.getColumnFilterValue(pageRequest, "deptid");
         String name = pageRequest.getColumnFilterValue(pageRequest, "name");
-        String containsSubDept = pageRequest.getColumnFilterValue(pageRequest, "containsSubDept");
+        String containsSubDept = pageRequest.getColumnFilterValue(pageRequest, "containsSubDept") == null ? "0" : pageRequest.getColumnFilterValue(pageRequest, "containsSubDept");
         String mobile = pageRequest.getColumnFilterValue(pageRequest, "mobile");
         String roleId = pageRequest.getColumnFilterValue(pageRequest, "roleId");
         String deptName = pageRequest.getColumnFilterValue(pageRequest, "deptName");

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

@@ -106,4 +106,20 @@ public class SysUserLinkAreaController extends BaseController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Description: 查询所有的人员列表+分页
+     */
+    @PostMapping("findAllUsers")
+    @ApiOperation("查询所有的人员列表+分页")
+    public HttpResult<BasePageResult<SysUserBaseVO>> findAllUsers(@RequestBody SysUserDto sysUserDto) {
+        try{
+            BasePageResult<SysUserBaseVO> result = sysUserLinkAreaService.findAllUsers(sysUserDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 }

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

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerInfoConsoleDto;
+import com.ydtech.modules.admin.model.vo.AppSysPartnerVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
 import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto;
 import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
@@ -82,6 +84,70 @@ public class DeptBalanceController {
     }
 
 
+    /**
+     * @version
+     * @author: whp
+     * @Description: 合伙人详情
+     */
+    @PostMapping("queryPartnerInfo")
+    @ApiOperation(value = "合伙人详情")
+    public HttpResult<List<SysPartnerConsoleDto>> queryPartnerInfo(@RequestBody DeptBalanceVo deptBalanceVo) {
+        List<SysPartnerConsoleDto> result = deptBalanceService.queryPartnerInfo(deptBalanceVo);
+        return HttpResult.ok(result);
+    }
+
+    /**
+     * @version
+     * @author: whp
+     * @Description: 工作室详情
+     */
+    @PostMapping("queryStudioInfo")
+    @ApiOperation(value = "工作室详情")
+    public HttpResult<List<SysPartnerConsoleDto>> queryStudioInfo(@RequestBody DeptBalanceVo deptBalanceVo) {
+        List<SysPartnerConsoleDto> result = deptBalanceService.queryPartnerInfo(deptBalanceVo);
+        return HttpResult.ok(result);
+    }
+
+
+
+    /**
+     * @version
+     * @author: whp
+     * @Description: 合伙人详情
+     */
+    @PostMapping("info")
+    @ApiOperation(value = "合伙人详情")
+    public HttpResult<SysPartnerInfoConsoleDto> queryInfo(@RequestBody DeptBalanceVo deptBalanceVo) {
+        SysPartnerInfoConsoleDto result = deptBalanceService.queryInfo(deptBalanceVo);
+        return HttpResult.ok(result);
+    }
+
+
+    /**
+     * @version
+     * @author: whp
+     * @Description: 查看机构下团队信息
+     */
+    @PostMapping("/getTeamInfo")
+    @ApiOperation(value = "查看机构下团队信息")
+    public HttpResult<SysPartnerInfoConsoleDto> getTeamInfo(@RequestBody DeptBalanceVo deptBalanceVo) {
+        SysPartnerInfoConsoleDto result = deptBalanceService.getTeamInfo(deptBalanceVo);
+        return HttpResult.ok(result);
+    }
+
+
+    /**
+     * @version
+     * @author: whp
+     * @Description: 查看团队下人员信息
+     */
+    @PostMapping("/getTeamUserInfo")
+    @ApiOperation(value = "查看团队下人员信息")
+    public HttpResult<SysPartnerInfoConsoleDto> getTeamUserInfo(@RequestBody DeptBalanceVo deptBalanceVo) {
+        SysPartnerInfoConsoleDto result = deptBalanceService.getTeamUserInfo(deptBalanceVo);
+        return HttpResult.ok(result);
+    }
+
     /**
      * @version
      * @author: whp

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

@@ -549,6 +549,13 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SysUser> findDxZyUserList();
 
     List<SysUser> selectByUserId(List<String> ids);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/25 18:28
+     *  @Description:  查询所有的人员
+     */
+    Page<SysUserBaseVO> findAllUsers(@Param("page") Page<SysUserBaseVO> page, @Param("user") SysUserDto sysUserDto);
 }
 
 

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

@@ -1,7 +1,9 @@
 package com.ydtech.modules.admin.model.dto;
 
+import com.ydtech.modules.admin.model.PartnerInfoVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -37,6 +39,9 @@ public class SysPartnerConsoleDto implements Serializable {
     @ApiModelProperty(value = "部门名称")
     private String deptName;
 
+    @ApiModelProperty(value = "部门id")
+    private String deptId;
+
 
     @ApiModelProperty(value = "机构管理费")
     private BigDecimal deptManagementFee;
@@ -53,6 +58,9 @@ public class SysPartnerConsoleDto implements Serializable {
     @ApiModelProperty(value = "是否合伙人 0 是  1 否")
     private String type;
 
+    @ApiModelProperty(value = "合伙人等级")
+    private Integer patnerLevel;
+
     @ApiModelProperty(value = "子级list")
     private List<SysPartnerConsoleDto> childrenList;
 
@@ -65,12 +73,62 @@ public class SysPartnerConsoleDto implements Serializable {
     @ApiModelProperty(value = "性别")
     private String sex;
 
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+
+    @ApiModelProperty(value = "会员人数")
+    private Integer memberShip;
+
+
+    @ApiModelProperty(value = "总佣金")
+    private BigDecimal commission;
+
+
+    @ApiModelProperty(value = "直接合伙人")
+    private Integer numberPartners;
+
+
+    @ApiModelProperty(value = "直接工作室")
+    private Integer directStudio;
+
+
+    @ApiModelProperty(value = "间接工作室")
+    private Integer indirectStudio;
+
+    @ApiModelProperty(value = "间接工作室")
+    private Integer level;
+
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+
+    @ApiModelProperty(value = "管理员")
+    private String LeaderId;
+
+    @ApiModelProperty(value = "管理员名称")
+    private String leaderName;
+
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "部门id集合")
+    private List<String> deptIds;
+
+
+    @ApiModelProperty(value = "用户ids")
+    private List<String> userIds;
+
     //用户创建时间
     private String createTime;
 
     @ApiModelProperty(value = "提现中")
     private BigDecimal withdrawingAmount;
 
+    List<PartnerInfoVo> partnerInfoVoList;
+
     /***
      * 角色id
      */
@@ -79,4 +137,13 @@ public class SysPartnerConsoleDto implements Serializable {
      * 机构来源
      */
     private String managementSource;
+
+    @ApiModelProperty(value = "工作室下级团队个数")
+    private Integer deptNum;
+
+    /**
+     * 存入以及合伙人id
+     */
+    @ApiModelProperty(value = "存入以及合伙人id")
+    private String loginUserId;
 }

+ 34 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerInfoConsoleDto.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class SysPartnerInfoConsoleDto {
+
+
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal totalIncome;
+
+    @ApiModelProperty(value = "总佣金")
+    private BigDecimal commission;
+
+    @ApiModelProperty(value = "会员人数")
+    private Integer memberShip;
+
+    @ApiModelProperty(value = "推荐人")
+    private String suggestName;
+
+    @ApiModelProperty(value = "下级团队")
+    private Integer deptNum;
+
+
+    List<SysPartnerConsoleDto> partnerInfoVoList;
+
+
+    List<String> userIds;
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysQyWeChat.java

@@ -48,6 +48,13 @@ public class SysQyWeChat {
     @TableField( "wechat_picture_url")
     private String wechatPictureUrl;
 
+    /**
+     * 企业微信客服Url
+     */
+    @TableField("support_staff_url")
+    private String supportStaffUrl;
+
+
     @ApiModelProperty("企业微信客服id")
     @TableField("open_kf_id")
     private String openKfId;

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

@@ -67,5 +67,28 @@ public class DeptBalanceVo implements Serializable {
     private List<String> userIds;
 
 
+    @ApiModelProperty(value = "用户ids")
+    private Integer level;
+
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "合伙人:1;工作室:2")
+    private Integer type;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "工作室ids")
+    private List<String> leaderIds;
+
+
+    @ApiModelProperty(value = "存入以及合伙人id")
+    private String loginUserId;
+
 
 }

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

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerInfoConsoleDto;
+import com.ydtech.modules.admin.model.vo.AppSysPartnerVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
 import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
 
@@ -46,4 +48,29 @@ public interface DeptBalanceService {
      */
     IPage<SysPartnerConsoleDto> getWalletAgent(DeptBalanceVo deptBalanceVo);
 
+    /**
+     *
+     * @param deptBalanceVo
+     * @return   合伙人详情
+     */
+    List<SysPartnerConsoleDto> queryPartnerInfo(DeptBalanceVo deptBalanceVo);
+
+    /**
+     *
+     * @param deptBalanceVo
+     * @return  合伙人 工作室 详情
+     */
+    SysPartnerInfoConsoleDto queryInfo(DeptBalanceVo deptBalanceVo);
+    /**
+     * @version
+     * @author: whp
+     * @Description: 查看机构下团队信息
+     */
+    SysPartnerInfoConsoleDto getTeamInfo(DeptBalanceVo deptBalanceVo);
+    /**
+     * @version
+     * @author: whp
+     * @Description: 查看团队下人员信息
+     */
+    SysPartnerInfoConsoleDto getTeamUserInfo(DeptBalanceVo deptBalanceVo);
 }

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

@@ -72,4 +72,12 @@ public interface SysUserLinkAreaService extends IService<SysUserLinkArea> {
      *  @Description: 查询用户绑定区域的代理人信息
      */
     List<String> findUserIdsByLoginUserId(String  userId);
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/25 17:52
+     *  @Description: 查询所有的用户
+     */
+    BasePageResult<SysUserBaseVO> findAllUsers(SysUserDto sysUserDto);
 }

+ 753 - 48
src/main/java/com/ydtech/modules/admin/service/impl/DeptBalanceServiceImpl.java

@@ -1,25 +1,28 @@
 package com.ydtech.modules.admin.service.impl;
 
+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.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.*;
-import com.ydtech.modules.admin.model.SysAgencyFeeApproval;
-import com.ydtech.modules.admin.model.SysAgencyLeader;
-import com.ydtech.modules.admin.model.SysRelationPerson;
+import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
 import com.ydtech.modules.admin.model.dto.MySumAmountQueryDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerInfoConsoleDto;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
-import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
-import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.*;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
+import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
 import com.ydtech.utils.StringUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -27,10 +30,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -61,6 +61,24 @@ public class DeptBalanceServiceImpl implements DeptBalanceService {
 
     @Autowired
     private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
+
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+
+    @Resource
+    private SysDeptMapper sysDeptMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+
+
+    @Resource
+    private EsmUserReferrerMapper esmUserReferrerMapper;
     /**
      * @version
      * @author: whp
@@ -145,50 +163,83 @@ public class DeptBalanceServiceImpl implements DeptBalanceService {
 
             List<SysPartnerConsoleDto> sysPartners = sysPartnersPage.getRecords();
             for (SysPartnerConsoleDto item : sysPartners) {
-                BigDecimal allTotalIncome = BigDecimal.ZERO;  // 总保费
-                BigDecimal allDeptManagementFee = BigDecimal.ZERO;//机构管理费
-                BigDecimal allWithdrawn = BigDecimal.ZERO;//已体现
-                BigDecimal allNotWithdrawn = BigDecimal.ZERO;//未提现
-
-                List<SysAgencyLeader> deptLeader = sysRelationPersonMapper.selectListByLeaderId(item.getUserId(),1);
-//                  机构负责人
-                for (SysAgencyLeader itemLeader : deptLeader) {
-                    String deptId = itemLeader.getDeptId();
-                    if (StringUtils.isNotEmpty(deptId)) {
-                        String proportional = item.getProportional();
-                        Date updateTime = itemLeader.getUpdateTime();
-                        Date createTime = itemLeader.getCreateTime();
-                        String dateStr="";
-                        if(updateTime!=null){
-                            dateStr=  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
-                        }else{
-                            dateStr=  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
-                        }
-                        HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getByDeptId(deptId,dateStr,deptBalanceVo.getBeginDate(),deptBalanceVo.getEndDate());
+                String userId = item.getUserId();
+                item.setLoginUserId(userId);
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                        .eq(SysPartnerAccount::getUserId, item.getUserId()));
+                if(ObjectUtils.isNotEmpty(sysPartnerAccount)){
+                    if(sysPartnerAccount.getSumPremium() !=null ){
+                        item.setTotalIncome(sysPartnerAccount.getSumPremium());
+                    }
+                    if(sysPartnerAccount.getExtractFee()!=null){
+                        item.setCommission(sysPartnerAccount.getExtractFee());
+                    }
+                    if(sysPartnerAccount.getHistoryFee()!=null){
+                        item.setWithdrawn(sysPartnerAccount.getHistoryFee());
+                    }
+                    if(sysPartnerAccount.getCashFee() !=null){
+                        item.setNotWithdrawn(sysPartnerAccount.getCashFee());
+                    }
+                }
+                //下面合伙人(直接)数量
+                List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getSource, 0)
+                        .eq(SysRelationPerson::getType, 0));
 
-                        if (orderAmount != null && !orderAmount.isEmpty()) {
-                            BigDecimal totalIncome = orderAmount.get("totalIncome")==null ? BigDecimal.ZERO : orderAmount.get("totalIncome");
-                            allTotalIncome = totalIncome.multiply(new BigDecimal(proportional))
-                                    .divide(new BigDecimal("100")).setScale(2, RoundingMode.DOWN);
-                            allDeptManagementFee = this.calculateTotal(orderAmount.get("deptManagementFee"), allDeptManagementFee, null);
-                        }
-                        // 填充 已提现抽成费用和可提现抽成费用
-                        List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
-                                .eq(SysAgencyFeeApproval::getUserId, item.getUserId())
-                                .eq(SysAgencyFeeApproval::getStatus, 1));
-                        if (!sysAgencyFeeApprovals.isEmpty()) {
-                            for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
-                                allWithdrawn = allWithdrawn.add(sysAgencyFeeApproval.getHistoryFee());
+                item.setNumberPartners(sysRelationPersonList1.size());
+
+
+                //直接工作室数量
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getSource, 0)
+                        .eq(SysRelationPerson::getType, 1));
+                item.setDirectStudio(sysRelationPersonList.size());
+                List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                item.setLeaderIds(collect);
+                //登录人下面的所有团队人数
+                List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+
+
+                //间接工作室
+                List<SysRelationPerson> indirectStudioList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getSource, 1)
+                        .eq(SysRelationPerson::getType, 1));
+                item.setIndirectStudio(indirectStudioList.size());
+
+                if (sysRelationPersonList2.size() > 0) {
+                    List<String> ids = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(CollectionUtil.isNotEmpty(ids), SysAgencyLeader::getUserId, ids).eq(SysAgencyLeader::getDelFlag, 1));
+                    int deptManNum = 0;
+                    if (leaderList.size() > 0) {
+                        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                            //获取机构下的团队
+                            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                            if (sysDeptList.size() > 0) {
+                                for (SysDept sysDept : sysDeptList) {
+                                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
                             }
                         }
-                        //可提现 = 总抽成-已提现
-                        allNotWithdrawn = allTotalIncome.subtract(allWithdrawn);
+                        item.setMemberShip(deptManNum);
                     }
+
                 }
-                item.setTotalIncome(allDeptManagementFee);
-                item.setDeptManagementFee(allTotalIncome);
-                item.setWithdrawn(allWithdrawn);
-                item.setNotWithdrawn(allNotWithdrawn);
             }
             return HttpResult.ok(sysPartnersPage);
         } catch (Exception e) {
@@ -346,6 +397,660 @@ public class DeptBalanceServiceImpl implements DeptBalanceService {
 
         return sysUserListPage;
     }
+    @Override
+    public List<SysPartnerConsoleDto> queryPartnerInfo(DeptBalanceVo deptBalanceVo) {
+        List<SysPartnerConsoleDto> appSysPartnerVos = new ArrayList<>();
+        String userId = deptBalanceVo.getUserId();
+        if (StringUtils.isEmpty(userId)) {
+            userId = BaseController.getUserId();
+        }
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
+
+        //查询登陆人下所有直接合伙人
+        List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
+
+        Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
+                .collect(Collectors.groupingBy(SysPartner::getType));
+        //按等级查询
+        int start = 0;
+        int type = sysPartner.getType();
+        if (type == 1) {
+            start = start + 2;
+        } else if (type == 2) {
+            start = start + 3;
+        } else if (type == 3) {
+            start = start + 4;
+        } else if (type == 4) {
+            start = start + 5;
+        }
+
+        for (int i = start; i < 6; i++) {
+            //二级
+            List<SysPartner> sysPartnerList1 = listMap.get(i);
+            if (CollectionUtil.isNotEmpty(sysPartnerList1)) {
+                SysPartnerConsoleDto appSysPartnerVo = new SysPartnerConsoleDto();
+                appSysPartnerVo.setPatnerLevel(i);
+                //下级合伙人数
+                appSysPartnerVo.setNumberPartners(sysPartnerList1.size());
+                List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+
+                appSysPartnerVo.setPartnerIds(ids);
+
+                //所有创造利益总人数
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+                int deptManNum = 0;
+                if (sysRelationPersonList.size() > 0) {
+                    List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                    if (leaderList.size() > 0) {
+                        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                            //获取机构下的团队
+                            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                            if (sysDeptList.size() > 0) {
+                                for (SysDept sysDept : sysDeptList) {
+                                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                    deptManNum = deptManNum + sysUsers.size();
+                                }
+                            }
+                        }
+                    }
+
+                }
+                appSysPartnerVo.setMemberShip(deptManNum);
+                //直接工作室
+                List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getSource, 0)
+                        .eq(SysRelationPerson::getType, 1));
+                appSysPartnerVo.setDirectStudio(sysRelationPersons.size());
+
+                if (sysRelationPersons.size() > 0) {
+                    List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    appSysPartnerVo.setLeaderIds(list1);
+                }
+                //所有工作室
+                List<SysRelationPerson> sysRelationPersons1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+
+                //直接工作室下所有的人
+                List<String> userIds = getUserIds(sysRelationPersons1);
+
+                BigDecimal sumPremium = BigDecimal.ZERO;
+                BigDecimal extractFee = BigDecimal.ZERO;
+                if (CollectionUtil.isNotEmpty(userIds)) {
+                    for (String id : userIds) {
+                        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                                .eq(SysPremiumDetails::getUserId, userId)
+                                .eq(SysPremiumDetails::getIssuerId,id)
+                                .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                                        SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+//                                .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector())
+                                .eq(SysPremiumDetails::getStatus, 1));
+                        if (CollectionUtil.isNotEmpty(sysPremiumDetails)) {
+                            Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                                    .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                            for (String s : map.keySet()) {
+                                List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                                sumPremium = sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
+                            }
+                            BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                            extractFee = extractFee.add(reduce);
+                        }
+
+                    }
+                }
+                appSysPartnerVo.setTotalIncome(sumPremium);
+                appSysPartnerVo.setCommission(extractFee);
+                appSysPartnerVo.setUserId(deptBalanceVo.getUserId());
+                //每一级存入map
+                appSysPartnerVos.add(appSysPartnerVo);
+            }
+        }
+        return appSysPartnerVos;
+    }
+    @Override
+    public SysPartnerInfoConsoleDto queryInfo(DeptBalanceVo deptBalanceVo) {
+        SysPartnerInfoConsoleDto partnerInfoFreeVo = new SysPartnerInfoConsoleDto();
+        List<SysPartnerConsoleDto> partnerInfoVoList = new ArrayList<>();
+        String loginId = deptBalanceVo.getUserId();
+        //合伙人:1;工作室:2
+        Integer type = deptBalanceVo.getType();
+        if(type == 1){
+            List<String> partnerIds = deptBalanceVo.getPartnerIds();
+            if (CollectionUtil.isEmpty(partnerIds)) {
+                return partnerInfoFreeVo;
+            }
+
+            //工作室下所有的人
+            List<SysRelationPerson> sysRelationPersons1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .in(SysRelationPerson::getSuggestId, partnerIds)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getType, 1));
+
+            List<String> userIds = getUserIds(sysRelationPersons1);
+            BigDecimal sumPremium = BigDecimal.ZERO;
+            BigDecimal extractFee = BigDecimal.ZERO;
+
+            if (CollectionUtil.isNotEmpty(userIds)) {
+                for (String userId : userIds) {
+
+                    //费用
+                    List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                            .eq(SysPremiumDetails::getUserId, loginId)
+                            .eq(SysPremiumDetails::getIssuerId,userId)
+                            .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                                    SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                            .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector())
+                            .eq(SysPremiumDetails::getStatus, 1));
+                    if (CollectionUtil.isNotEmpty(sysPremiumDetails)) {
+                        Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                                .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                        for (String s : map.keySet()) {
+                            List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                            sumPremium = sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
+                        }
+
+//                        sumPremium = sumPremium.add(sysPremiumDetails.get(0).getSumpremium());
+                        BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        extractFee = extractFee.add(reduce);
+                    }
+
+                }
+            }
+            partnerInfoFreeVo.setTotalIncome(sumPremium);
+            partnerInfoFreeVo.setCommission(extractFee);
+            //合伙人
+            List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                    .in(SysPartner::getUserId, deptBalanceVo.getPartnerIds()).eq(SysPartner::getDelFlag, 1));
+
+            if (sysPartnerList.size() > 0) {
+                for (SysPartner sysPartner : sysPartnerList) {
+                    SysPartnerConsoleDto partnerInfoVo = new SysPartnerConsoleDto();
+                    partnerInfoVo.setLevel(sysPartner.getType());
+                    String userId = sysPartner.getUserId();
+                    partnerInfoVo.setUserId(userId);
+                    SysUser sysUser = sysUserMapper.selectById(userId);
+                    partnerInfoVo.setUserName(sysUser.getName());
+                    SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
+                    partnerInfoVo.setSuggestName(sysUser1.getName());
+                    //直接合伙人
+                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 0)
+                            .eq(SysRelationPerson::getSource, 0));
+                    List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    partnerInfoVo.setPartnerIds(collect);
+                    partnerInfoVo.setNumberPartners(collect.size());
+
+                    //直接管理员
+                    List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1)
+                            .eq(SysRelationPerson::getSource, 0));
+
+                    List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    partnerInfoVo.setLeaderIds(collects);
+                    partnerInfoVo.setDirectStudio(collects.size());
+                    //所有贡献费用
+                    //合伙人下所有工作室数 核算总代理人数
+                    List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1));
+
+                    List<String> userIds1 = getUserIds(sysRelationPersonList2);
+                    BigDecimal sumPremium1 = BigDecimal.ZERO;
+                    BigDecimal extractFee1 = BigDecimal.ZERO;
+                    if (CollectionUtil.isNotEmpty(userIds1)) {
+                        for (String id : userIds1) {
+                            //费用
+                            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                                    .eq(SysPremiumDetails::getUserId, loginId)
+                                    .eq(SysPremiumDetails::getIssuerId,id)
+                                    .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                                            SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                                    .eq(SysPremiumDetails::getStatus, 1)
+                                    .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+
+                            if (CollectionUtil.isNotEmpty(sysPremiumDetail)) {
+                                Map<String, List<SysPremiumDetails>> map = sysPremiumDetail.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                                        .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                                for (String s : map.keySet()) {
+                                    List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                                    sumPremium1 = sumPremium1.add(sysPremiumDetails1.get(0).getSumpremium());
+                                }
+
+//                                sumPremium1 = sumPremium1.add(sysPremiumDetail.get(0).getSumpremium());
+                                BigDecimal reduce = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                extractFee1 = extractFee1.add(reduce);
+                            }
+                        }
+
+                    }
+                    partnerInfoVo.setTotalIncome(sumPremium1);
+                    partnerInfoVo.setCommission(extractFee1);
+
+                    int deptManNum = 0;
+                    if (sysRelationPersonList2.size() > 0) {
+                        List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                                .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                        if (leaderList.size() > 0) {
+                            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                                //获取机构下的团队
+                                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                                if (sysDeptList.size() > 0) {
+                                    for (SysDept sysDept : sysDeptList) {
+                                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                        deptManNum = deptManNum + sysUsers.size();
+
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    partnerInfoVo.setMemberShip(deptManNum);
+
+                    partnerInfoVoList.add(partnerInfoVo);
+                }
+
+                partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
+            }
+        }else {
+            //工作室
+            List<String> leaderIds = deptBalanceVo.getLeaderIds();
+            if (CollectionUtil.isEmpty(leaderIds)) {
+                return partnerInfoFreeVo;
+            }
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
+
+
+            List<String> userIdByLeader = getUserIdByLeader(leaderList);
+            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                BigDecimal sumPremium1 = BigDecimal.ZERO;
+                BigDecimal extractFee1 = BigDecimal.ZERO;
+                SysPartnerConsoleDto partnerInfoVo = new SysPartnerConsoleDto();
+
+                String userId = sysAgencyLeader.getUserId();
+                partnerInfoVo.setUserId(userId);
+                partnerInfoVo.setLoginUserId(deptBalanceVo.getUserId());
+
+                SysUser sysUser = sysUserMapper.selectById(userId);
+                partnerInfoVo.setUserName(sysUser.getName());
+                SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
+                partnerInfoVo.setSuggestName(sysUser1.getName());
+                partnerInfoVo.setDeptId(sysAgencyLeader.getDeptId());
+                SysDept sysDept1 = sysDeptMapper.selectById(sysAgencyLeader.getDeptId());
+                partnerInfoVo.setDeptName(sysDept1.getName());
+                //团队总人数
+                int deptManNum = 0;
+                //获取机构下的团队
+                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                partnerInfoVo.setDeptNum(sysDeptList.size());
+                List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
+
+                partnerInfoVo.setDeptIds(collect);
+                partnerInfoVo.setDeptNum(sysDeptList.size());
+                if (sysDeptList.size() > 0) {
+                    for (SysDept sysDept : sysDeptList) {
+                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                        deptManNum = deptManNum + sysUsers.size();
+                        if (CollectionUtil.isNotEmpty(sysUsers)) {
+                            for (SysUser user : sysUsers) {
+                                //费用
+                                List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                                        .eq(SysPremiumDetails::getUserId, loginId)
+                                        .eq(SysPremiumDetails::getIssuerId, user.getId())
+                                        .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                                                SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                                        .eq(SysPremiumDetails::getStatus, 1)
+                                        .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+                                if (sysPremiumDetail.size() >0) {
+                                    Map<String, List<SysPremiumDetails>> map = sysPremiumDetail.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                                            .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                                    for (String s : map.keySet()) {
+                                        List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                                        sumPremium1= sumPremium1.add(sysPremiumDetails1.get(0).getSumpremium());
+                                    }
+//                                SysPremiumDetails sysPremiumDetails = sysPremiumDetail.get(0);
+//                                sumPremium1= sumPremium1.add(sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add));
+
+                                    extractFee1 = extractFee1.add(sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add));
+                                }
+                            }
+                        }
+                    }
+                }
+                partnerInfoVo.setTotalIncome(sumPremium1);
+                partnerInfoVo.setCommission(extractFee1);
+                partnerInfoVo.setMemberShip(deptManNum);
+                partnerInfoVo.setLevel(deptBalanceVo.getLevel());
+                partnerInfoVoList.add(partnerInfoVo);
+            }
+            //top总费用
+            BigDecimal sumPremium = BigDecimal.ZERO;
+            BigDecimal extractFee = BigDecimal.ZERO;
+            if (userIdByLeader.size()>0) {
+                for (String id : userIdByLeader) {
+                    //总费用
+                    List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                            .eq(SysPremiumDetails::getUserId, loginId)
+                            .eq(SysPremiumDetails::getIssuerId, id)
+                            .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                                    SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                            .eq(SysPremiumDetails::getStatus, 1)
+                            .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+
+                    if (sysPremiumDetails.size() >0) {
+                        Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                                .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                        for (String s : map.keySet()) {
+                            List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                            sumPremium= sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
+                        }
+
+                        extractFee = extractFee.add(sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add));
+                    }
+
+                }
+            }
+
+            partnerInfoFreeVo.setTotalIncome(sumPremium);
+            partnerInfoFreeVo.setCommission(extractFee);
+
+            int sum = partnerInfoVoList.stream().mapToInt(SysPartnerConsoleDto::getMemberShip).sum();
+            partnerInfoFreeVo.setUserIds(userIdByLeader);
+            partnerInfoFreeVo.setMemberShip(sum);
+            partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
+        }
+        int sum = partnerInfoVoList.stream().mapToInt(SysPartnerConsoleDto::getMemberShip).sum();
+        partnerInfoFreeVo.setMemberShip(sum);
+        partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
+
+        return partnerInfoFreeVo;
+    }
+
+
+    @Override
+    public SysPartnerInfoConsoleDto getTeamInfo(DeptBalanceVo deptBalanceVo) {
+        SysPartnerInfoConsoleDto appPartnerInfoFreeVo = new SysPartnerInfoConsoleDto();
+        String loginId = deptBalanceVo.getLoginUserId();
+        List<SysPartnerConsoleDto> appPartnerInfoList = new ArrayList<>();
+
+
+        List<String> deptIds = deptBalanceVo.getDeptIds();
+        if (CollectionUtil.isEmpty(deptIds)) {
+            return appPartnerInfoFreeVo;
+        }
+
+        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                .in(SysDept::getId, deptIds).eq(SysDept::getDelFlag, 0));
+        if (sysDeptList.size() == 0) {
+            return appPartnerInfoFreeVo;
+        }
+        SysUser byUserId = sysUserMapper.getByUserId(deptBalanceVo.getUserId());
+        appPartnerInfoFreeVo.setSuggestName(byUserId.getName());
+
+        for (SysDept sysDept : sysDeptList) {
+            SysPartnerConsoleDto appPartnerInfo = new SysPartnerConsoleDto();
+            appPartnerInfo.setDeptId(sysDept.getId());
+            appPartnerInfo.setDeptName(sysDept.getName());
+            String leaderId = sysDept.getLeaderId();
+            if (StringUtils.isNotEmpty(leaderId)) {
+                appPartnerInfo.setLeaderId(leaderId);
+                SysUser sysUser = sysUserMapper.selectById(leaderId);
+                appPartnerInfo.setLeaderName(sysUser.getName());
+            }
+
+            //获取机构下的团队
+            List<SysDept> sysDepTeam = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                    .likeRight(SysDept::getId, sysDept.getId())
+                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                    .eq(SysDept::getManagementSource, sysDept.getManagementSource()));
+            //机构下每个团队人数id集合
+            List<String> userIdList = new ArrayList<>();
+            int deptManNum = 0;
+            if (sysDepTeam.size() > 0) {
+                for (SysDept sysDept1 : sysDepTeam) {
+                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                            .likeRight(SysUser::getId, sysDept1.getId()).ne(SysUser::getStatus, 0));
+                    deptManNum = deptManNum + sysUsers.size();
+                    if (sysUsers.size() > 0) {
+                        List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                        userIdList.addAll(collect);
+                    }
+
+                }
+            }
+            appPartnerInfo.setMemberShip(deptManNum);
+            appPartnerInfo.setUserIds(userIdList);
+            BigDecimal sumPremium = BigDecimal.ZERO;
+            BigDecimal extractFee = BigDecimal.ZERO;
+            if (CollectionUtil.isEmpty(userIdList)) continue;
+            for (String userId : userIdList) {
+                //查团队的保费
+                List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .eq(SysPremiumDetails::getIssuerId, userId)
+                        .eq(SysPremiumDetails::getUserId, loginId)
+                        .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                                SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                        .eq(SysPremiumDetails::getStatus, 1)
+                        .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+                if (sysPremiumDetails.size() > 0) {
+                    Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                            .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                    for (String s : map.keySet()) {
+                        List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                        sumPremium = sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
+                    }
+
+                    BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    extractFee = extractFee.add(reduce);
+                }
+
+            }
+
+            appPartnerInfo.setTotalIncome(sumPremium);
+            appPartnerInfo.setCommission(extractFee);
+            appPartnerInfo.setLoginUserId(loginId);
+            appPartnerInfoList.add(appPartnerInfo);
+        }
+
+
+
+        List<String> ids = new ArrayList<>();
+        List<List<String>> collect = appPartnerInfoList.stream().map(SysPartnerConsoleDto::getUserIds).collect(Collectors.toList());
+        if (collect.size() > 0) {
+            for (List<String> list : collect) {
+                ids.addAll(list);
+            }
+        }
+        if (CollectionUtil.isEmpty(ids)) return appPartnerInfoFreeVo;
+        BigDecimal sumPremium1 = BigDecimal.ZERO;
+        BigDecimal extractFee1 = BigDecimal.ZERO;
+        for (String id : ids) {
+
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getIssuerId, id)
+                    .eq(SysPremiumDetails::getUserId, loginId)
+                    .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                            SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                    .eq(SysPremiumDetails::getStatus, 1)
+                    .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+            if (sysPremiumDetails.size() > 0) {
+                Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                        .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                for (String s : map.keySet()) {
+                    List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                    sumPremium1 = sumPremium1.add(sysPremiumDetails1.get(0).getSumpremium());
+                }
+//                SysPremiumDetails sysPremiumDetails1 = sysPremiumDetails.get(0);
+//                sumPremium1 = sumPremium1.add(sysPremiumDetails1.getSumpremium());
+
+                BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                extractFee1 = extractFee1.add(reduce);
+            }
+
+        }
+        appPartnerInfoFreeVo.setTotalIncome(sumPremium1);
+        appPartnerInfoFreeVo.setCommission(extractFee1);
+        int sum = appPartnerInfoList.stream().mapToInt(SysPartnerConsoleDto::getMemberShip).sum();
+        appPartnerInfoFreeVo.setMemberShip(sum);
+        appPartnerInfoFreeVo.setPartnerInfoVoList(appPartnerInfoList);
+        appPartnerInfoFreeVo.setDeptNum(appPartnerInfoList.size());
+        return appPartnerInfoFreeVo;
+    }
+
+    @Override
+    public SysPartnerInfoConsoleDto getTeamUserInfo(DeptBalanceVo deptBalanceVo) {
+        SysPartnerInfoConsoleDto teamUserInfosFreeVo = new SysPartnerInfoConsoleDto();
+        String loginId = deptBalanceVo.getLoginUserId();
+        List<SysPartnerConsoleDto> userInfosVoList = new ArrayList<>();
+        List<String> userIds = deptBalanceVo.getUserIds();
+        if (CollectionUtil.isEmpty(userIds)) {
+            return teamUserInfosFreeVo;
+        }
+
+        BigDecimal sumPremium = BigDecimal.ZERO;
+        BigDecimal extractFee = BigDecimal.ZERO;
+        for (String userId : userIds) {
+            //费用
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getUserId, loginId)
+                    .eq(SysPremiumDetails::getIssuerId, userId)
+                    .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                            SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                    .eq(SysPremiumDetails::getStatus, 1)
+                    .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+            if (sysPremiumDetails.size()>0) {
+                Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                        .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                for (String s : map.keySet()) {
+                    List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                    sumPremium = sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
+                }
+                BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                extractFee = extractFee.add(reduce);
+            }
+        }
+        teamUserInfosFreeVo.setTotalIncome(sumPremium);
+        teamUserInfosFreeVo.setCommission(extractFee);
+        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                .ne(SysUser::getStatus, 0).in(SysUser::getId, deptBalanceVo.getUserIds()));
+        for (SysUser sysUser : sysUsers) {
+            SysPartnerConsoleDto teamUserInfosVo = new SysPartnerConsoleDto();
+            teamUserInfosVo.setUserId(sysUser.getId());
+            teamUserInfosVo.setUserName(sysUser.getName());
+            EsmUserReferrer esmUserReferrer = esmUserReferrerMapper.selectById(sysUser.getId());
+            if (esmUserReferrer != null) {
+                teamUserInfosVo.setLeaderId(esmUserReferrer.getReferrerId());
+                SysUser sysUser1 = sysUserMapper.selectById(esmUserReferrer.getReferrerId());
+                teamUserInfosVo.setSuggestName(sysUser1.getName());
+            }
+            BigDecimal sumPremium1 =BigDecimal.ZERO;
+            BigDecimal extractFee1 =BigDecimal.ZERO;
+            //费用
+            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getIssuerId, sysUser.getId())
+                    .eq(SysPremiumDetails::getUserId, loginId)
+                    .between(StringUtils.isNotEmpty(deptBalanceVo.getBeginDate()) && StringUtils.isNotEmpty(deptBalanceVo.getEndDate()),
+                            SysPremiumDetails::getCreateTime, deptBalanceVo.getBeginDate(), deptBalanceVo.getEndDate())
+                    .eq(SysPremiumDetails::getStatus, 1)
+                    .eq(deptBalanceVo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, deptBalanceVo.getIndustrySector()));
+            if (sysPremiumDetail.size()>0) {
+                Map<String, List<SysPremiumDetails>> map = sysPremiumDetail.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                        .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                for (String s : map.keySet()) {
+                    List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                    sumPremium1 = sumPremium1.add(sysPremiumDetails1.get(0).getSumpremium());
+                }
+                extractFee1 =extractFee1.add(sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add)) ;
+            }
+
+            teamUserInfosVo.setTotalIncome(sumPremium1);
+            teamUserInfosVo.setCommission(extractFee1);
+            userInfosVoList.add(teamUserInfosVo);
+        }
+        teamUserInfosFreeVo.setMemberShip(userIds.size());
+        teamUserInfosFreeVo.setPartnerInfoVoList(userInfosVoList);
+        return teamUserInfosFreeVo;
+    }
+
+
+    private List<String> getUserIds(List<SysRelationPerson> sysRelationPersons) {
+        List<String> userIds = new ArrayList<>();
+        if (sysRelationPersons.size() > 0) {
+            List<String> idList = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+            if (leaderList.size() > 0) {
+                for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                    //获取机构下的团队
+                    List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                            .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                            .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                            .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                    if (sysDeptList.size() > 0) {
+                        for (SysDept sysDept : sysDeptList) {
+                            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                    .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                            if (sysUsers.size()>0) {
+                                userIds.addAll(sysUsers.stream().map(SysUser::getId).collect(Collectors.toList()));
+                            }
+                        }
+                    }
+                }
+            }
+
+        }
+        return userIds;
+    }
+
+    private List<String> getUserIdByLeader(List<SysAgencyLeader> leaderList) {
+        List<String> userIds = new ArrayList<>();
+        if (leaderList.size() > 0) {
+            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                //获取机构下的团队
+                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                if (sysDeptList.size() > 0) {
+                    for (SysDept sysDept : sysDeptList) {
+                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                        if (sysUsers.size()>0) {
+                            userIds.addAll(sysUsers.stream().map(SysUser::getId).collect(Collectors.toList()));
+                        }
+                    }
+                }
+            }
+        }
+        return userIds;
+    }
 }
 
 

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

@@ -16,6 +16,7 @@ import com.ydtech.modules.admin.dao.SysUserDeptRelationshipMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysArea;
 import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.po.SysUserDeptRelationship;
 import com.ydtech.modules.admin.model.report.financialReceivables.FinancialReceivablesMonthVo;
 import com.ydtech.modules.admin.model.vo.*;
@@ -828,6 +829,19 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
         if (users == null || users.isEmpty()) {
             return new ArrayList<>();
         }
+
+        List<SysUser> allList = new ArrayList<>();
+        for (SysUser user : users) {
+            this.addLeadUserList(user,allList);
+        }
+        List<SysUser> collect = allList.stream()
+                .collect(Collectors.collectingAndThen(
+                        Collectors.toMap(SysUser::getId, u -> u, (u1, u2) -> u1),  // 以id作为键来合并重复元素,保留第一个遇到的元素
+                        Map::values))
+                .stream()
+                .distinct()  // 进一步确保去重,主要针对可能存在的相同id但不同对象引用情况(较极端情况)
+                .collect(Collectors.toList());
+
         List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
         // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
         if("admin".equals(sysUser.getName())){
@@ -837,10 +851,31 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
             topUsers.add(sysUser);
         }
         // 递归构建用户树结构
-        buildUserTree(topUsers, users,managementSource);
+        buildUserTree(topUsers, collect,managementSource);
         return topUsers;
     }
 
+    private void addLeadUserList(SysUser user, List<SysUser> allList) {
+        addLeadUserList(user, allList, new HashSet<>());
+    }
+
+    private void addLeadUserList(SysUser user, List<SysUser> allList, Set<String> processedIds) {
+        if (user == null) {
+            return;
+        }
+        // 先判断当前用户ID是否已经处理过,如果处理过则直接返回,避免循环引用导致的无限递归
+        if (processedIds.contains(user.getId())) {
+            return;
+        }
+        allList.add(user);
+        processedIds.add(user.getId());
+        String leaderId = user.getLeaderId();
+        if (StringUtils.isNotEmpty(leaderId)) {
+            SysUser leaderUser = sysUserMapper.getByUserId(leaderId);
+            addLeadUserList(leaderUser, allList, processedIds);
+        }
+    }
+
     /**
      * 拼接机构来源
      * @param users

+ 115 - 196
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -439,7 +439,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                             historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
                         }
                     }
-                    agencyExtractFee.setHistoryFee(Optional.ofNullable(extractFee.subtract(historyFee)).orElse(BigDecimal.ZERO));
+                    agencyExtractFee.setHistoryFee(historyFee);
                     //可提现 = 总抽成-已提现
                     agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
 
@@ -1160,225 +1160,144 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         PartnerInfoFreeVo partnerInfoFreeVo = new PartnerInfoFreeVo();
         List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
         String loginId = BaseController.getUserId();
-        //合伙人:1;工作室:2
-        Integer type = partnerGradeInfo.getType();
-        if (type == 1) {
-            List<String> partnerIds = partnerGradeInfo.getPartnerIds();
-            if (CollectionUtil.isEmpty(partnerIds)) {
-                return partnerInfoFreeVo;
-            }
-            //合伙人的直接工作室贡献的费用
-            List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                    .in(SysRelationPerson::getSuggestId, partnerIds)
-                    .eq(SysRelationPerson::getDelFlag, 1)
-                    .eq(SysRelationPerson::getSource, 0)
-                    .eq(SysRelationPerson::getType, 1));
-            //工作室下所有的人
-            List<SysRelationPerson> sysRelationPersons1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                    .in(SysRelationPerson::getSuggestId, partnerIds)
-                    .eq(SysRelationPerson::getDelFlag, 1)
-                    .eq(SysRelationPerson::getType, 1));
-            List<String> userIds = getUserIds(sysRelationPersons1);
-            BigDecimal sumPremium = BigDecimal.ZERO;
-            BigDecimal extractFee = BigDecimal.ZERO;
-            if (CollectionUtil.isNotEmpty(userIds)) {
-                for (String userId : userIds) {
-
-                    //费用
-                    List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-                            .eq(SysPremiumDetails::getUserId, loginId)
-                            .eq(SysPremiumDetails::getIssuerId,userId)
-                            .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
-                                    SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
-                            .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())
-                            .eq(SysPremiumDetails::getStatus, 1));
-                    if (CollectionUtil.isNotEmpty(sysPremiumDetails)) {
-                        Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
-                                .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
-                        for (String s : map.keySet()) {
-                            List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
-                            sumPremium = sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
-                        }
-
-//                        sumPremium = sumPremium.add(sysPremiumDetails.get(0).getSumpremium());
-                        BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
-                        extractFee = extractFee.add(reduce);
+        List<String> partnerIds = partnerGradeInfo.getPartnerIds();
+        if (CollectionUtil.isEmpty(partnerIds)) {
+            return partnerInfoFreeVo;
+        }
+        //关联工作室下所有的人
+        List<SysRelationPerson> sysRelationPersons1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .in(SysRelationPerson::getSuggestId, partnerIds)
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 1));
+        List<String> userIds = getUserIds(sysRelationPersons1);
+        BigDecimal sumPremium = BigDecimal.ZERO;
+        BigDecimal extractFee = BigDecimal.ZERO;
+        if (CollectionUtil.isNotEmpty(userIds)) {
+            for (String userId : userIds) {
+                //费用
+                List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .eq(SysPremiumDetails::getUserId, loginId)
+                        .eq(SysPremiumDetails::getIssuerId,userId)
+                        .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                        .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())
+                        .eq(SysPremiumDetails::getStatus, 1));
+                if (CollectionUtil.isNotEmpty(sysPremiumDetails)) {
+                    Map<String, List<SysPremiumDetails>> map = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                            .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                    for (String s : map.keySet()) {
+                        List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                        sumPremium = sumPremium.add(sysPremiumDetails1.get(0).getSumpremium());
                     }
 
+//                        sumPremium = sumPremium.add(sysPremiumDetails.get(0).getSumpremium());
+                    BigDecimal reduce = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    extractFee = extractFee.add(reduce);
                 }
-            }
-            partnerInfoFreeVo.setSumPremium(sumPremium);
-            partnerInfoFreeVo.setExtractFee(extractFee);
-
-            //合伙人
-            List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
-                    .in(SysPartner::getUserId, partnerGradeInfo.getPartnerIds()).eq(SysPartner::getDelFlag, 1));
-            if (sysPartnerList.size() > 0) {
-                for (SysPartner sysPartner : sysPartnerList) {
-                    PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
-                    partnerInfoVo.setLevel(sysPartner.getType());
-                    String userId = sysPartner.getUserId();
-                    partnerInfoVo.setUserId(userId);
-                    SysUser sysUser = sysUserMapper.selectById(userId);
-                    partnerInfoVo.setUserName(sysUser.getName());
-                    SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
-                    partnerInfoVo.setSuggestName(sysUser1.getName());
-                    //直接合伙人
-                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                            .eq(SysRelationPerson::getSuggestId, userId)
-                            .eq(SysRelationPerson::getDelFlag, 1)
-                            .eq(SysRelationPerson::getType, 0)
-                            .eq(SysRelationPerson::getSource, 0));
-                    List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-                    partnerInfoVo.setPartnerIds(collect);
-                    partnerInfoVo.setPartnerNumber(collect.size());
-
-                    //直接管理员
-                    List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                            .eq(SysRelationPerson::getSuggestId, userId)
-                            .eq(SysRelationPerson::getDelFlag, 1)
-                            .eq(SysRelationPerson::getType, 1)
-                            .eq(SysRelationPerson::getSource, 0));
-
-                    List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-                    partnerInfoVo.setLeaderIds(collects);
-                    partnerInfoVo.setWorkNumber(collects.size());
-                    //所有贡献费用
-                    //合伙人下所有工作室数 核算总代理人数
-                    List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                            .eq(SysRelationPerson::getSuggestId, userId)
-                            .eq(SysRelationPerson::getDelFlag, 1)
-                            .eq(SysRelationPerson::getType, 1));
 
-                    List<String> userIds1 = getUserIds(sysRelationPersonList2);
-                    BigDecimal sumPremium1 = BigDecimal.ZERO;
-                    BigDecimal extractFee1 = BigDecimal.ZERO;
-                    if (CollectionUtil.isNotEmpty(userIds1)) {
-                        for (String id : userIds1) {
-                            //费用
-                            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-                                    .eq(SysPremiumDetails::getUserId, loginId)
-                                    .eq(SysPremiumDetails::getIssuerId,id)
-                                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
-                                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
-                                    .eq(SysPremiumDetails::getStatus, 1)
-                                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            }
+        }
+        partnerInfoFreeVo.setSumPremium(sumPremium);
+        partnerInfoFreeVo.setExtractFee(extractFee);
 
-                            if (CollectionUtil.isNotEmpty(sysPremiumDetail)) {
-                                Map<String, List<SysPremiumDetails>> map = sysPremiumDetail.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
-                                        .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
-                                for (String s : map.keySet()) {
-                                    List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
-                                    sumPremium1 = sumPremium1.add(sysPremiumDetails1.get(0).getSumpremium());
-                                }
+        //合伙人
+        List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                .in(SysPartner::getUserId, partnerGradeInfo.getPartnerIds()).eq(SysPartner::getDelFlag, 1));
+        if (sysPartnerList.size() > 0) {
+            for (SysPartner sysPartner : sysPartnerList) {
+                PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+                partnerInfoVo.setLevel(sysPartner.getType());
+                String userId = sysPartner.getUserId();
+                partnerInfoVo.setUserId(userId);
+                SysUser sysUser = sysUserMapper.selectById(userId);
+                partnerInfoVo.setUserName(sysUser.getName());
+                SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
+                partnerInfoVo.setSuggestName(sysUser1.getName());
+                //直接合伙人
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 0)
+                        .eq(SysRelationPerson::getSource, 0));
+                List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                partnerInfoVo.setPartnerIds(collect);
+                partnerInfoVo.setPartnerNumber(collect.size());
 
-//                                sumPremium1 = sumPremium1.add(sysPremiumDetail.get(0).getSumpremium());
-                                BigDecimal reduce = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
-                                extractFee1 = extractFee1.add(reduce);
-                            }
-                        }
+                //直接管理员
+                List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1)
+                        .eq(SysRelationPerson::getSource, 0));
 
-                    }
-                    partnerInfoVo.setSumPremium(sumPremium1);
-                    partnerInfoVo.setExtractFee(extractFee1);
+                List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                partnerInfoVo.setLeaderIds(collects);
+                partnerInfoVo.setWorkNumber(collects.size());
+                //所有贡献费用
+                //合伙人下所有工作室数 核算总代理人数
+                List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
 
-                    int deptManNum = 0;
-                    if (sysRelationPersonList2.size() > 0) {
-                        List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-                        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                                .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
-                        if (leaderList.size() > 0) {
-                            for (SysAgencyLeader sysAgencyLeader : leaderList) {
-                                //获取机构下的团队
-                                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-                                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
-                                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
-                                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
-                                if (sysDeptList.size() > 0) {
-                                    for (SysDept sysDept : sysDeptList) {
-                                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
-                                        deptManNum = deptManNum + sysUsers.size();
+                List<String> userIds1 = getUserIds(sysRelationPersonList2);
+                BigDecimal sumPremium1 = BigDecimal.ZERO;
+                BigDecimal extractFee1 = BigDecimal.ZERO;
+                if (CollectionUtil.isNotEmpty(userIds1)) {
+                    for (String id : userIds1) {
+                        //费用
+                        List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                                .eq(SysPremiumDetails::getUserId, loginId)
+                                .eq(SysPremiumDetails::getIssuerId,id)
+                                .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                                        SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                                .eq(SysPremiumDetails::getStatus, 1)
+                                .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
 
-                                    }
-                                }
+                        if (CollectionUtil.isNotEmpty(sysPremiumDetail)) {
+                            Map<String, List<SysPremiumDetails>> map = sysPremiumDetail.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
+                                    .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
+                            for (String s : map.keySet()) {
+                                List<SysPremiumDetails> sysPremiumDetails1 = map.get(s);
+                                sumPremium1 = sumPremium1.add(sysPremiumDetails1.get(0).getSumpremium());
                             }
+
+//                                sumPremium1 = sumPremium1.add(sysPremiumDetail.get(0).getSumpremium());
+                            BigDecimal reduce = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                            extractFee1 = extractFee1.add(reduce);
                         }
                     }
-                    partnerInfoVo.setTeamManNum(deptManNum);
-
-                    partnerInfoVoList.add(partnerInfoVo);
                 }
-
-                partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
-            }
-        } else {
-            //工作室
-            List<String> leaderIds = partnerGradeInfo.getLeaderIds();
-            if (CollectionUtil.isEmpty(leaderIds)) {
-                return partnerInfoFreeVo;
-            }
-            //费用
-            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-                    .in(SysPremiumDetails::getUserId, leaderIds)
-                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
-                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
-                    .eq(SysPremiumDetails::getStatus, 1)
-                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
-            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
-            BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
-            partnerInfoFreeVo.setSumPremium(sumPremium);
-            partnerInfoFreeVo.setExtractFee(extractFee);
-
-
-            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                    .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
-
-            for (SysAgencyLeader sysAgencyLeader : leaderList) {
-                PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
-
-                String userId = sysAgencyLeader.getUserId();
-                partnerInfoVo.setUserId(userId);
-                SysUser sysUser = sysUserMapper.selectById(userId);
-                partnerInfoVo.setUserName(sysUser.getName());
-                SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
-                partnerInfoVo.setSuggestName(sysUser1.getName());
-
-                //费用
-                List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-                        .eq(SysPremiumDetails::getUserId, userId)
-                        .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
-                                SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
-                        .eq(SysPremiumDetails::getStatus, 1)
-                        .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
-                BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
-                BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
                 partnerInfoVo.setSumPremium(sumPremium1);
                 partnerInfoVo.setExtractFee(extractFee1);
 
                 int deptManNum = 0;
-                //获取机构下的团队
-                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
-                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
-                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
-
-                partnerInfoVo.setDeptNum(sysDeptList.size());
-                List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
-                partnerInfoVo.setDeptIds(collect);
-                if (sysDeptList.size() > 0) {
-                    for (SysDept sysDept : sysDeptList) {
-                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                                .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
-                        deptManNum = deptManNum + sysUsers.size();
+                if (sysRelationPersonList2.size() > 0) {
+                    List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
+                    if (leaderList.size() > 0) {
+                        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                            //获取机构下的团队
+                            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                    .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                    .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                            if (sysDeptList.size() > 0) {
+                                for (SysDept sysDept : sysDeptList) {
+                                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                            .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                    deptManNum = deptManNum + sysUsers.size();
 
+                                }
+                            }
+                        }
                     }
                 }
                 partnerInfoVo.setTeamManNum(deptManNum);
 
                 partnerInfoVoList.add(partnerInfoVo);
             }
-
         }
         int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
         partnerInfoFreeVo.setTeamManNum(sum);

+ 14 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkAreaServiceImpl.java

@@ -171,4 +171,18 @@ public class SysUserLinkAreaServiceImpl extends ServiceImpl<SysUserLinkAreaMappe
         }
         return  null;
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/26 17:23
+     *  @Description:  查询用户分页
+     */
+    @Override
+    public BasePageResult<SysUserBaseVO> findAllUsers(SysUserDto sysUserDto) {
+        Page<SysUserBaseVO> page = new Page<>(sysUserDto.getPageNum(),
+                sysUserDto.getPageSize());
+        Page<SysUserBaseVO> userPageResult = sysUserMapper.findAllUsers(page, sysUserDto);
+        return  new BasePageResult<>(sysUserDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(),
+                userPageResult.getRecords());
+    }
 }

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

@@ -2882,7 +2882,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         sysUser.setMobile(phone);
         sysUser.setReferrerId(referrerId);
         sysUser.setDeptId(deptId);
-        sysUser.setStatus(2);
+        sysUser.setStatus(0);
+        sysUser.setFactorVerify(0);
         sysUser.setPassword("123456");
         sysUser.setRoleId("20");
         sysUser.setRoleName("代理人");

+ 4 - 1
src/main/java/com/ydtech/modules/admin/utils/SliceUpDateUtil.java

@@ -262,7 +262,10 @@ public class SliceUpDateUtil {
      */
     public static String getEndOfMonth(int year, int month) {
         Calendar calendar = Calendar.getInstance();
-        calendar.set(year, month - 1, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        calendar.set(year, month - 1, 1);
+        int lastDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+        calendar.set(Calendar.DAY_OF_MONTH, lastDayOfMonth);
+        // 设置时间为当天的最后一刻
         calendar.set(Calendar.HOUR_OF_DAY, 23);
         calendar.set(Calendar.MINUTE, 59);
         calendar.set(Calendar.SECOND, 59);

+ 4 - 4
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -10,7 +10,6 @@ import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
 import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
 import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
@@ -31,13 +30,11 @@ import com.ydtech.modules.order.service.InsOrdersTrackService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.List;
 
 @Api(tags = "财务-车险结算")
@@ -138,7 +135,10 @@ public class CarSettleController extends BaseController {
 
                 //审核通过
                 if (auditOrderFeeVo.getAuditStatus().equals("1")) {
-
+                    LocalDateTime signingTime = areaList.get(0).getSigningTime();
+                    if (signingTime==null) {
+                        throw new SystemException("签单日期为空不允许审核,请手动更新订单签单时间或者联系管理员!!!");
+                    }
                     insFeeAuditService.feeAudit(orderNo, areaList.get(0).getId(), false, FeeAuditAuditstatus.PASSED.getCode());
                 } else if (auditOrderFeeVo.getAuditStatus().equals("0") || auditOrderFeeVo.getAuditStatus().equals("2")) {
                     insFeeAuditService.saveDefaultInsFeeAuditAndHistory(orderNo, areaList.get(0).getId(),

+ 7 - 1
src/main/java/com/ydtech/modules/fnc/dao/InsPlyIncomeMapper.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.fnc.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.report.financialReceivables.*;
 import com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisDto;
 import com.ydtech.modules.admin.model.report.profitAnalysis.ProfitAnalysisQueryDto;
@@ -231,4 +230,11 @@ public interface InsPlyIncomeMapper extends BaseMapper<InsPlyIncome> {
     BigDecimal queryDateByNotTypeSumAmount(@Param("vo") FinancialReceivablesQueryVo financialReceivablesQueryVo);
 
     BigDecimal queryDateByTypeNotSumAmount(@Param("vo") FinancialReceivablesQueryVo financialReceivablesQueryVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:08
+     *  @Description:  查询签单日期为空的结算日期
+     */
+    List<InsPlyIncome> findListByDate(@Param("benginDate") String benginDate, @Param("endDate") String endDate);
 }

+ 7 - 1
src/main/java/com/ydtech/modules/fnc/service/InsPlyIncomeService.java

@@ -281,5 +281,11 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
      * 纠正数据
      */
     void correctData(InsPlyIncomeVo insPlyIncomeVo);
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:36
+     *  @Description:  查询签单日期为空的结算数据
+     */
+    List<InsPlyIncome> findListByDate(String benginDate, String endDate);
 }

+ 10 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -4198,4 +4198,14 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
             }
         }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:36
+     *  @Description: 查询签单日期为空的数据
+     */
+    @Override
+    public List<InsPlyIncome> findListByDate(String benginDate, String endDate) {
+        return baseMapper.findListByDate(benginDate,endDate);
+    }
 }

+ 17 - 7
src/main/java/com/ydtech/modules/order/controller/InsOrderReadPdfController.java

@@ -2,10 +2,6 @@ package com.ydtech.modules.order.controller;
 
 
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.admin.model.dto.SysUserDto;
-import com.ydtech.modules.admin.model.dto.SysUserLinkAreaDto;
-import com.ydtech.modules.admin.model.vo.*;
-import com.ydtech.modules.admin.service.SysUserLinkAreaService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.InsOrders;
@@ -17,14 +13,11 @@ import com.ydtech.modules.order.entity.vo.OrderQueryVo;
 import com.ydtech.modules.order.service.InsOrderReadPdfService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
 
 /**
  *  @version
@@ -136,6 +129,23 @@ public class InsOrderReadPdfController extends BaseController {
     }
 
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:40
+     *  @Description: 手动更新结算表的签单时间
+     */
+    @GetMapping("updatePlySignDate")
+    @ApiOperation("手动更新结算表的签单时间")
+    public HttpResult<Object> updatePlySignDate(String id) {
 
+        try{
+            insOrderReadPdfService.updatePlySignDate(id);
+            return HttpResult.ok("操作成功");
+        }catch (Exception e){
+            return HttpResult.error("操作失败"+e.getMessage());
+        }
+
+    }
 
 }

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

@@ -14,7 +14,6 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -658,7 +657,7 @@ public class InsAreaCompany implements Serializable {
     }
 
     public void setPaymentLink(String paymentLink) {
-        this.signingTime = LocalDateTime.now();
+      //  this.signingTime = LocalDateTime.now();
         this.paymentLink = paymentLink;
     }
 }

+ 1 - 0
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java

@@ -751,6 +751,7 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
             this.CarCheckStatus = "2";
             this.Inputnewenergyflag = carInfoVo.isNewEnergy() ? "1" : "0";
             this.FuelType = carInfoVo.getEnergyType();
+            this.SeatCount = carInfoVo.getSeatCount();
         }
     }
 

+ 72 - 0
src/main/java/com/ydtech/modules/order/orderThread/OrderFailRunnableThread.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.order.orderThread;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.constants.RabbitMqEnum;
+import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
+import com.ydtech.modules.order.entity.vo.PushDataVo;
+import com.ydtech.modules.order.service.InsOrderPushMsgService;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.UUID;
+
+import static org.springframework.amqp.core.MessageProperties.CONTENT_TYPE_TEXT_PLAIN;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/11/5 15:50
+ *  @Description:  处理失败订单的的线程池
+ */
+public class OrderFailRunnableThread implements Runnable {
+
+    private RabbitTemplate rabbitTemplate;
+
+    private ArrayList<String> message =new ArrayList<>();
+
+    private InsOrderPushMsgService insOrderPushMsgService;
+
+    public OrderFailRunnableThread(RabbitTemplate rabbitTemplate, ArrayList<String> message, InsOrderPushMsgService insOrderPushMsgService) {
+        this.rabbitTemplate = rabbitTemplate;
+        this.message = message;
+        this.insOrderPushMsgService = insOrderPushMsgService;
+    }
+
+    public OrderFailRunnableThread() {
+    }
+
+    public OrderFailRunnableThread(InsOrderPushMsgService insOrderPushMsgService, ArrayList<String> message) {
+        this.message = message;
+        this.insOrderPushMsgService = insOrderPushMsgService;
+    }
+
+    @Override
+    public void run() {
+        //发送数据
+        this.message.forEach(item ->{
+            //修改执行相应业务逻辑
+            MessageProperties messageProperties = new MessageProperties();
+            messageProperties.setMessageId(UUID.randomUUID().toString());
+            messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+            messageProperties.setContentEncoding("UTF-8");
+            Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
+            PushDataVo pushDataVo = JSON.parseObject(item, PushDataVo.class);
+            //推送
+            InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
+            try{
+                //更新狀態
+                insOrderPushMsgService.save(insOrderPushMsg);
+                this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY_FAIL.getCode(), message_cj);
+            }catch(Exception e){
+                e.getStackTrace();
+            }
+
+        });
+
+    }
+}
+

+ 20 - 12
src/main/java/com/ydtech/modules/order/orderThread/OrderRunnableThread.java

@@ -1,12 +1,20 @@
 package com.ydtech.modules.order.orderThread;
 
 import com.alibaba.fastjson.JSON;
+import com.ydtech.constants.RabbitMqEnum;
 import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
 import com.ydtech.modules.order.entity.vo.PushDataVo;
 import com.ydtech.modules.order.service.InsOrderPushMsgService;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
 
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.UUID;
+
+import static org.springframework.amqp.core.MessageProperties.CONTENT_TYPE_TEXT_PLAIN;
 
 /**
  *  @version
@@ -16,17 +24,17 @@ import java.util.Date;
  */
 public class OrderRunnableThread implements Runnable {
 
-    //private RabbitTemplate rabbitTemplate;
+    private RabbitTemplate rabbitTemplate;
 
     private ArrayList<String> message =new ArrayList<>();
 
     private InsOrderPushMsgService insOrderPushMsgService;
 
-   // public OrderRunnableThread(RabbitTemplate rabbitTemplate, ArrayList<String> message, InsOrderPushMsgService insOrderPushMsgService) {
-   //     this.rabbitTemplate = rabbitTemplate;
-   //     this.message = message;
-   //     this.insOrderPushMsgService = insOrderPushMsgService;
-    //}
+    public OrderRunnableThread(RabbitTemplate rabbitTemplate, ArrayList<String> message, InsOrderPushMsgService insOrderPushMsgService) {
+        this.rabbitTemplate = rabbitTemplate;
+        this.message = message;
+        this.insOrderPushMsgService = insOrderPushMsgService;
+    }
 
     public OrderRunnableThread() {
     }
@@ -41,18 +49,18 @@ public class OrderRunnableThread implements Runnable {
         //发送数据
         this.message.forEach(item ->{
             //修改执行相应业务逻辑
-           // MessageProperties messageProperties = new MessageProperties();
-           // messageProperties.setMessageId(UUID.randomUUID().toString());
-           // messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
-           // messageProperties.setContentEncoding("UTF-8");
-           // Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
+            MessageProperties messageProperties = new MessageProperties();
+            messageProperties.setMessageId(UUID.randomUUID().toString());
+            messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+            messageProperties.setContentEncoding("UTF-8");
+            Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
             PushDataVo pushDataVo = JSON.parseObject(item, PushDataVo.class);
             //推送
             InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
             try{
                 //更新狀態
                 insOrderPushMsgService.save(insOrderPushMsg);
-                //this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY.getCode(), message_cj);
+                this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY.getCode(), message_cj);
             }catch(Exception e){
                 e.getStackTrace();
             }

+ 72 - 0
src/main/java/com/ydtech/modules/order/orderThread/OrderSignRunnableThread.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.order.orderThread;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.constants.RabbitMqEnum;
+import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
+import com.ydtech.modules.order.entity.vo.PushDataVo;
+import com.ydtech.modules.order.service.InsOrderPushMsgService;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.UUID;
+
+import static org.springframework.amqp.core.MessageProperties.CONTENT_TYPE_TEXT_PLAIN;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/11/5 15:50
+ *  @Description:  处理失败订单的的线程池
+ */
+public class OrderSignRunnableThread implements Runnable {
+
+    private RabbitTemplate rabbitTemplate;
+
+    private ArrayList<String> message =new ArrayList<>();
+
+    private InsOrderPushMsgService insOrderPushMsgService;
+
+    public OrderSignRunnableThread(RabbitTemplate rabbitTemplate, ArrayList<String> message, InsOrderPushMsgService insOrderPushMsgService) {
+        this.rabbitTemplate = rabbitTemplate;
+        this.message = message;
+        this.insOrderPushMsgService = insOrderPushMsgService;
+    }
+
+    public OrderSignRunnableThread() {
+    }
+
+    public OrderSignRunnableThread(InsOrderPushMsgService insOrderPushMsgService, ArrayList<String> message) {
+        this.message = message;
+        this.insOrderPushMsgService = insOrderPushMsgService;
+    }
+
+    @Override
+    public void run() {
+        //发送数据
+        this.message.forEach(item ->{
+            //修改执行相应业务逻辑
+            MessageProperties messageProperties = new MessageProperties();
+            messageProperties.setMessageId(UUID.randomUUID().toString());
+            messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+            messageProperties.setContentEncoding("UTF-8");
+            Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
+            PushDataVo pushDataVo = JSON.parseObject(item, PushDataVo.class);
+            //推送
+            InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
+            try{
+                //更新狀態
+                insOrderPushMsgService.save(insOrderPushMsg);
+                this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY_SIGN.getCode(), message_cj);
+            }catch(Exception e){
+                e.getStackTrace();
+            }
+
+        });
+
+    }
+}
+

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/InsOrderPayDateRecordService.java

@@ -34,4 +34,11 @@ public interface InsOrderPayDateRecordService extends IService<InsOrderPayDateRe
      *  @Description: 定时更新订单的时间
      */
      void batchOrderDate(String beginDate,String endDate);
+     /**
+      *  @version
+      *  @author: hxl
+      *  @Date: 2024/12/30 10:02
+      *  @Description: 自动更新应收单表中的签单日期
+      */
+    void batchOrderPlyOrderDate(String benginDate, String endDate);
 }

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

@@ -15,7 +15,7 @@ public interface InsOrderPushMsgService extends IService<InsOrderPushMsg> {
     *  @Date: 2024/11/11 8:38
     *  @Description: 查询历史订单
     */
-   void getPushInsAreaCompanyList();
+   void getPushInsAreaCompanyList(String month);
 
 
    /**

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/InsOrderReadPdfService.java

@@ -35,4 +35,11 @@ public interface InsOrderReadPdfService extends IService<InsOrderReadPdf> {
      *  @Description:  通過保險公司和pdf路徑读取配置信息
      */
     InsOrderReadPdfContentDto readPdfContent(InsOrderReadPdfContentVo insOrderReadPdfContentVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:41
+     *  @Description: 手动更新结算表的签单时间
+     */
+    void updatePlySignDate(String id);
 }

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

@@ -142,7 +142,7 @@ public class IdentifyServiceImpl implements IdentifyService {
     private CardUserInfo  convertUseNatureCode(CardUserInfo cardUserInfo) {
         String useNature = cardUserInfo.getUseNature();
         if(useNature!=null && !"".equals(useNature)){
-            if("营运".equals(useNature)){
+            if("营运".equals(useNature) || "货运".equals(useNature)){
                 useNature="营业";
             }else if("非营运".equals(useNature)){
                 useNature="非营业";

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

@@ -104,6 +104,9 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     @Autowired
     private InsFeeAuditHistoryService insFeeAuditHistoryService;
 
+    @Autowired
+    private InsOrderPushMsgService  insOrderPushMsgService;
+
     public InsAreaCompanyServiceImpl(@Lazy InsOrdersService insOrdersService, InsOrdersTrackService insOrdersTrackService, SysDeptService sysDeptService) {
         this.insOrdersService = insOrdersService;
         this.insOrdersTrackService = insOrdersTrackService;
@@ -128,6 +131,10 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     @Transactional
     public void updateCompanyAndOrders(InsAreaCompany insAreaCompany) {
         baseMapper.updateById(insAreaCompany);
+        // add by hxl  2024-11-11  添加推送数据
+        if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())){
+            insOrderPushMsgService.getPushSignInsAreaCompanyList(insAreaCompany.getId());
+        }
         //生成结算
         //判断协议是否为人工还是自动审核
         PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
@@ -777,6 +784,10 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
             //审核表数据插入
             insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode(), null);
         }
+        // add by  hxl  2024-12-27   添加外部订单承保数据推送
+        if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())){
+            insOrderPushMsgService.getPushSignInsAreaCompanyList(insAreaCompany.getId());
+        }
         return true;
     }
 
@@ -993,6 +1004,10 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
             //重新进入审核状态
             insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode(), null);
         }
+        // add by  hxl  2024-12-27   添加外部订单承保数据推送
+        if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())){
+            insOrderPushMsgService.getPushSignInsAreaCompanyList(insAreaCompany.getId());
+        }
         return true;
     }
 

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

@@ -409,6 +409,13 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
                 kind.setAmount(kindInfoVo.getAmount());
             }
 
+            if (InsurKind.SY_WBDWGZ.getCode().equals(kindInfoVo.getKindCode())){
+                KindInfoVo aKind = kindList.stream().filter(x -> x.getKindCode().equals(InsurKind.A.getCode())).findFirst().orElse(null);
+                if(aKind != null) {
+                    kind.setAmount(map.get("A_amount"));
+                }
+            }
+
             if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {
                 kind.setDeductibleRate(Double.parseDouble(kindInfoVo.getDeductibleRate()));
             }

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

@@ -3,7 +3,8 @@ package com.ydtech.modules.order.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.entity.InsPlyIncome;
+import com.ydtech.modules.fnc.service.InsPlyIncomeService;
 import com.ydtech.modules.order.dao.InsOrderPayDateRecordMapper;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.api.pingan.utils.PDFUtil;
@@ -12,6 +13,7 @@ import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.order.entity.po.InsOrderPayDateRecord;
 import com.ydtech.modules.order.entity.po.InsOrderReadPdf;
 import com.ydtech.modules.order.service.*;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -19,6 +21,7 @@ import org.springframework.stereotype.Service;
 
 import java.io.File;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -29,6 +32,7 @@ import java.util.stream.Collectors;
  * @description 针对表【ins_order_pay_date_record(自动更新签单时间记录表)】的数据库操作Service实现
  * @createDate 2024-10-15 18:58:00
  */
+@Slf4j
 @Service
 public class InsOrderPayDateRecordServiceImpl extends ServiceImpl<InsOrderPayDateRecordMapper, InsOrderPayDateRecord>
         implements InsOrderPayDateRecordService {
@@ -54,6 +58,9 @@ public class InsOrderPayDateRecordServiceImpl extends ServiceImpl<InsOrderPayDat
     @Autowired
     private InsOrdersTrackService insOrdersTrackService;
 
+
+    @Autowired
+    private InsPlyIncomeService insPlyIncomeService;
     /**
      *  @version
      *  @author: hxl
@@ -97,6 +104,8 @@ public class InsOrderPayDateRecordServiceImpl extends ServiceImpl<InsOrderPayDat
             String localUrl ="";
             if(StringUtils.isNotBlank(jqFileurl)){
                 localUrl = PDFUtil.trafferHttpToLocalPath(jqFileurl);
+            }else{
+                throw new SystemException("保单为空不能更新!!");
             }
             //通过保险公司配置读取截取的前缀和后缀
             LambdaQueryWrapper<InsOrderReadPdf> qws = new LambdaQueryWrapper<>();
@@ -122,7 +131,7 @@ public class InsOrderPayDateRecordServiceImpl extends ServiceImpl<InsOrderPayDat
                 file.delete();
             }
             //插入數據
-            InsOrderPayDateRecord  dto=new InsOrderPayDateRecord(null, subOrderId, new Date(), new BaseController().getUserId(), subOrder.getPayDate(), subOrder.getSigningTime(), map.get("payDate"), map.get("signingTime"), oldMap.toString(), map.toString());
+            InsOrderPayDateRecord  dto=new InsOrderPayDateRecord(null, subOrderId, new Date(), "admin", subOrder.getPayDate(), subOrder.getSigningTime(), map.get("payDate"), map.get("signingTime"), oldMap.toString(), map.toString());
             this.save(dto);
             if(map.get("payDate")!=null){
                 subOrder.setPayDate(map.get("payDate"));
@@ -135,6 +144,21 @@ public class InsOrderPayDateRecordServiceImpl extends ServiceImpl<InsOrderPayDat
             }
             //更新时间表
              insAreaCompanyService.updateById(subOrder);
+             log.info("更新的订单表为"+subOrder.toString()+new Date().toString());
+            //判斷又沒有結算表如果有更新  add  by hxl  2024-12-30
+            if(subOrder.getSigningTime()!=null){
+                LambdaQueryWrapper<InsPlyIncome> lqw = new LambdaQueryWrapper<>();
+                lqw.eq(InsPlyIncome::getOrderno, subOrder.getId());
+                List<InsPlyIncome> insPlyIncome = insPlyIncomeService.list(lqw);
+
+                if(insPlyIncome!=null && insPlyIncome.size()>0){
+                    for (InsPlyIncome plyIncome : insPlyIncome) {
+                        plyIncome.setSignDate(subOrder.getSigningTime());
+                        insPlyIncomeService.updateById(plyIncome);
+                        log.info("更新的结算表为"+plyIncome.toString()+new Date().toString());
+                    }
+                }
+            }
 
         }else{
            throw   new SystemException("生成保单失败");
@@ -173,6 +197,41 @@ public class InsOrderPayDateRecordServiceImpl extends ServiceImpl<InsOrderPayDat
            }
        }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:03
+     *  @Description: 自动更新签单表的日期
+     */
+    @Override
+    public void batchOrderPlyOrderDate(String benginDate, String endDate) {
+        //查询签单日期为空的数据
+        List<InsPlyIncome> list = insPlyIncomeService.findListByDate(benginDate,endDate);
+        List<InsPlyIncome>  newList =new ArrayList<>();
+        if(list!=null && list.size()>0){
+            for(InsPlyIncome  insPlyIncome : list){
+                //更新子订单的签单时间
+                if(insPlyIncome.getSignDate()==null){
+                    try{
+                       updateOrderDate(insPlyIncome.getOrderno());
+                    }catch(Exception e){
+
+                    }
+                }
+                //更新時間
+                InsPlyIncome  ply = insPlyIncomeService.getById(insPlyIncome.getId());
+                if(ply!=null){
+                    InsAreaCompany iac = insAreaCompanyService.getById(insPlyIncome.getOrderno());
+                    if(iac.getSigningTime()!=null){
+                        ply.setSignDate(iac.getSigningTime());
+                        newList.add(ply);
+                    }
+                }
+            }
+            insPlyIncomeService.saveOrUpdateBatch(newList);
+            log.info("更新的结算表为"+newList.toString()+new Date().toString());
+        }
+    }
 }
 
 

+ 92 - 30
src/main/java/com/ydtech/modules/order/service/impl/InsOrderPushMsgServiceImpl.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.constants.RabbitMqEnum;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.order.dao.InsOrderPushMsgMapper;
@@ -17,11 +18,19 @@ import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.utils.OrderUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.UUID;
+
+import static org.springframework.amqp.core.MessageProperties.CONTENT_TYPE_TEXT_PLAIN;
 
 /**
  * @author Administrator
@@ -46,8 +55,11 @@ public class InsOrderPushMsgServiceImpl extends ServiceImpl<InsOrderPushMsgMappe
     @Autowired
     private InsTaskImagesMapper insTaskImagesMapper;
 
-    //@Autowired
-    //private RabbitTemplate rabbitTemplate;
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+
+    @Autowired
+    private InsOrderPushMsgService insOrderPushMsgService;
 
 
     /**
@@ -57,25 +69,29 @@ public class InsOrderPushMsgServiceImpl extends ServiceImpl<InsOrderPushMsgMappe
      *  @Description: 推送历史的订单信息
      */
     @Override
-    public void getPushInsAreaCompanyList() {
-        List<String> dateList = insOrderPushMsgMapper.getPushInsAreaCompanyDateList();
-       // List<String> dateList  =new ArrayList<String>();
-       // dateList.add("2024-10");
-        if(dateList!=null && !dateList.isEmpty()){
-            //启动线程池
-            dateList.forEach(item ->{
-                String benginTime = SliceUpDateUtil.getStartOfMonth(Integer.parseInt(item.split("-")[0]), Integer.parseInt(item.split("-")[1]));
-                String endTime = SliceUpDateUtil.getEndOfMonth(Integer.parseInt(item.split("-")[0]), Integer.parseInt(item.split("-")[1]));
-                List<String> orderList = insOrderPushMsgMapper.getPushInsAreaCompanyList(benginTime,endTime);
-                ArrayList<String>  pushDataList =new ArrayList<String>();
-                if(orderList!=null && !orderList.isEmpty()){
-                    orderList.forEach(orderId ->{
-                        pushDataList.add(getPushDataJsonString(orderId));
-                    });
-                }
-                if(pushDataList!=null && !pushDataList.isEmpty()){
-                   // Thread thread = new Thread(new OrderRunnableThread(rabbitTemplate, pushDataList,this));
-                    //thread.start();
+    public void getPushInsAreaCompanyList(String month) {
+        String benginTime = SliceUpDateUtil.getStartOfMonth(Integer.parseInt(month.split("-")[0]), Integer.parseInt(month.split("-")[1]));
+        String endTime = SliceUpDateUtil.getEndOfMonth(Integer.parseInt(month.split("-")[0]), Integer.parseInt(month.split("-")[1]));
+        List<String> orderList = insOrderPushMsgMapper.getPushInsAreaCompanyList(benginTime,endTime);
+        ArrayList<String>  pushDataList =new ArrayList<String>();
+        if(orderList!=null && !orderList.isEmpty()){
+            orderList.forEach(orderId ->{
+                PushDataVo pushDataVo = getPushData(orderId);
+                String items = JSONObject.toJSONString(pushDataVo);
+                MessageProperties messageProperties = new MessageProperties();
+                messageProperties.setMessageId(UUID.randomUUID().toString());
+                messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+                messageProperties.setContentEncoding("UTF-8");
+                Message message_cj = new Message(items.getBytes(StandardCharsets.UTF_8), messageProperties);
+                //推送
+                InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
+                try{
+                    //更新狀態
+                    insOrderPushMsgService.save(insOrderPushMsg);
+                    this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY.getCode(), message_cj);
+                    Thread.sleep(1500);
+                }catch(Exception e){
+                    e.getStackTrace();
                 }
             });
         }
@@ -94,13 +110,25 @@ public class InsOrderPushMsgServiceImpl extends ServiceImpl<InsOrderPushMsgMappe
         if(orderList!=null && !orderList.isEmpty()){
             //通过
             orderList.forEach(orderId ->{
-                pushDataList.add(getPushDataJsonString(orderId));
+                PushDataVo pushDataVo = getPushData(orderId);
+                String item = JSONObject.toJSONString(pushDataVo);
+                MessageProperties messageProperties = new MessageProperties();
+                messageProperties.setMessageId(UUID.randomUUID().toString());
+                messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+                messageProperties.setContentEncoding("UTF-8");
+                Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
+                //推送
+                //InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
+                try{
+                    //更新狀態
+                    //insOrderPushMsgService.save(insOrderPushMsg);
+                    this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE_FAIL.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY_FAIL.getCode(), message_cj);
+                    Thread.sleep(1500);
+                }catch(Exception e){
+                    e.getStackTrace();
+                }
             });
         }
-        if(pushDataList!=null && !pushDataList.isEmpty()){
-            //Thread thread = new Thread(new OrderRunnableThread(rabbitTemplate, pushDataList,this));
-            //thread.start();
-        }
      }
     /**
      *  @version
@@ -109,12 +137,29 @@ public class InsOrderPushMsgServiceImpl extends ServiceImpl<InsOrderPushMsgMappe
      *  @Description:  承保数据推送
      */
     @Override
-    public void getPushSignInsAreaCompanyList(String item) {
+    public void getPushSignInsAreaCompanyList(String orderId) {
         try{
-            ArrayList<String>  pushDataList =new ArrayList<String>();
-            pushDataList.add(getPushDataJsonString(item));
-            //Thread thread = new Thread(new OrderRunnableThread(rabbitTemplate, pushDataList,this));
+            //ArrayList<String>  pushDataList =new ArrayList<String>();
+            //pushDataList.add(getPushDataJsonString(item));
+            //Thread thread = new Thread(new OrderSignRunnableThread(rabbitTemplate, pushDataList,this));
             //thread.start();
+            PushDataVo pushDataVo = getPushData(orderId);
+            String item = JSONObject.toJSONString(pushDataVo);
+            MessageProperties messageProperties = new MessageProperties();
+            messageProperties.setMessageId(UUID.randomUUID().toString());
+            messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+            messageProperties.setContentEncoding("UTF-8");
+            Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
+            //推送
+            InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
+            try{
+                //更新狀態
+                insOrderPushMsgService.save(insOrderPushMsg);
+                this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE_FAIL.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY_SIGN.getCode(), message_cj);
+
+            }catch(Exception e){
+                e.getStackTrace();
+            }
         }catch(Exception e){
             log.error(e.getMessage());
         }
@@ -156,4 +201,21 @@ public class InsOrderPushMsgServiceImpl extends ServiceImpl<InsOrderPushMsgMappe
         insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
     }
 
+
+    public PushDataVo getPushData(String orderId) {
+        //小订单的数据
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(orderId);
+        //大订单数据
+        InsOrders orders = insOrdersService.getById(insAreaCompany.getOrderno());
+        String jyPolicyNo="";
+        String apiType = insAreaCompany.getApiType() == null ? null : insAreaCompany.getApiType() + "";
+        if (insAreaCompany.getCrossInsurance() != null) {
+            jyPolicyNo = OrderUtils.getJyPolicyNo(insAreaCompany.getCompanyId(), apiType, insAreaCompany.getCrossInsurance().toString(), String.valueOf(orders.getIsExternal()));
+        }
+        insAreaCompany.setJyPolicyNo(jyPolicyNo);
+        //影像数据
+        List<InsTaskImagesDto> taskImagesList = insTaskImagesMapper.getTaskImagesList(insAreaCompany.getOrderno());
+        PushDataVo pushDataVo  =new PushDataVo(insAreaCompany,orders,taskImagesList);
+        return pushDataVo;
+    }
 }

+ 45 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrderReadPdfServiceImpl.java

@@ -3,16 +3,22 @@ package com.ydtech.modules.order.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.model.dto.SysUserLinkAreaDto;
+import com.ydtech.modules.fnc.entity.InsPlyIncome;
+import com.ydtech.modules.fnc.service.InsPlyIncomeService;
 import com.ydtech.modules.order.dao.InsOrderReadPdfMapper;
 import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.api.pingan.utils.PDFUtil;
 import com.ydtech.modules.order.entity.dto.InsOrderReadPdfContentDto;
 import com.ydtech.modules.order.entity.po.InsOrderReadPdf;
 import com.ydtech.modules.order.entity.vo.InsOrderReadPdfContentVo;
 import com.ydtech.modules.order.entity.vo.InsOrderReadPdfVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrderPayDateRecordService;
 import com.ydtech.modules.order.service.InsOrderReadPdfService;
 import com.ydtech.utils.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -35,6 +41,15 @@ public class InsOrderReadPdfServiceImpl extends ServiceImpl<InsOrderReadPdfMappe
     @Autowired
     private InsOrderReadPdfMapper  insOrderReadPdfMapper;
 
+    @Autowired
+    private InsAreaCompanyService insAreaCompanyService;
+
+    @Autowired
+    private InsPlyIncomeService insPlyIncomeService;
+
+    @Autowired
+    private InsOrderPayDateRecordService insOrderPayDateRecordService;
+
     @Override
     public BasePageResult<InsOrderReadPdf> queryPage(InsOrderReadPdfVo insOrderReadPdfVo) {
         Page<InsOrderReadPdf> page = new Page<>(insOrderReadPdfVo.getPageNum(),
@@ -89,4 +104,34 @@ public class InsOrderReadPdfServiceImpl extends ServiceImpl<InsOrderReadPdfMappe
         }
         return new InsOrderReadPdfContentDto(pdfText,content);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 10:42
+     *  @Description:  手动更新结算表的签单时间
+     */
+    @Override
+    public void updatePlySignDate(String id) {
+        InsPlyIncome  ply = insPlyIncomeService.getById(id);
+        if(ply!=null){
+           if(ply.getOrderno() ==null){
+               new SystemException("子订单编号为空不允许更新");
+           }else{
+               InsAreaCompany iac = insAreaCompanyService.getById(ply.getOrderno());
+               //更新子订单的签单时间
+               if(iac.getSigningTime()==null){
+                   try{
+                       insOrderPayDateRecordService.updateOrderDate(ply.getOrderno());
+                   }catch(Exception e){
+                       new SystemException("更新保单签单时期失败");
+                   }
+               }
+               InsAreaCompany newIac = insAreaCompanyService.getById(ply.getOrderno());
+               if(newIac.getSigningTime()!=null){
+                   ply.setSignDate(iac.getSigningTime());
+                   insPlyIncomeService.saveOrUpdate(ply);
+               }
+           }
+        }
+    }
 }

+ 3 - 0
src/main/java/com/ydtech/modules/order/service/impl/SysQuoteConfigServiceImpl.java

@@ -326,6 +326,9 @@ public class SysQuoteConfigServiceImpl extends ServiceImpl<SysQuoteConfigMapper,
         if(quoteDetailsQueryVo.getDeptId() == null) {
             quoteDetailsQueryVo.setDeptId(BaseController.getDeptId());
         }
+        if(quoteDetailsQueryVo.getOperator() == null){
+            quoteDetailsQueryVo.setOperator(BaseController.getUserId());
+        }
         Page<QuoteDetailsVo> quoteRecordPage = sysQuoteRecordMapper.getQuoteRecordPage(page, quoteDetailsQueryVo);
         quoteRecordPage.getRecords().forEach(item -> {
             item.setAction(QuoteNumberConstant.QuoteAction.getByCode(item.getAction()));

+ 42 - 0
src/main/java/com/ydtech/modules/order/timer/UpdateOrderMQTimer.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.order.timer;
+
+import com.ydtech.modules.order.service.InsOrderPushMsgService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/11/22 16:29
+ *  @Description: 推动补偿信息
+ */
+@Slf4j
+@Component
+public class UpdateOrderMQTimer {
+
+    @Autowired
+    private InsOrderPushMsgService insOrderPushMsgService;
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/22 16:31
+     *  @Description: 每2小时更新一次补偿消息的推送
+     */
+    @Scheduled(cron = "0 0 */2 * * ?")
+    private void updateOrderDateNoon() {
+        log.info("每2小时更新一次补偿消息的推送,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+        try {
+            insOrderPushMsgService.getPushCompensateInsAreaCompanyList();
+            log.info("每2小时更新一次补偿消息的推送,成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("每2小时更新一次补偿消息的推送,失败:{}", e.getMessage());
+        }
+    }
+}

+ 82 - 13
src/main/java/com/ydtech/modules/order/timer/UpdateOrderTimer.java

@@ -1,10 +1,12 @@
 package com.ydtech.modules.order.timer;
 
+import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.order.service.InsOrderPayDateRecordService;
 import com.ydtech.utils.DateUtil;
-import com.ydtech.utils.DateUtil_N;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -20,11 +22,26 @@ import java.util.Date;
  */
 @Slf4j
 @Component
+@EnableAsync
 public class UpdateOrderTimer {
 
     @Autowired
     private InsOrderPayDateRecordService insOrderPayDateRecordService;
 
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/27 17:26
+     *  @Description:  每10分钟执行下更新订单时间
+     */
+    @Async
+    @Scheduled(cron = "0 0/30 * * * ?")
+    public void updateOrderDateMinite() {
+        String benginDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 00:00:00";
+        String endDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 23:59:59";
+        updateOrderDate(benginDate,endDate);
+    }
     /**
      *  @version
      *  @author: hxl
@@ -33,12 +50,28 @@ public class UpdateOrderTimer {
      * 中午一点
      * 凌晨一点
      */
+    @Async
     @Scheduled(cron = "0 0 13 * * ?")
-    private void updateOrderDateNoon() {
+    public void updateOrderDateNoon() {
+        //更新前一周的数据
+        String benginDate = SliceUpDateUtil.getBeforeDay(new Date(), 1) + " 00:00:00";
+        String endDate = SliceUpDateUtil.getBeforeDay(new Date(), 0) + " 23:59:59";
+        updateOrderDate(benginDate,endDate);
+    }
+
+    @Async
+    @Scheduled(cron = "0 0 1 * * ?")
+    public void updateOrderDateBeforeDawn() {
+        String benginDate = SliceUpDateUtil.getBeforeDay(new Date(), 1) + " 00:00:00";
+        String endDate = SliceUpDateUtil.getBeforeDay(new Date(), 0) + " 23:59:59";
+        updateOrderDate(benginDate,endDate);
+    }
+
+    private void updateOrderDate(String benginDate,String endDate) {
         log.info("定时更新订单的签单时间和缴费日期,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
-        //凌晨1点到中午1点
-        String benginDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 01:00:00";
-        String endDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss");
+        //中午1点到凌晨1点
+       // String benginDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 00:00:00";
+       // String endDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 23:59:59";
         try {
             insOrderPayDateRecordService.batchOrderDate(benginDate,endDate);
             log.info("定时更新订单的签单时间和缴费日期成功");
@@ -49,18 +82,54 @@ public class UpdateOrderTimer {
     }
 
 
+     /**
+      *  @version
+      *  @author: hxl
+      *  @Date: 2024/12/30 9:59
+      *  @Description:  自动更新结算表中签单日期为空的数据
+      */
+    @Async
+    @Scheduled(cron = "0 0/30 * * * ?")
+    public void updateOrderPlyDateMinite() {
+        String benginDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 00:00:00";
+        String endDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd")+" 23:59:59";
+        updatePlyDate(benginDate,endDate);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 9:59
+     *  @Description:  晚上一点执行上周数据
+     */
+    @Async
     @Scheduled(cron = "0 0 1 * * ?")
-    private void updateOrderDateBeforeDawn() {
-        log.info("定时更新订单的签单时间和缴费日期,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
-        //中午1点到凌晨1点
-        String benginDate = DateUtil.getDateFormat(DateUtil_N.getPreviousDate(new Date()), "yyyy-MM-dd")+" 13:00:01";
-        String endDate = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss");
+    public void updateOrderPlyDateBeforeDawn() {
+        String benginDate = SliceUpDateUtil.getBeforeDay(new Date(), 1) + " 00:00:00";
+        String endDate = SliceUpDateUtil.getBeforeDay(new Date(), 0) + " 23:59:59";
+        updatePlyDate(benginDate,endDate);
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/12/30 9:59
+     *  @Description:  中午一点更新上周数据
+     */
+    @Async
+    @Scheduled(cron = "0 0 13 * * ?")
+    public void updateOrderPlyDateNoon() {
+        String benginDate = SliceUpDateUtil.getBeforeDay(new Date(), 1) + " 00:00:00";
+        String endDate = SliceUpDateUtil.getBeforeDay(new Date(), 0) + " 23:59:59";
+        updatePlyDate(benginDate,endDate);
+    }
+
+    private void updatePlyDate(String benginDate,String endDate) {
         try {
-            insOrderPayDateRecordService.batchOrderDate(benginDate,endDate);
-            log.info("定时更新订单的签单时间和缴费日期成功");
+            insOrderPayDateRecordService.batchOrderPlyOrderDate(benginDate,endDate);
+            log.info("定时更新结算表的签单时间和缴费日期成功"+new Date().toString());
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("定时更新订单的签单时间和缴费日期失败:{}", e.getMessage());
+            log.error("定时更新结算表的签单时间和缴费日期失败:{}", e.getMessage());
         }
     }
 }

+ 4 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -1159,6 +1159,10 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreement.setId(null);
         ptlAgreement.setAuditStatus(0);
         ptlAgreement.setValidStatus(String.valueOf(ValidStatus.AVS_0.getCode()));
+        ptlAgreement.setCreateTime(LocalDateTime.now());
+        ptlAgreement.setUpdateTime(LocalDateTime.now());
+        ptlAgreement.setCreator(BaseController.getUserId());
+        ptlAgreement.setModifiedName(BaseController.getUserId());
         save(ptlAgreement);
 
         // 复制账号信息

+ 2 - 1
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -842,11 +842,12 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         String userId = BaseController.getUser().getId();
         PtlAgreementProductCostsNewHistory ptlAgreementProductCostsNewHistory = new PtlAgreementProductCostsNewHistory(ptlAgreementProductCostsNew, ptlAgreementProductCostsExport, OperatorType.UPDATE, uuid, userId);
         BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsNewHistory);
+        ptlAgreementProductCostsNewHistory.setId(uuid);
         ptlAgreementProductCostsNewHistoryService.save(ptlAgreementProductCostsNewHistory);
 
         // 获取上次提交的信息
         List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLinkList = ptlAgreementProductCostsAttrLinkService.getByCostsId(ptlAgreementProductCostsNew.getId());
-        List<String> costsAttrLinkId = ptlAgreementProductCostsAttrLinkList.stream().map(PtlAgreementProductCostsAttrLink::getCostsId).collect(Collectors.toList());
+        List<String> costsAttrLinkId = ptlAgreementProductCostsAttrLinkList.stream().map(PtlAgreementProductCostsAttrLink::getId).collect(Collectors.toList());
 
         //设置费用因子属性
         //先删除属性值

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

@@ -207,7 +207,31 @@ spring:
     suffix: .html
     encoding: UTF-8
     cache: false
-
+  # RabbitMQ 配置
+  rabbitmq:
+    host: 172.24.144.220
+    port: 5672
+    username: admin
+    password: admin
+    # 开启消息发送到队列(Queue)失败的回调
+    publisher-returns: true
+    # 开启发送至交换机(Exchange)的确认
+    publisher-confirm-type: CORRELATED
+    listener:
+      simple:
+        # 表示消费者消费成功消息以后需要手工的进行签收(ack确认),默认为 auto
+        acknowledge-mode: manual
+        concurrency: 5
+        max-concurrency: 10
+        prefetch: 1
+        retry:
+          initial-interval: 5000ms
+          enabled: true
+          max-attempts: 5
+        default-requeue-rejected: true
+      template:
+        # 为 true 时,消息通过交换器无法匹配到队列时会返回给生产者
+        mandatory: true
 upload:
   basepath: ${filePath}
   file:
@@ -222,7 +246,8 @@ wechat:
   # 微信客服
   customer:
     corp-id: wwfe67d19509d43ec5
-    secret: lbn1DU7VhqK3dG0XDciPDXf_AdSryne84nvRhtSEGLc
+#    secret: lbn1DU7VhqK3dG0XDciPDXf_AdSryne84nvRhtSEGLc
+    secret: 5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc
     token: btgwGK2r
     encoding-aes-key: eevs11QeInJYRysGYnC8gK68F4CGsedM1Dn1X79cPCs
   open:

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

@@ -199,7 +199,31 @@ spring:
     suffix: .html
     encoding: UTF-8
     cache: false
-
+  # RabbitMQ 配置
+  rabbitmq:
+    host: 172.24.144.220
+    port: 5672
+    username: admin
+    password: admin
+    # 开启消息发送到队列(Queue)失败的回调
+    publisher-returns: true
+    # 开启发送至交换机(Exchange)的确认
+    publisher-confirm-type: CORRELATED
+    listener:
+      simple:
+        # 表示消费者消费成功消息以后需要手工的进行签收(ack确认),默认为 auto
+        acknowledge-mode: manual
+        concurrency: 5
+        max-concurrency: 10
+        prefetch: 1
+        retry:
+          initial-interval: 5000ms
+          enabled: true
+          max-attempts: 5
+        default-requeue-rejected: true
+      template:
+        # 为 true 时,消息通过交换器无法匹配到队列时会返回给生产者
+        mandatory: true
 upload:
   basepath: ${filePath}
   file:
@@ -214,7 +238,8 @@ wechat:
   # 微信客服
   customer:
     corp-id: wwfe67d19509d43ec5
-    secret: lbn1DU7VhqK3dG0XDciPDXf_AdSryne84nvRhtSEGLc
+#    secret: lbn1DU7VhqK3dG0XDciPDXf_AdSryne84nvRhtSEGLc
+    secret: 5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc
     token: btgwGK2r
     encoding-aes-key: eevs11QeInJYRysGYnC8gK68F4CGsedM1Dn1X79cPCs
   open:

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

@@ -217,7 +217,31 @@ spring:
     suffix: .html
     encoding: UTF-8
     cache: false
-
+  # RabbitMQ 配置
+  rabbitmq:
+    host: 172.24.144.218
+    port: 5672
+    username: admin
+    password: admin
+    # 开启消息发送到队列(Queue)失败的回调
+    publisher-returns: true
+    # 开启发送至交换机(Exchange)的确认
+    publisher-confirm-type: CORRELATED
+    listener:
+      simple:
+        # 表示消费者消费成功消息以后需要手工的进行签收(ack确认),默认为 auto
+        acknowledge-mode: manual
+        concurrency: 5
+        max-concurrency: 10
+        prefetch: 1
+        retry:
+          initial-interval: 5000ms
+          enabled: true
+          max-attempts: 5
+        default-requeue-rejected: true
+      template:
+        # 为 true 时,消息通过交换器无法匹配到队列时会返回给生产者
+        mandatory: true
 upload:
   # 路径带上前后斜杆
   basepath: ${filePath}
@@ -232,7 +256,8 @@ wechat:
   # 微信客服
   customer:
     corp-id: wwfe67d19509d43ec5
-    secret: lbn1DU7VhqK3dG0XDciPDXf_AdSryne84nvRhtSEGLc
+#    secret: lbn1DU7VhqK3dG0XDciPDXf_AdSryne84nvRhtSEGLc
+    secret: 5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc
     token: btgwGK2r
     encoding-aes-key: eevs11QeInJYRysGYnC8gK68F4CGsedM1Dn1X79cPCs
   open:

+ 5 - 3
src/main/resources/mapper/modules/admin/SysPartnerMapper.xml

@@ -16,7 +16,7 @@
         select
         sp.id as "id",
         sp.user_id as "userId",
-        sp.user_name as "userName",
+        su.name as "userName",
         sp.type as "type",
         sp.proportional as "proportional",
         sp.suggest_id as "suggestId",
@@ -24,15 +24,17 @@
         sp.create_time as "createTime",
         sp.create_by as "createBy",
         sp.del_flag as "delFlag",
-        sp.del_flag as "delFlag",
         sd.name as "deptName",
-        sd.comlevel as "comlevel"
+        sd.comlevel as "comlevel",
+        su.mobile as "mobile",
+        sp.type as  "patnerLevel"
         from sys_partner sp
         left join  sys_user su on  su.id =  sp.user_id
         left join  sys_dept sd on  sd.id =  su.dept_id
         <where>
             1=1
             and sp.del_flag ='1'
+            and  sp.type ='1'
             <if test="vo.deptId !=null and  vo.deptId!=''  ">
                 and sd.id  LIKE concat('%', #{vo.deptId}, '%')
             </if>

+ 34 - 4
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -60,9 +60,6 @@
             <if test="sysUser.roleId != null &amp;&amp; sysUser.roleId != ''">
                 and sur.role_id = #{sysUser.roleId}
             </if>
-            <if test="sysUser.deptId != null &amp;&amp; sysUser.deptId != ''">
-                and su.dept_id = #{sysUser.deptId}
-            </if>
 
             <if test="sysUser.status != null">
                 and su.status = #{sysUser.status}
@@ -106,7 +103,6 @@
         select
         <include refid="Sys_User_Column_List"/>
         <include refid="Sys_User_Where_Clause"></include>
-
          <if test="sysUser.deptName != null &amp;&amp; sysUser.deptName != ''">
             <include refid="Sys_User_Where_Clause_deptName"></include>
         </if>
@@ -1492,6 +1488,7 @@
 
     <select id="getQxFrontlineAgentList" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
         SELECT
+        su.leader_id  as "leaderId",
         sd.name as "deptName",
         su.name as "name",
         sd.id as "deptId",
@@ -1602,6 +1599,7 @@
         select t.id                 id,
                t.name               name,
                t.mobile             mobile,
+               t.leader_id          leaderId,
                t2.management_source managementSource,
                t.operatorCode,
                t2.id                deptId
@@ -2102,4 +2100,36 @@
             su.id = #{item}
         </foreach>
     </select>
+
+    <select id="findAllUsers" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
+        SELECT
+        t1.id AS userId,
+        t1.NAME AS NAME,
+        t1.mobile AS mobile,
+        t1.`status` AS `status`,
+        t2.id AS deptId,
+        t2.`name` AS deptName,
+        sd2.id AS pDeptId,
+        sd2.`name` AS pDeptName
+        FROM
+        sys_user t1
+        LEFT JOIN sys_dept t2 ON t1.dept_id = t2.id
+        LEFT JOIN sys_dept sd2 ON sd2.id = t2.parent_id
+        WHERE
+        t1.`status` = 1
+        <if test='user !=null  '>
+            <if test='user.name !=null and user.name!="" '>
+                and t1.name like CONCAT('%', #{user.name}, '%')
+            </if>
+            <if test='user.userId !=null and user.userId!="" '>
+                and t1.id = #{user.userId}
+            </if>
+            <if test='user.mobile !=null and user.mobile!=""  '>
+                and t1.mobile = #{user.mobile}
+            </if>
+            <if test='user.deptId !=null and user.deptId!=""  '>
+                and t2.id like CONCAT('', #{user.deptId}, '%')
+            </if>
+        </if>
+    </select>
 </mapper>

+ 15 - 0
src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml

@@ -3572,4 +3572,19 @@
 
 
     </select>
+    <select id="findListByDate" resultType="com.ydtech.modules.fnc.entity.InsPlyIncome">
+        SELECT
+        iac.id  as orderno,
+        ipi.id  as id,
+        iac.signing_time  as signDate
+        FROM
+        ins_area_company iac
+        LEFT JOIN ins_ply_income ipi ON iac.id = ipi.orderno
+        WHERE
+        iac.orderstatus =3
+        AND ipi.signdate IS NULL
+        AND iac.createtime <![CDATA[ >= ]]> #{benginDate}
+        AND iac.createtime <![CDATA[ <= ]]> #{endDate}
+        and ipi.id IS NOT NULL
+    </select>
 </mapper>

+ 1 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -3609,6 +3609,7 @@
         FROM ins_area_company as iac
         <where>
             iac.orderstatus = 3
+            and  iac.signing_time  IS NULL
             <if test="benginDate  != null  and  benginDate!=''  and endDate  != null  and  endDate!=''">
                 AND iac.createtime BETWEEN #{benginDate} AND #{endDate}
             </if>

+ 9 - 12
src/main/resources/mapper/modules/order/InsOrderPushMsgMapper.xml

@@ -22,34 +22,31 @@
     </update>
     <select id="getPushInsAreaCompanyList" resultType="String">
         SELECT
-        id
+        iac.id
         FROM
         ins_area_company iac
+        LEFT JOIN ins_order_push_msg iopm ON iac.id = iopm.sub_order_no
         WHERE
         iac.orderstatus = 3
         AND iac.createtime  <![CDATA[ >= ]]>  #{benginTime}
         AND iac.createtime  <![CDATA[ <= ]]>  #{endTime}
-        AND iac.id NOT IN (
-        SELECT
-        sub_order_no
-        FROM
-        ins_order_push_msg)
+        AND iopm.sub_order_no IS NULL
+        order by iac.createtime
     </select>
 
     <select id="getPushInsAreaCompanyDateList" resultType="String">
         SELECT
-            DATE_FORMAT( createtime, '%Y-%m' )
+            DATE_FORMAT( iac.createtime, '%Y-%m' ) AS formatted_date
         FROM
             ins_area_company iac
+                LEFT JOIN ins_order_push_msg iopm ON iac.id = iopm.sub_order_no
         WHERE
             iac.orderstatus = 3
-          AND iac.id NOT IN ( SELECT sub_order_no FROM ins_order_push_msg )
+          AND iopm.sub_order_no IS NULL
         GROUP BY
-            DATE_FORMAT( createtime, '%Y-%m' )
+            DATE_FORMAT( iac.createtime, '%Y-%m' )
         ORDER BY
-            DATE_FORMAT(
-                    createtime,
-                    '%Y-%m')
+            DATE_FORMAT( iac.createtime, '%Y-%m' )
     </select>
     <select id="getPushCompensateInsAreaCompanyList" resultType="java.lang.String">
         SELECT sub_order_no FROM ins_order_push_msg  where status=2

+ 10 - 9
src/main/resources/mapper/modules/order/SysQuoteRecordMapper.xml

@@ -54,17 +54,18 @@
             <if test="param.result!= null and param.result!= ''">
                 AND sqr.result = #{param.result}
             </if>
-            <if test="param.agent != null and param.agent != ''">
-                AND (sqr.user_id = #{param.agent} or su.name = #{param.agent})
-            </if>
-            <if test="param.operator != null and param.operator != ''">
-                AND sqr.operator = #{param.operator}
-            </if>
+
+
             <if test="param.deptId!= null and param.deptId!= ''">
-                AND sd.id like '${param.deptId}%'
+                <if test="param.operator != null and param.operator != ''">
+                    AND (sd.id like '${param.deptId}%' or sqr.operator = #{param.operator} or su.name = #{param.operator})
+                </if>
+                <if test="param.operator == null or param.operator == ''">
+                    AND sd.id like '${param.deptId}%'
+                </if>
             </if>
-            <if test="param.action != null and param.action!= ''">
-                AND sqr.action = #{param.action}
+            <if test="param.agent != null and param.agent!= ''">
+                AND sqr.user_id = #{param.agent}
             </if>
         ORDER BY sqr.create_time DESC
     </select>