Browse Source

canal订阅cso luoxin数据

baiying 2 weeks ago
parent
commit
c669a8e9d8
100 changed files with 5482 additions and 80 deletions
  1. 19 0
      doc/canal表订阅.md
  2. 19 0
      pom.xml
  3. 5 3
      ruoyi-admin/src/main/resources/application-druid.yml
  4. 18 0
      ruoyi-admin/src/main/resources/application.yml
  5. 25 0
      yaoyi-bi/pom.xml
  6. 47 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/CanalConfig.java
  7. 178 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/CannalClient.java
  8. 18 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/DataSourceEnum.java
  9. 66 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/AbstractCanalDbHandler.java
  10. 75 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/ContractedProductChangeHandler.java
  11. 111 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptHandler.java
  12. 134 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptRelationHandler.java
  13. 109 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptSubHandler.java
  14. 75 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDictItemHandler.java
  15. 75 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysFinancialGmvSettleDataHandler.java
  16. 113 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysImplPlanHandler.java
  17. 75 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysRoleHandler.java
  18. 113 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserHandler.java
  19. 83 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserRoleHandler.java
  20. 110 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserSubHandler.java
  21. 109 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaAgentHandler.java
  22. 109 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaDrugEntDrugtableHandler.java
  23. 110 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaDrugEntHandler.java
  24. 112 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageHandler.java
  25. 74 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageSettleNoteHandler.java
  26. 109 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageStatusHandler.java
  27. 114 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmTaskHandler.java
  28. 118 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmTaskTypeHandler.java
  29. 75 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmUserPlatQuizResHandler.java
  30. 52 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/ContractedProductChange.java
  31. 133 6
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysDept.java
  32. 39 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysDictItem.java
  33. 24 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysRole.java
  34. 238 19
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysUser.java
  35. 36 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysUserRole.java
  36. 33 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysDeptRelation.java
  37. 119 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysDeptSub.java
  38. 76 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysFinancialGmvSettleData.java
  39. 72 16
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysImplPlan.java
  40. 181 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysUserSub.java
  41. 175 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmDaAgent.java
  42. 95 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmDaDrugEnt.java
  43. 109 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmDaDrugEntDrugtable.java
  44. 380 15
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackage.java
  45. 106 16
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageSettleNote.java
  46. 78 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageStatus.java
  47. 326 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmTask.java
  48. 152 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmTaskType.java
  49. 53 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmUserPlatQuizRes.java
  50. 14 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/ContractedProductChangeMapper.java
  51. 8 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/CsoSysUserRoleMapper.java
  52. 37 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysDeptRelationMapper.java
  53. 8 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysDeptSubMapper.java
  54. 9 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysFinancialGmvSettleDataMapper.java
  55. 9 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysUserSubMapper.java
  56. 8 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmDaAgentMapper.java
  57. 9 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmDaDrugEntMapper.java
  58. 8 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmPlatformQuizTestResultMapper.java
  59. 8 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageStatusMapper.java
  60. 9 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmTaskMapper.java
  61. 9 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmTaskTypeMapper.java
  62. 15 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/ContractedProductChangeService.java
  63. 3 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysDeptService.java
  64. 3 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysDictItemService.java
  65. 2 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysRoleService.java
  66. 3 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysUserService.java
  67. 11 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysDeptRelationService.java
  68. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysDeptSubService.java
  69. 11 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysFinancialGmvSettleDataService.java
  70. 3 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysImplPlanService.java
  71. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysUserRoleService.java
  72. 11 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysUserSubService.java
  73. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmDaAgentService.java
  74. 3 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmDaDrugEntDrugtableService.java
  75. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmDaDrugEntService.java
  76. 3 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmScorePackageService.java
  77. 15 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmScorePackageSettleNoteService.java
  78. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmScorePackageStatusService.java
  79. 11 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmTaskService.java
  80. 11 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmTaskTypeService.java
  81. 10 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmUserPlatQuizResService.java
  82. 24 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/ContractedProductChangeServiceImpl.java
  83. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysDeptServiceImpl.java
  84. 9 1
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysDictItemServiceImpl.java
  85. 5 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysRoleServiceImpl.java
  86. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysUserServiceImpl.java
  87. 24 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysDeptRelationServiceImpl.java
  88. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysDeptSubServiceImpl.java
  89. 24 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysFinancialGmvSettleDataServiceImpl.java
  90. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysImplPlanServiceImpl.java
  91. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysUserRoleServiceImpl.java
  92. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysUserSubServiceImpl.java
  93. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmDaAgentServiceImpl.java
  94. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmDaDrugEntDrugtableServiceImpl.java
  95. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmDaDrugEntServiceImpl.java
  96. 6 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageServiceImpl.java
  97. 22 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageSettleNoteImpl.java
  98. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageStatusServiceImpl.java
  99. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmTaskServiceImpl.java
  100. 21 0
      yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmTaskTypeServiceImpl.java

+ 19 - 0
doc/canal表订阅.md

@@ -0,0 +1,19 @@
+
+# 授权用户
+
+> 生产CSO.cso_prod授权
+```sql
+-- 创建用户 用户名:csobi 密码:
+create user 'csobi'@'%' identified by '';
+-- 授权 *.*表示所有库
+grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'csobi'@'%';
+```
+
+# 源 生产CSO  罗欣CSO
+
+# 同步策略
+
+> 创建相关表
+> 添加字段 db_source_id,非空,平台数据源名称
+> 修改主键与db_source_id联合主键
+> 业务表数据合并

+ 19 - 0
pom.xml

@@ -35,6 +35,8 @@
         <jsqlparser.version>4.9</jsqlparser.version>
         <mybatis-plus.version>3.5.6</mybatis-plus.version>
         <springdoc.version>1.7.0</springdoc.version>
+        <canal.version>1.1.8</canal.version>
+        <hutool.version>5.7.7</hutool.version>
     </properties>
 
     <!-- 依赖声明 -->
@@ -205,6 +207,23 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.alibaba.otter</groupId>
+                <artifactId>canal.client</artifactId>
+                <version>${canal.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.otter</groupId>
+                <artifactId>canal.protocol</artifactId>
+                <version>${canal.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>${hutool.version}</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 

+ 5 - 3
ruoyi-admin/src/main/resources/application-druid.yml

@@ -6,9 +6,9 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/yaoyibi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://localhost:3306/bi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: 
+                password: root
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭
@@ -19,7 +19,9 @@ spring:
             # cso数据源
             cso:
                 enabled: true
-                url: jdbc:mysql://rr-2zeza67635udhdompho.mysql.rds.aliyuncs.com:3306/cso_prod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://localhost:3306/bi_cso?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                username: root
+                password: root
             # 初始连接数
             initialSize: 5
             # 最小连接池数量

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

@@ -120,3 +120,21 @@ 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
+

+ 25 - 0
yaoyi-bi/pom.xml

@@ -39,6 +39,31 @@
             <optional>true</optional>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba.otter</groupId>
+            <artifactId>canal.client</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.otter</groupId>
+            <artifactId>canal.protocol</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.14.0</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 47 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/CanalConfig.java

@@ -0,0 +1,47 @@
+package com.retdata.yaoyibi.canal;
+
+import cn.hutool.core.util.StrUtil;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Map;
+import java.util.Set;
+
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "canal")
+public class CanalConfig {
+    private Set<String> luoxindeptids;
+
+    private Map<DataSourceEnum, SourceConfig> sourceConfig;
+
+    @Data
+    public static class SourceConfig{
+        private boolean enabled;
+
+        private String serverHost;
+
+        private Integer serverPort;
+
+        private String instance;
+
+        private String username = StrUtil.EMPTY;
+
+        private String password = StrUtil.EMPTY;
+
+        private Integer batchSize;
+
+        /**
+         * 异常重试间隔时间
+         * 单位:毫秒
+         */
+        private Long interval;
+
+        /**
+         * canal订阅信息
+         * .\\.
+         */
+        private String subscribe;
+    }
+}

+ 178 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/CannalClient.java

@@ -0,0 +1,178 @@
+package com.retdata.yaoyibi.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.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.framework.datasource.DynamicDataSourceContextHolder;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.net.InetSocketAddress;
+import java.util.*;
+
+@Slf4j
+@Component
+public class CannalClient implements InitializingBean {
+
+    @Autowired
+    private CanalConfig canalConfig;
+
+    @Autowired
+    private Map<String, AbstractCanalDbHandler> canalDbHandlerMap = new HashMap<>();
+
+    private Map<String, AbstractCanalDbHandler> tableNameHandlerMap = new HashMap<>();
+
+    private final static int BATCH_SIZE = 1000;
+
+    private final static long LOCAL_THREAD_SLEEP = 2000L;
+
+    private List<CanalConnector> canalConnectors= new ArrayList<>();
+
+    @PostConstruct
+    public void initialize() {
+        for (Map.Entry<String, AbstractCanalDbHandler> entry : canalDbHandlerMap.entrySet()) {
+            tableNameHandlerMap.put(entry.getValue().tableName(), entry.getValue());
+        }
+    }
+
+    @PreDestroy
+    public void stop(){
+        if(CollUtil.isNotEmpty(canalConnectors)){
+            for(CanalConnector canalConnector: canalConnectors){
+                if (canalConnector instanceof ClusterCanalConnector) {
+                    ((ClusterCanalConnector) canalConnector).stopRunning();
+                } else if (canalConnector instanceof SimpleCanalConnector) {
+                    ((SimpleCanalConnector) canalConnector).stopRunning();
+                }
+            }
+        }
+    }
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        if (canalConfig != null && MapUtil.isNotEmpty(canalConfig.getSourceConfig())) {
+            for (DataSourceEnum dataSourceEnum : canalConfig.getSourceConfig().keySet()) {
+                CanalConfig.SourceConfig sourceConfig = canalConfig.getSourceConfig().get(dataSourceEnum);
+                if (!sourceConfig.isEnabled()) {
+                    continue;
+                }
+
+                Thread t = new Thread(() -> {
+                    while (true) {
+                        // 创建链接
+                        CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(sourceConfig.getServerHost(), sourceConfig.getServerPort()), sourceConfig.getInstance(), sourceConfig.getUsername(), sourceConfig.getPassword());
+                        canalConnectors.add(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);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        } finally {
+                            connector.disconnect();
+                            DynamicDataSourceContextHolder.clearDataSourceType();
+                        }
+
+                        try {
+                            Thread.sleep(sourceConfig.getInterval());
+                        } catch (InterruptedException e) {
+                            throw new RuntimeException(e);
+                        }
+                    }
+                });
+
+                t.start();
+            }
+        }
+    }
+
+    /**
+     * 打印canal server解析binlog获得的实体类信息
+     */
+    private void writeOut(DataSourceEnum dataSourceEnum, Message message) {
+        List<CanalEntry.Entry> entrys = message.getEntries();
+        for (CanalEntry.Entry entry : entrys) {
+            if (entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONBEGIN || entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONEND) {
+                //开启/关闭事务的实体类型,跳过
+                continue;
+            }
+            //RowChange对象,包含了一行数据变化的所有特征
+            //比如isDdl 是否是ddl变更操作 sql 具体的ddl sql beforeColumns afterColumns 变更前后的数据字段等等
+            CanalEntry.RowChange rowChage;
+            try {
+                rowChage = CanalEntry.RowChange.parseFrom(entry.getStoreValue());
+            } catch (Exception e) {
+                throw new RuntimeException("ERROR ## parser of eromanga-event has an error , data:" + entry.toString(), e);
+            }
+            //获取操作类型:insert/update/delete类型
+            CanalEntry.EventType eventType = rowChage.getEventType();
+
+            //判断是否是DDL语句
+            if (rowChage.getIsDdl()) {
+                continue;
+            }
+            String tableName = entry.getHeader().getTableName();
+
+            //获取RowChange对象里的每一行数据,打印出来
+            for (CanalEntry.RowData rowData : rowChage.getRowDatasList()) {
+                AbstractCanalDbHandler canalDbHandler = tableNameHandlerMap.get(tableName);
+                if (canalDbHandler == null) {
+                    log.warn("{}没有对应的处理器", tableName);
+                    continue;
+                }
+
+                try {
+                    DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.CSO.name());
+                    canalDbHandler.processRow(rowData, eventType, dataSourceEnum);
+                }catch (Exception e){
+                    log.error("处理数据异常", e);
+                } finally {
+                    DynamicDataSourceContextHolder.clearDataSourceType();
+                }
+            }
+        }
+    }
+}

+ 18 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/DataSourceEnum.java

@@ -0,0 +1,18 @@
+package com.retdata.yaoyibi.canal;
+
+import lombok.Getter;
+
+@Getter
+public enum DataSourceEnum {
+    CSO(1, "CSO"),
+    LUOXIN_CSO(2, "LUOXIN_CSO");
+
+    DataSourceEnum(int code, String desc){
+        this.code = code;
+        this.desc = desc;
+    }
+
+    private int code;
+
+    private String desc;
+}

+ 66 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/AbstractCanalDbHandler.java

