├── .flattened-pom.xml
├── .gitignore
├── LICENSE
├── README.md
├── lombok.config
├── pom.xml
├── sika-code-batch
├── .flattened-pom.xml
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── sika
│ └── code
│ └── batch
│ ├── core
│ ├── builder
│ │ ├── BaseItemProcessorBuilder.java
│ │ ├── BaseItemReaderBuilder.java
│ │ └── BaseItemWriterBuilder.java
│ ├── context
│ │ └── BaseBatchContext.java
│ ├── entity
│ │ └── BaseBatchEntity.java
│ ├── factory
│ │ └── BatchFactory.java
│ ├── item
│ │ ├── processor
│ │ │ └── BaseProcessor.java
│ │ ├── reader
│ │ │ └── BaseReader.java
│ │ └── writer
│ │ │ ├── BaseWriterExecutor.java
│ │ │ └── MultiResourceItemWriterSupport.java
│ └── listener
│ │ ├── BaseItemProcessListener.java
│ │ ├── BaseItemReadListener.java
│ │ ├── BaseItemWriteListener.java
│ │ ├── BaseJobExecutionListener.java
│ │ └── BaseStepExecutionListener.java
│ └── standard
│ ├── bean
│ ├── common
│ │ ├── BatchBean.java
│ │ ├── ItemBean.java
│ │ ├── ItemProcessorBean.java
│ │ ├── ItemReaderBean.java
│ │ └── ItemWriterBean.java
│ ├── processor
│ │ ├── BaseProcessorBean.java
│ │ └── StandProcessorBean.java
│ ├── reader
│ │ ├── BaseReaderBean.java
│ │ ├── FlatReaderBean.java
│ │ ├── JdbcReaderBean.java
│ │ ├── MethodReaderBean.java
│ │ └── RestReaderBean.java
│ └── writer
│ │ ├── BaseWriterBean.java
│ │ ├── FlatWriterBean.java
│ │ ├── JdbcWriterBean.java
│ │ ├── MethodWriterBean.java
│ │ ├── RedisWriterBean.java
│ │ └── RestWriterBean.java
│ ├── builder
│ ├── item
│ │ ├── processor
│ │ │ └── StandardProcessorBuilder.java
│ │ ├── reader
│ │ │ ├── StandardFlatItemReaderBuilder.java
│ │ │ ├── StandardJdbcCursorItemReaderBuilder.java
│ │ │ ├── StandardJdbcPagingItemReaderBuilder.java
│ │ │ ├── StandardMethodItemReaderBuilder.java
│ │ │ └── StandardRestItemReaderBuilder.java
│ │ └── writer
│ │ │ ├── StandardFlatItemWriterBuilder.java
│ │ │ ├── StandardJdbcBatchItemWriterBuilder.java
│ │ │ ├── StandardMethodItemWriterBuilder.java
│ │ │ ├── StandardMultiResourceItemWriterBuilder.java
│ │ │ ├── StandardRedisBatchItemWriterBuilder.java
│ │ │ └── StandardRestItemWriterBuilder.java
│ └── writerdata
│ │ ├── BaseWriterDataBuilder.java
│ │ └── DefaultWriterDataBuilder.java
│ ├── command
│ └── BatchCommander.java
│ ├── config
│ ├── InmemoryJobConfig.java
│ └── JSONBeanWrapperFieldSetMapper.java
│ ├── constant
│ ├── BatchConstant.java
│ └── RedisStoreTypeEnum.java
│ ├── context
│ ├── StandardContext.java
│ └── StandardParamContext.java
│ ├── entity
│ └── StandardBatchEntity.java
│ ├── item
│ ├── processor
│ │ └── StandardProcessor.java
│ ├── reader
│ │ ├── MethodReaderItemSupport.java
│ │ ├── RestReaderItemSupport.java
│ │ └── StandardReader.java
│ └── writer
│ │ ├── FlatFileItemWriterSupport.java
│ │ ├── JdbcBatchItemWriterSupport.java
│ │ ├── MethodWriterItemSupport.java
│ │ ├── RedisBatchItemWriterSupport.java
│ │ ├── RestWriterItemSupport.java
│ │ └── StandardWriterExecutor.java
│ ├── listener
│ ├── StandChunkListener.java
│ ├── StandardJobExecutionListener.java
│ ├── StandardStepExecutionListener.java
│ ├── StandardStepProcessListener.java
│ ├── StandardStepReadListener.java
│ └── StandardStepWriteListener.java
│ ├── store
│ ├── StandardMapExecutionContextDao.java
│ ├── StandardMapJobExecutionDao.java
│ ├── StandardMapJobInstanceDao.java
│ ├── StandardMapJobRepositoryFactoryBean.java
│ ├── StandardMapStepExecutionDao.java
│ └── bean
│ │ └── StandardJobInstance.java
│ └── util
│ └── BatchUtil.java
├── sika-code-cache
├── .flattened-pom.xml
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── sika
│ └── code
│ └── cache
│ ├── constant
│ └── CacheConstant.java
│ ├── executor
│ ├── LocalCacheDefaultExecutor.java
│ ├── LocalCacheExecutor.java
│ ├── RedisCacheDefaultExecutor.java
│ └── RedisCacheExecutor.java
│ ├── manager
│ └── CacheManager.java
│ └── pojo
│ ├── CacheDTO.java
│ ├── ClearCacheDTO.java
│ ├── ClearLocalCacheDTO.java
│ ├── ClearRedisCacheDTO.java
│ ├── GetCacheDTO.java
│ ├── GetLocalCacheDTO.java
│ └── GetRedisCacheDTO.java
├── sika-code-core
├── .flattened-pom.xml
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── com
│ │ └── sika
│ │ └── code
│ │ └── core
│ │ ├── base
│ │ ├── application
│ │ │ └── BaseApplication.java
│ │ ├── constant
│ │ │ ├── BaseCodeEnum.java
│ │ │ ├── BaseComponentScan.java
│ │ │ ├── BaseConstant.java
│ │ │ ├── BaseTypeEnum.java
│ │ │ └── PropertiesConstant.java
│ │ ├── convert
│ │ │ └── BaseConverter.java
│ │ ├── errorcode
│ │ │ ├── BaseErrorCode.java
│ │ │ └── BaseErrorCodeEnum.java
│ │ ├── pojo
│ │ │ ├── BasePoJo.java
│ │ │ ├── command
│ │ │ │ └── BaseCommand.java
│ │ │ ├── context
│ │ │ │ └── BaseContext.java
│ │ │ ├── domain
│ │ │ │ ├── entity
│ │ │ │ │ ├── BaseEntity.java
│ │ │ │ │ ├── BaseEntityImpl.java
│ │ │ │ │ └── BaseStandardEntity.java
│ │ │ │ ├── factory
│ │ │ │ │ ├── BaseFactory.java
│ │ │ │ │ └── MetaSpringUtil.java
│ │ │ │ └── valueobject
│ │ │ │ │ └── BaseValueObject.java
│ │ │ ├── dto
│ │ │ │ ├── BaseDTO.java
│ │ │ │ ├── BaseMsgDTO.java
│ │ │ │ └── ServiceResult.java
│ │ │ ├── po
│ │ │ │ └── BasePO.java
│ │ │ ├── query
│ │ │ │ ├── BaseQuery.java
│ │ │ │ ├── Page.java
│ │ │ │ ├── PageQuery.java
│ │ │ │ └── SortType.java
│ │ │ └── vo
│ │ │ │ └── BaseVO.java
│ │ ├── repository
│ │ │ └── BaseRepository.java
│ │ ├── service
│ │ │ ├── BaseService.java
│ │ │ └── BaseServiceImpl.java
│ │ ├── test
│ │ │ ├── BaseTest.java
│ │ │ ├── BaseTestController.java
│ │ │ ├── BaseTestEntity.java
│ │ │ ├── BaseTestRepository.java
│ │ │ └── BaseTestService.java
│ │ └── util
│ │ │ ├── JSONUtil.java
│ │ │ └── ScReflectUtil.java
│ │ ├── exception
│ │ ├── BusinessException.java
│ │ ├── advice
│ │ │ └── ExceptionAdvice.java
│ │ ├── config
│ │ │ └── ExceptionConfig.java
│ │ ├── dto
│ │ │ └── BaseBusinessExceptionDTO.java
│ │ └── properties
│ │ │ └── ExceptionProperties.java
│ │ ├── informer
│ │ ├── BaseInformer.java
│ │ ├── config
│ │ │ └── InformerConfig.java
│ │ ├── constant
│ │ │ └── MsgTypeEnum.java
│ │ ├── dto
│ │ │ └── BaseThirdMessageDTO.java
│ │ ├── impl
│ │ │ └── InformerForLog.java
│ │ ├── properties
│ │ │ └── InformerProperties.java
│ │ └── util
│ │ │ └── InformerUtil.java
│ │ ├── log
│ │ ├── config
│ │ │ └── TraceIdGenerator.java
│ │ └── util
│ │ │ └── LogUtil.java
│ │ ├── result
│ │ ├── Result.java
│ │ ├── config
│ │ │ └── ResultConfig.java
│ │ └── generator
│ │ │ └── ResultGenerator.java
│ │ └── util
│ │ ├── BeanUtil.java
│ │ ├── EnumUtil.java
│ │ └── IdUtil.java
│ └── test
│ └── java
│ └── test.txt
├── sika-code-db-sharding
├── .flattened-pom.xml
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── sika
│ │ └── code
│ │ └── db
│ │ └── sharding
│ │ ├── annotation
│ │ └── ShardingRule.java
│ │ ├── config
│ │ ├── ShardingConfigure.java
│ │ └── ShardingRuleConfig.java
│ │ ├── context
│ │ └── ShardingContext.java
│ │ ├── executor
│ │ ├── DefaultShardingExecutor.java
│ │ └── ShardingExecutor.java
│ │ ├── generator
│ │ ├── builder
│ │ │ └── SqlGeneratorBuilder.java
│ │ ├── dto
│ │ │ └── SqlGeneratorDTO.java
│ │ └── executor
│ │ │ └── SqlGeneratorExecutor.java
│ │ ├── manager
│ │ └── ShardingStrategyManager.java
│ │ ├── plugin
│ │ └── ShardingInterceptor.java
│ │ ├── repository
│ │ └── BaseShardingRepository.java
│ │ ├── strategy
│ │ ├── Strategy.java
│ │ ├── xxyy
│ │ │ ├── BaseXxYyStrategy.java
│ │ │ ├── EightDbEightTableStrategy.java
│ │ │ ├── SixteenDbSixteenTableStrategy.java
│ │ │ └── ThirtyTwoDbThirtyTwoTableStrategy.java
│ │ └── year
│ │ │ ├── BaseYearXxStrategy.java
│ │ │ ├── YearDayStrategy.java
│ │ │ ├── YearMonthStrategy.java
│ │ │ └── YearSevenDayStrategy.java
│ │ └── util
│ │ └── ShardingUtil.java
│ └── resources
│ └── db
│ ├── create_db_demo.sql
│ └── create_table_demo.sql
├── sika-code-db
├── .flattened-pom.xml
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── com
│ │ └── sika
│ │ └── code
│ │ └── db
│ │ ├── constant
│ │ └── DbConstant.java
│ │ ├── injector
│ │ ├── config
│ │ │ ├── CustomizedSqlInjector.java
│ │ │ └── MyBatisPlusConfig.java
│ │ └── method
│ │ │ ├── LogicDeleteMethod.java
│ │ │ └── UpdateBatchMethod.java
│ │ ├── mapper
│ │ └── BaseMapper.java
│ │ ├── po
│ │ ├── BasePoAuto.java
│ │ └── BasePoNone.java
│ │ └── repository
│ │ ├── BaseRepositoryMybatisPlus.java
│ │ └── impl
│ │ └── BaseRepositoryMyBatisPlusImpl.java
│ └── test
│ └── java
│ └── test.txt
├── sika-code-generator
├── .flattened-pom.xml
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── sika
│ │ │ └── code
│ │ │ └── generator
│ │ │ ├── GeneratorCommander.java
│ │ │ ├── GeneratorExecutor.java
│ │ │ ├── constant
│ │ │ └── GenerratorClassEnum.java
│ │ │ └── dto
│ │ │ ├── GeneratorClientDTO.java
│ │ │ └── GeneratorDTO.java
│ └── resources
│ │ ├── log4j2-spring.xml
│ │ ├── logback.xml
│ │ └── template
│ │ ├── aggregateRoot.java.ftl
│ │ ├── apiService.java.ftl
│ │ ├── apiServiceImpl.java.ftl
│ │ ├── command.java.ftl
│ │ ├── context.java.ftl
│ │ ├── controller.java.ftl
│ │ ├── controller.test.java.ftl
│ │ ├── converter.java.ftl
│ │ ├── dto.java.ftl
│ │ ├── entity.java.ftl
│ │ ├── entity.test.java.ftl
│ │ ├── factory.java.ftl
│ │ ├── mapper.java.ftl
│ │ ├── mapper.xml.ftl
│ │ ├── po.java.ftl
│ │ ├── query.java.ftl
│ │ ├── repository.java.ftl
│ │ ├── repository.test.java.ftl
│ │ ├── repositoryImpl.java.ftl
│ │ ├── rpc.java.ftl
│ │ ├── service.java.ftl
│ │ ├── service.test.java.ftl
│ │ ├── serviceImpl.java.ftl
│ │ └── valueObject.java.ftl
│ └── test
│ └── java
│ └── test.txt
├── sika-code-job
├── .flattened-pom.xml
├── README.md
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── ak
│ │ │ └── cloud
│ │ │ └── standard
│ │ │ └── frame
│ │ │ └── job
│ │ │ └── base
│ │ │ ├── context
│ │ │ └── BaseJobContext.java
│ │ │ ├── executor
│ │ │ └── BaseJobExecutor.java
│ │ │ └── task
│ │ │ └── BaseJobTask.java
│ └── resources
│ │ └── test.txt
│ └── test
│ └── java
│ └── test.txt
└── sika-code-migrate
├── .flattened-pom.xml
├── pom.xml
└── src
└── main
└── java
└── com
└── sika
└── code
└── migrate
├── builder
├── MigrateForestRequestBuilder.java
├── MigrateRequestRuleBuilder.java
└── MigrateRuleResponseBuilder.java
├── constant
├── MigrateConstant.java
└── MigrateTypeEnum.java
├── executor
├── MigrateRequestExecutor.java
└── MigrateResultExecutor.java
├── interceptor
├── MigrateInterceptor.java
└── MigrateResponseBodyWrite.java
├── pojo
├── MigrateResultDTO.java
├── MigrateRuleRequest.java
├── MigrateRuleResponse.java
└── MigrateRuleResult.java
├── rule
└── MigrateRequestRule.java
└── util
└── SpringMVCUtil.java
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | *.class
3 | *.iml
4 |
5 | # Mobile Tools for Java (J2ME)
6 | .mtj.tmp/
7 |
8 | # Package Files #
9 | *.jar
10 | *.war
11 | *.ear
12 | .settings
13 | .settings/*
14 | .classpath
15 | .project
16 | target
17 | target/*
18 | classes
19 | classes/*
20 | */node_modules/*
21 | node_modules/*
22 |
23 | rebel.xml
24 |
25 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
26 | hs_err_pid*
27 | logs
28 | logs/*
29 |
30 | *.rebel-remote.xml
31 | *.rebel-remote.xml.bak
32 | *.rebel.xml.bak
33 | *Mine_*
34 | .history
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 sika-code
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/lombok.config:
--------------------------------------------------------------------------------
1 | lombok.equalsAndHashCode.callSuper = call
--------------------------------------------------------------------------------
/sika-code-batch/.flattened-pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | io.github.sika-code-cloud
7 | sika-code
8 | 3.1.2
9 |
10 | io.github.sika-code-cloud
11 | sika-code-batch
12 | 3.1.2
13 |
14 |
15 | MIT License
16 | http://www.opensource.org/licenses/mit-license.php
17 |
18 |
19 |
20 | 8
21 | 8
22 |
23 |
24 |
25 | io.github.sika-code-cloud
26 | sika-code-core
27 | ${revision}
28 |
29 |
30 | org.springframework.boot
31 | spring-boot-starter-batch
32 |
33 |
34 | org.springframework.boot
35 | spring-boot-starter-data-redis
36 | provided
37 |
38 |
39 | com.dtflys.forest
40 | forest-spring-boot-starter
41 | ${forest.version}
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/sika-code-batch/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | sika-code
7 | io.github.sika-code-cloud
8 | ${revision}
9 |
10 | 4.0.0
11 |
12 | sika-code-batch
13 |
14 |
15 | 8
16 | 8
17 |
18 |
19 |
20 | io.github.sika-code-cloud
21 | sika-code-core
22 | ${revision}
23 |
24 |
25 |
26 | org.springframework.boot
27 | spring-boot-starter-batch
28 |
29 |
30 | org.springframework.boot
31 | spring-boot-starter-data-redis
32 | provided
33 |
34 |
35 | com.dtflys.forest
36 | forest-spring-boot-starter
37 | ${forest.version}
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/builder/BaseItemProcessorBuilder.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.builder;
2 |
3 | import com.sika.code.batch.standard.bean.common.BatchBean;
4 | import org.springframework.batch.item.ItemProcessor;
5 |
6 | /**
7 | *
8 | * 基础写构建起
9 | *
10 | *
11 | * @author by sikadai
12 | * @version 1.0
13 | * @since 2022/6/3 17:52
14 | */
15 | public interface BaseItemProcessorBuilder {
16 | ItemProcessor build(BatchBean batchBean);
17 | }
18 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/builder/BaseItemReaderBuilder.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.builder;
2 |
3 | import com.sika.code.batch.standard.bean.common.BatchBean;
4 | import org.springframework.batch.item.ItemReader;
5 |
6 | /**
7 | *
8 | * 基础写构建起
9 | *
10 | *
11 | * @author by sikadai
12 | * @version 1.0
13 | * @since 2022/6/3 17:52
14 | */
15 | public interface BaseItemReaderBuilder {
16 | ItemReader build(BatchBean batchBean);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/builder/BaseItemWriterBuilder.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.builder;
2 |
3 | import com.sika.code.batch.standard.bean.common.BatchBean;
4 | import org.springframework.batch.item.ItemWriter;
5 |
6 | /**
7 | *
8 | * 基础写构建起
9 | *
10 | *
11 | * @author by sikadai
12 | * @version 1.0
13 | * @since 2022/6/3 17:52
14 | */
15 | public interface BaseItemWriterBuilder {
16 | ItemWriter build(BatchBean batchBean);
17 | }
18 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/context/BaseBatchContext.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.context;
2 |
3 | import com.sika.code.core.base.pojo.context.BaseContext;
4 | import lombok.Data;
5 |
6 | /**
7 | *
8 | * 基础批处理上下文
9 | *
10 | *
11 | * @author by sikadai
12 | * @version 1.0
13 | * @since 2022/6/3 12:58
14 | */
15 | @Data
16 | public abstract class BaseBatchContext implements BaseContext {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/entity/BaseBatchEntity.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.entity;
2 |
3 | import com.sika.code.core.base.pojo.domain.entity.BaseStandardEntity;
4 | import com.sika.code.batch.core.context.BaseBatchContext;
5 |
6 | /**
7 | *
8 | * 基础批处理实体
9 | *
10 | *
11 | * @author by sikadai
12 | * @version 1.0
13 | * @since 2022/6/3 12:57
14 | */
15 | public abstract class BaseBatchEntity extends BaseStandardEntity {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/item/processor/BaseProcessor.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.item.processor;
2 |
3 | import com.sika.code.batch.standard.bean.common.BatchBean;
4 | import lombok.Data;
5 | import lombok.experimental.Accessors;
6 | import lombok.extern.slf4j.Slf4j;
7 | import org.springframework.batch.item.ItemProcessor;
8 |
9 | /**
10 | *
11 | * 基础处理器
12 | *
13 | *
14 | * @author by sikadai
15 | * @version 1.0
16 | * @since 2022/6/3 12:53
17 | */
18 | @Slf4j
19 | @Data
20 | @Accessors(chain = true)
21 | public abstract class BaseProcessor implements ItemProcessor {
22 | protected BatchBean batchBean;
23 |
24 |
25 | }
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/item/reader/BaseReader.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.item.reader;
2 |
3 |
4 | import com.sika.code.batch.standard.bean.common.BatchBean;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 | import org.springframework.batch.item.*;
8 | import org.springframework.beans.factory.InitializingBean;
9 | import org.springframework.util.Assert;
10 |
11 | /**
12 | *
13 | * 基础读取器
14 | *
15 | *
16 | * @author by sikadai
17 | * @version 1.0
18 | * @since 2022/6/3 12:53
19 | */
20 | @Setter
21 | @Getter
22 | public class BaseReader implements ItemStreamReader, InitializingBean {
23 | protected BatchBean batchBean;
24 | protected ItemReader itemReader;
25 |
26 | @Override
27 | public I read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
28 | return itemReader.read();
29 | }
30 |
31 | @Override
32 | public void afterPropertiesSet() throws Exception {
33 | Assert.notNull(batchBean, "The batchBean may not be null");
34 | Assert.notNull(itemReader, "The 'itemReader' may not be null");
35 | }
36 |
37 | @Override
38 | public void close() throws ItemStreamException {
39 | if (itemReader instanceof ItemStream) {
40 | ((ItemStream) itemReader).close();
41 | }
42 | }
43 |
44 | @Override
45 | public void open(ExecutionContext executionContext) throws ItemStreamException {
46 | if (itemReader instanceof ItemStream) {
47 | ((ItemStream) itemReader).open(executionContext);
48 | }
49 | }
50 |
51 | @Override
52 | public void update(ExecutionContext executionContext) throws ItemStreamException {
53 | if (itemReader instanceof ItemStream) {
54 | ((ItemStream) itemReader).update(executionContext);
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/item/writer/MultiResourceItemWriterSupport.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.item.writer;
2 |
3 | import cn.hutool.core.collection.CollUtil;
4 | import com.google.common.collect.Lists;
5 | import lombok.Data;
6 | import org.springframework.batch.item.file.MultiResourceItemWriter;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | *
12 | *
13 | *
14 | *
15 | * @author by sikadai
16 | * @version 1.0
17 | * @since 2022/5/29 20:28
18 | */
19 | @Data
20 | public class MultiResourceItemWriterSupport extends MultiResourceItemWriter {
21 |
22 | private int currentResourceItemCountTemp = 0;
23 |
24 | private int itemCountLimitPerResource = Integer.MAX_VALUE;
25 |
26 | @Override
27 | public void write(List extends T> items) throws Exception {
28 | List list = Lists.newArrayList();
29 | for (T t : items) {
30 | currentResourceItemCountTemp++;
31 | list.add(t);
32 | if (currentResourceItemCountTemp == itemCountLimitPerResource) {
33 | super.write(list);
34 | currentResourceItemCountTemp = 0;
35 | list.clear();
36 | }
37 | }
38 | if (CollUtil.isNotEmpty(list)) {
39 | super.write(list);
40 | }
41 | }
42 |
43 | @Override
44 | public void setItemCountLimitPerResource(int itemCountLimitPerResource) {
45 | this.itemCountLimitPerResource = itemCountLimitPerResource;
46 | super.setItemCountLimitPerResource(itemCountLimitPerResource);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/listener/BaseItemProcessListener.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.listener;
2 |
3 | import org.springframework.batch.core.ItemProcessListener;
4 |
5 | public interface BaseItemProcessListener extends ItemProcessListener {
6 | @Override
7 | default void beforeProcess(T t) {
8 |
9 | }
10 |
11 | @Override
12 | default void afterProcess(T t, S s) {
13 |
14 | }
15 |
16 | @Override
17 | default void onProcessError(T t, Exception e) {
18 |
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/listener/BaseItemReadListener.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.listener;
2 |
3 | import org.springframework.batch.core.ItemReadListener;
4 |
5 |
6 | public interface BaseItemReadListener extends ItemReadListener {
7 | @Override
8 | default void beforeRead() {
9 |
10 | }
11 |
12 | @Override
13 | default void afterRead(T t) {
14 |
15 | }
16 |
17 | @Override
18 | default void onReadError(Exception e) {
19 |
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/listener/BaseItemWriteListener.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.listener;
2 |
3 |
4 | import org.springframework.batch.core.ItemWriteListener;
5 |
6 | import java.util.List;
7 |
8 | public interface BaseItemWriteListener extends ItemWriteListener {
9 |
10 | @Override
11 | default void beforeWrite(List extends I> list) {
12 |
13 | }
14 |
15 | @Override
16 | default void afterWrite(List extends I> list) {
17 | }
18 |
19 | @Override
20 | default void onWriteError(Exception e, List extends I> list) {
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/listener/BaseJobExecutionListener.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.listener;
2 |
3 | import org.springframework.batch.core.JobExecution;
4 | import org.springframework.batch.core.JobExecutionListener;
5 |
6 | /**
7 | *
8 | * 基础Job执行器监听器
9 | *
10 | *
11 | * @author by sikadai
12 | * @version 1.0
13 | * @since 2022/6/4 10:07
14 | */
15 | public interface BaseJobExecutionListener extends JobExecutionListener {
16 | @Override
17 | default void beforeJob(JobExecution jobExecution) {
18 |
19 | }
20 |
21 | @Override
22 | default void afterJob(JobExecution jobExecution) {
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/core/listener/BaseStepExecutionListener.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.core.listener;
2 |
3 | import org.springframework.batch.core.ExitStatus;
4 | import org.springframework.batch.core.StepExecution;
5 | import org.springframework.batch.core.StepExecutionListener;
6 |
7 | /**
8 | *
9 | * 基础Step执行器监听器
10 | *
11 | *
12 | * @author by sikadai
13 | * @version 1.0
14 | * @since 2022/6/4 10:07
15 | */
16 | public interface BaseStepExecutionListener extends StepExecutionListener {
17 | @Override
18 | default void beforeStep(StepExecution stepExecution) {
19 |
20 | }
21 |
22 | @Override
23 | default ExitStatus afterStep(StepExecution stepExecution) {
24 | return null;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/common/BatchBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.common;
2 |
3 | import com.sika.code.batch.standard.bean.processor.StandProcessorBean;
4 | import lombok.Data;
5 |
6 | import java.util.*;
7 |
8 | /**
9 | *
10 | * 批处理的入口Bean
11 | *
12 | *
13 | * @author by sikadai
14 | * @version 1.0
15 | * @since 2022/5/29 15:40
16 | */
17 | @Data
18 | public class BatchBean {
19 |
20 | private String jobName;
21 | private String stepName;
22 | private Integer skipLimit;
23 | private Integer chunk = 10000;
24 | // 是否开启多写源异步写、当不为空的时候为异步写、为空为同步写
25 | private Integer asynWrite;
26 |
27 | private ItemReaderBean> itemReaderBean;
28 | private ItemProcessorBean> itemProcessorBean;
29 | private List> itemWriterBeans;
30 |
31 | private ItemWriterBean> currentItemWriterBean;
32 |
33 | private String writerExecutorClassName;
34 |
35 | // listener
36 | private LinkedHashSet jobExecutionListenerClassNames;
37 | private LinkedHashSet stepExecutionListenerClassNames;
38 | // 跳过的异常和无须跳过的异常
39 | private String skipExceptionClassName;
40 | private String noSkipExceptionClassName;
41 | private Set chunkListenerClassNames;
42 | private Map contextMap;
43 |
44 | public LinkedHashMap readerProcessorMapper() {
45 | if (StandProcessorBean.class.equals(itemProcessorBean.getBeanClass())) {
46 | StandProcessorBean standProcessorBean = (StandProcessorBean) itemProcessorBean.getBeanObj();
47 | return standProcessorBean.getReaderProcessorMapper();
48 | }
49 | return null;
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/common/ItemBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.common;
2 |
3 | import cn.hutool.core.bean.BeanUtil;
4 | import lombok.AccessLevel;
5 | import lombok.Data;
6 | import lombok.Setter;
7 |
8 | import java.util.Map;
9 |
10 | /**
11 | *
12 | *
13 | *
14 | *
15 | * @author by sikadai
16 | * @version 1.0
17 | * @since 2022/6/12 11:55
18 | */
19 | @Data
20 | public class ItemBean {
21 | private Class beanClass;
22 | private Map bean;
23 | @Setter(value = AccessLevel.NONE)
24 | private T beanObj;
25 |
26 | public T buildBeanObj() {
27 | if (beanObj == null) {
28 | this.beanObj = BeanUtil.toBean(bean, beanClass);
29 | }
30 | return this.beanObj;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/common/ItemProcessorBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.common;
2 |
3 | import com.sika.code.batch.standard.bean.processor.BaseProcessorBean;
4 |
5 | /**
6 | *
7 | * 处理Bean
8 | *
9 | *
10 | * @author sikadai
11 | * @version 1.0
12 | * @since 2022/6/16 23:11
13 | */
14 | public class ItemProcessorBean extends ItemBean {
15 | }
16 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/common/ItemReaderBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.common;
2 |
3 | import com.sika.code.batch.standard.bean.reader.BaseReaderBean;
4 |
5 | /**
6 | *
7 | * 读取Bean
8 | *
9 | *
10 | * @author sikadai
11 | * @version 1.0
12 | * @since 2022/6/16 23:11
13 | */
14 | public class ItemReaderBean extends ItemBean {
15 | }
16 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/common/ItemWriterBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.common;
2 |
3 | import com.sika.code.batch.standard.bean.writer.BaseWriterBean;
4 |
5 | /**
6 | *
7 | * 写Bean
8 | *
9 | *
10 | * @author sikadai
11 | * @version 1.0
12 | * @since 2022/6/16 23:11
13 | */
14 | public class ItemWriterBean extends ItemBean {
15 | @Override
16 | public T buildBeanObj() {
17 | T writerBean = super.buildBeanObj();
18 | writerBean.build();
19 | return writerBean;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/processor/BaseProcessorBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.processor;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.LinkedHashMap;
6 | import java.util.LinkedHashSet;
7 |
8 | /**
9 | *
10 | * 基础处理器Bean
11 | *
12 | *
13 | * @author by sikadai
14 | * @version 1.0
15 | * @since 2022/6/12 11:18
16 | */
17 | @Data
18 | public class BaseProcessorBean {
19 | // 构建者ClassName
20 | private String builderClassName;
21 | // 输入和输出的映射关系
22 | private LinkedHashMap readerProcessorMapper;
23 | private LinkedHashSet listenerClassNames;
24 | }
25 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/processor/StandProcessorBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.processor;
2 |
3 | import lombok.Data;
4 |
5 | /**
6 | *
7 | *
8 | *
9 | *
10 | * @author by sikadai
11 | * @version 1.0
12 | * @since 2022/6/12 18:40
13 | */
14 | @Data
15 | public class StandProcessorBean extends BaseProcessorBean{
16 | }
17 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/reader/BaseReaderBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.reader;
2 |
3 | import com.sika.code.batch.standard.constant.BatchConstant;
4 | import lombok.Data;
5 |
6 | import java.util.LinkedHashSet;
7 |
8 | /**
9 | *
10 | * 基础读取器bean
11 | *
12 | *
13 | * @author by sikadai
14 | * @version 1.0
15 | * @since 2022/6/12 11:18
16 | */
17 | @Data
18 | public class BaseReaderBean {
19 | private String builderClassName;
20 | private LinkedHashSet listenerClassNames;
21 | protected Integer pageSize = BatchConstant.PAGE_SIZE_INIT;
22 | }
23 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/reader/FlatReaderBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.reader;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.LinkedHashSet;
6 |
7 | /**
8 | *
9 | *
10 | *
11 | *
12 | * @author by sikadai
13 | * @version 1.0
14 | * @since 2022/6/12 18:17
15 | */
16 | @Data
17 | public class FlatReaderBean extends BaseReaderBean {
18 | private LinkedHashSet names;
19 | private String source;
20 | private String delimiter;
21 | private int linesToSkip;
22 | }
23 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/reader/JdbcReaderBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.reader;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.LinkedHashMap;
6 |
7 | /**
8 | *
9 | * JDBC的读取器
10 | *
11 | *
12 | * @author by sikadai
13 | * @version 1.0
14 | * @since 2022/6/12 18:23
15 | */
16 | @Data
17 | public class JdbcReaderBean extends BaseReaderBean {
18 | // 查询的sql
19 | private String selectSql;
20 | // from的sql
21 | private String fromSql;
22 | // where条件sql
23 | private String whereSql;
24 | // 排序key和类型的映射
25 | private LinkedHashMap sortKeyType;
26 | // 结果集的映射
27 | private LinkedHashMap resultSetKey;
28 | }
29 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/reader/MethodReaderBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.reader;
2 |
3 | import com.google.common.collect.Maps;
4 | import com.sika.code.batch.standard.constant.BatchConstant;
5 | import com.sika.code.core.util.BeanUtil;
6 | import lombok.Data;
7 |
8 | import java.util.Map;
9 |
10 | /**
11 | *
12 | * 方法阅读Bean
13 | *
14 | *
15 | * @author by sikadai
16 | * @version 1.0
17 | * @since 2022/6/12 18:17
18 | */
19 | @Data
20 | public class MethodReaderBean extends BaseReaderBean {
21 | private String className;
22 | private String methodName;
23 | private String indexName;
24 | private Long startIndex;
25 | private String queryClassName;
26 | private Map query;
27 |
28 | public Object buildQuery() {
29 | if (query == null) {
30 | query = Maps.newLinkedHashMap();
31 | }
32 | if (pageSize == null) {
33 | pageSize = BatchConstant.PAGE_SIZE_INIT;
34 | }
35 | if (startIndex == null) {
36 | startIndex = BatchConstant.START_INDEX_INIT;
37 | }
38 | query.put(BatchConstant.PAGE_SIZE_KEY, pageSize);
39 | query.put(BatchConstant.START_INDEX_KEY, startIndex);
40 | return BeanUtil.toBean(query, BeanUtil.getTClass(queryClassName));
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/reader/RestReaderBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.reader;
2 |
3 | import cn.hutool.core.text.StrPool;
4 | import cn.hutool.core.util.StrUtil;
5 | import com.google.common.collect.Maps;
6 | import com.sika.code.batch.standard.constant.BatchConstant;
7 | import lombok.Data;
8 |
9 | import java.util.Map;
10 | import java.util.Set;
11 |
12 | /**
13 | *
14 | * 方法阅读Bean
15 | *
16 | *
17 | * @author by sikadai
18 | * @version 1.0
19 | * @since 2022/6/12 18:17
20 | */
21 | @Data
22 | public class RestReaderBean extends BaseReaderBean {
23 | private String domain;
24 | private String path;
25 | private String requestType;
26 | private String indexName;
27 | private Long startIndex;
28 | private Map query;
29 | private String fullUrl;
30 | private String codeName;
31 | private Set successCodes;
32 | private String msgName;
33 | private String dataName;
34 |
35 | public String buildFullUrl() {
36 | if (this.fullUrl == null) {
37 | this.fullUrl = StrUtil.join(StrPool.SLASH, domain, path);
38 | }
39 | return this.fullUrl;
40 | }
41 |
42 | public Map buildQuery() {
43 | if (query == null) {
44 | query = Maps.newLinkedHashMap();
45 | }
46 | if (startIndex == null) {
47 | this.startIndex = BatchConstant.START_INDEX_INIT;
48 | }
49 | if (pageSize == null) {
50 | this.pageSize = BatchConstant.PAGE_SIZE_INIT;
51 | }
52 | query.put(BatchConstant.PAGE_SIZE_KEY, pageSize);
53 | query.put(BatchConstant.START_INDEX_KEY, startIndex);
54 | return query;
55 | }
56 |
57 | public String buildRequestType() {
58 | if (StrUtil.isBlank(this.requestType)) {
59 | this.requestType = "POST";
60 | }
61 | return requestType;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/sika-code-batch/src/main/java/com/sika/code/batch/standard/bean/writer/BaseWriterBean.java:
--------------------------------------------------------------------------------
1 | package com.sika.code.batch.standard.bean.writer;
2 |
3 | import cn.hutool.core.util.StrUtil;
4 | import com.sika.code.batch.standard.builder.writerdata.BaseWriterDataBuilder;
5 | import com.sika.code.batch.standard.builder.writerdata.DefaultWriterDataBuilder;
6 | import com.sika.code.core.util.BeanUtil;
7 | import lombok.Data;
8 |
9 | import java.util.LinkedHashMap;
10 | import java.util.LinkedHashSet;
11 | import java.util.Map;
12 |
13 | /**
14 | *
15 | * 基础写Bean
16 | *
17 | *
18 | * @author by sikadai
19 | * @version 1.0
20 | * @since 2022/6/12 11:18
21 | */
22 | @Data
23 | public class BaseWriterBean {
24 | private String builderClassName;
25 | private LinkedHashSet listenerClassNames;
26 | private LinkedHashMap processorWriterMapper;
27 | private String writerDataBuilderClassName;
28 |
29 | private BaseWriterDataBuilder