添加数据定时清理功能

This commit is contained in:
葛林强 2026-03-06 14:12:04 +08:00
parent ab83407fed
commit 78f8396f58
24 changed files with 431 additions and 3 deletions

View File

@ -0,0 +1,136 @@
package org.wcs.business.data.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.wcs.business.data.intf.IDataCleaner;
import org.wcs.mapper.intf.*;
/**
* 数据清理服务
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DataCleaner implements IDataCleaner {
private final AppConveyTaskService conveyTaskService;
private final AppStockComposeTaskBakService stockComposeTaskService;
private final AppStockSingleTaskBakService stockSingleTaskService;
private final AppEtagTaskBakService etagTaskService;
private final AppRecordApiRequestService recordApiRequestService;
private final AppRecordApiResponseService recordApiResponseService;
private final AppRecordScanService stockScanService;
private final AppRecordErrService recordErrService;
private final AppRecordPlcInteractiveService recordPlcInteractiveService;
private final AppRecordMaintenanceService recordMaintenanceService;
/**
* 清理 输送线任务表数据
* @param saveDays 保存天数
*/
@Override
public void cleanConveyTask(int saveDays) {
if(saveDays <= 0) {
return;
}
int result = conveyTaskService.deleteConveyTaskByDaveDays(saveDays);
log.info("清理 {} 天前的输送线数据,共清理 {} 行数据", saveDays, result);
}
/**
* 清理 仓库任务表数据
* @param saveDays 保存天数
*/
@Override
public void cleanStockTask(int saveDays) {
if(saveDays <= 0) {
return;
}
int deleteComposeTaskResult = stockComposeTaskService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的组合任务数据,共清理 {} 行数据", saveDays, deleteComposeTaskResult);
int deleteSingleTaskResult = stockSingleTaskService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的独立任务数据,共清理 {} 行数据", saveDays, deleteSingleTaskResult);
}
/**
* 清理 Etag任务表数据
* @param saveDays 保存天数
*/
@Override
public void cleanEtagTask(int saveDays) {
if(saveDays <= 0) {
return;
}
int result = etagTaskService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的电子标签任务数据,共清理 {} 行数据", saveDays, result);
}
/**
* 清理 接口调用记录表数据
* @param saveDays 保存天数
*/
@Override
public void cleanApiRecord(int saveDays) {
if(saveDays <= 0) {
return;
}
int apiRequestResult = recordApiRequestService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的接口调用记录数据,共清理 {} 行数据", saveDays, apiRequestResult);
int apiResponseResult = recordApiResponseService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的接口响应记录数据,共清理 {} 行数据", saveDays, apiResponseResult);
}
/**
* 清理 扫码记录表数据
* @param saveDays 保存天数
*/
@Override
public void cleanScanRecord(int saveDays) {
if(saveDays <= 0) {
return;
}
int result = stockScanService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的扫码记录数据,共清理 {} 行数据", saveDays, result);
}
/**
* 清理 设备错误记录表数据
* @param saveDays 保存天数
*/
@Override
public void cleanEquipmentErrorRecord(int saveDays) {
if(saveDays <= 0) {
return;
}
int result = recordErrService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的设备错误记录数据,共清理 {} 行数据", saveDays, result);
}
/**
* 清理 PLC交互记录表数据
* @param saveDays 保存天数
*/
@Override
public void cleanPlcInteractionRecord(int saveDays) {
if(saveDays <= 0) {
return;
}
int result = recordPlcInteractiveService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的PLC交互记录数据共清理 {} 行数据", saveDays, result);
}
/**
* 清理 维护记录表数据
* @param saveDays 保存天数
*/
@Override
public void cleanMaintainRecord(int saveDays) {
if(saveDays <= 0) {
return;
}
int result = recordMaintenanceService.deleteBySaveDays(saveDays);
log.info("清理 {} 天前的维护记录数据,共清理 {} 行数据", saveDays, result);
}
}

View File