@@ -0,0 +1,66 @@
+package com.retdata.yaoyibi.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 java.util.*;
+
+public abstract class AbstractCanalDbHandler {
+
+    protected final static Set<Integer> LUOXIN_DEPTID = new HashSet<>(Arrays.asList(1611890612,1611890613,1611890616,
+            1611890617,1611890618,1611890622,1611890626,1611890627,1611890628,1611890629,1611890630,1611890631,1611890633,1611890634,1611890653,1611890671,1611890652,1611890651,1611890650,1611890635,1611890673,1611890672,1611890666,1611890637,1611890682,1611890684,1611890674,1611890663,1611890646,1611890667,1611890689,1611890677,1611890676,1611890675,1611890661,1611890706,1611890705,1611890614,1611890694,1611890658,1611890705,1611890706,1611890694,1611890674,1611890676,1611890724,1611890666,1611890660));
+
+    /**
+     * 罗欣切换服务器时cso最大deptid
+     */
+    protected final static Integer MAX_CSO_DEPTID = 1611890730;
+
+    public abstract String tableName();
+
+    public abstract void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum);
+
+
+    /**
+     * 将Canal的Column列表转换为JSON对象
+     * @param columns Canal的列数据列表
+     * @return JSON对象字符串
+     */
+    protected String columnsToJson(List<CanalEntry.Column> columns) {
+        Map<String, String> data = new HashMap<>();
+        for (CanalEntry.Column column : columns) {
+            data.put(StrUtil.toCamelCase(column.getName()), column.getValue());
+        }
+        return JSONObject.toJSONString(data);
+    }
+
+    /**
+     * 忽略指定部门ID的列数据
+     * CSO数据源,排除指定的罗欣部门ID
+     * LUOXIN_CSO数据源,排除罗欣服务器迁移前非罗欣的部门ID
+     * @param dataSourceEnum
+     * @param strDeptId
+     * @param column
+     * @return
+     */
+    protected boolean ignoreDeptId(DataSourceEnum dataSourceEnum, String strDeptId, CanalEntry.Column column){
+        if(StrUtil.isBlank(strDeptId)){
+            return false;
+        }
+
+        Integer deptId = Integer.parseInt(strDeptId);
+
+        if(dataSourceEnum == DataSourceEnum.CSO){
+            if(LUOXIN_DEPTID.contains(deptId)){
+                return true;
+            }
+        }else if(dataSourceEnum == DataSourceEnum.LUOXIN_CSO){
+            if(deptId<=MAX_CSO_DEPTID && !LUOXIN_DEPTID.contains(deptId)){
+                return true;
+            }
+        }
+        return false;
+    }
+}

+ 75 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/ContractedProductChangeHandler.java

@@ -0,0 +1,75 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class ContractedProductChangeHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "contracted_product_change";
+
+    @Autowired
+    private ContractedProductChangeService contractedProductChangeService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<ContractedProductChange> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(ContractedProductChange::getId, valId).eq(ContractedProductChange::getDbSourceId, valSource);
+            contractedProductChangeService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            ContractedProductChange contractedProductChange = JSON.parseObject(jsonStr, ContractedProductChange.class);
+            contractedProductChange.setDbSourceId(valSource);
+
+            contractedProductChangeService.save(contractedProductChange);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                    break;
+                }
+            }
+            LambdaQueryWrapper<ContractedProductChange> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(ContractedProductChange::getId, valId)
+                    .eq(ContractedProductChange::getDbSourceId, valSource);
+
+            ContractedProductChange contractedProductChange = JSON.parseObject(jsonStr, ContractedProductChange.class);
+            contractedProductChange.setDbSourceId(valSource);
+
+            if(!contractedProductChangeService.exists(queryWrapper)){
+                contractedProductChangeService.save(contractedProductChange);
+            }else {
+                contractedProductChangeService.update(contractedProductChange, queryWrapper);
+            }
+        }
+    }
+}

+ 111 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptHandler.java

@@ -0,0 +1,111 @@
+package com.retdata.yaoyibi.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.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 {
+    private final static String TABLE_NAME = "sys_dept";
+
+    @Autowired
+    private CsoSysDeptService csoSysDeptService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")){
+                    valId = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, valId, column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<CsoSysDept> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysDept::getDeptId, valId).eq(CsoSysDept::getDbSourceId, valSource);
+            csoSysDeptService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            CsoSysDept csoSysDept = JSON.parseObject(jsonStr, CsoSysDept.class);
+            csoSysDept.setDbSourceId(valSource);
+
+            csoSysDeptService.save(csoSysDept);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("dept_id")){
+                    valId = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, valId, column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<CsoSysDept> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysDept::getDeptId, valId)
+                    .eq(CsoSysDept::getDbSourceId, valSource);
+
+            CsoSysDept csoSysDept = JSON.parseObject(jsonStr, CsoSysDept.class);
+            csoSysDept.setDbSourceId(valSource);
+
+            if(!csoSysDeptService.exists(queryWrapper)){
+                csoSysDeptService.save(csoSysDept);
+            }else {
+                csoSysDeptService.update(csoSysDept, queryWrapper);
+            }
+        }
+    }
+}

+ 134 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptRelationHandler.java

@@ -0,0 +1,134 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysDeptRelationHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_dept_relation";
+
+    @Autowired
+    private SysDeptRelationService sysDeptRelationService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String ancestor = "";
+            String descendant = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("ancestor")){
+                    ancestor = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, ancestor, column)){
+                        ignoreDeptId = true;
+                    }
+                }else if(column.getName().equals("descendant")){
+                    descendant = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, descendant, column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysDeptRelation> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysDeptRelation::getAncestor, ancestor)
+                    .eq(SysDeptRelation::getDescendant, descendant)
+                    .eq(SysDeptRelation::getDbSourceId, valSource);
+            sysDeptRelationService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String ancestor = "";
+            String descendant = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("ancestor")){
+                    ancestor = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, ancestor, column)){
+                        ignoreDeptId = true;
+                    }
+                }else if(column.getName().equals("descendant")){
+                    descendant = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, descendant, column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            SysDeptRelation sysDeptRelation = JSON.parseObject(jsonStr, SysDeptRelation.class);
+            sysDeptRelation.setDbSourceId(valSource);
+
+            sysDeptRelationService.save(sysDeptRelation);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String ancestor = "";
+            String descendant = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("ancestor")){
+                    ancestor = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, ancestor, column)){
+                        ignoreDeptId = true;
+                    }
+                }else if(column.getName().equals("descendant")){
+                    descendant = column.getValue();
+
+                    if(ignoreDeptId(dataSourceEnum, descendant, column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysDeptRelation> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysDeptRelation::getAncestor, ancestor)
+                    .eq(SysDeptRelation::getDescendant, descendant)
+                    .eq(SysDeptRelation::getDbSourceId, valSource);
+
+            SysDeptRelation sysDeptRelation = JSON.parseObject(jsonStr, SysDeptRelation.class);
+            sysDeptRelation.setDbSourceId(valSource);
+
+            if(!sysDeptRelationService.exists(queryWrapper)){
+                sysDeptRelationService.save(sysDeptRelation);
+            }else {
+                sysDeptRelationService.update(sysDeptRelation, queryWrapper);
+            }
+        }
+    }
+}

+ 109 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDeptSubHandler.java

@@ -0,0 +1,109 @@
+package com.retdata.yaoyibi.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.SysDeptSub;
+import com.retdata.yaoyibi.service.SysDeptSubService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class SysDeptSubHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_dept_sub";
+
+    @Autowired
+    private SysDeptSubService sysDeptSubService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("sub_id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysDeptSub> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysDeptSub::getSubId, valId).eq(SysDeptSub::getDbSourceId, valSource);
+            sysDeptSubService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            SysDeptSub sysDeptSub = JSON.parseObject(jsonStr, SysDeptSub.class);
+            sysDeptSub.setDbSourceId(valSource);
+
+            sysDeptSubService.save(sysDeptSub);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("sub_id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysDeptSub> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysDeptSub::getSubId, valId)
+                    .eq(SysDeptSub::getDbSourceId, valSource);
+
+            SysDeptSub sysDeptSub = JSON.parseObject(jsonStr, SysDeptSub.class);
+            sysDeptSub.setDbSourceId(valSource);
+
+            if(!sysDeptSubService.exists(queryWrapper)){
+                sysDeptSubService.save(sysDeptSub);
+            }else {
+                sysDeptSubService.update(sysDeptSub, queryWrapper);
+            }
+        }
+    }
+}

+ 75 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysDictItemHandler.java

@@ -0,0 +1,75 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysDictItemHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_dict_item";
+
+    @Autowired
+    private CsoSysDictItemService csoSysDictItemService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<CsoSysDictItem> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysDictItem::getId, valId).eq(CsoSysDictItem::getDbSourceId, valSource);
+            csoSysDictItemService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            CsoSysDictItem csoSysDictItem = JSON.parseObject(jsonStr, CsoSysDictItem.class);
+            csoSysDictItem.setDbSourceId(valSource);
+
+            csoSysDictItemService.save(csoSysDictItem);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                    break;
+                }
+            }
+            LambdaQueryWrapper<CsoSysDictItem> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysDictItem::getId, valId)
+                    .eq(CsoSysDictItem::getDbSourceId, valSource);
+
+            CsoSysDictItem csoSysDictItem = JSON.parseObject(jsonStr, CsoSysDictItem.class);
+            csoSysDictItem.setDbSourceId(valSource);
+
+            if(!csoSysDictItemService.exists(queryWrapper)){
+                csoSysDictItemService.save(csoSysDictItem);
+            }else {
+                csoSysDictItemService.update(csoSysDictItem, queryWrapper);
+            }
+        }
+    }
+}

+ 75 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysFinancialGmvSettleDataHandler.java

@@ -0,0 +1,75 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysFinancialGmvSettleDataHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_financial_gmv_settle_data";
+
+    @Autowired
+    private SysFinancialGmvSettleDataService sysFinancialGmvSettleDataService;
+    
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<SysFinancialGmvSettleData> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysFinancialGmvSettleData::getId, valId).eq(SysFinancialGmvSettleData::getDbSourceId, valSource);
+            sysFinancialGmvSettleDataService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            SysFinancialGmvSettleData sysFinancialGmvSettleData = JSON.parseObject(jsonStr, SysFinancialGmvSettleData.class);
+            sysFinancialGmvSettleData.setDbSourceId(valSource);
+
+            sysFinancialGmvSettleDataService.save(sysFinancialGmvSettleData);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                    break;
+                }
+            }
+            LambdaQueryWrapper<SysFinancialGmvSettleData> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysFinancialGmvSettleData::getId, valId)
+                    .eq(SysFinancialGmvSettleData::getDbSourceId, valSource);
+
+            SysFinancialGmvSettleData sysFinancialGmvSettleData = JSON.parseObject(jsonStr, SysFinancialGmvSettleData.class);
+            sysFinancialGmvSettleData.setDbSourceId(valSource);
+
+            if(!sysFinancialGmvSettleDataService.exists(queryWrapper)){
+                sysFinancialGmvSettleDataService.save(sysFinancialGmvSettleData);
+            }else {
+                sysFinancialGmvSettleDataService.update(sysFinancialGmvSettleData, queryWrapper);
+            }
+        }
+    }
+}

+ 113 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysImplPlanHandler.java

@@ -0,0 +1,113 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysImplPlanHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_impl_plan";
+
+    @Autowired
+    private SysImplPlanService sysImplPlanService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("plan_id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("consignor_id")
+                        ||column.getName().equals("consignee_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysImplPlan> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysImplPlan::getPlanId, valId).eq(SysImplPlan::getDbSourceId, valSource);
+            sysImplPlanService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("consignor_id")
+                        ||column.getName().equals("consignee_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            SysImplPlan sysImplPlan = JSON.parseObject(jsonStr, SysImplPlan.class);
+            sysImplPlan.setDbSourceId(valSource);
+
+            sysImplPlanService.save(sysImplPlan);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("plan_id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("consignor_id")
+                        ||column.getName().equals("consignee_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysImplPlan> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysImplPlan::getPlanId, valId)
+                    .eq(SysImplPlan::getDbSourceId, valSource);
+
+            SysImplPlan sysImplPlan = JSON.parseObject(jsonStr, SysImplPlan.class);
+            sysImplPlan.setDbSourceId(valSource);
+
+            if(!sysImplPlanService.exists(queryWrapper)){
+                sysImplPlanService.save(sysImplPlan);
+            }else {
+                sysImplPlanService.update(sysImplPlan, queryWrapper);
+            }
+        }
+    }
+}

+ 75 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysRoleHandler.java

@@ -0,0 +1,75 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysRoleHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_role";
+
+    @Autowired
+    private CsoSysRoleService csoSysRoleService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("role_id")){
+                    valId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<CsoSysRole> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysRole::getRoleId, valId).eq(CsoSysRole::getDbSourceId, valSource);
+            csoSysRoleService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            CsoSysRole csoSysRole = JSON.parseObject(jsonStr, CsoSysRole.class);
+            csoSysRole.setDbSourceId(valSource);
+
+            csoSysRoleService.save(csoSysRole);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("role_id")){
+                    valId = column.getValue();
+                    break;
+                }
+            }
+            LambdaQueryWrapper<CsoSysRole> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysRole::getRoleId, valId)
+                    .eq(CsoSysRole::getDbSourceId, valSource);
+
+            CsoSysRole csoSysRole = JSON.parseObject(jsonStr, CsoSysRole.class);
+            csoSysRole.setDbSourceId(valSource);
+
+            if(!csoSysRoleService.exists(queryWrapper)){
+                csoSysRoleService.save(csoSysRole);
+            }else {
+                csoSysRoleService.update(csoSysRole, queryWrapper);
+            }
+        }
+    }
+}

+ 113 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserHandler.java

