美文网首页
201106:均衡组织机构抽取-如何生成32位的UUID

201106:均衡组织机构抽取-如何生成32位的UUID

作者: 弹钢琴的崽崽 | 来源:发表于2020-11-06 23:59 被阅读0次

    一. 均衡组织机构抽取

    1. pom文件

    <dependencyManagement>
        <dependencies>
            <!-- 导入duceap 2.1 POM定义-->
            <dependency>
                <groupId>com.dragonsoft</groupId>
                <artifactId>duceap-parent</artifactId>
                <version>2.1.0-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!--web开发基础包-->
        <dependency>
            <groupId>com.dragonsoft</groupId>
            <artifactId>duceap-boot-starter-web</artifactId>
        </dependency>
        <!--flyway模块-->
        <dependency>
            <groupId>com.dragonsoft</groupId>
            <artifactId>duceap-boot-starter-flyway</artifactId>
        </dependency>
        <dependency>
            <groupId>com.dragonsoft</groupId>
            <artifactId>duceap-support-license</artifactId>
        </dependency>
        <!--数据源-->
        <dependency>
            <groupId>com.dragonsoft</groupId>
            <artifactId>duceap-boot-starter-metadata</artifactId>
        </dependency>
        <dependency>
            <groupId>com.dragonsoft</groupId>
            <artifactId>duceap-boot-starter-job</artifactId>
        </dependency>
        <!--根据数据库类型选择相应的依赖-->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
        </dependency>
    </dependencies>
    

    2. application.properties

    spring.datasource.url=jdbc:oracle:thin:@20.20.30.112:1521:ORCL
    #spring.datasource.url=jdbc:mysql://127.0.0.1:3306/DUCEAP_20?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    spring.datasource.username=STANDARD_ORG
    spring.datasource.password=dragon
    #spring.datasource.max-idle=10
    #spring.datasource.max-wait=10000
    #spring.datasource.min-idle=5
    #spring.datasource.initial-size=5
    server.port=8086
    server.servlet.context-path=/zzjgdmgl
    
    #开启系统参数配置,用于读取系统参数表【T_SYS_PARAMETER】参数到环境变量
    duceap.sysparameter.enabled=true
    
    #License认证开关,默认开启
    duceap.license.enabled=false
    
    is_deleted=0
    
    duceap.datasource.dynamic.kjdb.datasourceId=SystemDs
    

    当配置duceap.sysparameter.enabled=true后flyway自动生成T_SYS_PARAMETER

    3. flyway.properties

    #flyway
    duceap.flyway.enabled=true
    #数据表空间
    duceap.flyway.placeholders.TABLESPACE_DATA=USERS
    ##索引表空间
    duceap.flyway.placeholders.TABLESPACE_INDEX=USERS
    ##大字段表空间
    duceap.flyway.placeholders.TABLESPACE_LOB=USERS
    #
    ##默认根据驱动名进行自动匹配
    flyway.dbtype=oracle
    #
    ##当没有配置flyway脚本扫描器类,默认加载此目录下flyway脚本
    duceap.flyway.locations=classpath:/sql/zzjgdmgl
    duceap.flyway.placeholderPrefix=#{
    duceap.flyway.placeholderSuffix=}
    duceap.flyway.outOfOrder=true
    duceap.flyway.initOnMigrate=true
    duceap.flyway.initVersion=0.5.0
    duceap.flyway.ignoreFailedFutureMigration=false
    

    4. job.properties

    
    #job调度
    
    #是否开启elasticJob计划,默认为true
    duceap.elastic.job.enabled=true
    #连接Zookeeper服务器的列表包括IP地址和端口号多个地址用逗号分隔如: host1:2181,host2:2181
    duceap.elastic.job.zk.serverLists=20.20.30.151:2181
    #Zookeeper的命名空间
    duceap.elastic.job.zk.namespace=job_test1
    #duceap.elastic.job.zk.digest=root
    
    
    #cron表达式,用于控制作业触发时间
    duceap.elastic.job.MySimpleJob.cron=0/5 * * * * ?
    #本地配置是否可覆盖注册中心配置 如果可覆盖,每次启动作业都以本地配置为准
    duceap.elastic.job.MySimpleJob.overwrite=true
    #作业分片总数
    duceap.elastic.job.MySimpleJob.shardingTotalCount=3
    #分片序列号和参数用等号分隔,多个键值对用逗号分隔 分片序列号从0开始,不可大于或等于作业分片总数
    #如:0=a,1=b,2=c
    duceap.elastic.job.MySimpleJob.shardingItemParameters=0=A,1=B,2=C
    #作业自定义参数
    duceap.elastic.job.MySimpleJob.jobParameter=test
    #是否开启任务执行失效转移,默认false
    duceap.elastic.job.MySimpleJob.failover=true
    #是否开启错过任务重新执行,默认true
    duceap.elastic.job.MySimpleJob.misfire=true
    duceap.elastic.job.MySimpleJob.description=simple job
    #监控作业运行时状态,默认false
    duceap.elastic.job.MySimpleJob.monitorExecution=false
    #前置后置任务监听实现类
    #duceap.elastic.job.MySimpleJob.listener=com.dragonsoft.duceap.elasticjob.handler.MessageElasticJobListener
    #扩展异常处理类
    #duceap.elastic.job.MySimpleJob.jobExceptionHandler=com.dragonsoft.duceap.elasticjob.handler.CustomJobExceptionHandler
    #是否启用JOB
    duceap.elastic.job.MySimpleJob.disabled=false
    #作业事件追踪的数据源Bean引用
    duceap.elastic.job.MySimpleJob.eventTraceRdbDataSource=dataSource
    #是否启用Mq作业事件追踪,默认false,当eventTraceRdbDataSource有配置则此优先
    #duceap.elastic.job.MySimpleJob.eventTraceMQEnabled=true
    #当启用Mq作业事件追踪采用的消息主题,默认90000001主题
    #duceap.elastic.job.MySimpleJob.eventTraceMQTopic=90000001
    

    5. 主启动类上加上注解

    @EnableScheduling

    6. 表结构设计

    7. 定时调度表配置

    INSERT INTO "T_SCHEDULE_JOB" ("JOB_NAME", "JOB_CLASS", "JOB_TYPE", "CRON", "CRON_DETAIL", "SHARDING_TOTAL_COUNT", "SHARDING_ITEM_PARAMETERS", "JOB_PARAMETER", "FAILOVER", "MISFIRE", "MONITOREXECUTION", "DESCRIPTION", "JOB_PROPERTIES", "OTHER_CONFIG", "APP_CODE", "DISABLED", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "STREAMING_PROCESS", "SCRIPT_COMMAND_LINE") VALUES ('StandardJob', 'StandardOrgExtractionJob', 'Simple', '0/5 * * * * ?', NULL, '3', '0=A,1=B,2=C', 'test', '1', '1', '0', 'simple job', NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL);
    

    @ElasticJobConf中name属性与表对应,类名就是数据表项JOB_CLASS

    @ElasticJobConf(name = "StandardJob",configProvider = ConfigProvider.database )
    public class StandardOrgExtractionJob extends AbstractSimpleJob {
        @Override
        public void execute(ShardingContextWapper shardingContextWapper) {
            String shardParamter = shardingContextWapper.getShardingParameter();
            System.out.println(shardingContextWapper.getJobName()+"MySimpleJob分片参数:"+shardParamter);
        }
    }
    

    8. 业务代码

    1. 从系统参数表中获取配置的数据值进行http请求
    2. 根据jobName查询出对应的业务表名称
    3. 根据表名称去数据项表查对应的字段名称
    4. 把返回的数据根据数据项表中的MAP_NAME进行解析
    5. 拼接成为insert语句插入业务表
    @ElasticJobConf(name = "StandardJob",configProvider = ConfigProvider.database )
    public class StandardOrgExtractionJob extends AbstractSimpleJob {
    
    
        @Override
        public void execute(ShardingContextWapper shardingContextWapper) {
            int version = Integer.parseInt(SysParameterUtils.getSysParameter("version"));
            String appCode = SysParameterUtils.getSysParameter("appCode");
            String passWord= SysParameterUtils.getSysParameter("passWord");
            String name= SysParameterUtils.getSysParameter("name");
            String url= SysParameterUtils.getSysParameter("url");
            String needSvs = SysParameterUtils.getSysParameter("needSvs");
            String svrIP = SysParameterUtils.getSysParameter("svrIP");
            String nPort = SysParameterUtils.getSysParameter("nPort");
    
            ClientForOrg test = new ClientForOrg();
            if(needSvs.equals("1")){
                test.setNeedSvs(true);
                test.initSvs(svrIP,Integer.parseInt(nPort));
            }
            //test.initHttp(version, appCode, name, passWord, url);
            //通过更新时间获取增量机构数据
            try {
                //            Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2010-10-20");
                //            ReturnDataBean<List<Map<String, Object>>> orgData = test.getOrgByIndate(date, null);
                ReturnDataBean<List<Map<String, Object>>> orgData = new ReturnDataBean<>();
                List<Map<String, Object>> lMap= new ArrayList<>();
                Map<String,Object> mm = new HashMap<>();
                mm.put("ORG_CODE01","00000000");
                lMap.add(mm);
                Map<String,Object> m2 = new HashMap<>();
                mm.put("FULL_CODE01","1111111");
                lMap.add(m2);
    
                orgData.setData(lMap);
                if(orgData.getData().size() != 0){
    
                    List<Map<String, Object>> mapTable = PersistentFactory.getJdbcDao().queryForList("select * from T_ORG_DATATABLE  where id = '"+jobName+"'");
                    for(Map<String,Object> table : mapTable){
                        int i = 0;
                        String tableName = (String)table.get("TABLE_NAME");
                        List<Map<String, Object>> mapItem = PersistentFactory.getJdbcDao().queryForList("select * from T_ORG_DATAITEM where TABLE_NAME = '"+tableName+"'");
                        StringBuilder sql = new StringBuilder("insert into "+tableName+"  (");
                        sql.append(" id, ");
                        for (Map<String,Object> item : mapItem){
                            String itemName = (String)item.get("ITEM_NAME");
                            sql.append(itemName);
                            if(i<mapItem.size()-1){
                                sql.append(",");
                            }
                            i++;
                        }
                        i = 0;
                        sql.append(") VALUES ( '"+ UUID.randomUUID().toString().replaceAll("-","")+"',");
                        for (Map<String,Object> item : mapItem){
                            String mapName = (String)item.get("MAP_NAME");
                            String  mapData = (String) orgData.getData().get(0).get(mapName);
                            sql.append("'"+mapData+"'");
                            if(i<mapItem.size()-1){
                                sql.append(",");
                            }
                            i++;
                        }
                        sql.append(" )");
                        PersistentFactory.getJdbcDao().execute(sql.toString());
                    }
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    

    二. java如何生成32位的UUID

    String类型去掉某个字符

    UUID.randomUUID().toString().replaceAll("-","")
    

    相关文章

      网友评论

          本文标题:201106:均衡组织机构抽取-如何生成32位的UUID

          本文链接:https://www.haomeiwen.com/subject/txtfbktx.html