diff --git a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/param/ServiceTypeEnum.java b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/param/ServiceTypeEnum.java index ff57056..976e1f7 100644 --- a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/param/ServiceTypeEnum.java +++ b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/param/ServiceTypeEnum.java @@ -57,9 +57,12 @@ public enum ServiceTypeEnum { * @return */ public static List getExecutableTypes() { - return Arrays.stream(ServiceTypeEnum.values()).map(ServiceTypeEnum::name).collect(Collectors.toList()); + return Arrays.stream(ServiceTypeEnum.values()).map(tmep->{ + return tmep.code; + }).collect(Collectors.toList()); } + /** * 通过code获取枚举值 * @param code diff --git a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/po/JobDetail.java b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/po/JobDetail.java index 3e2dac2..6686be0 100644 --- a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/po/JobDetail.java +++ b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/bo/po/JobDetail.java @@ -9,7 +9,9 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.Objects; /** * @@ -34,22 +36,14 @@ public class JobDetail { * 起始时间 */ @JsonFormat( - pattern = "yyyy-MM-dd HH:mm:ss" + pattern = "yyyy-MM-dd" ) - @MppMultiId(value = "START_TIME") - private LocalDateTime startTime; + @MppMultiId(value = "EXCUTE_DATE") + private LocalDate excuteDate; + /** - * 截止时间 - */ - @JsonFormat( - pattern = "yyyy-MM-dd HH:mm:ss" - ) - @MppMultiId(value = "END_TIME") - private LocalDateTime endTime; - - /** - * 状态(0-执行中、1-成功、2-失败) + * 状态(0-执行中、1-成功、2-失败,3未执行) */ @TableField(value = "STATE") private Integer state; @@ -65,5 +59,17 @@ public class JobDetail { @TableField(value = "UPDATE_TIME") private LocalDateTime updateTime; + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + JobDetail jobDetail = (JobDetail) o; + return Objects.equals(tableName, jobDetail.tableName) && Objects.equals(excuteDate, jobDetail.excuteDate); + } + } \ No newline at end of file diff --git a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/mapper/mapping/JobDetailMapper.xml b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/mapper/mapping/JobDetailMapper.xml index 220261e..aefb7c0 100644 --- a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/mapper/mapping/JobDetailMapper.xml +++ b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/mapper/mapping/JobDetailMapper.xml @@ -5,8 +5,7 @@ - - + @@ -19,7 +18,7 @@ diff --git a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/DataSyncService.java b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/DataSyncService.java index b073e9f..0daacce 100644 --- a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/DataSyncService.java +++ b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/DataSyncService.java @@ -1,8 +1,9 @@ package com.njcn.oracle.service; -import com.njcn.oracle.bo.param.MigrationParam; import com.njcn.oracle.mybatis.service.IReplenishMybatisService; +import java.time.LocalDate; + /** * Description: * Date: 2024/1/8 16:16【需求编号】 @@ -11,5 +12,5 @@ import com.njcn.oracle.mybatis.service.IReplenishMybatisService; * @version V1.0.0 */ public interface DataSyncService { - void dataSync(IReplenishMybatisService executor, String temp, MigrationParam migration); + void dataSync(IReplenishMybatisService executor, String temp, LocalDate migration); } diff --git a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/DataSyncServiceImpl.java b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/DataSyncServiceImpl.java index 49a463f..d6f472c 100644 --- a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/DataSyncServiceImpl.java +++ b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/DataSyncServiceImpl.java @@ -1,6 +1,8 @@ package com.njcn.oracle.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; import com.njcn.oracle.bo.param.MigrationParam; import com.njcn.oracle.bo.po.JobDetail; import com.njcn.oracle.mybatis.service.IReplenishMybatisService; @@ -10,8 +12,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Objects; @@ -29,16 +31,21 @@ public class DataSyncServiceImpl implements DataSyncService { @Override @Async - public void dataSync(IReplenishMybatisService executor, String temp, MigrationParam migration) { + public void dataSync(IReplenishMybatisService executor, String temp, LocalDate date) { + LocalDateTime localDateTime = date.atStartOfDay(); + LocalDateTime tempStartTime = LocalDateTimeUtil.beginOfDay(localDateTime); + LocalDateTime tempEndTime = LocalDateTimeUtil.endOfDay(localDateTime); + MigrationParam migration = new MigrationParam(); + migration.setStartTime(tempStartTime); + migration.setEndTime(tempEndTime); List list = executor.queryData(migration); JobDetail jobDetail = new JobDetail(); jobDetail.setTableName(temp); - jobDetail.setStartTime(migration.getStartTime()); - jobDetail.setEndTime(migration.getEndTime()); + jobDetail.setExcuteDate(date); JobDetail select = jobDetailService.select(jobDetail); if (Objects.nonNull(select)){ diff --git a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/JobDetailServiceImpl.java b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/JobDetailServiceImpl.java index 328b439..e6185af 100644 --- a/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/JobDetailServiceImpl.java +++ b/oracle-data/oracle-source/src/main/java/com/njcn/oracle/service/impl/JobDetailServiceImpl.java @@ -7,10 +7,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.oracle.bo.param.JobQueryParam; import com.njcn.oracle.bo.param.ServiceTypeEnum; +import com.njcn.oracle.util.LocalDateUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.oracle.mybatis.mapper.JobDetailMapper; import com.njcn.oracle.bo.po.JobDetail; @@ -33,8 +39,7 @@ public class JobDetailServiceImpl extends MppServiceImpl selectByParam(JobQueryParam jobQueryParam) { IPage page = new Page<>(jobQueryParam.getCurrentPage(), jobQueryParam.getPageSize()); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().between(JobDetail::getStartTime, jobQueryParam.getStartTime(), jobQueryParam.getEndTime()). + queryWrapper.lambda().between(JobDetail::getExcuteDate, jobQueryParam.getStartTime(), jobQueryParam.getEndTime()). in(!CollectionUtils.isEmpty(jobQueryParam.getStates()), JobDetail::getState, jobQueryParam.getStates()). - in(!CollectionUtils.isEmpty(jobQueryParam.getTableNames()), JobDetail::getTableName, jobQueryParam.getTableNames()).orderByDesc(JobDetail::getStartTime); + in(!CollectionUtils.isEmpty(jobQueryParam.getTableNames()), JobDetail::getTableName, jobQueryParam.getTableNames()); - Integer integer = this.getBaseMapper().selectCount(queryWrapper); + List jobDetails = this.getBaseMapper().selectList(queryWrapper); + + List tableNames = new ArrayList<>(); + if(CollectionUtils.isEmpty(jobQueryParam.getTableNames())){ + tableNames = ServiceTypeEnum.getExecutableTypes(); + }else { + tableNames = jobQueryParam.getTableNames(); + } + List dateList = LocalDateUtil.getDateList(jobQueryParam.getStartTime(), jobQueryParam.getEndTime()); + List finalTableNames = tableNames; + dateList.stream().forEach(localDate -> { + finalTableNames.stream().forEach(temp->{ + JobDetail jobDetail = new JobDetail(); + jobDetail.setTableName(temp); + jobDetail.setExcuteDate(localDate); + if (jobDetails.contains(jobDetail)){ + return; + } + jobDetail.setTableName_CN(ServiceTypeEnum.getValueByCode(temp)); + jobDetail.setState(3); + jobDetails.add(jobDetail); + }); + }); - List jobDetailIPage = this.getBaseMapper().query(jobQueryParam); + List jobDetailIPage= jobDetails.stream().sorted(Comparator.comparing(JobDetail::getExcuteDate).reversed()). + skip((jobQueryParam.getCurrentPage() - 1) * jobQueryParam.getPageSize()). + limit(jobQueryParam.getPageSize()).collect(Collectors.toList()); jobDetailIPage.stream().forEach(temp->temp.setTableName_CN(ServiceTypeEnum.getValueByCode(temp.getTableName()))); + page.setRecords(jobDetailIPage); - page.setTotal(Long.parseLong(integer+"")); + page.setTotal(Long.parseLong(jobDetails.size()+"")); return page; } @@ -59,8 +89,7 @@ public class JobDetailServiceImpl extends MppServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(JobDetail::getTableName,jobDetail.getTableName()). - eq(JobDetail::getStartTime,jobDetail.getStartTime()). - eq(JobDetail::getEndTime,jobDetail.getEndTime()); + eq(JobDetail::getExcuteDate,jobDetail.getExcuteDate()); boolean remove = this.remove(queryWrapper); return remove; } diff --git a/oracle-data/oracle-target/src/main/java/com/njcn/oracle/controller/DataSyncController.java b/oracle-data/oracle-target/src/main/java/com/njcn/oracle/controller/DataSyncController.java index 73b3669..ab0bdea 100644 --- a/oracle-data/oracle-target/src/main/java/com/njcn/oracle/controller/DataSyncController.java +++ b/oracle-data/oracle-target/src/main/java/com/njcn/oracle/controller/DataSyncController.java @@ -64,20 +64,10 @@ public class DataSyncController { throw new RuntimeException(e); } List dateList = LocalDateUtil.getDateList(dataAsynParam.getStartTime(), dataAsynParam.getEndTime()); - LocalDateTime startTime = LocalDateTimeUtil.beginOfDay(dataAsynParam.getStartTime().atStartOfDay()); - LocalDateTime endTime = LocalDateTimeUtil.endOfDay(dataAsynParam.getEndTime().atStartOfDay()); IReplenishMybatisService finalExecutor = executor; dateList.forEach(date->{ - LocalDateTime localDateTime = date.atStartOfDay(); - LocalDateTime tempStartTime = LocalDateTimeUtil.beginOfDay(localDateTime); - LocalDateTime tempEndTime = LocalDateTimeUtil.endOfDay(localDateTime); - tempStartTime =LocalDateTimeUtil.parse(tempStartTime.format(formatter),DatePattern.NORM_DATETIME_PATTERN); - tempEndTime =LocalDateTimeUtil.parse(tempEndTime.format(formatter),DatePattern.NORM_DATETIME_PATTERN); - MigrationParam migration = new MigrationParam(); - migration.setStartTime(tempStartTime); - migration.setEndTime(tempEndTime); - dataSyncService.dataSync(finalExecutor,temp,migration); + dataSyncService.dataSync(finalExecutor,temp,date); }); diff --git a/oracle-data/oracle-target/src/main/resources/static/index.html b/oracle-data/oracle-target/src/main/resources/static/index.html index e9f1021..0a8ff2b 100644 --- a/oracle-data/oracle-target/src/main/resources/static/index.html +++ b/oracle-data/oracle-target/src/main/resources/static/index.html @@ -70,6 +70,7 @@ + @@ -80,8 +81,8 @@ - - + + @@ -90,6 +91,7 @@ 失败 执行中 成功 + 未执行 @@ -99,7 +101,7 @@ 删除 - 迁移 + 迁移 @@ -198,6 +200,13 @@ }) .then((res) => { console.log(res) + res.records.forEach(item=>{ + for(let key in item){ + if(!item[key] && item[key] !== 0){ + item[key] = '/' + } + } + }) tableData.value = res.records formInline.total = res.total }) @@ -222,8 +231,8 @@ if (row) { obj = { tableNames: [row.tableName], - startTime: row.startTime.split(' ')[0], - endTime: row.startTime.split(' ')[0], + startTime: row.excuteDate, + endTime: row.excuteDate, } } fetch('/data/dataSync', { @@ -253,8 +262,7 @@ }, body: JSON.stringify({ tableName: row.tableName, - startTime: row.startTime, - endTime: row.endTime, + excuteDate: row.excuteDate, }), }) .then((res) => {