@@ -0,0 +1,113 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysUserHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_user";
+
+    @Autowired
+    private CsoSysUserService csoSysUserService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("user_id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")
+                        ||column.getName().equals("drugEnt_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<CsoSysUser> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysUser::getUserId, valId).eq(CsoSysUser::getDbSourceId, valSource);
+            csoSysUserService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")
+                        ||column.getName().equals("drugEnt_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            CsoSysUser csoSysUser = JSON.parseObject(jsonStr, CsoSysUser.class);
+            csoSysUser.setDbSourceId(valSource);
+
+            csoSysUserService.save(csoSysUser);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("user_id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")
+                        ||column.getName().equals("drugEnt_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<CsoSysUser> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysUser::getUserId, valId)
+                    .eq(CsoSysUser::getDbSourceId, valSource);
+
+            CsoSysUser csoSysUser = JSON.parseObject(jsonStr, CsoSysUser.class);
+            csoSysUser.setDbSourceId(valSource);
+
+            if(!csoSysUserService.exists(queryWrapper)){
+                csoSysUserService.save(csoSysUser);
+            }else {
+                csoSysUserService.update(csoSysUser, queryWrapper);
+            }
+        }
+    }
+}

+ 83 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserRoleHandler.java

@@ -0,0 +1,83 @@
+package com.retdata.yaoyibi.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.CsoSysUserRole;
+import com.retdata.yaoyibi.service.SysUserRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class SysUserRoleHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_user_role";
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String userId = "";
+            String roleId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("user_id")){
+                    userId = column.getValue();
+                }else if(column.getName().equals("role_id")){
+                    roleId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<CsoSysUserRole> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysUserRole::getUserId, userId)
+                    .eq(CsoSysUserRole::getRoleId, roleId)
+                    .eq(CsoSysUserRole::getDbSourceId, valSource);
+            sysUserRoleService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            CsoSysUserRole sysUserRole = JSON.parseObject(jsonStr, CsoSysUserRole.class);
+            sysUserRole.setDbSourceId(valSource);
+
+            sysUserRoleService.save(sysUserRole);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String userId = "";
+            String roleId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("user_id")){
+                    userId = column.getValue();
+                }else if(column.getName().equals("role_id")){
+                    roleId = column.getValue();
+                }
+            }
+
+            LambdaQueryWrapper<CsoSysUserRole> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CsoSysUserRole::getUserId, userId)
+                    .eq(CsoSysUserRole::getRoleId, roleId)
+                    .eq(CsoSysUserRole::getDbSourceId, valSource);
+
+            CsoSysUserRole sysUserRole = JSON.parseObject(jsonStr, CsoSysUserRole.class);
+            sysUserRole.setDbSourceId(valSource);
+
+            if(!sysUserRoleService.exists(queryWrapper)){
+                sysUserRoleService.save(sysUserRole);
+            }else {
+                sysUserRoleService.update(sysUserRole, queryWrapper);
+            }
+        }
+    }
+}

+ 110 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/SysUserSubHandler.java

@@ -0,0 +1,110 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class SysUserSubHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "sys_user_sub";
+
+    @Autowired
+    private SysUserSubService sysUserSubService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+                    Integer deptId = Integer.valueOf(column.getValue());
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysUserSub> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysUserSub::getId, valId).eq(SysUserSub::getDbSourceId, valSource);
+            sysUserSubService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            SysUserSub sysUserSub = JSON.parseObject(jsonStr, SysUserSub.class);
+            sysUserSub.setDbSourceId(valSource);
+
+            sysUserSubService.save(sysUserSub);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<SysUserSub> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SysUserSub::getId, valId)
+                    .eq(SysUserSub::getDbSourceId, valSource);
+
+            SysUserSub sysUserSub = JSON.parseObject(jsonStr, SysUserSub.class);
+            sysUserSub.setDbSourceId(valSource);
+
+            if(!sysUserSubService.exists(queryWrapper)){
+                sysUserSubService.save(sysUserSub);
+            }else {
+                sysUserSubService.update(sysUserSub, queryWrapper);
+            }
+        }
+    }
+}

+ 109 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaAgentHandler.java

@@ -0,0 +1,109 @@
+package com.retdata.yaoyibi.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.WmDaAgent;
+import com.retdata.yaoyibi.service.WmDaAgentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class WmDaAgentHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_da_agent";
+
+    @Autowired
+    private WmDaAgentService wmDaAgentService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("drug_ent_id")
+                        ||column.getName().equals("dept_id")){
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmDaAgent> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmDaAgent::getId, valId).eq(WmDaAgent::getDbSourceId, valSource);
+            wmDaAgentService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("drug_ent_id")
+                        ||column.getName().equals("dept_id")){
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmDaAgent wmDaAgent = JSON.parseObject(jsonStr, WmDaAgent.class);
+            wmDaAgent.setDbSourceId(valSource);
+
+            wmDaAgentService.save(wmDaAgent);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("drug_ent_id")
+                        ||column.getName().equals("dept_id")){
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmDaAgent> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmDaAgent::getId, valId)
+                    .eq(WmDaAgent::getDbSourceId, valSource);
+
+            WmDaAgent wmDaAgent = JSON.parseObject(jsonStr, WmDaAgent.class);
+            wmDaAgent.setDbSourceId(valSource);
+
+            if(!wmDaAgentService.exists(queryWrapper)){
+                wmDaAgentService.save(wmDaAgent);
+            }else {
+                wmDaAgentService.update(wmDaAgent, queryWrapper);
+            }
+        }
+    }
+}

+ 109 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaDrugEntDrugtableHandler.java

@@ -0,0 +1,109 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class WmDaDrugEntDrugtableHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_da_drug_ent_drugtable";
+
+    @Autowired
+    private WmDaDrugEntDrugtableService wmDaDrugEntDrugtableService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("drug_ent_id")){
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmDaDrugEntDrugtable> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmDaDrugEntDrugtable::getId, valId).eq(WmDaDrugEntDrugtable::getDbSourceId, valSource);
+            wmDaDrugEntDrugtableService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("drug_ent_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmDaDrugEntDrugtable wmDaDrugEntDrugtable = JSON.parseObject(jsonStr, WmDaDrugEntDrugtable.class);
+            wmDaDrugEntDrugtable.setDbSourceId(valSource);
+
+            wmDaDrugEntDrugtableService.save(wmDaDrugEntDrugtable);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("drug_ent_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmDaDrugEntDrugtable> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmDaDrugEntDrugtable::getId, valId)
+                    .eq(WmDaDrugEntDrugtable::getDbSourceId, valSource);
+
+            WmDaDrugEntDrugtable wmDaDrugEntDrugtable = JSON.parseObject(jsonStr, WmDaDrugEntDrugtable.class);
+            wmDaDrugEntDrugtable.setDbSourceId(valSource);
+
+            if(!wmDaDrugEntDrugtableService.exists(queryWrapper)){
+                wmDaDrugEntDrugtableService.save(wmDaDrugEntDrugtable);
+            }else {
+                wmDaDrugEntDrugtableService.update(wmDaDrugEntDrugtable, queryWrapper);
+            }
+        }
+    }
+}

+ 110 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmDaDrugEntHandler.java

@@ -0,0 +1,110 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class WmDaDrugEntHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_da_drug_ent";
+
+    @Autowired
+    private WmDaDrugEntService wmDaDrugEntService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmDaDrugEnt> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmDaDrugEnt::getId, valId).eq(WmDaDrugEnt::getDbSourceId, valSource);
+            wmDaDrugEntService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmDaDrugEnt wmDaDrugEnt = JSON.parseObject(jsonStr, WmDaDrugEnt.class);
+            wmDaDrugEnt.setDbSourceId(valSource);
+
+            wmDaDrugEntService.save(wmDaDrugEnt);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmDaDrugEnt> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmDaDrugEnt::getId, valId)
+                    .eq(WmDaDrugEnt::getDbSourceId, valSource);
+
+            WmDaDrugEnt wmDaDrugEnt = JSON.parseObject(jsonStr, WmDaDrugEnt.class);
+            wmDaDrugEnt.setDbSourceId(valSource);
+
+            if(!wmDaDrugEntService.exists(queryWrapper)){
+                wmDaDrugEntService.save(wmDaDrugEnt);
+            }else {
+                wmDaDrugEntService.update(wmDaDrugEnt, queryWrapper);
+            }
+        }
+    }
+}

+ 112 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageHandler.java

@@ -0,0 +1,112 @@
+package com.retdata.yaoyibi.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.retdata.yaoyibi.service.WmScorePackageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class WmScorePackageHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_score_package";
+
+    @Autowired
+    private WmScorePackageService wmScorePackageService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("send_package_dept_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmScorePackage> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackage::getId, valId).eq(WmScorePackage::getDbSourceId, valSource);
+            wmScorePackageService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("send_package_dept_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmScorePackage wmScorePackage = JSON.parseObject(jsonStr, WmScorePackage.class);
+            wmScorePackage.setDbSourceId(valSource);
+
+            wmScorePackageService.save(wmScorePackage);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("send_package_dept_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmScorePackage> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackage::getId, valId)
+                    .eq(WmScorePackage::getDbSourceId, valSource);
+
+            WmScorePackage wmScorePackage = JSON.parseObject(jsonStr, WmScorePackage.class);
+            wmScorePackage.setDbSourceId(valSource);
+
+            if(!wmScorePackageService.exists(queryWrapper)){
+                wmScorePackageService.save(wmScorePackage);
+            }else {
+                wmScorePackageService.update(wmScorePackage, queryWrapper);
+            }
+        }
+    }
+}

+ 74 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageSettleNoteHandler.java

@@ -0,0 +1,74 @@
+package com.retdata.yaoyibi.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.WmScorePackageSettleNote;
+import com.retdata.yaoyibi.service.WmScorePackageSettleNoteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class WmScorePackageSettleNoteHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_score_package_settle_note";
+
+    @Autowired
+    private WmScorePackageSettleNoteService wmScorePackageSettleNoteService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<WmScorePackageSettleNote> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackageSettleNote::getId, valId).eq(WmScorePackageSettleNote::getDbSourceId, valSource);
+            wmScorePackageSettleNoteService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            WmScorePackageSettleNote wmScorePackageSettleNote = JSON.parseObject(jsonStr, WmScorePackageSettleNote.class);
+            wmScorePackageSettleNote.setDbSourceId(valSource);
+
+            wmScorePackageSettleNoteService.save(wmScorePackageSettleNote);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                    break;
+                }
+            }
+            LambdaQueryWrapper<WmScorePackageSettleNote> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackageSettleNote::getId, valId)
+                    .eq(WmScorePackageSettleNote::getDbSourceId, valSource);
+
+            WmScorePackageSettleNote wmScorePackageSettleNote = JSON.parseObject(jsonStr, WmScorePackageSettleNote.class);
+            wmScorePackageSettleNote.setDbSourceId(valSource);
+
+            if(!wmScorePackageSettleNoteService.exists(queryWrapper)){
+                wmScorePackageSettleNoteService.save(wmScorePackageSettleNote);
+            }else {
+                wmScorePackageSettleNoteService.update(wmScorePackageSettleNote, queryWrapper);
+            }
+        }
+    }
+}

+ 109 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmScorePackageStatusHandler.java

@@ -0,0 +1,109 @@
+package com.retdata.yaoyibi.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.WmScorePackageStatus;
+import com.retdata.yaoyibi.service.WmScorePackageStatusService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class WmScorePackageStatusHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_score_package_status";
+
+    @Autowired
+    private WmScorePackageStatusService wmScorePackageStatusService;
+    
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmScorePackageStatus> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackageStatus::getId, valId).eq(WmScorePackageStatus::getDbSourceId, valSource);
+            wmScorePackageStatusService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmScorePackageStatus contractedProductChange = JSON.parseObject(jsonStr, WmScorePackageStatus.class);
+            contractedProductChange.setDbSourceId(valSource);
+
+            wmScorePackageStatusService.save(contractedProductChange);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmScorePackageStatus> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackageStatus::getId, valId)
+                    .eq(WmScorePackageStatus::getDbSourceId, valSource);
+
+            WmScorePackageStatus contractedProductChange = JSON.parseObject(jsonStr, WmScorePackageStatus.class);
+            contractedProductChange.setDbSourceId(valSource);
+
+            if(!wmScorePackageStatusService.exists(queryWrapper)){
+                wmScorePackageStatusService.save(contractedProductChange);
+            }else {
+                wmScorePackageStatusService.update(contractedProductChange, queryWrapper);
+            }
+        }
+    }
+}

+ 114 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmTaskHandler.java

@@ -0,0 +1,114 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class WmTaskHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_task";
+
+    @Autowired
+    private WmTaskService wmTaskService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("drug_ent_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmTask> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmTask::getId, valId).eq(WmTask::getDbSourceId, valSource);
+            wmTaskService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("drug_ent_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmTask wmTask = JSON.parseObject(jsonStr, WmTask.class);
+            wmTask.setDbSourceId(valSource);
+
+            wmTaskService.save(wmTask);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("drug_ent_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmTask> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmTask::getId, valId)
+                    .eq(WmTask::getDbSourceId, valSource);
+
+            WmTask wmTask = JSON.parseObject(jsonStr, WmTask.class);
+            wmTask.setDbSourceId(valSource);
+
+            if(!wmTaskService.exists(queryWrapper)){
+                wmTaskService.save(wmTask);
+            }else {
+                wmTaskService.update(wmTask, queryWrapper);
+            }
+        }
+    }
+}

+ 118 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmTaskTypeHandler.java