@ -0,0 +1,58 @@
package org.wcs.business.data.intf;
/**
* 数据清理接口
*/
public interface IDataCleaner {
/**
* 清理输送线任务数据
* @param saveDays 保存天数
*/
void cleanConveyTask(int saveDays);
/**
* 清理仓库任务数据
* @param saveDays 保存天数
*/
void cleanStockTask(int saveDays);
/**
* 清理标签任务数据
* @param saveDays 保存天数
*/
void cleanEtagTask(int saveDays);
/**
* 清理接口请求数据
* @param saveDays 保存天数
*/
void cleanApiRecord(int saveDays);
/**
* 清理扫码数据
* @param saveDays 保存天数
*/
void cleanScanRecord(int saveDays);
/**
* 清理设备错误数据
* @param saveDays 保存天数
*/
void cleanEquipmentErrorRecord(int saveDays);
/**
* 清理PLC交互数据
* @param saveDays 保存天数
*/
void cleanPlcInteractionRecord(int saveDays);
/**
* 清理保养数据
* @param saveDays 保存天数
*/
void cleanMaintainRecord(int saveDays);
}

View File

@ -136,4 +136,20 @@ public class AppConveyTaskDao extends ServiceImpl<AppConveyTaskMapper, AppConvey
}
/**
* 删除箱式线任务数据
* @param saveDays 保存的天数
* @return 删除结果
*/
@Override
public int deleteConveyTaskByDaveDays(int saveDays) {
LambdaQueryWrapper<AppConveyTask> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppConveyTask::getCreateTime, LocalDateTime.now().minusDays(saveDays));
try {
return baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -10,6 +10,7 @@ import org.wcs.model.bo.tuple.Tuple2;
import org.wcs.model.dto.serve.etagTask.EtagTaskQueryReq;
import org.wcs.model.po.app.AppEtagTaskBak;
import java.time.LocalDateTime;
import java.util.List;
@Service
@ -63,4 +64,20 @@ public class AppEtagTaskBakDao extends ServiceImpl<AppEtagTaskBakMapper, AppEtag
return null;
}
}
/**
* 删除任务
* @param saveDays 保存天数
* @return 删除数量
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppEtagTaskBak> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppEtagTaskBak::getCreateTime, LocalDateTime.now().minusDays(saveDays));
try {
return baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -11,6 +11,7 @@ import org.wcs.model.dto.serve.recordApi.QueryRecordApiRequestReq;
import org.wcs.model.po.app.AppRecordApiRequest;
import org.wcs.utils.AppStringUtils;
import java.time.LocalDateTime;
import java.util.List;
@Service
@ -69,4 +70,21 @@ public class AppRecordApiRequestDao extends ServiceImpl<AppRecordApiRequestMappe
return 0;
}
}
/**
* 删除数据
*
* @param saveDays 保存天数
* @return 删除数量
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppRecordApiRequest> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppRecordApiRequest::getRequestTime, LocalDateTime.now().minusDays(saveDays));
try {
return super.baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -62,4 +62,22 @@ public class AppRecordApiResponseDao extends ServiceImpl<AppRecordApiResponseMap
return 0;
}
}
/**
* 删除接口调用记录
* @param saveDays 保存天数
* @return 删除结果
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppRecordApiResponse> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppRecordApiResponse::getRequestTime, LocalDateTime.now().minusDays(saveDays));
try {
return super.baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -122,5 +122,21 @@ public class AppRecordErrDao extends ServiceImpl<AppRecordErrMapper, AppRecordEr
}
}
/**
* 清理数据
* @param saveDays 保存天数
* @return 删除结果
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppRecordErr> wrapper = new LambdaQueryWrapper<>();
wrapper.lt(AppRecordErr::getCreateTime, LocalDateTime.now().minusDays(saveDays));
try {
return super.baseMapper.delete(wrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -1,11 +1,30 @@
package org.wcs.mapper.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.wcs.mapper.AppRecordMaintenanceMapper;
import org.wcs.mapper.intf.AppRecordMaintenanceService;
import org.wcs.model.po.app.AppRecordMaintenance;
import java.time.LocalDateTime;
@Service
public class AppRecordMaintenanceDao extends ServiceImpl<AppRecordMaintenanceMapper, AppRecordMaintenance> implements AppRecordMaintenanceService {
/**
* 根据保存天数删除数据
* @param saveDays 保存天数
* @return 删除的行数
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppRecordMaintenance> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppRecordMaintenance::getMaintenanceTime, LocalDateTime.now().minusDays(saveDays));
try {
return baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -1,11 +1,30 @@
package org.wcs.mapper.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.wcs.mapper.AppRecordPlcInteractiveMapper;
import org.wcs.mapper.intf.AppRecordPlcInteractiveService;
import org.wcs.model.po.app.AppRecordPlcInteractive;
import java.time.LocalDateTime;
@Service
public class AppRecordPlcInteractiveDao extends ServiceImpl<AppRecordPlcInteractiveMapper, AppRecordPlcInteractive> implements AppRecordPlcInteractiveService {
/**
* 根据保存天数删除数据
* @param saveDays 保存天数
* @return 删除数量
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppRecordPlcInteractive> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppRecordPlcInteractive::getCreateTime, LocalDateTime.now().minusDays(saveDays));
try {
return super.baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -64,4 +64,20 @@ public class AppRecordScanDao extends ServiceImpl<AppRecordScanMapper, AppRecord
return null;
}
}
/**
* 删除指定天数前的数据
* @param saveDays 保存天数
* @return 删除数量
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppRecordScan> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppRecordScan::getScanTime, LocalDateTime.now().minusDays(saveDays));
try {
return baseMapper.delete(queryWrapper);
} catch (Exception e) {
return 0;
}
}
}

View File

@ -11,6 +11,7 @@ import org.wcs.model.dto.serve.stcokComposeTask.QueryStockComposeTaskReq;
import org.wcs.model.po.app.AppStockComposeTaskBak;
import org.wcs.utils.AppStringUtils;
import java.time.LocalDateTime;
import java.util.List;
@Service
@ -125,4 +126,21 @@ public class AppStockComposeTaskBakDao extends ServiceImpl<AppStockComposeTaskBa
return null;
}
}
/**
* 根据保存天数删除数据
*
* @param saveDays 保存天数
* @return 删除结果
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppStockComposeTaskBak> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppStockComposeTaskBak::getCreateTime, LocalDateTime.now().minusDays(saveDays));
try {
return super.baseMapper.delete(queryWrapper);
} catch (Exception ex) {
return 0;
}
}
}

View File

@ -12,6 +12,7 @@ import org.wcs.model.po.app.AppStockSingleTaskBak;
import org.wcs.utils.AppStringUtils;
import org.wcs.utils.AppTimeUtils;
import java.time.LocalDateTime;
import java.util.List;
@Service
@ -118,4 +119,20 @@ public class AppStockSingleTaskBakDao extends ServiceImpl<AppStockSingleTaskBakM
}
}
/**
* 根据保存天数删除数据
* @param saveDays 保存天数
* @return 删除行数
*/
@Override
public int deleteBySaveDays(int saveDays) {
LambdaQueryWrapper<AppStockSingleTaskBak> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(AppStockSingleTaskBak::getCreateTime, LocalDateTime.now().minusDays(saveDays));
try {
return super.baseMapper.delete(queryWrapper);
} catch (Exception ex) {
return 0;
}
}
}

