美文网首页
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