@@ -0,0 +1,118 @@
+package com.retdata.yaoyibi.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.WmTaskType;
+import com.retdata.yaoyibi.service.WmTaskTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class WmTaskTypeHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_task_type";
+
+    @Autowired
+    private WmTaskTypeService wmTaskTypeService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("durgent_id")
+                        ||column.getName().equals("level1_id")
+                        ||column.getName().equals("task_ent_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmTaskType> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmTaskType::getId, valId).eq(WmTaskType::getDbSourceId, valSource);
+            wmTaskTypeService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("durgent_id")
+                        ||column.getName().equals("level1_id")
+                        ||column.getName().equals("task_ent_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            WmTaskType wmTaskType = JSON.parseObject(jsonStr, WmTaskType.class);
+            wmTaskType.setDbSourceId(valSource);
+
+            wmTaskTypeService.save(wmTaskType);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            boolean ignoreDeptId = false;
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("id")){
+                    valId = column.getValue();
+                }else if(column.getName().equals("durgent_id")
+                        ||column.getName().equals("level1_id")
+                        ||column.getName().equals("task_ent_id")
+                        ||column.getName().equals("dept_id")){
+
+                    if(ignoreDeptId(dataSourceEnum, column.getValue(), column)){
+                        ignoreDeptId = true;
+                    }
+                }
+            }
+
+            if(ignoreDeptId){
+                return;
+            }
+
+            LambdaQueryWrapper<WmTaskType> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmTaskType::getId, valId)
+                    .eq(WmTaskType::getId, valSource);
+
+            WmTaskType wmTaskType = JSON.parseObject(jsonStr, WmTaskType.class);
+            wmTaskType.setDbSourceId(valSource);
+
+            if(!wmTaskTypeService.exists(queryWrapper)){
+                wmTaskTypeService.save(wmTaskType);
+            }else {
+                wmTaskTypeService.update(wmTaskType, queryWrapper);
+            }
+        }
+    }
+}

+ 75 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/canal/handler/WmUserPlatQuizResHandler.java

@@ -0,0 +1,75 @@
+package com.retdata.yaoyibi.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.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;
+
+import java.util.List;
+
+@Component
+public class WmUserPlatQuizResHandler extends AbstractCanalDbHandler {
+    private final static String TABLE_NAME = "wm_user_plat_quiz_res";
+
+    @Autowired
+    private WmUserPlatQuizResService wmUserPlatQuizResService;
+
+    public String tableName() {
+        return TABLE_NAME;
+    }
+
+    public void processRow(CanalEntry.RowData rowData, CanalEntry.EventType eventType, DataSourceEnum dataSourceEnum) {
+        Integer valSource = dataSourceEnum.getCode();
+
+        //如果是删除语句
+        if (eventType == CanalEntry.EventType.DELETE) {
+            List<CanalEntry.Column> columns = rowData.getBeforeColumnsList();
+
+            String valId = "";
+            for(CanalEntry.Column column : columns){
+                if(column.getName().equals("res_id")){
+                    valId = column.getValue();
+                }
+            }
+            LambdaQueryWrapper<WmUserPlatQuizRes> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmUserPlatQuizRes::getResultId, valId).eq(WmUserPlatQuizRes::getDbSourceId, valSource);
+            wmUserPlatQuizResService.delete(queryWrapper);
+        } else if (eventType == CanalEntry.EventType.INSERT) {
+            List<CanalEntry.Column> columns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(columns);
+
+            WmUserPlatQuizRes wmUserPlatQuizRes = JSON.parseObject(jsonStr, WmUserPlatQuizRes.class);
+            wmUserPlatQuizRes.setDbSourceId(valSource);
+
+            wmUserPlatQuizResService.save(wmUserPlatQuizRes);
+        } else if (eventType == CanalEntry.EventType.UPDATE) {
+            List<CanalEntry.Column> afterColumns = rowData.getAfterColumnsList();
+            String jsonStr = columnsToJson(afterColumns);
+
+            String valId = "";
+            for(CanalEntry.Column column : afterColumns){
+                if(column.getName().equals("res_id")){
+                    valId = column.getValue();
+                    break;
+                }
+            }
+            LambdaQueryWrapper<WmUserPlatQuizRes> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmUserPlatQuizRes::getResultId, valId)
+                    .eq(WmUserPlatQuizRes::getDbSourceId, valSource);
+
+            WmUserPlatQuizRes wmUserPlatQuizRes = JSON.parseObject(jsonStr, WmUserPlatQuizRes.class);
+            wmUserPlatQuizRes.setDbSourceId(valSource);
+
+            if(!wmUserPlatQuizResService.exists(queryWrapper)){
+                wmUserPlatQuizResService.save(wmUserPlatQuizRes);
+            }else {
+                wmUserPlatQuizResService.update(wmUserPlatQuizRes, queryWrapper);
+            }
+        }
+    }
+}

+ 52 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/ContractedProductChange.java

@@ -0,0 +1,52 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 签约产品变更表
+ * @TableName contracted_product_change
+ */
+@TableName(value ="contracted_product_change")
+@Data
+public class ContractedProductChange implements Serializable {
+
+    private static final long serialVersionUID = -8675941878150518321L;
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 主体名称:药企-deptName; 派工企业-gsmc
+     */
+    private String objectName;
+
+    /**
+     * 主体类型:药企、派工企业
+     */
+    private String objectType;
+
+    /**
+     * 签约产品
+     */
+    private String signProduct;
+
+    /**
+     * 操作变更人
+     */
+    private Integer operator;
+
+    /**
+     * 变更时间
+     */
+    private LocalDateTime changeTime;
+
+    private Integer dbSourceId;
+}

+ 133 - 6
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysDept.java

@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
 /**
  * 企业信息
  */
@@ -13,21 +16,145 @@ import lombok.Data;
 public class CsoSysDept {
     @TableId(type = IdType.AUTO)
     private Integer deptId;
+
+    /**
+     * 部门名称
+     */
     private String name;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 修改时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 删除标记:0(未删除),1(已删除)
+     */
+    private String delFlag;
+
+    /**
+     * 父级id
+     */
+    private Integer parentId;
+
+    /**
+     * 租户id
+     */
+    private Integer tenantId;
+
+    private String deptCode;
+
     /**
-     * 级别,从1开始,1要易业务管理平台,2药企,3一级CSO,4二级CSO,5其他
+     * 级别
      */
     private Integer level;
+
+    /**
+     * 药企名称
+     */
+    private String level1Name;
+
+    /**
+     * 药企ID
+     */
+    private Integer level1Id;
+
+    /**
+     * 一级代理商名称
+     */
+    private String level2Name;
+
+    /**
+     * 一级代理商ID
+     */
+    private Integer level2Id;
+
+    /**
+     * 二级代理商名称
+     */
+    private String level3Name;
+
+    /**
+     * 二级代理商ID
+     */
+    private Integer level3Id;
+
+    private String appId;
+
+    private String appSecret;
+
+    private String rsaPublicKey;
+
+    private String queryUrl;
+
+    /**
+     * 结算主体
+     */
+    private String subjectName;
+
     /**
-     * 签约灵工状态
+     * 结算主体类型:0->人力家,1->税邦云
      */
     private String subjectType;
+
     /**
-     * 企业统一社会信用代码
+     * 税号
      */
-    private String deptCode;
+    private String taxCode;
+
     /**
-     * 删除标志(0代表存在 1代表删除)
+     * 部门专用权限限制(字符串逗号分隔:0.导出
      */
-    private String delFlag;
+    private String deptPermissions;
+
+    /**
+     * gmv1收益率(万分之)
+     */
+    private Integer gmv1Rate;
+
+    /**
+     * gmv2收益率(万分之)
+     */
+    private Integer gmv2Rate;
+
+    /**
+     * 人力家服务费(万分之)
+     */
+    private Integer renlijiaServiceChargeRate;
+
+    /**
+     * 批量结算权限
+     */
+    private String deptBatchSettleType;
+
+    private LocalDate issueDate;
+
+    private LocalDate expiryDate;
+
+    /**
+     * 财务复核方式
+     */
+    private String financialReviewType;
+
+    /**
+     * 邮箱(多个逗号分隔)
+     */
+    private String emails;
+
+    /**
+     * 爱签account
+     */
+    private String asignAccount;
+
+    private Integer dbSourceId;
 }

+ 39 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysDictItem.java

