Commit 21546471 by liuzz

转换规则开发

parent 2ba2b5d2
......@@ -178,10 +178,6 @@ public class DataImportController {
dataImportService.updateById(updateTemplate);*/
} else {
// oracle
final Integer count = jdbcTemplate.queryForObject(StrFormatter.format("select count(*) from user_tables where table_name =upper('{}')", tableName), Integer.class);
if (count > 0) {
return AjaxResult.error("此表已存在");
}
List<String> prodSqlList = new ArrayList<>();
List<String> tempSqlList = new ArrayList<>();
final String tempTableName = tableName + "_TEMP";
......@@ -210,8 +206,14 @@ public class DataImportController {
String[] temp = new String[tempSqlList.size()];
prodSqlList.toArray(prod);
tempSqlList.toArray(temp);
final Integer prodCount = jdbcTemplate.queryForObject(StrFormatter.format("select count(*) from user_tables where table_name =upper('{}')", tableName), Integer.class);
if (prodCount == 0) {
jdbcTemplate.batchUpdate(prod);
}
final Integer tempCount = jdbcTemplate.queryForObject(StrFormatter.format("select count(*) from user_tables where table_name =upper('{}')", tempTableName), Integer.class);
if (tempCount == 0) {
jdbcTemplate.batchUpdate(temp);
}
// 修改模板表绑定的表名
final DataTemplate updateTemplate = new DataTemplate();
updateTemplate.setId(template.getId());
......
package com.tbyf.his.web.controller.dataImport;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -65,7 +66,7 @@ public class DataRuleController {
final LambdaQueryWrapper<DataRule> queryWrapper = Wrappers.lambdaQuery(DataRule.class);
queryWrapper.like(StringUtils.isNotBlank(param.getName()), DataRule::getName, param.getName())
.eq(StringUtils.isNotBlank(param.getType()), DataRule::getType, param.getType())
.in(DataRule::getType, "基础规则", "组合规则");
.in(DataRule::getType, "基础规则", "组合规则","转换规则");
final Page<DataRule> templatePage = dataRuleService.page(page, queryWrapper);
return param.convert(templatePage);
}
......@@ -75,7 +76,7 @@ public class DataRuleController {
@ApiOperation("规则字典")
public AjaxResult queryRuleDict() {
final LambdaQueryWrapper<DataRule> queryWrapper = Wrappers.lambdaQuery(DataRule.class);
queryWrapper.in(DataRule::getType, "基础规则", "组合规则")
queryWrapper.in(DataRule::getType, "基础规则", "组合规则","转换规则")
.select(DataRule::getId, DataRule::getName);
return AjaxResult.success(dataRuleService.list(queryWrapper));
}
......@@ -113,12 +114,15 @@ public class DataRuleController {
@PostMapping("/test")
@ApiOperation("规则测试")
public AjaxResult testRule(@RequestBody @Validated RuleVO test) {
if (StrUtil.equals(test.getType(),"转换规则")){
return AjaxResult.success(StrUtil.format("转换结果为:[{}]",DiConfig.valueConvert(test)));
}
final RuleValidator validator = DiConfig.getValidator(test.getMode());
validator.validate(test);
if (StringUtils.isNotBlank(test.getResult())) {
return AjaxResult.error(test.getResult());
}
return AjaxResult.success();
return AjaxResult.success("测试通过");
}
@IgnoreWebSecurity
......
......@@ -30,6 +30,21 @@ public class DiConfig {
public static final Map<String, RuleValidator> VALIDATOR_MAP = new ConcurrentHashMap<>(8);
private static final List<ValueConvert> CONVERT_LIST = new ArrayList<>();
/**
* 转换规则处理
* @param vo
* @return
*/
public static String valueConvert(RuleVO vo){
for (ValueConvert convert : CONVERT_LIST){
if (convert.support(vo)){
return convert.convert(vo);
}
}
return vo.getValue();
}
/**
* 获取对应列的数据起始位置
......@@ -92,6 +107,8 @@ public class DiConfig {
public void init() {
final Map<String, RuleValidator> validatorMap = applicationContext.getBeansOfType(RuleValidator.class);
VALIDATOR_MAP.putAll(validatorMap);
Map<String, ValueConvert> convertMap = applicationContext.getBeansOfType(ValueConvert.class);
CONVERT_LIST.addAll(convertMap.values());
}
/**
......
......@@ -3,6 +3,7 @@ package com.tbyf.his.web.dataImport.core;
import com.tbyf.his.web.dataImport.entity.DataRule;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author lzz
......@@ -10,6 +11,7 @@ import lombok.Data;
*/
@Data
@Accessors(chain = true)
public class RuleVO {
......
package com.tbyf.his.web.dataImport.core;
public interface ValueConvert {
/**
* 值域转换
* @param vo
* @return
*/
String convert(RuleVO vo);
/**
* 是否支持此转换
* @param vo
* @return
*/
boolean support(RuleVO vo);
}
package com.tbyf.his.web.dataImport.core.convert;
import cn.hutool.core.util.StrUtil;
import com.tbyf.his.web.dataImport.core.DiConstants;
import com.tbyf.his.web.dataImport.core.RuleVO;
import com.tbyf.his.web.dataImport.core.ValueConvert;
import org.springframework.stereotype.Service;
@Service
public class RangeConvert implements ValueConvert {
@Override
public String convert(RuleVO vo) {
if (StrUtil.isNotBlank(vo.getValue())){
String[] dictArr = vo.getContent().split(DiConstants.SEPARATOR);
for (String dict : dictArr){
if (StrUtil.isNotBlank(dict) && StrUtil.contains(dict,"-")){
String[] split = dict.split("-");
if (StrUtil.equalsIgnoreCase(split[0],vo.getValue())){
return split[1];
}
}
}
}
return vo.getValue();
}
@Override
public boolean support(RuleVO vo) {
return StrUtil.equals(vo.getMode(),"值域转换") && StrUtil.equals(vo.getType(),"转换规则");
}
}
package com.tbyf.his.web.dataImport.core.convert;
import cn.hutool.core.util.StrUtil;
import com.tbyf.his.web.dataImport.core.RuleVO;
import com.tbyf.his.web.dataImport.core.ValueConvert;
import org.springframework.stereotype.Service;
@Service
public class RegConvert implements ValueConvert {
@Override
public String convert(RuleVO vo) {
if (StrUtil.isNotBlank(vo.getValue())){
String[] split = vo.getValue().split(vo.getContent());
return String.valueOf(split.length);
}
return "0";
}
@Override
public boolean support(RuleVO vo) {
return StrUtil.equals(vo.getMode(),"正则分割") && StrUtil.equals(vo.getType(),"转换规则");
}
}
......@@ -27,7 +27,6 @@ import com.tbyf.his.web.dataImport.service.DataDictService;
import com.tbyf.his.web.dataImport.service.DataSourceService;
import com.tbyf.his.web.dataImport.service.DataTemplateService;
import com.tbyf.his.web.dataImport.service.ExcelDataService;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.zip.Zip64Mode;
......@@ -52,7 +51,8 @@ import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
/**
......@@ -127,6 +127,9 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
for (int i = 0; i < item.getValues().size(); i++) {
for (int j = 0; j < item.getRules().size(); j++) {
final RuleVO vo = item.getRules().get(j);
if (StrUtil.equals(vo.getType(),"转换规则")){
continue;
}
vo.setValue(item.getValues().get(i));
// 置空错误信息
vo.setResult(null);
......@@ -600,6 +603,16 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
+ ",DORDER,YEAROOFDATARECORD,ROWCODE ) VALUES ({})";
//String[] sqlArr = new String[length];
List<String> sqlList = new ArrayList<>(length + 100);
// 数据转换规则
verifyList.forEach(v->{
if (!CollectionUtils.isEmpty(v.getRules())){
Optional<RuleVO> ruleVO = v.getRules().stream().filter(item -> StrUtil.equals(item.getType(), "转换规则")).findFirst();
if (ruleVO.isPresent()){
RuleVO vo = ruleVO.get();
v.setValues(v.getValues().stream().map(item->DiConfig.valueConvert(vo.setValue(item))).collect(Collectors.toList()));
}
}
});
for (int i = 0; i < length; i++) {
StringBuilder sb = new StringBuilder();
for (VerifyVO v : verifyList) {
......@@ -675,8 +688,4 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
return DiConfig.getWord(columnStart + index) + "," + coords[1];
}
@SneakyThrows
public static void main(String[] args) {
System.out.println("1,".split(",").length);
}
}
......@@ -4,19 +4,19 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.0.71:13306/hip_import?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://centos:3306/emport?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: Esb@123456
password: 123456
driverClassName: com.mysql.cj.jdbc.Driver
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: true
# url: jdbc:oracle:thin:@192.168.0.39:1521:orcl
url: jdbc:oracle:thin:@192.168.0.71:11523:helowin
url: jdbc:oracle:thin:@centos:1521:helowin
# username: xhyy
username: test_import
password: data
username: liuzz
password: LDF980420
driverClassName: oracle.jdbc.OracleDriver
# 初始连接数
initialSize: 5
......
......@@ -47,7 +47,7 @@ spring:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: zyy
active: druid
# 文件上传
servlet:
multipart:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment