package com.zy.asrs.task.handler;
|
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
/**
|
* Created by vincent on 2020/7/7
|
*/
|
@Service
|
public class OverYearLogHandler extends AbstractHandler<String> {
|
|
@Autowired
|
private JdbcTemplate jdbcTemplate;
|
|
@Transactional
|
public ReturnT<String> start() {
|
try {
|
batchDelete("asr_stk_hplc", 180);
|
batchDelete("asr_wrk_detl_log", 360);
|
batchDelete("asr_wrk_mast_log", 360);
|
batchDelete("cust_wait_pakin_log", 360);
|
} catch (Exception e) {
|
e.printStackTrace();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg(e.getMessage());
|
}
|
return SUCCESS;
|
}
|
|
private void batchDelete(String tableName, int days) {
|
int batchSize = 1000;
|
int affected;
|
do {
|
String sql = String.format(
|
"WITH cte AS (SELECT TOP (%d) * FROM %s WHERE dateadd(day, %d, appe_time) <= getdate()) DELETE FROM cte",
|
batchSize, tableName, days
|
);
|
affected = jdbcTemplate.update(sql);
|
} while (affected > 0);
|
}
|
|
|
}
|