@@ -2,9 +2,12 @@ package com.retdata.yaoyibi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.time.LocalDateTime;
+
 @Data
 @TableName("sys_dict_item")
 public class CsoSysDictItem {
@@ -12,12 +15,47 @@ public class CsoSysDictItem {
     public static final String TYPE = "type";
     public static final String DEL_FLAG = "del_flag";
     public static final String SORT = "sort";
+    public static final String DB_SOURCE_ID = "db_source_id";
     
     @TableId(type = IdType.AUTO)
     private Integer id;
+
+
+    private Integer dictId;
+
     private String value;
+
     private String label;
+
     private String type;
-    private String delFlag;
+
+    private String description;
+
+    /**
+     * 排序(升序)
+     */
     private Integer sort;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    private String remarks;
+
+    private String delFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    private String externalValue;
+
+    private Integer dbSourceId;
 }

+ 24 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysRole.java

@@ -2,13 +2,37 @@ package com.retdata.yaoyibi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
 @Data
 @TableName("sys_role")
 public class CsoSysRole {
     @TableId(type = IdType.AUTO)
     private Integer roleId;
+
     private String roleName;
+
+    private String roleCode;
+
+    private String roleDesc;
+
+    private String dsType;
+
+    private String dsScope;
+
+    private LocalDateTime createTime;
+
+    private LocalDateTime updateTime;
+
+    private String delFlag;
+
+    private Integer tenantId;
+
+    private Integer dbSourceId;
 }

+ 238 - 19
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysUser.java

@@ -2,9 +2,12 @@ package com.retdata.yaoyibi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 @Data
@@ -12,59 +15,275 @@ import java.util.Date;
 public class CsoSysUser {
     @TableId(type = IdType.AUTO)
     private Integer userId;
-    
-    private Integer deptId;
-    
-    private String drugEntId;
+
+    private String username;
+
+    private String password;
+
+    private String salt;
+
+    private String phone;
+
+    private String avatar;
 
     /**
-     * 用户
+     * 部门ID
      */
-    private String realname;
+    private Integer deptId;
+
+    private Integer groupId;
 
     /**
-     * 手机号
+     * 创建时间
      */
-    private String phone;
+    private LocalDateTime createTime;
 
     /**
-     * 是否删除标记
+     * 修改时间
      */
+    private LocalDateTime updateTime;
+
+    private String lockFlag;
+
     private String delFlag;
 
     /**
-     * 用户状态: 0-活跃, 9-锁定
+     * 微信登录openId
      */
-    private String lockFlag;
+    private String wxOpenid;
 
     /**
-     * 创建时间
+     * 小程序openId
      */
-    private Date createTime;
+    private String miniOpenid;
 
     /**
-     * 身份证号
+     * QQ openId
      */
-    private String idCardNumber;
+    private String qqOpenid;
 
     /**
-     * 性别
+     * 码云 标识
      */
-    private String gender;
+    private String giteeLogin;
 
     /**
-     * 学历
+     * 开源中国 标识
      */
-    private String degree;
+    private String oscId;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 用户姓名
+     */
+    private String realname;
 
+    /**
+     * 省
+     */
     private String province;
 
+    /**
+     * 市
+     */
     private String city;
 
+    /**
+     * 区
+     */
     private String area;
 
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 备用字段1
+     */
+    private String temp1;
+
+    /**
+     * 备用字段2
+     */
+    private String temp2;
+
+    /**
+     * 备用字段3
+     */
+    private String temp3;
+
+    /**
+     * 备用字段4
+     */
+    private String temp4;
+
+    /**
+     * 备用字段5
+     */
+    private String temp5;
+
+    /**
+     * 平台ID
+     */
+    private String platId;
+
+    /**
+     * 药企ID
+     */
+    private String drugEntId;
+
+    private String w1;
+
+    /**
+     * 身份证
+     */
+    private String idCardNumber;
+
+    /**
+     * 签名
+     */
+    private String userSign;
+
+    /**
+     * 认证状态
+     */
+    private Integer certStatus;
+
+    /**
+     * 认证结果描述
+     */
+    private String certRemark;
+
+    /**
+     * 省份编码
+     */
+    private String provinceCode;
+
+    /**
+     * 城市编码
+     */
+    private String cityCode;
+
+    /**
+     * 0-人力家 1-税邦云
+     */
+    private String userType;
+
+    /**
+     * 银行卡号
+     */
+    private String bankCardNumber;
+
+    /**
+     * 人力家认证状态
+     */
+    private Integer rljCertStatus;
+
+    /**
+     * 税邦云协议签署记录 0 未签署 1 已签署
+     */
+    private Integer taxHelperAgreementSignature;
+
+    /**
+     * HCP资质审核状态
+     */
+    private Integer hcpQualificationStatus;
+
+    /**
+     * HCP用户资质审核查询状态
+     */
+    private Integer hcpQualificationBriefStatus;
+
+    /**
+     * 医师执业资格证-照片页
+     */
+    private String doctorCertPhotoUrl;
+
+    /**
+     * 医师执业资格证-个人信息页
+     */
+    private String doctorCertInfoUrl;
+
+    /**
+     * 卫健委官网医师执业注册信息截图
+     */
+    private String doctorCertScreenshotUrl;
+
+    /**
+     * hcp信息采集第几步骤
+     */
+    private Integer hcpInfoCollectStep;
+
+    /**
+     * 银行预留手机号
+     */
+    private String bankPhone;
+
+    /**
+     * 开户行
+     */
+    private String bankName;
+
+    /**
+     * 小程序签署协议信息
+     */
+    private String signAgreement;
+
+    /**
+     * 年龄超60周岁提醒
+     */
+    private Integer ageReminder;
+
+    /**
+     * 是否已补签协议
+     */
+    private Integer reSignedAgreement;
+
+    /**
+     * 性别,1男,2女
+     */
+    private String gender;
+
+    /**
+     * 学历
+     */
+    private String degree;
+
+    /**
+     * 医药代表资质备案号
+     */
     private String qualificationRecordNumber;
 
+    /**
+     * 资质证书url
+     */
     private String qualificationsUrl;
 
+    /**
+     * 上次修改密码时间
+     */
+    private LocalDateTime latestChangePwdTime;
+
+    /**
+     * 黑名单
+     */
+    private Boolean blackName;
+
+    /**
+     * 全局唯一事务ID
+     */
+    private Long uuid;
+
+    /**
+     * 其他资质证书
+     */
+    private String qualificationsExtUrl;
+
+    private Integer dbSourceId;
+
 }

+ 36 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/CsoSysUserRole.java

@@ -0,0 +1,36 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.ruoyi.system.domain.SysUserRole;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户角色表
+ * </p>
+ *
+ * @author hnqz
+ * @since 2017-10-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_user_role")
+public class CsoSysUserRole extends Model<CsoSysUserRole> {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 用户ID
+	 */
+	private Integer userId;
+
+	/**
+	 * 角色ID
+	 */
+	private Integer roleId;
+
+	private Integer dbSourceId;
+
+}

+ 33 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysDeptRelation.java

@@ -0,0 +1,33 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 部门关系表
+ * </p>
+ *
+ * @author hnqz
+ * @since 2018-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysDeptRelation extends Model<SysDeptRelation> {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 祖先节点
+	 */
+	private Integer ancestor;
+
+	/**
+	 * 后代节点
+	 */
+	private Integer descendant;
+
+	private Integer dbSourceId;
+
+}

+ 119 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysDeptSub.java

@@ -0,0 +1,119 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 部门管理
+ *
+ * @author ryz
+ * @date 2021-04-19 16:02:30
+ */
+@Data
+@TableName(value = "sys_dept_sub", autoResultMap = true)
+@EqualsAndHashCode(callSuper = true)
+public class SysDeptSub extends Model<SysDeptSub> {
+
+	private static final long serialVersionUID = -1765712668252192954L;
+
+	@TableId
+	private Integer subId;
+
+
+	private Integer deptId;
+
+	/**
+	 * 认证方式0-人力家 1-税邦云
+	 */
+	private String subjectType;
+
+	/**
+	 * 结算通道
+	 */
+	private Integer subjectChannel;
+
+	/**
+	 * 税源地
+	 */
+	private String subjectLocation;
+
+	private String appId;
+
+	private String appSecret;
+
+	private String rsaPublicKey;
+
+	private String queryUrl;
+
+	/**
+	 * 结算主体
+	 */
+	private String subjectName;
+
+	private BigDecimal limitAmount;
+
+	private String enableFlag;
+
+	/**
+	 * 税邦云用户类型id
+	 */
+	private String subjectUserType;
+
+	/**
+	 * 税邦云用户类型对应的发票类目
+	 */
+	private String subjectInvoiceCategory;
+
+	/**
+	 * 汇企云批次付款渠道编号
+	 */
+	private String pathNo;
+
+	/**
+	 * 更新时间
+	 */
+	private LocalDateTime updateTime;
+
+	/**
+	 * 费率
+	 */
+	private BigDecimal serviceCharge2;
+
+	/**
+	 * 税地:税率=1:N.(一个税地可以对应多个税率,新增税地类型对税率做区分)
+	 */
+	private String rateType;
+
+	/**
+	 * 认证是否启用:1:启用,0:停用
+	 */
+	private Integer certEnable;
+
+	/**
+	 * 结算是否启用:1:启用,0:停用
+	 */
+	private Integer settleEnable;
+
+	/**
+	 * E证通认证是否启用:1-启用,0-停用
+	 */
+	private Integer eidEnable;
+
+	/**
+	 * 费率
+	 */
+	private BigDecimal serviceCharge;
+
+	/**
+	 * 是否开启签约协议 0未开启 1已开启
+	 */
+	private Boolean signAgreementEnable;
+
+	private Integer dbSourceId;
+}

+ 76 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysFinancialGmvSettleData.java

@@ -0,0 +1,76 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 财务数据配置表
+ * @author Kevin Liu
+ * @TableName sys_financial_gmv_settle_data
+ */
+@TableName(value ="sys_financial_gmv_settle_data", autoResultMap = true)
+@Data
+public class SysFinancialGmvSettleData implements Serializable {
+	private static final long serialVersionUID = 3033763887093216933L;
+	/**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 客户公司名称
+     */
+    private String paymentCompany;
+
+    /**
+     * 公司类型
+     */
+    private String companyType;
+
+    /**
+     * 要易服务费率
+     */
+    private BigDecimal serviceRate;
+
+    /**
+     * 渠道标识
+     */
+    private Boolean isChannel;
+
+    /**
+     * 渠道税率
+     */
+    private BigDecimal channelCommissionRate;
+
+    /**
+     * 底价
+     */
+//    private String taxLandRate;
+
+    /**
+     * 当前使用标识
+     */
+    private Boolean inUseTag;
+
+    /**
+     * 操作人员
+     */
+    private String gmtOperates;
+
+    /**
+     * 修改时间
+     */
+    private LocalDateTime gmtModified;
+
+    private Integer dbSourceId;
+}

+ 72 - 16
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysImplPlan.java

@@ -1,11 +1,10 @@
 package com.retdata.yaoyibi.domain;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -19,17 +18,37 @@ public class SysImplPlan {
      */
     @TableId(type = IdType.AUTO)
     private Long planId;
-    
+
     /**
-     * 计划名称
+     * 计划名称
      */
     private String planName;
 
     /**
-     * 计划分值
+     * 计划类型
+     */
+    private String planType;
+
+    /**
+     * 计划类型
+     */
+    private String planState;
+
+    /**
+     * 拆解状态
+     */
+    private String disassembleState;
+
+    /**
+     * 计划值
      */
     private Long planScore;
 
+    /**
+     * 可用值
+     */
+    private Long availScore;
+
     /**
      * 签发时间
      */
@@ -41,37 +60,74 @@ public class SysImplPlan {
     private LocalDate planExpiry;
 
     /**
-     * 来源公司ID
+     * 父ID
+     */
+    private Long parentId;
+
+    /**
+     * 委托人ID
      */
     private Long consignorId;
 
     /**
-     * 承接公司ID
+     * 受托人ID
      */
     private Long consigneeId;
 
     /**
-     * 推广药品ID列表
+     * 产品ID
      */
     private String skuId;
 
     /**
-     * 下发状态
+     * 审核结果
      */
-    private String planState;
+    private Boolean cktRes;
 
     /**
-     * 拆解状态
+     * 审核意见
      */
-    private String disassembleState;
+    private String cktMsg;
+
+    /**
+     * 审核时间
+     */
+    private LocalDateTime cktTime;
+
+    /**
+     * 审核人用户名
+     */
+    private String cktName;
+
+    /**
+     * 锁定标记
+     */
+    private String locFlag;
+
+    /**
+     * 删除标记
+     */
+    private String delFlag;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 修改人
+     */
+    private String updateBy;
 
     /**
      * 创建时间
      */
-    private Date createTime;
+    private LocalDateTime createTime;
 
     /**
-     * 待拆解分值
+     * 修改时间
      */
-    private Long availScore;
+    private LocalDateTime updateTime;
+
+    private Integer dbSourceId;
 }

+ 181 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/SysUserSub.java

@@ -0,0 +1,181 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.time.LocalDateTime;
+
+/**
+ * 用户签约认证主体信息实体
+ *
+ * @author lixuesong
+ * @date 2022年03月01日 18:17
+ */
+@Data
+@ToString
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_user_sub")
+public class SysUserSub extends Model<SysUserSub> {
+
+	/**
+	 * 主键id
+	 */
+	@TableId
+	private Integer id;
+
+	/**
+	 * 用户ID
+	 */
+	private Integer userId;
+
+	/**
+	 * 部门id
+	 */
+	private Integer deptId;
+
+	/**
+	 * 零工平台类型(订单支付方式类型:0-人力家 1-税邦云 2-自由职家 3-易联数科)
+	 */
+	private Integer gigType;
+
+	/**
+	 * 渠道
+	 */
+	private Integer gigChannel;
+
+	/**
+	 * 税源地
+	 */
+	private String subjectLocation;
+
+	/**
+	 * 回调状态 0 是未发起,1是进行中,2是已回调
+	 */
+	private Integer callbackStatus;
+
+	/**
+	 * 认证状态  0 : 未签约; 1 : 已认证; 2 : 已签约
+	 */
+	private Integer certStatus;
+
+	/**
+	 * 认证结果描述
+	 */
+	private String certRemark;
+
+	/**
+	 * 认证失败原因
+	 */
+	private String failReason;
+
+	/**
+	 * 人员类型
+	 */
+	private String userType;
+
+	/**
+	 * 银行卡号
+	 */
+	private String bankCardNumber;
+
+	/**
+	 * 银行预留手机号
+	 */
+	private String bankPhone;
+
+	/**
+	 * 开户行
+	 */
+	private String bankName;
+
+	/**
+	 * 身份证照片-正面
+	 */
+	private String idCardFrontUrl;
+
+	/**
+	 * 身份证照片-反面
+	 */
+	private String idCardBackUrl;
+
+	/**
+	 * 认证视频1
+	 */
+	private String certVideo1Url;
+
+	/**
+	 * 认证视频1
+	 */
+	private String certVideo2Url;
+
+	/**
+	 * 协议
+	 */
+	private String agreementUrl;
+
+	/**
+	 * 请求流水号
+	 */
+	private String requestId;
+
+	/**
+	 * 创建时间
+	 */
+	private LocalDateTime createTime;
+
+	/**
+	 * 创建人
+	 */
+	private Integer createUser;
+
+	/**
+	 * 更新时间
+	 */
+	private LocalDateTime updateTime;
+
+	/**
+	 * 更新人
+	 */
+	private Integer updateUser;
+
+	/**
+	 * 回调时间
+	 */
+	private LocalDateTime callbackTime;
+
+	/**
+	 * 定时任务扫描状态:0-已完成 1-未开始 2-进行中
+	 */
+	private Integer taskStatus;
+
+	/**
+	 * 任务执行次数
+	 */
+	private Integer taskRunTimes;
+
+	/**
+	 * 爱签合同状态
+	 */
+	private Boolean asignContractStatus;
+
+	/**
+	 * 爱签合同编号
+	 */
+	private String asignContractNo;
+
+	/**
+	 * 爱签合同文件地址
+	 */
+	private String asignContractFileurl;
+
+	/**
+	 * 爱签合同签署时间
+	 */
+	private LocalDateTime asignTime;
+
+	private Integer dbSourceId;
+}

+ 175 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmDaAgent.java

@@ -0,0 +1,175 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 档案-代理商
+ *
+ * @author gaoyanng
+ * @date 2020-06-25 23:35:42
+ */
+@Data
+@TableName(value = "wm_da_agent")
+@EqualsAndHashCode(callSuper = true)
+public class WmDaAgent extends Model<WmDaAgent> {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 代理商类型(团队:AT, 公司: AE)
+	 */
+	private String agentType;
+
+	@TableId
+	private String id;
+
+
+	/**
+	 * 公司名称
+	 */
+	private String gsmc;
+
+	/**
+	 * 营业执照
+	 */
+	private String yyzz;
+
+	/**
+	 * 社保缴纳证明
+	 */
+	private String sbjnzm;
+
+	/**
+	 * 法人身份证证明-正面
+	 */
+	private String frsfzzmZm;
+
+	/**
+	 * 法人身份证证明-背面
+	 */
+	private String frsfzzmBm;
+
+	/**
+	 * 法人身份证证明-手持
+	 */
+	private String frsfzzmSc;
+
+	/**
+	 * 是否审核
+	 */
+	private String isExamine;
+
+	/**
+	 * 证件类型
+	 */
+	private String zjType;
+
+	/**
+	 * 证件号码
+	 */
+	private String zjNumber;
+
+	/**
+	 * 扩展可选药企
+	 */
+	private String extDrugEnt;
+
+	/**
+	 * 组织机构ID
+	 */
+	private String deptId;
+
+	/**
+	 * 是否删除
+	 */
+	private String delFlag;
+
+	/**
+	 * 是否禁用
+	 */
+	private String enableFlag;
+
+	/**
+	 * 所属租户
+	 */
+	private Integer tenantId;
+
+	/**
+	 * 创建时间
+	 */
+	private LocalDateTime createTime;
+
+	/**
+	 * 创建人
+	 */
+	private Integer createUser;
+
+	/**
+	 * 更新时间
+	 */
+	private LocalDateTime updateTime;
+
+	/**
+	 * 更新人
+	 */
+	private String updateUser;
+
+	/**
+	 * 所属药企
+	 */
+	private String drugEntId;
+
+	private String temp1;
+
+	private String temp2;
+
+	/**
+	 * 结算账号
+	 */
+	private String jsAccount;
+
+	/**
+	 * 管理模式
+	 */
+	private String management;
+
+	/**
+	 * 派工权限
+	 */
+	private String pgqx;
+
+	/**
+	 * 企业类型
+	 */
+	private String qylx;
+
+	private String subjectType;
+
+	/**
+	 * MAH结算-药企deptId
+	 */
+	private Integer mahSettleDeptId;
+
+	/**
+	 * 是否与要易签约标识
+	 */
+	private Boolean isSign;
+
+	/**
+	 * 要易云签约产品
+	 */
+	private String signProduct;
+
+	/**
+	 * 签约时间
+	 */
+	private LocalDateTime signTime;
+
+	private Integer dbSourceId;
+
+}

+ 95 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmDaDrugEnt.java

@@ -1,13 +1,107 @@
 package com.retdata.yaoyibi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+import java.util.Map;
+import java.util.Set;
+
 @Data
 public class WmDaDrugEnt {
     @TableId(type = IdType.AUTO)
     private Integer id;
-    
+
+    /**
+     * 企业名称
+     */
     private String entname;
+
+    /**
+     * 组织机构代码
+     */
+    private String entcode;
+
+    private String temp1;
+
+    private String temp2;
+
+    private String temp3;
+
+    private String temp4;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 是否删除
+     */
+    private Integer delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private Integer enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+
+    /**
+     * 派工权限
+     */
+    private String pgqx;
+
+    /**
+     * 管理模式
+     */
+    private String management;
+
+    /**
+     * 结算主体类型:0->人力家,1->税邦云
+     */
+    private String subjectType;
+
+    /**
+     * 是否与要易云签约
+     */
+    private Boolean isSign;
+
+    /**
+     * 签约产品
+     */
+    private String signProduct;
+
+    /**
+     * 与要易签约时间【某一时刻】
+     */
+    private LocalDateTime signTime;
+
+    private Integer dbSourceId;
 }

+ 109 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmDaDrugEntDrugtable.java

@@ -1,27 +1,135 @@
 package com.retdata.yaoyibi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;
 
+import java.time.LocalDateTime;
+import java.util.List;
+
 @Data
 public class WmDaDrugEntDrugtable {
     
     @TableId(type = IdType.AUTO)
     private Integer id;
 
+
     /**
      * 药品名称
      */
     private String drugname;
 
     /**
-     * 药品生产企业ID
+     * 通用药品你名称
+     */
+    private String drugnameTy;
+
+    /**
+     * 企业ID
      */
     private String drugEntId;
 
+    /**
+     * 是否医保
+     */
+    private String isYb;
+
+    /**
+     * 剂型ID
+     */
+    private String doseId;
+
+    /**
+     * 规格ID
+     */
+    private String guigeId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 是否删除
+     */
+    private Integer delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private Integer enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+
     /**
      * 所属药企名称
      */
     private String drugEntName;
+
+    /**
+     * 分配统计
+     */
+    private Integer drugEntNum;
+
+    /**
+     * 上市许可持有人
+     */
+    private String ssxkcyy;
+
+    /**
+     * 原验/仿制
+     */
+    private String yyfz;
+
+    /**
+     * 剂型名称
+     */
+    private String doseName;
+
+    /**
+     * 规格名称
+     */
+    private String guigeName;
+
+    /**
+     * 详情信息(暂手动维护,用于报告)
+     */
+    private String detail;
+
+    /**
+     * 关联问卷
+     */
+//    private String relateLit;
+
+    private Integer dbSourceId;
 }

+ 380 - 15
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackage.java

@@ -1,9 +1,15 @@
 package com.retdata.yaoyibi.domain;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import lombok.Data;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -29,54 +35,413 @@ public class WmScorePackage {
     @TableId(type = IdType.AUTO)
     private Integer id;
 
+
+    /**
+     * 规则ID
+     */
+    private String taskRuleId;
+
+    private String drugEntId;
+
+    private String scoreId;
+
     /**
      * 积分包名称
      */
-    private String scorePackageName;
+    private String scoreName;
+
+    /**
+     * 积分包序列号
+     */
+    private String pkgSn;
+
+    private String score;
+
+    private String agentTypeId;
+
+    /**
+     * 一级代理商
+     */
+    private String level1Id;
+
+    /**
+     * 二级代理商
+     */
+    private String level2Id;
+
+    /**
+     * 众包ID
+     */
+    private String zbId;
+
+    /**
+     * 销售代表ID
+     */
+    private String xxdbId;
 
     /**
-     * 积分包类型,  0,1,2-大包(即企业级包), 3,4,5-小包(即个人包)
-     * (具体来说typeid  0 药企  1一级代理商 2二级代理商 3全职学术推广员 4兼职学术推广员 5招商经理)
+     * 分配对象类型
      */
     private String typeid;
 
     /**
-     * 发包方企业id
+     * 积分包状态
+     */
+    private String packageStatus;
+
+    /**
+     * 积分包完成状态
+     */
+    private String packageFinishStatus;
+
+    /**
+     * 积分包审核状态
+     */
+    private String packageAuditStatus;
+
+    /**
+     * 发包方ID
      */
     private String sendPackageDeptId;
 
     /**
-     * 接包方的企业id
+     * 组织机构ID[服务公司]
      */
     private String deptId;
 
     /**
-     * 积分包值
+     * 关联服务企业[委托公司]
      */
-    private String score;
+    private String relatedService;
+
+    /**
+     * 是否删除
+     */
+    private String delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private String enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
 
     /**
-     * 发包时间
+     * 更新时间
      */
-    private Date createTime;
+    private LocalDateTime updateTime;
 
     /**
-     * 个人包的积分包状态(sys_dict_item表 type='score_package_status')
+     * 更新人
+     */
+    private Integer updateUser;
+
+    private Integer ytj;
+
+    private Integer ysh;
+
+    private Integer dsh;
+
+    private Integer ytjtt;
+
+    private Integer ywctt;
+
+    private Integer yshtt;
+
+    /**
+     * 领取时间
+     */
+    private LocalDateTime receiveDate;
+
+    /**
+     * 是否进行中
+     */
+    private String isConduct;
+
+    private String drugsIds;
+
+    /**
+     * 结算单号
+     */
+    private String statementNo;
+
+    /**
+     * 结算状态
+     */
+    private Integer settleStatus;
+
+    /**
+     * 结算结果描述
+     */
+    private String remark;
+
+    /**
+     * 发票类目
+     */
+    private String invoiceCategory;
+
+    /**
+     * 实际结算金额
+     */
+    private BigDecimal settleAmount;
+
+    /**
+     * 折扣
+     */
+    private BigDecimal discount;
+
+    /**
+     * 完成时间
+     */
+    private LocalDateTime packageFinishTime;
+
+    /**
+     * 关联积分包id
+     */
+    private String relationScoreId;
+
+    /**
+     * 积分包任务类型1
+     */
+    private String packageType1;
+
+    /**
+     * 积分包任务类型2
+     */
+    private String packageType2;
+
+    /**
+     * 需求人数
+     */
+    private Integer userNum;
+
+    /**
+     * 任务个数
+     */
+    private Integer taskNum;
+
+    /**
+     * 接单对象范围
+     */
+    private String packageUserScope;
+
+    /**
+     * 可分配积分
+     */
+    private Integer kfpjf;
+
+    /**
+     * 所属月份
+     */
+    private String belongDate;
+
+    /**
+     * 分配日期
+     */
+    private LocalDateTime allocationDate;
+
+    /**
+     * 已支付百分比
+     */
+    private BigDecimal payRate;
+
+    /**
+     * 已完成百分比
+     */
+    private BigDecimal finishRate;
+
+    /**
+     * 已支付积分值
+     */
+    private String payScore;
+
+    /**
+     * 查询结束日期
+     */
+    private String endLabelDate;
+
+    /**
+     * 积分包名称
+     */
+    private String scorePackageName;
+
+    /**
+     * 积分包是否进行中
+     */
+    private String packageIsConduct;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 个人预计包值
+     */
+    private String userScore;
+
+    /**
+     * 终止方式
+     */
+    private String enableType;
+
+    /**
+     * 是否允许接单
+     */
+    private String isReceive;
+
+    /**
+     * 规则id
+     */
+    private String ruleId;
+
+    /**
+     * 接包对象
+     */
+    private String acceptSug;
+
+    /**
+     * 是否可以新增任务1-可以  0-不可以
+     */
+    private String taskAddFlag;
+
+    /**
+     * 结算状态
+     */
+    private String settleFlag;
+
+    /**
+     * 积分包状态
      */
     private String scorePackageStatus;
 
     /**
-     * 推广药品
+     * 是否为旧数据
+     */
+    private String oldPackage;
+
+    /**
+     * 结算时间
+     */
+    private LocalDateTime settlementDate;
+
+    /**
+     * 数据来源类型(0:手动上传,1:系统对接)
+     */
+    private String sourceType;
+
+    /**
+     * 项目编号
+     */
+    private String projectNum;
+
+    /**
+     * 关联药品生产厂商名称
+     */
+    private String drugProducer;
+
+    /**
+     * 公对公结算记录
+     */
+    private BigDecimal p2pAmount;
+
+    /**
+     * 公对公服务费
+     */
+    private BigDecimal p2pServiceAmount;
+
+    /**
+     * 公对公提交时间
+     */
+    private LocalDateTime p2pTime;
+
+    /**
+     * 批量结算提交积分
+     */
+    private Integer batchSettleRecord;
+
+    /**
+     * 支付中心订单号
+     */
+    private String omsOrderSn;
+
+    /**
+     * 结算渠道
+     */
+    private String subType;
+
+    /**
+     * 税源地
+     */
+    private String subLocation;
+
+    /**
+     * MAH结算-药企deptId
+     */
+    private Integer mahSettleDeptId;
+
+    /**
+     * 企业任务上限(单位%)
+     */
+    private BigDecimal entTaskLimit;
+
+    /**
+     * mah支付步进状态
+     */
+    private String mahSettleStep;
+
+    /**
+     * mah结算时间
+     */
+    private LocalDateTime mahSettleTime;
+
+    /**
+     * 推广药品id
      */
     private String drugtable;
 
     /**
-     * 个人包的完成时间
+     * 审核管理费比例
      */
-    private Date packageFinishTime;
+    private BigDecimal auditManagementFeeRates;
 
     /**
-     * 积分包结算状态
+     * 发票号码
      */
-    private Integer settleStatus;
+    private String invoiceNumber;
+
+    /**
+     * 发票文件
+     */
+//    private Object invoiceFile;
+
+    /**
+     * 截止日期
+     */
+    private LocalDate endTime;
+
+    /**
+     * 推广区域
+     */
+//    private String area;
+
+    /**
+     * 实际归档积分
+     */
+    private Integer actualScore;
+
+    private Integer dbSourceId;
 }

+ 106 - 16
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageSettleNote.java

@@ -1,10 +1,13 @@
 package com.retdata.yaoyibi.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
+import javax.validation.constraints.DecimalMin;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -16,48 +19,135 @@ public class WmScorePackageSettleNote {
     @TableId(type = IdType.AUTO)
     private Integer id;
 
+    private String packageStatusId;
+
+    private String packageId;
+
+    private BigDecimal settleAmount;
+
+    private String userId;
+
+    private Integer invoiceType;
+
+    private String settleNo;
+
+    private BigDecimal discount;
+
+    private Integer settleNoteStatus;
+
+    private String remark;
+
+    private LocalDateTime notifyTime;
+
     /**
-     * 积分包ID
+     * 任务ID
      */
-    private String packageId;
+    private String taskId;
 
     /**
-     * 结算状态
+     * 开票类型名称
      */
-    private Integer settleNoteStatus;
+    private String categoryName;
 
     /**
-     * 结算的平台
+     * 创建时间
      */
-    private String subType;
+    private LocalDateTime createTime;
 
     /**
-     * 结算的渠道
+     * 提交时间
      */
-    private String subjectLocation;
+    private LocalDateTime subTime;
 
     /**
-     * 业务提交财务的时间
+     * 更新时间
      */
-    private Date subTime;
+    private LocalDateTime updateTime;
 
     /**
-     * 财务提交灵工的时间
+     * 税邦云流水号
      */
-    private Date subToGigTime;
+    private String streamId;
 
     /**
-     * 结算成功的时间
+     * 身份证号
      */
-    private Date notifyTime;
+    private String idCardNumber;
 
     /**
-     * 结算金额
+     * 提交到零工平台的时间
      */
-    private BigDecimal settleAmount;
+    private LocalDateTime subToGigTime;
+
+    /**
+     * 预结算积分
+     */
+    private Integer preSettlementScore;
+
+    /**
+     * 结算类型
+     */
+    private String subType;
+
+    /**
+     * 税源地
+     */
+    private String subjectLocation;
+
+    /**
+     * 第三方任务id
+     */
+    private String thirdTaskId;
+
+    /**
+     * 是否完成完单操作
+     */
+    private Integer finishTaskFlag;
 
     /**
      * 实际支付金额
      */
     private BigDecimal actualAmount;
+
+    /**
+     * 实际结算企业id
+     */
+    private Integer settleDeptId;
+
+    /**
+     * 实际结算企业subId
+     */
+    private Integer settleDeptSubId;
+
+    /**
+     * 财务复核状态
+     */
+    private String reviewStatus;
+
+    /**
+     * 复核时间
+     */
+    private LocalDateTime reviewTime;
+
+    /**
+     * 复核人
+     */
+    private Integer reviewUser;
+
+    /**
+     * 手动修改时间
+     */
+    private LocalDateTime manualTime;
+
+    /**
+     * 手动修改人
+     */
+    private Integer manualUser;
+
+    /**
+     * 使用财务配置的主键ID
+     */
+    private Integer useFinancialId;
+
+    private Integer dbSourceId;
 }

+ 78 - 1
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmScorePackageStatus.java

@@ -1,10 +1,87 @@
 package com.retdata.yaoyibi.domain;
 
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.time.LocalDateTime;
+
 @Data
+@TableName(value = "wm_score_package_status", autoResultMap = true)
 public class WmScorePackageStatus {
+    @TableId
     private Integer id;
-    private String packageId;
+
     private String userId;
+
+    private String packageId;
+
+    private String status;
+
+    /**
+     * 组织机构ID
+     */
+    private String deptId;
+
+    /**
+     * 是否删除
+     */
+    private String delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private String enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+
+    /**
+     * 个人预计包值
+     */
+    private String userScore;
+
+    /**
+     * 终止方式
+     */
+    private String enableType;
+
+    /**
+     * 个人包任务个数
+     */
+    private Integer taskNum;
+
+    /**
+     * 是否可以新增任务1-可以  0-不可以
+     */
+    private String taskAddFlag;
+
+    /**
+     * 测评结果
+     */
+//    private String quizRes;
+
+    private Integer dbSourceId;
 }

+ 326 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmTask.java

@@ -0,0 +1,326 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 任务表
+ *
+ * @author gaoyanng
+ * @date 2020-06-25 23:35:25
+ */
+@Data
+@TableName(value = "wm_task", autoResultMap = true)
+@EqualsAndHashCode(callSuper = true)
+public class WmTask extends Model<WmTask> {
+    private static final long serialVersionUID = 1L;
+
+
+    @TableId
+    private String id;
+
+    /**
+     * 任务编号
+     */
+    private String taskNumber;
+
+    /**
+     * 积分规则
+     */
+    private String taskRuleId;
+
+    /**
+     * 积分值
+     */
+    private Integer score;
+
+    /**
+     * 任务提交到的积分包ID
+     */
+    private String scorePackageDrugId;
+
+    /**
+     * 任务提交到一级经销商的集分宝id
+     */
+    private String scorePackageLevel1Id;
+
+    /**
+     * 积分包
+     */
+    private String scorePackageId;
+
+    /**
+     * 任务类型ID
+     */
+    private String taskTypeId;
+
+    /**
+     * 调研时间
+     */
+    private LocalDateTime lookintoDate;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 区
+     */
+    private String area;
+
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 调研类型ID
+     */
+    private String lookintoTypeId;
+
+    /**
+     * 任务内容ID
+     */
+    private String taskContentId;
+
+    /**
+     * 任务状态
+     */
+    private String taskStatus;
+
+    /**
+     * 任务用户ID
+     */
+    private String taskUserId;
+
+    /**
+     * 用户类型ID
+     */
+    private String taskUserType;
+
+    /**
+     * 服务药企
+     */
+    private String drugEntId;
+
+    /**
+     * 组织机构ID
+     */
+    private String deptId;
+
+    /**
+     * 是否删除
+     */
+    private String delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private String enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+
+    /**
+     * 提交状态
+     */
+    private String submitStatus;
+
+    /**
+     * 分享图片地址
+     */
+    private String shareImgUrl;
+
+    /**
+     * 平台审核状态
+     */
+    private String platAuditStatus;
+
+    /**
+     * 备用字段
+     */
+//    private String extIds;
+
+    /**
+     * 任务详情图片
+     */
+    private String taskInfoImg;
+
+    /**
+     * 对比结果
+     */
+    private String compareResult;
+
+    /**
+     * 审批意见
+     */
+    private String approvalOpinion;
+
+    /**
+     * 审批说明
+     */
+    private String approvalInfo;
+
+    /**
+     * 是否真实
+     */
+    private String realFlag;
+
+    /**
+     * 任务提交到一级cso的报告ID
+     */
+    private Integer reportOneId;
+
+    /**
+     * 任务提交到一级cso的报告审核状态
+     */
+    private String reportOneApprovalStatus;
+
+    /**
+     * 任务提交到一级cso的报告审批意见
+     */
+    private String reportOneApprovalOpinion;
+
+    /**
+     * 任务提交到一级cso的报告审批说明
+     */
+    private String reportOneApprovalInfo;
+
+    /**
+     * 任务提交到二级cso的报告ID
+     */
+    private Integer reportSecondId;
+
+    /**
+     * 任务提交到二级cso的报告审核状态
+     */
+    private String reportSecondApprovalStatus;
+
+    /**
+     * 任务提交到二级cso的报告审批意见
+     */
+    private String reportSecondApprovalOpinion;
+
+    /**
+     * 任务提交到二级cso的报告审批说明
+     */
+    private String reportSecondApprovalInfo;
+
+    /**
+     * 任务提交到药企的报告ID
+     */
+    private Integer reportDrugId;
+
+    /**
+     * 任务提交到药企的报告审核状态
+     */
+    private String reportDrugApprovalStatus;
+
+    /**
+     * 任务提交到药企的报告审批意见
+     */
+    private String reportDrugApprovalOpinion;
+
+    /**
+     * 任务提交到药企的报告审批说明
+     */
+    private String reportDrugApprovalInfo;
+
+    /**
+     * cso审核审核意见
+     */
+    private String taskStatusInfo;
+
+    /**
+     * 来源
+     */
+    private String taskFrom;
+
+    private Integer taskSettleStatus;
+
+    private String settleNoteNumber;
+
+    /**
+     * 复审次数记录
+     */
+    private Integer reviewTaskCount;
+
+    /**
+     * 企业复审次数记录
+     */
+    private Integer deptReviewTaskCount;
+
+    /**
+     * 审核人userId
+     */
+    private Integer approvalUserId;
+
+    /**
+     * 审核时间
+     */
+    private LocalDateTime approvalTime;
+
+    /**
+     * 企业审核人userId
+     */
+    private Integer deptApprovalUserId;
+
+    /**
+     * 企业审核时间
+     */
+    private LocalDateTime deptApprovalTime;
+
+    /**
+     * 远端ip
+     */
+    private String remoteIp;
+
+    /**
+     * 地址
+     */
+    private String ip2region;
+
+    /**
+     * 乐观锁
+     */
+    private Integer version;
+
+    private Integer dbSourceId;
+}

+ 152 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmTaskType.java

@@ -0,0 +1,152 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 任务类型打分表
+ * </p>
+ *
+ * @author baiying
+ * @since 2025-06-20
+ */
+@Getter
+@Setter
+@TableName("wm_task_type")
+public class WmTaskType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 任务类型名称
+     */
+    private String taskTypeName;
+
+    /**
+     * 任务类型级别
+     */
+    private String taskTypeLevel;
+
+    /**
+     * 积分范围开始
+     */
+    private Integer taskScoreStart;
+
+    /**
+     * 积分范围结束
+     */
+    private Integer taskScoreEnd;
+
+    /**
+     * 完成后可获得分
+     */
+    private Integer score;
+
+    /**
+     * 积分分配代理商
+     */
+    private String taskEntId;
+
+    /**
+     * 药企ID
+     */
+    private String durgentId;
+
+    /**
+     * 一级代理商ID
+     */
+    private String level1Id;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 是否删除
+     */
+    private Integer delFlag;
+
+    /**
+     * 是否禁用
+     */
+    private String enableFlag;
+
+    /**
+     * 所属租户
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+
+    /**
+     * 积分规则状态
+     */
+    private Integer status;
+
+    /**
+     * 父类ID
+     */
+    private String baseId;
+
+    private String realFlag;
+
+    private String ruleId;
+
+    /**
+     * 父级ID
+     */
+    private String parentId;
+
+    /**
+     * 承接对象(1-个人,2-企业)
+     */
+    private String taskReceiverType;
+
+    /**
+     * 任务备注
+     */
+    private String taskRemark;
+
+    /**
+     * 报告用大类
+     */
+    private String topCategoryName;
+
+    /**
+     * 报告用中类
+     */
+    private String midCategoryName;
+
+    private Integer dbSourceId;
+
+
+}

+ 53 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/domain/WmUserPlatQuizRes.java

@@ -0,0 +1,53 @@
+package com.retdata.yaoyibi.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 用户平台试卷测评结果
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2023-10-25 15:39
+ */
+@Data
+@TableName(value = "wm_user_plat_quiz_res", autoResultMap = true)
+public final class WmUserPlatQuizRes {
+
+
+	@TableId(value = "res_id", type = IdType.AUTO)
+	private Integer resultId;
+
+	/**
+	 * 用户ID
+	 */
+	private Integer userId;
+
+	/**
+	 * 试卷id
+	 */
+	private Integer quizId;
+
+	/**
+	 * 测试结果
+	 */
+//	private String quizRes;
+
+	/**
+	 * 测评有效期
+	 */
+	private LocalDate resExpiry;
+
+	/**
+	 * 创建时间
+	 */
+	private LocalDateTime createTime;
+
+	private Integer dbSourceId;
+}

+ 14 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/ContractedProductChangeMapper.java

@@ -0,0 +1,14 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.retdata.yaoyibi.domain.*;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Collection;
+import java.util.List;
+
+public interface ContractedProductChangeMapper extends BaseMapper<ContractedProductChange> {
+    
+}

+ 8 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/CsoSysUserRoleMapper.java

@@ -0,0 +1,8 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.CsoSysUserRole;
+
+public interface CsoSysUserRoleMapper extends BaseMapper<CsoSysUserRole> {
+    
+}

+ 37 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysDeptRelationMapper.java

@@ -0,0 +1,37 @@
+/*
+ *
+ *      Copyright (c) 2018-2025, hnqz All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the pig4cloud.com developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: hnqz
+ *
+ */
+
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.SysDeptRelation;
+
+import java.util.List;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author hnqz
+ * @since 2018-02-12
+ */
+public interface SysDeptRelationMapper extends BaseMapper<SysDeptRelation> {
+
+}

+ 8 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysDeptSubMapper.java

@@ -0,0 +1,8 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.SysDeptSub;
+
+public interface SysDeptSubMapper extends BaseMapper<SysDeptSub> {
+    
+}

+ 9 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysFinancialGmvSettleDataMapper.java

@@ -0,0 +1,9 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysFinancialGmvSettleData;
+
+public interface SysFinancialGmvSettleDataMapper extends BaseMapper<SysFinancialGmvSettleData> {
+    
+}

+ 9 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/SysUserSubMapper.java

@@ -0,0 +1,9 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysUserSub;
+
+public interface SysUserSubMapper extends BaseMapper<SysUserSub> {
+    
+}

+ 8 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmDaAgentMapper.java

@@ -0,0 +1,8 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.WmDaAgent;
+
+public interface WmDaAgentMapper extends BaseMapper<WmDaAgent> {
+    
+}

+ 9 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmDaDrugEntMapper.java

@@ -0,0 +1,9 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.WmDaDrugEnt;
+
+public interface WmDaDrugEntMapper extends BaseMapper<WmDaDrugEnt> {
+    
+}

+ 8 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmPlatformQuizTestResultMapper.java

@@ -0,0 +1,8 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.WmUserPlatQuizRes;
+
+public interface WmPlatformQuizTestResultMapper extends BaseMapper<WmUserPlatQuizRes> {
+    
+}

+ 8 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageStatusMapper.java

@@ -0,0 +1,8 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.WmScorePackageStatus;
+
+public interface WmScorePackageStatusMapper extends BaseMapper<WmScorePackageStatus> {
+    
+}

+ 9 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmTaskMapper.java

@@ -0,0 +1,9 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.WmTask;
+
+public interface WmTaskMapper extends BaseMapper<WmTask> {
+    
+}

+ 9 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmTaskTypeMapper.java

@@ -0,0 +1,9 @@
+package com.retdata.yaoyibi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.WmTaskType;
+
+public interface WmTaskTypeMapper extends BaseMapper<WmTaskType> {
+    
+}

+ 15 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/ContractedProductChangeService.java

@@ -0,0 +1,15 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+public interface ContractedProductChangeService extends IService<ContractedProductChange> {
+
+    int delete(LambdaQueryWrapper<ContractedProductChange> queryWrapper);
+}

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysDeptService.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.CsoSysDept;
 import com.retdata.yaoyibi.domain.CsoSysDeptSearchDto;
@@ -17,4 +18,6 @@ public interface CsoSysDeptService extends IService<CsoSysDept> {
     XSSFWorkbook export(CsoSysDeptSearchParams searchParams);
     
     List<CsoSysDeptSummary> listAllDeptSummary();
+
+    int delete(LambdaQueryWrapper<CsoSysDept> queryWrapper);
 }

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysDictItemService.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.CsoSysDictItem;
 
@@ -8,4 +9,6 @@ import java.util.Map;
 public interface CsoSysDictItemService extends IService<CsoSysDictItem> {
 
     Map<String, String> getDictMap(String dictType);
+
+    int delete(LambdaQueryWrapper<CsoSysDictItem> queryWrapper);
 }

+ 2 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysRoleService.java

@@ -1,7 +1,9 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.CsoSysRole;
 
 public interface CsoSysRoleService extends IService<CsoSysRole> {
+    int delete(LambdaQueryWrapper<CsoSysRole> queryWrapper);
 }

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/CsoSysUserService.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.*;
 import org.springframework.data.domain.Page;
@@ -15,4 +16,6 @@ public interface CsoSysUserService extends IService<CsoSysUser> {
     List<CsoSysDeptSummary> listDeptSummary();
 
     List<WmDaDrugEnt> listDrugEnt();
+
+    int delete(LambdaQueryWrapper<CsoSysUser> queryWrapper);
 }

+ 11 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysDeptRelationService.java

@@ -0,0 +1,11 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysDeptRelation;
+
+public interface SysDeptRelationService extends IService<SysDeptRelation> {
+
+    int delete(LambdaQueryWrapper<SysDeptRelation> queryWrapper);
+}

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysDeptSubService.java

@@ -0,0 +1,10 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.SysDeptSub;
+
+public interface SysDeptSubService extends IService<SysDeptSub> {
+
+    int delete(LambdaQueryWrapper<SysDeptSub> queryWrapper);
+}

+ 11 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysFinancialGmvSettleDataService.java

@@ -0,0 +1,11 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysFinancialGmvSettleData;
+
+public interface SysFinancialGmvSettleDataService extends IService<SysFinancialGmvSettleData> {
+
+    int delete(LambdaQueryWrapper<SysFinancialGmvSettleData> queryWrapper);
+}

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysImplPlanService.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.CsoSysDeptSummary;
 import com.retdata.yaoyibi.domain.SysImplPlan;
@@ -20,4 +21,6 @@ public interface SysImplPlanService extends IService<SysImplPlan> {
 
     XSSFWorkbook export(SysImplPlanSearchParams searchParams);
 
+    int delete(LambdaQueryWrapper<SysImplPlan> queryWrapper);
+
 }

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysUserRoleService.java

@@ -0,0 +1,10 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.CsoSysUserRole;
+
+public interface SysUserRoleService extends IService<CsoSysUserRole> {
+
+    int delete(LambdaQueryWrapper<CsoSysUserRole> queryWrapper);
+}

+ 11 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/SysUserSubService.java

@@ -0,0 +1,11 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysUserSub;
+
+public interface SysUserSubService extends IService<SysUserSub> {
+
+    int delete(LambdaQueryWrapper<SysUserSub> queryWrapper);
+}

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmDaAgentService.java

@@ -0,0 +1,10 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.WmDaAgent;
+
+public interface WmDaAgentService extends IService<WmDaAgent> {
+
+    int delete(LambdaQueryWrapper<WmDaAgent> queryWrapper);
+}

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmDaDrugEntDrugtableService.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.WmDaDrugEntDrugtable;
 import com.retdata.yaoyibi.domain.WmDaDrugEntDrugtableSummary;
@@ -15,4 +16,6 @@ public interface WmDaDrugEntDrugtableService extends IService<WmDaDrugEntDrugtab
     List<WmDaDrugEntDrugtableSummary> batchFetchDrugs(Collection<Integer> drugIds);
 
     String[] getDrugtableInfo(String drugtable, Map<Integer, WmDaDrugEntDrugtableSummary> drugEntDrugtableMap);
+
+    int delete(LambdaQueryWrapper<WmDaDrugEntDrugtable> queryWrapper);
 }

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmDaDrugEntService.java

