| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.text.MessageFormat; |
| | | import java.util.List; |
| | |
| | | int detlCount = wrkDetlLogMapper.selectCount(detlLogW); |
| | | boolean wrkMastDeleted =false; |
| | | boolean wrkDetlDeleted =false; |
| | | // JSONObject detlJson = new JSONObject(true); |
| | | // detlJson.put("mastCount", mastCount); |
| | | // detlJson.put("detlCount", detlCount); |
| | | // detlJson.put("num", num); |
| | | if (mastCount > 0 && detlCount > 0) { |
| | | wrkMastDeleted = wrkMastMapper.deleteById(wrkNo) > 0; |
| | | if (!wrkMastDeleted) { |
| | |
| | | if (!wrkDetlDeleted) { |
| | | log.error(MessageFormat.format("删除工作明细档[workNo={0}]失败", wrkNo)); |
| | | } |
| | | }else { |
| | | // detlJson.put("rollback","触发回滚"); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | if (printLog) { |
| | | JSONObject detlJson = new JSONObject(true); |
| | | detlJson.put("service", "WrkArchiveToLogService"); |
| | | detlJson.put("wrkNo", wrkNo); |
| | | detlJson.put("wrkDetls", JSON.toJSON(detls)); |
| | | detlJson.put("wrkMast", (JSONObject) JSON.toJSON(wrkMast)); |
| | | detlJson.put("wrkMastDeleted", wrkMastDeleted); |
| | | detlJson.put("wrkDetlDeleted", wrkDetlDeleted); |
| | | log.info(detlJson.toJSONString()); |
| | | |
| | | // detlJson.put("service", "WrkArchiveToLogService"); |
| | | // detlJson.put("wrkNo", wrkNo); |
| | | // detlJson.put("wrkDetls", JSON.toJSON(detls)); |
| | | // detlJson.put("wrkMast", (JSONObject) JSON.toJSON(wrkMast)); |
| | | // detlJson.put("wrkMastDeleted", wrkMastDeleted); |
| | | // detlJson.put("wrkDetlDeleted", wrkDetlDeleted); |
| | | // log.info(detlJson.toJSONString()); |
| | | } |
| | | } |
| | | |
| | |
| | | @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); |
| | | batchDelete("asr_stk_hplc", "appe_time", 180); |
| | | batchDelete("asr_wrk_detl_log", "io_time", 360); |
| | | batchDelete("asr_wrk_mast_log", "io_time", 360); |
| | | batchDelete("cust_wait_pakin_log", "appe_time", 360); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | private void batchDelete(String tableName, int days) { |
| | | @SuppressWarnings("SameParameterValue") |
| | | private void batchDelete(String tableName, String time, 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 |
| | | "WITH cte AS (SELECT TOP (%d) * FROM %s WHERE dateadd(day, %d, %s) <= getdate()) DELETE FROM cte", |
| | | batchSize, tableName, days, time |
| | | ); |
| | | affected = jdbcTemplate.update(sql); |
| | | } while (affected > 0); |