| | |
| | | @Transactional |
| | | public ReturnT<String> start() { |
| | | try { |
| | | // 删除半年以上的历史档 |
| | | jdbcTemplate.update("delete from asr_stk_hplc where dateadd(day,180,appe_time) <= getdate();"); |
| | | jdbcTemplate.update("delete from asr_wrk_detl_log where dateadd(day,360,appe_time) <= getdate();"); |
| | | jdbcTemplate.update("delete from asr_wrk_mast_log where dateadd(day,360,appe_time) <= getdate();"); |
| | | jdbcTemplate.update("delete from cust_wait_pakin_log where dateadd(day,360,appe_time) <= getdate();"); |
| | | |
| | | 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 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); |
| | | } |
| | | |
| | | |
| | | } |