@@ -0,0 +1,10 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.WmDaDrugEnt;
+
+public interface WmDaDrugEntService extends IService<WmDaDrugEnt> {
+
+    int delete(LambdaQueryWrapper<WmDaDrugEnt> queryWrapper);
+}

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmScorePackageService.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.retdata.yaoyibi.domain.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -30,4 +31,6 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 
     List<String> listReceiverNames(String keyword, int limit);
 
+    int delete(LambdaQueryWrapper<WmScorePackage> queryWrapper);
+
 }

+ 15 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmScorePackageSettleNoteService.java

@@ -0,0 +1,15 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+public interface WmScorePackageSettleNoteService extends IService<WmScorePackageSettleNote> {
+
+    int delete(LambdaQueryWrapper<WmScorePackageSettleNote> queryWrapper);
+}

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmScorePackageStatusService.java

@@ -0,0 +1,10 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.WmScorePackageStatus;
+
+public interface WmScorePackageStatusService extends IService<WmScorePackageStatus> {
+
+    int delete(LambdaQueryWrapper<WmScorePackageStatus> queryWrapper);
+}

+ 11 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmTaskService.java

@@ -0,0 +1,11 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.WmTask;
+
+public interface WmTaskService extends IService<WmTask> {
+
+    int delete(LambdaQueryWrapper<WmTask> queryWrapper);
+}

