ソースを参照

dbsourceid 关联查询逻辑修改

baiying 1 週間 前
コミット
15180f1ed1
51 ファイル変更1043 行追加413 行削除
  1. 95 0
      canal-console/pom.xml
  2. 24 0
      canal-console/src/main/java/com/retdata/CanalConsoleApplication.java
  3. 18 0
      canal-console/src/main/java/com/retdata/CanalConsoleServletInitializer.java
  4. 2 1
      canal-console/src/main/java/com/retdata/canal/CanalConfig.java
  5. 69 59
      canal-console/src/main/java/com/retdata/canal/CannalClient.java
  6. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/AbstractCanalDbHandler.java
  7. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/ContractedProductChangeHandler.java
  8. 2 6
      canal-console/src/main/java/com/retdata/canal/handler/SysDeptHandler.java
  9. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysDeptRelationHandler.java
  10. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/SysDeptSubHandler.java
  11. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysDictItemHandler.java
  12. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysFinancialGmvSettleDataHandler.java
  13. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysImplPlanHandler.java
  14. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysRoleHandler.java
  15. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysUserHandler.java
  16. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/SysUserRoleHandler.java
  17. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/SysUserSubHandler.java
  18. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/WmDaAgentHandler.java
  19. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/WmDaDrugEntDrugtableHandler.java
  20. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/WmDaDrugEntHandler.java
  21. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/WmScorePackageHandler.java
  22. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/WmScorePackageSettleNoteHandler.java
  23. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/WmScorePackageStatusHandler.java
  24. 2 4
      canal-console/src/main/java/com/retdata/canal/handler/WmTaskHandler.java
  25. 2 2
      canal-console/src/main/java/com/retdata/canal/handler/WmTaskTypeHandler.java
  26. 2 3
      canal-console/src/main/java/com/retdata/canal/handler/WmUserPlatQuizResHandler.java
  27. 1 0
      canal-console/src/main/resources/META-INF/spring-devtools.properties
  28. 67 0
      canal-console/src/main/resources/application-druid.yml
  29. 140 0
      canal-console/src/main/resources/application.yml
  30. 24 0
      canal-console/src/main/resources/banner.txt
  31. 38 0
      canal-console/src/main/resources/i18n/messages.properties
  32. 1 0
      pom.xml
  33. 0 18
      ruoyi-admin/src/main/resources/application.yml
  34. 6 0
      ruoyi-common/pom.xml
  35. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceEnum.java
  36. 29 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/PackageIdDto.java
  37. 5 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/ScorePackageEntTaskScoreStat.java
  38. 2 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageChildrenCount.java
  39. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageExportDto.java
  40. 8 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageSearchDto.java
  41. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageSettleTreeNode.java
  42. 5 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageStatus.java
  43. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageStatusSummary.java
  44. 20 11
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageMapper.java
  45. 2 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageSettleNoteMapper.java
  46. 1 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysDictItemServiceImpl.java
  47. 326 178
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageServiceImpl.java
  48. 1 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/web/CsoSysRoleController.java
  49. 0 1
      yaoyi-bi/src/main/resources/mapper/CsoSysDeptMapper.xml
  50. 87 74
      yaoyi-bi/src/main/resources/mapper/WmScorePackageMapper.xml
  51. 7 6
      yaoyi-bi/src/main/resources/mapper/WmScorePackageSettleNodeMapper.xml

+ 95 - 0
canal-console/pom.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.ruoyi</groupId>
+        <artifactId>ruoyi</artifactId>
+        <version>3.8.7</version>
+    </parent>
+
+    <artifactId>canal-console</artifactId>
+
+    <dependencies>
+        <!-- spring-boot-devtools -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional> <!-- 表示依赖不会传递 -->
+        </dependency>
+
+        <!-- knife4j-->
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
+        </dependency>
+
+        <!-- Mysql驱动包 -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <!-- 核心模块-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-framework</artifactId>
+        </dependency>
+
+        <!-- 定时任务-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-quartz</artifactId>
+        </dependency>
+
+        <!-- 代码生成-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-generator</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>com.retdata</groupId>
+            <artifactId>yaoyi-bi</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.5.15</version>
+                <configuration>
+                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>3.1.0</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <warName>${project.artifactId}</warName>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>${project.artifactId}</finalName>
+    </build>
+
+</project>

+ 24 - 0
canal-console/src/main/java/com/retdata/CanalConsoleApplication.java

@@ -0,0 +1,24 @@
+package com.retdata;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@ComponentScan(basePackages = { "com.retdata", "com.ruoyi" })
+public class CanalConsoleApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(CanalConsoleApplication.class, args);
+        System.out.println("(♥◠‿◠)ノ゙  canal-console   ლ(´ڡ`ლ)゙  \n" +
+                " .-------.       ____     __        \n" +
+                " |  _ _   \\      \\   \\   /  /    \n" +
+                " | ( ' )  |       \\  _. /  '       \n" +
+                " |(_ o _) /        _( )_ .'         \n" +
+                " | (_,_).' __  ___(_ o _)'          \n" +
+                " |  |\\ \\  |  ||   |(_,_)'         \n" +
+                " |  | \\ `'   /|   `-'  /           \n" +
+                " |  |  \\    /  \\      /           \n" +
+                " ''-'   `'-'    `-..-'              ");
+    }
+}

+ 18 - 0
canal-console/src/main/java/com/retdata/CanalConsoleServletInitializer.java

@@ -0,0 +1,18 @@
+package com.retdata;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * web容器中进行部署
+ * 
+ * @author ruoyi
+ */
+public class CanalConsoleServletInitializer extends SpringBootServletInitializer
+{
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
+    {
+        return application.sources(CanalConsoleApplication.class);
+    }
+}

+ 2 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/CanalConfig.java → canal-console/src/main/java/com/retdata/canal/CanalConfig.java

@@ -1,6 +1,7 @@
-package com.retdata.yaoyibi.canal;
+package com.retdata.canal;
 
 import cn.hutool.core.util.StrUtil;
+import com.ruoyi.common.enums.DataSourceEnum;
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;

+ 69 - 59
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/CannalClient.java → canal-console/src/main/java/com/retdata/canal/CannalClient.java

@@ -1,20 +1,15 @@
-package com.retdata.yaoyibi.canal;
+package com.retdata.canal;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.otter.canal.client.CanalConnector;
 import com.alibaba.otter.canal.client.CanalConnectors;
 import com.alibaba.otter.canal.client.impl.ClusterCanalConnector;
 import com.alibaba.otter.canal.client.impl.SimpleCanalConnector;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.alibaba.otter.canal.protocol.Message;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.handler.AbstractCanalDbHandler;