View File

@ -13,4 +13,6 @@ public interface AppConveyTaskService extends IService<AppConveyTask> {
int insertConveyTask(AppConveyTask appConveyTask);
List<AppConveyTask> queryByTaskId(String taskId);
int updateConveyTask(AppConveyTask appConveyTask);
int deleteConveyTaskByDaveDays(int saveDays); // 删除指定天数之前的数据
}

View File

@ -11,4 +11,6 @@ public interface AppEtagTaskBakService extends IService<AppEtagTaskBak> {
Tuple2<Long, List<AppEtagTaskBak>> queryEtagTask(EtagTaskQueryReq request, Integer pageIndex, Integer pageSize);
List<AppEtagTaskBak> queryByTaskId(String taskId); // 根据任务ID查询
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -13,5 +13,7 @@ public interface AppRecordApiRequestService extends IService<AppRecordApiRequest
Tuple2<Long, List<AppRecordApiRequest>> queryByPage(QueryRecordApiRequestReq request, Integer pageSize, Integer pageIndex);
int insert(AppRecordApiRequest record); // 插入数据
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -13,4 +13,6 @@ public interface AppRecordApiResponseService extends IService<AppRecordApiRespon
Tuple2<Long, List<AppRecordApiResponse>> queryByPage(QueryRecordApiResponseReq request, Integer pageSize, Integer pageIndex);
int insert(AppRecordApiResponse record);
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -15,4 +15,6 @@ public interface AppRecordErrService extends IService<AppRecordErr> {
Tuple2<Long, List<JoinRecordError>> queryRecordErrorDetail(QueryEquipmentErrorReq request, Integer pageSize, Integer pageIndex);
List<JoinRecordError> queryRecordErrorDetail(QueryEquipmentErrorReq request);
List<AppRecordErr> queryRecordErrorDetailRecentDays(int days); // 查询近几天的错误信息
int deleteBySaveDays(int saveDays); // 删除保存天数之前的数据
}

View File

@ -4,4 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.wcs.model.po.app.AppRecordMaintenance;
public interface AppRecordMaintenanceService extends IService<AppRecordMaintenance> {
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -4,4 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.wcs.model.po.app.AppRecordPlcInteractive;
public interface AppRecordPlcInteractiveService extends IService<AppRecordPlcInteractive> {
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -12,4 +12,6 @@ public interface AppRecordScanService extends IService<AppRecordScan> {
Tuple2<Long, List<AppRecordScan>> query(QueryRecordScanReq queryRecordScanReq, Integer pageSize, Integer pageIndex);
List<AppRecordScan> query(QueryRecordScanReq queryRecordScanReq);
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -14,4 +14,6 @@ public interface AppStockComposeTaskBakService extends IService<AppStockComposeT
AppStockComposeTaskBak queryByTaskId(String taskId); // 根据任务ID查询
List<AppStockComposeTaskBak> query(QueryStockComposeTaskReq queryTaskReq);
List<AppStockComposeTaskBak> queryByUpperTaskId(String upperTaskId);
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
}

View File

@ -14,4 +14,6 @@ public interface AppStockSingleTaskBakService extends IService<AppStockSingleTas
boolean insertThrowEx(AppStockSingleTaskBak appStockSingleTaskBak);
List<AppStockSingleTaskBak> queryTaskRecentDays(int days, Integer taskStatus);
int deleteBySaveDays(int saveDays); // 根据保存天数删除数据
}

View File

@ -1,19 +1,60 @@
package org.wcs.quartzJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.wcs.business.data.intf.IDataCleaner;
import org.wcs.helper.AppConfigHelper;
import org.wcs.utils.AppStringUtils;
/**
* 数据清理定时任务
*/
@Slf4j
@RequiredArgsConstructor
@DisallowConcurrentExecution
public class CleanDataJob implements Job {
private final IDataCleaner dataCleaner;
private final AppConfigHelper configHelper;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("数据清理定时任务开始执行...");
log.info("开始执行数据清理任务");
// 清理输送线任务数据
String conveyTaskSaveDaysStr = configHelper.getConfig("CONVEY_TASK_SAVE_DAYS");
int conveyTaskSaveDays = AppStringUtils.toIntegerOrDefault(conveyTaskSaveDaysStr, 1000);
dataCleaner.cleanConveyTask(conveyTaskSaveDays);
// 清理库存任务数据
String stockTaskSaveDaysStr = configHelper.getConfig("STORAGE_TASK_SAVE_DAYS");
int stockTaskSaveDays = AppStringUtils.toIntegerOrDefault(stockTaskSaveDaysStr, 1000);
dataCleaner.cleanStockTask(stockTaskSaveDays);
// 清理 Etag 任务数据
String etagTaskSaveDaysStr = configHelper.getConfig("ETAG_TASK_SAVE_DAYS");
int etagTaskSaveDays = AppStringUtils.toIntegerOrDefault(etagTaskSaveDaysStr, 1000);
dataCleaner.cleanEtagTask(etagTaskSaveDays);
// 清理 API 记录数据
String apiRecordSaveDaysStr = configHelper.getConfig("API_RECORD_SAVE_DAYS");
int apiRecordSaveDays = AppStringUtils.toIntegerOrDefault(apiRecordSaveDaysStr, 200);
dataCleaner.cleanApiRecord(apiRecordSaveDays);
// 清理 扫描记录数据
String scanRecordSaveDaysStr = configHelper.getConfig("SCAN_RECORD_SAVE_DAYS");
int scanRecordSaveDays = AppStringUtils.toIntegerOrDefault(scanRecordSaveDaysStr, 400);
dataCleaner.cleanScanRecord(scanRecordSaveDays);
// 清理 设备错误记录数据
String equipErrorRecordSaveDaysStr = configHelper.getConfig("DEVICE_ERR_ROCORD_SAVE_DAYS");
int equipErrorRecordSaveDays = AppStringUtils.toIntegerOrDefault(equipErrorRecordSaveDaysStr, 1000);
dataCleaner.cleanEquipmentErrorRecord(equipErrorRecordSaveDays);
// 清理 PLC 交互记录数据
String plcInteractionRecordSaveDaysStr = configHelper.getConfig("PLC_COMM_RECORD_SAVE_DAYS");
int plcInteractionRecordSaveDays = AppStringUtils.toIntegerOrDefault(plcInteractionRecordSaveDaysStr, 1000);
dataCleaner.cleanPlcInteractionRecord(plcInteractionRecordSaveDays);
// 清理 维护记录数据
String maintainRecordSaveDaysStr = configHelper.getConfig("UPKEEP_RECORD_SAVE_DAYS");
int maintainRecordSaveDays = AppStringUtils.toIntegerOrDefault(maintainRecordSaveDaysStr, 1000);
dataCleaner.cleanMaintainRecord(maintainRecordSaveDays);
}
}

View File

@ -46,14 +46,13 @@ const router = createRouter({
{ path: 'equipmentError', name: 'equipmentError', component: () => import('@/views/tabs/RecordEquipmentError.vue')},
{ path: 'ledManage', name: 'ledManage', component: () => import('@/views/tabs/LedBaseManage.vue')},
{ path: 'fileManage', name: 'fileManage', component: () => import('@/views/tabs/FileManage.vue')},
{ path: 'siemensDbManage', name: 'siemensDbManage', component: () => import('@/views/tabs/SiemensDbManage.vue')},
{ path: 'siemensDbManage', name: 'siemensDbManage', component: () => import('@/views/tabs/SiemensDbManage.vue')},
{ path: 'etagController', name: 'etagController', component: () => import('@/views/tabs/EtagController.vue')},
{ path: 'etagTag', name: 'etagTag', component: () => import('@/views/tabs/EtagTag.vue')},
{ path: 'etagLocation', name: 'etagLocation', component: () => import('@/views/tabs/EtagLocation.vue')},
{ path: 'etagTask', name: 'etagTask', component: () => import('@/views/tabs/EtagTask.vue')},
{ path: 'etagTagBak', name: 'etagTagBak', component: () => import('@/views/tabs/EtagTaskBak.vue')},
] }
],
})