+ 11 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmTaskTypeService.java

@@ -0,0 +1,11 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.WmTaskType;
+
+public interface WmTaskTypeService extends IService<WmTaskType> {
+
+    int delete(LambdaQueryWrapper<WmTaskType> queryWrapper);
+}

+ 10 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/WmUserPlatQuizResService.java

@@ -0,0 +1,10 @@
+package com.retdata.yaoyibi.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.retdata.yaoyibi.domain.WmUserPlatQuizRes;
+
+public interface WmUserPlatQuizResService extends IService<WmUserPlatQuizRes> {
+
+    int delete(LambdaQueryWrapper<WmUserPlatQuizRes> queryWrapper);
+}

+ 24 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/ContractedProductChangeServiceImpl.java

@@ -0,0 +1,24 @@
+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.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.CsoSysDept;
+import com.retdata.yaoyibi.mapper.ContractedProductChangeMapper;
+import com.retdata.yaoyibi.mapper.CsoSysDeptMapper;
+import com.retdata.yaoyibi.service.ContractedProductChangeService;
+import com.retdata.yaoyibi.service.CsoSysDeptService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class ContractedProductChangeServiceImpl extends ServiceImpl<ContractedProductChangeMapper, ContractedProductChange> implements ContractedProductChangeService {
+    @Override
+    public int delete(LambdaQueryWrapper<ContractedProductChange> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysDeptServiceImpl.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.retdata.yaoyibi.domain.*;
@@ -305,4 +306,9 @@ public class CsoSysDeptServiceImpl extends ServiceImpl<CsoSysDeptMapper, CsoSysD
     public List<CsoSysDeptSummary> listAllDeptSummary() {
         return getBaseMapper().selectAllSummaries();
     }
+
+    @Override
+    public int delete(LambdaQueryWrapper<CsoSysDept> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
 }

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

@@ -1,6 +1,8 @@
 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;
@@ -22,9 +24,15 @@ public class CsoSysDictItemServiceImpl extends ServiceImpl<CsoSysDictItemMapper,
     public Map<String, String> getDictMap(String dictType) {
         List<CsoSysDictItem> items = query().eq(CsoSysDictItem.TYPE, dictType)
                 .eq(CsoSysDictItem.DEL_FLAG, "0")
+                .eq(CsoSysDictItem.DB_SOURCE_ID, DataSourceEnum.CSO.getCode())
                 .orderByAsc(CsoSysDictItem.SORT)
                 .list();
         return items.stream().collect(Collectors.toMap(CsoSysDictItem::getValue, CsoSysDictItem::getLabel));
     }
-    
+
+    @Override
+    public int delete(LambdaQueryWrapper<CsoSysDictItem> queryWrapper) {
+        return delete(queryWrapper);
+    }
+
 }

+ 5 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysRoleServiceImpl.java

@@ -1,5 +1,6 @@
 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.domain.CsoSysRole;
 import com.retdata.yaoyibi.mapper.CsoSysRoleMapper;
@@ -13,4 +14,8 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional(readOnly = true)
 @DataSource(DataSourceType.CSO)
 public class CsoSysRoleServiceImpl extends ServiceImpl<CsoSysRoleMapper, CsoSysRole> implements CsoSysRoleService {
+    @Override
+    public int delete(LambdaQueryWrapper<CsoSysRole> queryWrapper) {
+        return delete(queryWrapper);
+    }
 }

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/CsoSysUserServiceImpl.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.retdata.yaoyibi.domain.*;
@@ -207,4 +208,9 @@ public class CsoSysUserServiceImpl extends ServiceImpl<CsoSysUserMapper, CsoSysU
     public List<WmDaDrugEnt> listDrugEnt() {
         return getBaseMapper().selectDrugEnt();
     }
+
+    @Override
+    public int delete(LambdaQueryWrapper<CsoSysUser> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
 }

+ 24 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysDeptRelationServiceImpl.java

@@ -0,0 +1,24 @@
+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.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysDeptRelation;
+import com.retdata.yaoyibi.mapper.ContractedProductChangeMapper;
+import com.retdata.yaoyibi.mapper.SysDeptRelationMapper;
+import com.retdata.yaoyibi.service.ContractedProductChangeService;
+import com.retdata.yaoyibi.service.SysDeptRelationService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class SysDeptRelationServiceImpl extends ServiceImpl<SysDeptRelationMapper, SysDeptRelation> implements SysDeptRelationService {
+    @Override
+    public int delete(LambdaQueryWrapper<SysDeptRelation> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysDeptSubServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.SysDeptSub;
+import com.retdata.yaoyibi.mapper.SysDeptSubMapper;
+import com.retdata.yaoyibi.service.SysDeptSubService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class SysDeptSubServiceImpl extends ServiceImpl<SysDeptSubMapper, SysDeptSub> implements SysDeptSubService {
+    @Override
+    public int delete(LambdaQueryWrapper<SysDeptSub> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 24 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysFinancialGmvSettleDataServiceImpl.java

@@ -0,0 +1,24 @@
+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.domain.ContractedProductChange;
+import com.retdata.yaoyibi.domain.SysFinancialGmvSettleData;
+import com.retdata.yaoyibi.mapper.ContractedProductChangeMapper;
+import com.retdata.yaoyibi.mapper.SysFinancialGmvSettleDataMapper;
+import com.retdata.yaoyibi.service.ContractedProductChangeService;
+import com.retdata.yaoyibi.service.SysFinancialGmvSettleDataService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class SysFinancialGmvSettleDataServiceImpl extends ServiceImpl<SysFinancialGmvSettleDataMapper, SysFinancialGmvSettleData> implements SysFinancialGmvSettleDataService {
+    @Override
+    public int delete(LambdaQueryWrapper<SysFinancialGmvSettleData> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysImplPlanServiceImpl.java

@@ -1,5 +1,6 @@
 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.domain.*;
 import com.retdata.yaoyibi.mapper.SysImplPlanMapper;
@@ -176,6 +177,11 @@ public class SysImplPlanServiceImpl extends ServiceImpl<SysImplPlanMapper, SysIm
         return workbook;
     }
 
+    @Override
+    public int delete(LambdaQueryWrapper<SysImplPlan> queryWrapper) {
+        return delete(queryWrapper);
+    }
+
     private List<SysImplPlanExportDto> batchFetchExportDto(Collection<Long> planIds) {
         List<Long> batchIds = new ArrayList<>(planIds);
         List<SysImplPlanExportDto> result = new ArrayList<>(planIds.size());

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysUserRoleServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.CsoSysUserRole;
+import com.retdata.yaoyibi.mapper.CsoSysUserRoleMapper;
+import com.retdata.yaoyibi.service.SysUserRoleService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class SysUserRoleServiceImpl extends ServiceImpl<CsoSysUserRoleMapper, CsoSysUserRole> implements SysUserRoleService {
+    @Override
+    public int delete(LambdaQueryWrapper<CsoSysUserRole> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/SysUserSubServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.SysUserSub;
+import com.retdata.yaoyibi.mapper.SysUserSubMapper;
+import com.retdata.yaoyibi.service.SysUserSubService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class SysUserSubServiceImpl extends ServiceImpl<SysUserSubMapper, SysUserSub> implements SysUserSubService {
+    @Override
+    public int delete(LambdaQueryWrapper<SysUserSub> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmDaAgentServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.WmDaAgent;
+import com.retdata.yaoyibi.mapper.WmDaAgentMapper;
+import com.retdata.yaoyibi.service.WmDaAgentService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent> implements WmDaAgentService {
+    @Override
+    public int delete(LambdaQueryWrapper<WmDaAgent> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmDaDrugEntDrugtableServiceImpl.java

@@ -1,5 +1,6 @@
 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.domain.WmDaDrugEntDrugtable;
 import com.retdata.yaoyibi.domain.WmDaDrugEntDrugtableSummary;
@@ -70,4 +71,9 @@ public class WmDaDrugEntDrugtableServiceImpl extends ServiceImpl<WmDaDrugEntDrug
         }
         return result;
     }
+
+    @Override
+    public int delete(LambdaQueryWrapper<WmDaDrugEntDrugtable> queryWrapper) {
+        return delete(queryWrapper);
+    }
 }

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmDaDrugEntServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.WmDaDrugEnt;
+import com.retdata.yaoyibi.mapper.WmDaDrugEntMapper;
+import com.retdata.yaoyibi.service.WmDaDrugEntService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class WmDaDrugEntServiceImpl extends ServiceImpl<WmDaDrugEntMapper, WmDaDrugEnt> implements WmDaDrugEntService {
+    @Override
+    public int delete(LambdaQueryWrapper<WmDaDrugEnt> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 6 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.retdata.yaoyibi.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.retdata.yaoyibi.domain.*;
@@ -1376,4 +1377,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
     public List<String> listReceiverNames(String keyword, int limit) {
         return getBaseMapper().selectReceiverNames(keyword, limit);
     }
+
+    @Override
+    public int delete(LambdaQueryWrapper<WmScorePackage> queryWrapper) {
+        return delete(queryWrapper);
+    }
 }

+ 22 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageSettleNoteImpl.java

@@ -0,0 +1,22 @@
+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.domain.WmScorePackageSettleNote;
+import com.retdata.yaoyibi.mapper.WmScorePackageSettleNoteMapper;
+import com.retdata.yaoyibi.service.WmScorePackageSettleNoteService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class WmScorePackageSettleNoteImpl extends ServiceImpl<WmScorePackageSettleNoteMapper, WmScorePackageSettleNote>
+        implements WmScorePackageSettleNoteService {
+    @Override
+    public int delete(LambdaQueryWrapper<WmScorePackageSettleNote> queryWrapper) {
+        return delete(queryWrapper);
+    }
+}

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageStatusServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.WmScorePackageStatus;
+import com.retdata.yaoyibi.mapper.WmScorePackageStatusMapper;
+import com.retdata.yaoyibi.service.WmScorePackageStatusService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageStatusMapper, WmScorePackageStatus> implements WmScorePackageStatusService {
+    @Override
+    public int delete(LambdaQueryWrapper<WmScorePackageStatus> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmTaskServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.WmTask;
+import com.retdata.yaoyibi.mapper.WmTaskMapper;
+import com.retdata.yaoyibi.service.WmTaskService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> implements WmTaskService {
+    @Override
+    public int delete(LambdaQueryWrapper<WmTask> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

+ 21 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmTaskTypeServiceImpl.java

@@ -0,0 +1,21 @@
+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.domain.WmTaskType;
+import com.retdata.yaoyibi.mapper.WmTaskTypeMapper;
+import com.retdata.yaoyibi.service.WmTaskTypeService;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+@DataSource(DataSourceType.CSO)
+public class WmTaskTypeServiceImpl extends ServiceImpl<WmTaskTypeMapper, WmTaskType> implements WmTaskTypeService {
+    @Override
+    public int delete(LambdaQueryWrapper<WmTaskType> queryWrapper) {
+        return getBaseMapper().delete(queryWrapper);
+    }
+}

Some files were not shown because too many files changed in this diff