-import com.retdata.yaoyibi.domain.*;
-import com.retdata.yaoyibi.service.*;
+import com.retdata.canal.handler.AbstractCanalDbHandler;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.ruoyi.common.enums.DataSourceType;
 import com.ruoyi.framework.datasource.DynamicDataSourceContextHolder;
 import lombok.extern.slf4j.Slf4j;
@@ -25,7 +20,11 @@ import org.springframework.stereotype.Component;
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import java.net.InetSocketAddress;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 @Slf4j
 @Component
@@ -34,6 +33,9 @@ public class CannalClient implements InitializingBean {
     @Autowired
     private CanalConfig canalConfig;
 
+    private static final ExecutorService executor = Executors.newFixedThreadPool(DataSourceEnum.values().length);
+    private static volatile boolean running = true;
+
     @Autowired
     private Map<String, AbstractCanalDbHandler> canalDbHandlerMap = new HashMap<>();
 
@@ -64,6 +66,10 @@ public class CannalClient implements InitializingBean {
                 }
             }
         }
+
+        running = false;
+        executor.shutdownNow();
+        log.warn("CannalClient 已销毁");
     }
 
     @Override
@@ -75,65 +81,69 @@ public class CannalClient implements InitializingBean {
                     continue;
                 }
 
-                Thread t = new Thread(() -> {
-                    while (true) {
-                        // 创建链接
-                        CanalConnector connector = null;
-                        if(CollUtil.isNotEmpty(canalConnectors)
-                            && canalConnectors.containsKey(dataSourceEnum)
-                        ){
-                            connector = canalConnectors.get(dataSourceEnum);
-                        }else {
-                            connector = CanalConnectors.newSingleConnector(new InetSocketAddress(sourceConfig.getServerHost(), sourceConfig.getServerPort()), sourceConfig.getInstance(), sourceConfig.getUsername(), sourceConfig.getPassword());
-
-                            canalConnectors.put(dataSourceEnum, connector);
-                        }
+                executor.submit(()-> {
+                    while (running){
                         try {
-                            //打开连接
-                            connector.connect();
-                            //订阅数据库表,全部表
-                            connector.subscribe(sourceConfig.getSubscribe());
-                            //回滚到未进行ack的地方,下次fetch的时候,可以从最后一个没有ack的地方开始拿
-                            connector.rollback();
                             while (true) {
-                                // 获取指定数量的数据
-                                Message message = connector.getWithoutAck(BATCH_SIZE);
-                                //获取批量ID
-                                long batchId = message.getId();
-                                //获取批量的数量
-                                int size = message.getEntries().size();
-
-                                //如果没有数据
-                                if (batchId == -1 || size == 0) {
-                                    try {
-                                        //线程休眠2秒
-                                        Thread.sleep(LOCAL_THREAD_SLEEP);
-                                    } catch (InterruptedException e) {
-                                        e.printStackTrace();
+                                // 创建链接
+                                CanalConnector connector = null;
+                                if(CollUtil.isNotEmpty(canalConnectors)
+                                        && canalConnectors.containsKey(dataSourceEnum)
+                                ){
+                                    connector = canalConnectors.get(dataSourceEnum);
+                                }else {
+                                    connector = CanalConnectors.newSingleConnector(new InetSocketAddress(sourceConfig.getServerHost(), sourceConfig.getServerPort()), sourceConfig.getInstance(), sourceConfig.getUsername(), sourceConfig.getPassword());
+
+                                    canalConnectors.put(dataSourceEnum, connector);
+                                }
+                                try {
+                                    //打开连接
+                                    connector.connect();
+                                    //订阅数据库表,全部表
+                                    connector.subscribe(sourceConfig.getSubscribe());
+                                    //回滚到未进行ack的地方,下次fetch的时候,可以从最后一个没有ack的地方开始拿
+                                    connector.rollback();
+                                    while (true) {
+                                        // 获取指定数量的数据
+                                        Message message = connector.getWithoutAck(BATCH_SIZE);
+                                        //获取批量ID
+                                        long batchId = message.getId();
+                                        //获取批量的数量
+                                        int size = message.getEntries().size();
+
+                                        //如果没有数据
+                                        if (batchId == -1 || size == 0) {
+                                            try {
+                                                //线程休眠2秒
+                                                Thread.sleep(LOCAL_THREAD_SLEEP);
+                                            } catch (InterruptedException e) {
+                                                e.printStackTrace();
+                                            }
+                                        } else {
+                                            //如果有数据,处理数据
+                                            writeOut(dataSourceEnum, message);
+                                        }
+                                        //进行 batch id 的确认。确认之后,小于等于此 batchId 的 Message 都会被确认。
+                                        connector.ack(batchId);
                                     }
-                                } else {
-                                    //如果有数据,处理数据
-                                    writeOut(dataSourceEnum, message);
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                } finally {
+                                    connector.disconnect();
+                                    DynamicDataSourceContextHolder.clearDataSourceType();
+                                }
+
+                                try {
+                                    Thread.sleep(sourceConfig.getInterval());
+                                } catch (InterruptedException e) {
+                                    throw new RuntimeException(e);
                                 }
-                                //进行 batch id 的确认。确认之后,小于等于此 batchId 的 Message 都会被确认。
-                                connector.ack(batchId);
                             }
                         } catch (Exception e) {
-                            e.printStackTrace();
-                        } finally {
-                            connector.disconnect();
-                            DynamicDataSourceContextHolder.clearDataSourceType();
-                        }
-
-                        try {
-                            Thread.sleep(sourceConfig.getInterval());
-                        } catch (InterruptedException e) {
-                            throw new RuntimeException(e);
+                            log.error("CanalClient error", e);
                         }
                     }
                 });
-
-                t.start();
             }
         }
     }

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/AbstractCanalDbHandler.java → canal-console/src/main/java/com/retdata/canal/handler/AbstractCanalDbHandler.java

@@ -1,10 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.otter.canal.protocol.CanalEntry;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 
 import java.util.*;
 

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/ContractedProductChangeHandler.java → canal-console/src/main/java/com/retdata/canal/handler/ContractedProductChangeHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.ContractedProductChange;
 import com.retdata.yaoyibi.service.ContractedProductChangeService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 6
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysDeptHandler.java

@@ -1,19 +1,15 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysDept;
 import com.retdata.yaoyibi.service.CsoSysDeptService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.Arrays;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 @Component
 public class SysDeptHandler extends AbstractCanalDbHandler {

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptRelationHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysDeptRelationHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.SysDeptRelation;
 import com.retdata.yaoyibi.service.SysDeptRelationService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptSubHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysDeptSubHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.SysDeptSub;
 import com.retdata.yaoyibi.service.SysDeptSubService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDictItemHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysDictItemHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysDictItem;
 import com.retdata.yaoyibi.service.CsoSysDictItemService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysFinancialGmvSettleDataHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysFinancialGmvSettleDataHandler.java

@@ -1,11 +1,10 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.SysFinancialGmvSettleData;
-import com.retdata.yaoyibi.service.ContractedProductChangeService;
 import com.retdata.yaoyibi.service.SysFinancialGmvSettleDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysImplPlanHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysImplPlanHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.SysImplPlan;
 import com.retdata.yaoyibi.service.SysImplPlanService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysRoleHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysRoleHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysRole;
 import com.retdata.yaoyibi.service.CsoSysRoleService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysUserHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysUser;
 import com.retdata.yaoyibi.service.CsoSysUserService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserRoleHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysUserRoleHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysUserRole;
 import com.retdata.yaoyibi.service.SysUserRoleService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserSubHandler.java → canal-console/src/main/java/com/retdata/canal/handler/SysUserSubHandler.java

@@ -1,11 +1,10 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.SysUserSub;
-import com.retdata.yaoyibi.service.ContractedProductChangeService;
 import com.retdata.yaoyibi.service.SysUserSubService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaAgentHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmDaAgentHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmDaAgent;
 import com.retdata.yaoyibi.service.WmDaAgentService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaDrugEntDrugtableHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmDaDrugEntDrugtableHandler.java

@@ -1,12 +1,11 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmDaDrugEntDrugtable;
 import com.retdata.yaoyibi.service.WmDaDrugEntDrugtableService;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaDrugEntHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmDaDrugEntHandler.java

@@ -1,11 +1,10 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmDaDrugEnt;
-import com.retdata.yaoyibi.service.ContractedProductChangeService;
 import com.retdata.yaoyibi.service.WmDaDrugEntService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmScorePackageHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmScorePackage;
 import com.retdata.yaoyibi.service.WmScorePackageService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageSettleNoteHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmScorePackageSettleNoteHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmScorePackageSettleNote;
 import com.retdata.yaoyibi.service.WmScorePackageSettleNoteService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageStatusHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmScorePackageStatusHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmScorePackageStatus;
 import com.retdata.yaoyibi.service.WmScorePackageStatusService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 4
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmTaskHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmTaskHandler.java

@@ -1,12 +1,10 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
-import com.retdata.yaoyibi.domain.WmScorePackage;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmTask;
-import com.retdata.yaoyibi.service.WmScorePackageService;
 import com.retdata.yaoyibi.service.WmTaskService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;

+ 2 - 2
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmTaskTypeHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmTaskTypeHandler.java

@@ -1,9 +1,9 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmTaskType;
 import com.retdata.yaoyibi.service.WmTaskTypeService;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 3
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmUserPlatQuizResHandler.java → canal-console/src/main/java/com/retdata/canal/handler/WmUserPlatQuizResHandler.java

@@ -1,11 +1,10 @@
-package com.retdata.yaoyibi.canal.handler;
+package com.retdata.canal.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.otter.canal.protocol.CanalEntry;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.retdata.yaoyibi.domain.WmUserPlatQuizRes;
-import com.retdata.yaoyibi.service.ContractedProductChangeService;
 import com.retdata.yaoyibi.service.WmUserPlatQuizResService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;

+ 1 - 0
canal-console/src/main/resources/META-INF/spring-devtools.properties

@@ -0,0 +1 @@
+restart.include.json=/com.alibaba.fastjson2.*.jar

+ 67 - 0
canal-console/src/main/resources/application-druid.yml

@@ -0,0 +1,67 @@
+# 数据源配置
+spring:
+    datasource:
+        type: com.alibaba.druid.pool.DruidDataSource
+        driverClassName: com.mysql.cj.jdbc.Driver
+        druid:
+            # 主库数据源
+            master:
+                url: jdbc:mysql://localhost:3306/bi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                username: root
+                password: root
+            # 从库数据源
+            slave:
+                # 从数据源开关/默认关闭
+                enabled: false
+                url:
+                username:
+                password:
+            # cso数据源
+            cso:
+                enabled: true
+                url: jdbc:mysql://localhost:3306/bi_cso?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                username: root
+                password: root
+            # 初始连接数
+            initialSize: 5
+            # 最小连接池数量
+            minIdle: 10
+            # 最大连接池数量
+            maxActive: 20
+            # 配置获取连接等待超时的时间
+            maxWait: 60000
+            # 配置连接超时时间
+            connectTimeout: 30000
+            # 配置网络超时时间
+            socketTimeout: 60000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            # 配置一个连接在池中最大生存的时间,单位是毫秒
+            maxEvictableIdleTimeMillis: 900000
+            # 配置检测连接是否有效
+            validationQuery: SELECT 1
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            webStatFilter:
+                enabled: true
+            statViewServlet:
+                enabled: true
+                # 设置白名单,不填则允许所有访问
+                allow:
+                url-pattern: /druid/*
+                # 控制台管理用户名和密码
+                login-username: ruoyi
+                login-password: 123456
+            filter:
+                stat:
+                    enabled: true
+                    # 慢SQL记录
+                    log-slow-sql: true
+                    slow-sql-millis: 1000
+                    merge-sql: true
+                wall:
+                    config:
+                        multi-statement-allow: true

+ 140 - 0
canal-console/src/main/resources/application.yml

@@ -0,0 +1,140 @@
+# 项目相关配置
+ruoyi:
+  # 名称
+  name: 要易云BI系统
+  # 版本
+  version: 1.0.0
+  # 版权年份
+  copyrightYear: 2024
+  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+  profile: D:/ruoyi/uploadPath
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数字计算 char 字符验证
+  captchaType: math
+
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为8080
+  port: 8080
+  servlet:
+    # 应用的访问路径
+    context-path: /
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+    # 连接数满后的排队数,默认为100
+    accept-count: 1000
+    threads:
+      # tomcat最大线程数,默认为200
+      max: 800
+      # Tomcat启动初始化的线程数,默认值10
+      min-spare: 100
+  # 解决springdoc部署在反向代理后面时接口地址错误的问题
+  # 详情请看官方文档:https://springdoc.org/#how-can-i-deploy-springdoc-openapi-starter-webmvc-ui-behind-a-reverse-proxy
+  forward-headers-strategy: framework
+
+# 日志配置
+logging:
+  level:
+    com.ruoyi: debug
+    org.springframework: warn
+    com.retdata.yaoyibi: debug
+
+# 用户配置
+user:
+  password:
+    # 密码最大错误次数
+    maxRetryCount: 5
+    # 密码锁定时间(默认10分钟)
+    lockTime: 10
+
+# Spring配置
+spring:
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
+  profiles:
+    active: druid
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 10MB
+      # 设置总上传的文件大小
+      max-request-size: 20MB
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: true
+  # redis 配置
+  redis:
+    # 地址
+    host: localhost
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码
+    password:
+    # 连接超时时间
+    timeout: 10s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+
+# token配置
+token:
+  # 令牌自定义标识
+  header: Authorization
+  # 令牌密钥
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 令牌有效期(默认30分钟)
+  expireTime: 120
+
+mybatis-plus:
+  type-aliases-package: com.ruoyi.system.domain,com.ruoyi.quartz.domain,com.ruoyi.common.core.domain.model,com.ruoyi.system.domain.vo,com.ruoyi.common.core.domain.entity,com.ruoyi.framework.web.domain,com.ruoyi.common.core.domain,com.ruoyi.framework.web.domain.server,com.ruoyi.generator.domain
+  configuration:
+    use-generated-keys: true
+
+# PageHelper分页插件
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*
+
+canal:
+  sourceConfig:
+    CSO:
+      enabled: true
+      serverHost: localhost
+      serverPort: 11111
+      instance: example
+      subscribe: "cso_prod\\..*"
+      interval: 60000
+    LUOXIN_CSO:
+      enabled: false
+      serverHost: localhost
+      serverPort: 11111
+      instance: luoxincso
+      subscribe: "cso_prod\\..*"
+      interval: 60000
+

+ 24 - 0
canal-console/src/main/resources/banner.txt

@@ -0,0 +1,24 @@
+Application Version: ${ruoyi.version}
+Spring Boot Version: ${spring-boot.version}
+////////////////////////////////////////////////////////////////////
+//                          _ooOoo_                               //
+//                         o8888888o                              //
+//                         88" . "88                              //
+//                         (| ^_^ |)                              //
+//                         O\  =  /O                              //
+//                      ____/`---'\____                           //
+//                    .'  \\|     |//  `.                         //
+//                   /  \\|||  :  |||//  \                        //
+//                  /  _||||| -:- |||||-  \                       //
+//                  |   | \\\  -  /// |   |                       //
+//                  | \_|  ''\---/''  |   |                       //
+//                  \  .-\__  `-`  ___/-. /                       //
+//                ___`. .'  /--.--\  `. . ___                     //
+//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
+//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
+//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
+//      ========`-.____`-.___\_____/___.-`____.-'========         //
+//                           `=---='                              //
+//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
+//             佛祖保佑       永不宕机      永无BUG               //
+////////////////////////////////////////////////////////////////////

+ 38 - 0
canal-console/src/main/resources/i18n/messages.properties

@@ -0,0 +1,38 @@
+#错误消息
+not.null=* 必须填写
+user.jcaptcha.error=验证码错误
+user.jcaptcha.expire=验证码已失效
+user.not.exists=用户不存在/密码错误
+user.password.not.match=用户不存在/密码错误
+user.password.retry.limit.count=密码输入错误{0}次
+user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
+user.password.delete=对不起,您的账号已被删除
+user.blocked=用户已封禁,请联系管理员
+role.blocked=角色已封禁,请联系管理员
+login.blocked=很遗憾,访问IP已被列入系统黑名单
+user.logout.success=退出成功
+
+length.not.valid=长度必须在{min}到{max}个字符之间
+
+user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
+user.password.not.valid=* 5-50个字符
+ 
+user.email.not.valid=邮箱格式错误
+user.mobile.phone.number.not.valid=手机号格式错误
+user.login.success=登录成功
+user.register.success=注册成功
+user.notfound=请重新登录
+user.forcelogout=管理员强制退出,请重新登录
+user.unknown.error=未知错误,请重新登录
+
+##文件上传消息
+upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB!
+upload.filename.exceed.length=上传的文件名最长{0}个字符
+
+##权限
+no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
+no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
+no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
+no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
+no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
+no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]

+ 1 - 0
pom.xml

@@ -235,6 +235,7 @@
         <module>ruoyi-generator</module>
         <module>ruoyi-common</module>
         <module>yaoyi-bi</module>
+        <module>canal-console</module>
     </modules>
     <packaging>pom</packaging>
 

+ 0 - 18
ruoyi-admin/src/main/resources/application.yml

@@ -120,21 +120,3 @@ xss:
   excludes: /system/notice
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*
-
-canal:
-  sourceConfig:
-    CSO:
-      enabled: true
-      serverHost: localhost
-      serverPort: 11111
-      instance: example
-      subscribe: "cso_prod\\..*"
-      interval: 60000
-    LUOXIN_CSO:
-      enabled: false
-      serverHost: localhost
-      serverPort: 11111
-      instance: luoxincso
-      subscribe: "cso_prod\\..*"
-      interval: 60000
-

+ 6 - 0
ruoyi-common/pom.xml

@@ -142,6 +142,12 @@
             <artifactId>springdoc-openapi-common</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 1 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/DataSourceEnum.java → ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceEnum.java

@@ -1,4 +1,4 @@
-package com.retdata.yaoyibi.canal;
+package com.ruoyi.common.enums;
 
 import lombok.Getter;
 

+ 29 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/PackageIdDto.java

@@ -0,0 +1,29 @@
+package com.retdata.yaoyibi.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class PackageIdDto {
+    private Integer id;
+    private Integer dbSourceId;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        PackageIdDto dto = (PackageIdDto) o;
+        return this.toString().equals(dto.toString());
+    }
+
+    @Override
+    public int hashCode() {
+        return this.toString().hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "PackageIdDto{id='" + id + "', dbSourceId='" + dbSourceId + "'}";
+    }
+}

+ 5 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/ScorePackageEntTaskScoreStat.java

@@ -18,4 +18,9 @@ public class ScorePackageEntTaskScoreStat {
      */
     private Integer totalScore;
 
+    private Integer dbSourceId;
+
+    public PackageIdDto toPackageIdDto(){
+        return new PackageIdDto().setId(this.packageId).setDbSourceId(this.dbSourceId);
+    }
 }

+ 2 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageChildrenCount.java

@@ -6,4 +6,6 @@ import lombok.Data;
 public class WmScorePackageChildrenCount {
     private String packageId;
     private Integer childrenCount;
+
+    private Integer dbSourceId;
 }

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageExportDto.java

@@ -118,4 +118,10 @@ public class WmScorePackageExportDto {
      * 积分包结算状态
      */
     private Integer settleStatus;
+
+    private Integer dbSourceId;
+
+    public PackageIdDto toPackageIdDto(){
+        return new PackageIdDto().setId(id).setDbSourceId(dbSourceId);
+    }
 }

+ 8 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageSearchDto.java

@@ -128,5 +128,12 @@ public class WmScorePackageSearchDto {
      * 积分包结算状态
      */
     private Integer settleStatus;
-    
+
+    private Integer dbSourceId;
+
+    public PackageIdDto toPackageIdDto(){
+        return new PackageIdDto()
+            .setId(this.id)
+            .setDbSourceId(this.dbSourceId);
+    }
 }

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageSettleTreeNode.java

@@ -101,4 +101,14 @@ public class WmScorePackageSettleTreeNode {
     private List<WmScorePackageSettleTreeNode> children;
     
     private Integer deptId;
+
+    private Integer dbSourceId;
+
+    public PackageIdDto toPackageIdDto(){
+        return new PackageIdDto().setId(id).setDbSourceId(dbSourceId);
+    }
+
+    public PackageIdDto toRelationPackageIdDto(){
+        return new PackageIdDto().setId(Integer.valueOf(relationScoreId)).setDbSourceId(dbSourceId);
+    }
 }

+ 5 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageStatus.java

@@ -84,4 +84,9 @@ public class WmScorePackageStatus {
 //    private String quizRes;
 
     private Integer dbSourceId;
+
+    public PackageIdDto toPackageIdDto() {
+        PackageIdDto packageIdDto = new PackageIdDto().setId(Integer.valueOf(packageId)).setDbSourceId(dbSourceId);
+        return packageIdDto;
+    }
 }

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageStatusSummary.java

@@ -7,4 +7,10 @@ public class WmScorePackageStatusSummary {
     private Integer id;
     private String packageId;
     private CsoSysUserSummary user;
+
+    private Integer dbSourceId;
+
+    public PackageIdDto toPackageIdDto(){
+        return new PackageIdDto().setId(Integer.valueOf(packageId)).setDbSourceId(dbSourceId);
+    }
 }

+ 20 - 11
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageMapper.java

@@ -14,21 +14,27 @@ public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
     Page<WmScorePackageSearchDto> selectByParams(Page<WmScorePackageSearchDto> page,
                                                  @Param("searchParams") WmScorePackageSearchParams searchParams);
 
-    Set<Integer> selectAllMatchedPackageIds(@Param("searchParams") WmScorePackageSearchParams searchParams);
+    Set<PackageIdDto> selectAllMatchedPackageIds(@Param("searchParams") WmScorePackageSearchParams searchParams);
 
-    List<WmScorePackageStatusSummary> selectWmScorePackageStatusByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageStatusSummary> selectWmScorePackageStatusByPackageIds(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
-    List<WmScorePackageSearchDto> selectSubPackagesByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageSearchDto> selectSubPackagesByPackageIds(@Param("packageIds") Collection<Integer> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
-    List<WmScorePackageChildrenCount> selectWmScorePackageChildrenCount(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageChildrenCount> selectWmScorePackageChildrenCount(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
     List<WmScorePackageExportDto> selectExportDto(@Param("searchParams") WmScorePackageSearchParams searchParams);
 
-    List<WmScorePackageExportDto> selectExportDtoByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageExportDto> selectExportDtoByPackageIds(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
-    List<WmScorePackageSettleTreeNode> selectSubPackageSettleTreeNodesByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageSettleTreeNode> selectSubPackageSettleTreeNodesByPackageIds(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
-    List<WmScorePackageSettleTreeNode> selectPackageSettleTreeNodesByPackageIdsForScore(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageSettleTreeNode> selectPackageSettleTreeNodesByPackageIdsForScore(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
     /**
      * 获取下发积分包总值统计
@@ -53,7 +59,8 @@ public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
      * @param packageIds
      * @return
      */
-    List<ScorePackageEntTaskScoreStat> selectApprovedEntTaskScoreStat(@Param("packageIds") Collection<Integer> packageIds);
+    List<ScorePackageEntTaskScoreStat> selectApprovedEntTaskScoreStat(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
     /**
      * 查询源头包ID
@@ -61,7 +68,7 @@ public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
      * @param searchParams
      * @return
      */
-    List<Integer> selectRootPackageIds(@Param("searchParams") WmScorePackageSearchParams searchParams);
+    List<PackageIdDto> selectRootPackageIds(@Param("searchParams") WmScorePackageSearchParams searchParams);
 
     /**
      * 查询积分包的积分及结算信息
@@ -77,9 +84,11 @@ public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
      * @param packageIds
      * @return
      */
-    List<Integer> selectUserIdsByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
+    List<Integer> selectUserIdsByPackageIds(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
-    List<WmScorePackageStatus> selectPackageStatusByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
+    List<WmScorePackageStatus> selectPackageStatusByPackageIds(@Param("packageIds") Collection<PackageIdDto> packageIds, @Param(
+            "dbSourceId")Integer dbSourceId);
 
     List<String> selectReceiverNames(@Param("keyword") String keyword, @Param("limit") int limit);
 

+ 2 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageSettleNoteMapper.java

@@ -1,6 +1,7 @@
 package com.retdata.yaoyibi.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.PackageIdDto;
 import com.retdata.yaoyibi.domain.WmScorePackageSettleNote;
 import org.apache.ibatis.annotations.Param;
 
@@ -8,6 +9,6 @@ import java.util.Collection;
 import java.util.List;
 
 public interface WmScorePackageSettleNoteMapper extends BaseMapper<WmScorePackageSettleNote> {
-    List<WmScorePackageSettleNote> selectLatestSettleNote(@Param("packageIds") Collection<Integer> packageIds,
+    List<WmScorePackageSettleNote> selectLatestSettleNote(@Param("packageIds") Collection<PackageIdDto> packageIds,
                                                           @Param("timeField") String timeField);
 }

+ 1 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysDictItemServiceImpl.java

@@ -2,11 +2,11 @@ package com.retdata.yaoyibi.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysDictItem;
 import com.retdata.yaoyibi.mapper.CsoSysDictItemMapper;
 import com.retdata.yaoyibi.service.CsoSysDictItemService;
 import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.ruoyi.common.enums.DataSourceType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

ファイルの差分が大きいため隠しています
+ 326 - 178
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageServiceImpl.java


+ 1 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/web/CsoSysRoleController.java

@@ -1,10 +1,10 @@
 package com.retdata.yaoyibi.web;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.retdata.yaoyibi.canal.DataSourceEnum;
 import com.retdata.yaoyibi.domain.CsoSysRole;
 import com.retdata.yaoyibi.service.CsoSysRoleService;
 import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceEnum;
 import com.ruoyi.common.enums.DataSourceType;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 0 - 1
yaoyi-bi/src/main/resources/mapper/CsoSysDeptMapper.xml

@@ -52,7 +52,6 @@
                 and s1.db_source_id=di1.db_source_id
             inner join sys_dict_item di2 on di2.value=s1.subject_location and di2.type='subject_location'
                 and s1.db_source_id=di2.db_source_id
-            where s1.enable_flag=1
             group by s1.dept_id
         ) t1 on t1.dept_id=d1.dept_id
         left join sys_financial_gmv_settle_data t2 on t2.payment_company=d1.name and t2.in_use_tag=1

+ 87 - 74
yaoyi-bi/src/main/resources/mapper/WmScorePackageMapper.xml

@@ -22,6 +22,7 @@
         <result column="level" property="level"/>
         <result column="root_package_send_package_dept_id" property="rootPackageSendPackageDeptId"/>
         <result column="settle_status" property="settleStatus"/>
+        <result column="db_source_id" property="dbSourceId"/>
         <association property="sendPackageDept" javaType="com.retdata.yaoyibi.domain.CsoSysDeptSummary">
             <id column="send_package_dept_dept_id" property="deptId"/>
             <result column="send_package_dept_name" property="name"/>
@@ -49,6 +50,7 @@
         <result column="p2p_amount" property="p2pAmount"/>
         <result column="p2p_service_amount" property="p2pServiceAmount"/>
         <result column="settle_status" property="settleStatus"/>
+        <result column="db_source_id" property="dbSourceId"/>
         <association property="sendPackageDept" javaType="com.retdata.yaoyibi.domain.CsoSysDeptSummary">
             <id column="send_package_dept_dept_id" property="deptId"/>
             <result column="send_package_dept_name" property="name"/>
@@ -150,7 +152,8 @@
             s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,s1.settle_count,
             t2.relation_score_id as grand_parent_id,
             case when t1.relation_score_id is null or t1.relation_score_id='' then 0 when t2.relation_score_id is null or t2.relation_score_id='' then 1 else 2 end as level,
-            COALESCE(t3.send_package_dept_id,t2.send_package_dept_id,t1.send_package_dept_id) as root_package_send_package_dept_id
+            COALESCE(t3.send_package_dept_id,t2.send_package_dept_id,t1.send_package_dept_id) as root_package_send_package_dept_id,
+            t1.db_source_id
         from wm_score_package t1
         left join sys_dept d1 on d1.dept_id=t1.send_package_dept_id
         left join sys_dept d2 on d2.dept_id=t1.dept_id
@@ -185,8 +188,8 @@
         </if>
         <where><include refid="searchParamsSql"></include></where>
     </select>
-    <select id="selectAllMatchedPackageIds" resultType="integer">
-        select t1.id
+    <select id="selectAllMatchedPackageIds" resultType="com.retdata.yaoyibi.domain.PackageIdDto">
+        select t1.id,t1.db_source_id
         from wm_score_package t1
         <if test="searchParams.packageLevel==1 or searchParams.packageLevel==2">
             left join sys_dept d2 on d2.dept_id=t1.dept_id
@@ -231,7 +234,7 @@
             t1.id,t1.score_package_name,t1.score,t1.score_package_status,t1.create_time,t1.package_finish_time,t1.package_finish_status,t1.typeid,t1.relation_score_id,t1.p2p_amount,t1.p2p_service_amount,t1.drugtable,t1.settle_status,
             d1.dept_id as send_package_dept_dept_id,d1.name as send_package_dept_name,d1.level as send_package_dept_level,
             d2.dept_id as dept_dept_id,d2.name as dept_name,d2.level as dept_level,
-            s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,s1.settle_count
+            s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,s1.settle_count,t1.db_source_id
         from wm_score_package t1
         left join sys_dept d1 on d1.dept_id=t1.send_package_dept_id
             and t1.db_source_id=d1.db_source_id
@@ -248,7 +251,7 @@
                 ,db_source_id
             from wm_score_package_settle_note
             group by package_id, db_source_id
-                                                                                                                                                                         ) s1 on s1.package_id=t1.id and t1.db_source_id=s1.db_source_id
+        ) s1 on s1.package_id=t1.id and t1.db_source_id=s1.db_source_id
         <if test="searchParams.receiverName!=null and searchParams.receiverName.length>0">
             inner join (
             select distinct t1.package_id, t1.db_source_id
@@ -271,13 +274,14 @@
         order by t1.create_time desc
     </select>
     <select id="selectWmScorePackageStatusByPackageIds" resultType="com.retdata.yaoyibi.domain.WmScorePackageStatusSummary">
-        select t1.id,t1.package_id,t1.user_id as "user.user_id",t2.realname as "user.realname"
+        select t1.id,t1.package_id,t1.user_id as "user.user_id",t2.realname as "user.realname",t1.db_source_id
         from wm_score_package_status t1
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id} id</foreach> t3
+                on t1.package_id=t3.id
         left join sys_user t2 on t2.user_id=t1.user_id
             and t1.db_source_id=t2.db_source_id
         <where>
-            t1.status=2 and t1.package_id in 
-            <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
+            t1.status=2 and t1.db_source_id=#{dbSourceId}
         </where>
     </select>
     <select id="selectSubPackagesByPackageIds" resultMap="searchDtoMap">
@@ -298,9 +302,12 @@
         </where>
     </select>
     <select id="selectWmScorePackageChildrenCount" resultType="com.retdata.yaoyibi.domain.WmScorePackageChildrenCount">
-        select relation_score_id as packageId,count(1) as childrenCount
-        from wm_score_package
-        where relation_score_id in <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
+        select a.relation_score_id as packageId,count(1) as childrenCount,a.db_source_id
+        from wm_score_package a
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id}
+        id</foreach> b
+                on a.relation_score_id=b.id
+        where a.db_source_id=#{dbSourceId}
         group by relation_score_id
     </select>
     <select id="selectExportDtoByPackageIds" resultMap="exportDtoMap">
@@ -308,8 +315,10 @@
             t1.id,t1.score_package_name,t1.score,t1.score_package_status,t1.create_time,t1.package_finish_time,t1.package_finish_status,t1.typeid,t1.relation_score_id,t1.p2p_amount,t1.p2p_service_amount,t1.drugtable,
             d1.dept_id as send_package_dept_dept_id,d1.name as send_package_dept_name,d1.level as send_package_dept_level,
             d2.dept_id as dept_dept_id,d2.name as dept_name,d2.level as dept_level,
-            s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,s1.settle_count
+            s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,s1.settle_count,t1.db_source_id
         from wm_score_package t1
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id} id</foreach> t2
+                on t1.id=t2.id
         left join sys_dept d1 on d1.dept_id=t1.send_package_dept_id
         left join sys_dept d2 on d2.dept_id=t1.dept_id
         left join (
@@ -320,15 +329,17 @@
         ) s1 on s1.package_id=t1.id
             and s1.db_source_id=t1.db_source_id
         <where>
-            t1.id in
-            <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
+            t1.db_source_id=#{dbSourceId}
         </where>
     </select>
     <select id="selectSubPackageSettleTreeNodesByPackageIds" resultMap="settleTreeNodeMap">
         select
             t1.id,t1.typeid,t1.relation_score_id,t1.p2p_amount,t1.p2p_service_amount,t1.score,t1.score_package_status,t1.settle_status,t1.package_finish_time,
-            s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time
+            s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,t1.db_source_id
         from wm_score_package t1
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id}
+        id</foreach> t2
+                on t2.id=t1.relation_score_id
         left join (
             select package_id,sum(settle_amount) as settle_amount,sum(actual_amount) as actual_amount,max(notify_time) as notify_time
                 ,db_source_id
@@ -336,19 +347,16 @@
             group by package_id, db_source_id
         ) s1 on s1.package_id=t1.id
             and t1.db_source_id=s1.db_source_id
-        <where>
-            t1.relation_score_id in
-            <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
-        </where>
+        where t1.db_source_id=#{dbSourceId}
     </select>
     <select id="selectPackageSettleTreeNodesByPackageIdsForScore" resultMap="settleTreeNodeMap">
         select
-        t1.id,t1.typeid,t1.relation_score_id,t1.score,t1.score_package_status,t1.send_package_dept_id,t1.package_finish_time,t1.dept_id
+        t1.id,t1.typeid,t1.relation_score_id,t1.score,t1.score_package_status,t1.send_package_dept_id,t1.package_finish_time,t1.dept_id,t1.db_source_id
         from wm_score_package t1
-        <where>
-            t1.id in
-            <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
-        </where>
+        inner join
+            <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id} id</foreach>
+        t2 on t2.id=t1.id
+        where t1.db_source_id=#{dbSourceId}
     </select>
     <select id="selectScoreStatByParams" resultType="com.retdata.yaoyibi.domain.ScoreStat">
         select 
@@ -363,6 +371,44 @@
             sum(case when dsp.sign_product='CSO1' then 1 else 0 end) as cso1Count,
             sum(case when dsp.sign_product='CSO2' then 1 else 0 end) as cso2Count
         from wm_score_package rp
+            inner join (
+                select distinct COALESCE(case when t2.relation_score_id='' then null else t2.relation_score_id end,t2.id,t1.id) as
+        root_package_id,t1.db_source_id
+                from wm_score_package t1
+                left join wm_score_package t2 on t1.relation_score_id=t2.id
+                and t1.db_source_id=t2.db_source_id
+                <if test="(searchParams.rootPackageSendPackageDeptId!=null and searchParams.rootPackageSendPackageDeptId.length>0) or searchParams.rootPackageCreateTimeGe!=null or searchParams.rootPackageCreateTimeLe!=null">
+                    left join wm_score_package t3 on t2.relation_score_id=t3.id
+                    and t2.db_source_id=t3.db_source_id
+                </if>
+                <if test="searchParams.settleNotifyTimeGe!=null or searchParams.settleNotifyTimeLe!=null">
+                    left join (
+                    select package_id,max(notify_time) as notify_time,db_source_id
+                    from wm_score_package_settle_note
+                    group by package_id, db_source_id
+                    ) s1 on s1.package_id=t1.id
+                    and s1.db_source_id=t1.db_source_id
+                </if>
+                <if test="searchParams.receiverName!=null and searchParams.receiverName.length>0">
+                    inner join (
+                    select distinct t1.package_id,t1.db_source_id
+                    from wm_score_package_status t1
+                    inner join sys_user t2 on t1.user_id=t2.user_id
+                    and t1.db_source_id=t2.db_source_id
+                    where t1.status=2 and t2.realname in
+                    <foreach collection="searchParams.receiverName" item="item" separator="," open="(" close=")">#{item}</foreach>
+                    union
+                    select distinct t4.id as package_id,t4.db_source_id
+                    from sys_dept t3
+                    inner join wm_score_package t4 on t3.dept_id=t4.dept_id and t4.typeid in ('0','1','2')
+                    and t3.db_source_id = t4.db_source_id
+                    where t3.name in
+                    <foreach collection="searchParams.receiverName" item="item" separator="," open="(" close=")">#{item}</foreach>
+                    ) rnt on rnt.package_id=t1.id
+                    and rnt.db_source_id=t1.db_source_id
+                </if>
+                <where><include refid="searchParamsSql"></include></where>) rp1
+                    on rp.id=rp1.root_package_id and rp.db_source_id=rp1.db_source_id
         left join (
             select t2.dept_id,t1.sign_product
             from contracted_product_change t1
@@ -370,42 +416,6 @@
                 and t1.db_source_id=t2.db_source_id
             where t1.sign_product in ('CSO1','CSO2') and not exists(select 1 from contracted_product_change t3 where t3.object_name=t1.object_name and t3.change_time>t1.change_time)
         ) dsp on dsp.dept_id=rp.dept_id
-        where id in 
-        (select distinct COALESCE(case when t2.relation_score_id='' then null else t2.relation_score_id end,t2.id,t1.id) as root_package_id
-        from wm_score_package t1
-        left join wm_score_package t2 on t1.relation_score_id=t2.id
-            and t1.db_source_id=t2.db_source_id
-        <if test="(searchParams.rootPackageSendPackageDeptId!=null and searchParams.rootPackageSendPackageDeptId.length>0) or searchParams.rootPackageCreateTimeGe!=null or searchParams.rootPackageCreateTimeLe!=null">
-            left join wm_score_package t3 on t2.relation_score_id=t3.id
-                and t2.db_source_id=t3.db_source_id
-        </if>
-        <if test="searchParams.settleNotifyTimeGe!=null or searchParams.settleNotifyTimeLe!=null">
-            left join (
-                select package_id,max(notify_time) as notify_time,db_source_id
-                from wm_score_package_settle_note
-                group by package_id, db_source_id
-            ) s1 on s1.package_id=t1.id
-                and s1.db_source_id=t1.db_source_id
-        </if>
-        <if test="searchParams.receiverName!=null and searchParams.receiverName.length>0">
-            inner join (
-                select distinct t1.package_id,t1.db_source_id
-                from wm_score_package_status t1
-                    inner join sys_user t2 on t1.user_id=t2.user_id
-                        and t1.db_source_id=t2.db_source_id
-                where t1.status=2 and t2.realname in
-                <foreach collection="searchParams.receiverName" item="item" separator="," open="(" close=")">#{item}</foreach>
-                union
-                select distinct t4.id as package_id,t4.db_source_id
-                from sys_dept t3
-                    inner join wm_score_package t4 on t3.dept_id=t4.dept_id and t4.typeid in ('0','1','2')
-                        and t3.db_source_id = t4.db_source_id
-                where t3.name in
-            <foreach collection="searchParams.receiverName" item="item" separator="," open="(" close=")">#{item}</foreach>
-            ) rnt on rnt.package_id=t1.id
-                and rnt.db_source_id=t1.db_source_id
-        </if>
-        <where><include refid="searchParamsSql"></include></where>)
     </select>
     <select id="selectScoreTimeStatByParams" resultType="com.retdata.yaoyibi.domain.ScoreTimeStat">
         select
@@ -501,16 +511,17 @@
         order by timeKey
     </select>
     <select id="selectApprovedEntTaskScoreStat" resultType="com.retdata.yaoyibi.domain.ScorePackageEntTaskScoreStat">
-        select t1.score_package_id as packageId,sum(t1.score) as totalScore
-        from wm_task t1 
+        select t1.score_package_id as packageId,sum(t1.score) as totalScore, t1.db_source_id
+        from wm_task t1
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id} id</foreach> t2
+                on t1.score_package_id=t2.id
         where t1.task_status=3 and t1.task_type_id in (SELECT id FROM wm_task_type WHERE task_type_level=1 AND task_receiver_type=2)
-        and t1.score_package_id in
-        <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
-        group by t1.score_package_id
+            and t1.db_source_id = #{dbSourceId}
+        group by t1.score_package_id, t1.db_source_id
     </select>
-    <select id="selectRootPackageIds" resultType="integer">
-        select distinct COALESCE(case when t2.relation_score_id='' then null else t2.relation_score_id end,t2.id,t1.id)
-            , t2.db_source_id
+    <select id="selectRootPackageIds" resultType="com.retdata.yaoyibi.domain.PackageIdDto">
+        select distinct COALESCE(case when t2.relation_score_id='' then null else t2.relation_score_id end,t2.id,t1.id) id
+            , t1.db_source_id
         from wm_score_package t1
         left join wm_score_package t2 on t1.relation_score_id=t2.id
             and t1.db_source_id=t2.db_source_id
@@ -553,7 +564,7 @@
         s1.settle_amount,s1.actual_amount as settle_actual_amount,s1.notify_time as settle_notify_time,
         t2.relation_score_id as grand_parent_id,
         case when t1.relation_score_id is null or t1.relation_score_id='' then 0 when t2.relation_score_id is null or t2.relation_score_id='' then 1 else 2 end as level,
-        COALESCE(t3.send_package_dept_id,t2.send_package_dept_id,t1.send_package_dept_id) as root_package_send_package_dept_id
+        COALESCE(t3.send_package_dept_id,t2.send_package_dept_id,t1.send_package_dept_id) as root_package_send_package_dept_id,t1.db_source_id
         from wm_score_package t1
         left join sys_dept d2 on d2.dept_id=t1.dept_id
         left join wm_score_package t2 on t1.relation_score_id=t2.id
@@ -590,14 +601,16 @@
     <select id="selectUserIdsByPackageIds" resultType="integer">
         select distinct t1.user_id
         from wm_score_package_status t1
-        where t1.status=2 and t1.package_id in 
-        <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id} id</foreach> t2
+                on t1.package_id=t2.id
+        where t1.status=2 and t1.db_source_id=#{dbSourceId}
     </select>
     <select id="selectPackageStatusByPackageIds" resultType="com.retdata.yaoyibi.domain.WmScorePackageStatus">
-        select t1.id,t1.user_id,t1.package_id
+        select t1.id,t1.user_id,t1.package_id,t1.db_source_id
         from wm_score_package_status t1
-        where t1.status=2 and t1.package_id in
-        <foreach collection="packageIds" item="item" separator="," open="(" close=")">#{item}</foreach>
+            inner join <foreach collection="packageIds" item="item" separator="union all" open="(" close=")">select #{item.id} id</foreach> t2
+                on t1.package_id=t2.id
+        where t1.status=2 and t1.db_source_id=#{dbSourceId}
     </select>
     <select id="selectReceiverNames" resultType="string">
         select t5.name

+ 7 - 6
yaoyi-bi/src/main/resources/mapper/WmScorePackageSettleNodeMapper.xml

@@ -4,14 +4,15 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.retdata.yaoyibi.mapper.WmScorePackageSettleNoteMapper">
     <select id="selectLatestSettleNote" resultType="com.retdata.yaoyibi.domain.WmScorePackageSettleNote">
-        select s1.id,s1.package_id,s1.settle_note_status,s1.sub_type,s1.subject_location,s1.sub_time,s1.sub_to_gig_time,s1.notify_time
+        select s1.id,s1.package_id,s1.settle_note_status,s1.sub_type,s1.subject_location,s1.sub_time,s1.sub_to_gig_time,s1.notify_time,s1.db_source_id
         from wm_score_package_settle_note s1
+            inner join <foreach collection="packageIds" item="packageId" open="(" separator=" union all " close=")">select #{packageId.id}
+        id,#{packageId.dbSourceId} db_source_id</foreach> a
+                on s1.package_id=a.id and s1.db_source_id=a.db_source_id
         where s1.${timeField} is not null and not exists (
             select 1 from wm_score_package_settle_note s2 
-            where s1.package_id=s2.package_id and s1.${timeField} <![CDATA[<]]> s2.${timeField})
-            and s1.package_id in
-            <foreach collection="packageIds" item="packageId" open="(" separator="," close=")">
-                #{packageId}
-            </foreach>
+            where s1.package_id=s2.package_id and s1.${timeField} <![CDATA[<]]> s2.${timeField}
+                and s1.db_source_id=s2.db_source_id
+            )
     </select>
 </mapper> 

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません