From 90984d568d84a1cfebd1c6fc386fcd5a9c30c134 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 26 Feb 2024 16:28:06 +0800 Subject: [PATCH] git commit -m "feat: add logic to delete cminmsgs older than 1 day" --- .../msgexchangeapi/dao/CminmsgHstDaoImpl.java | 203 +++++++++--------- 1 file changed, 103 insertions(+), 100 deletions(-) diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/dao/CminmsgHstDaoImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/dao/CminmsgHstDaoImpl.java index 27250eb9..e0514852 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/dao/CminmsgHstDaoImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/dao/CminmsgHstDaoImpl.java @@ -16,117 +16,120 @@ import com.gzzn.omms.msgexchangeapi.entity.CminmsgHst; @Component public class CminmsgHstDaoImpl implements CminmsgHstDao { - @PersistenceContext - private EntityManager entityManager; + @PersistenceContext + private EntityManager entityManager; - private static final String MOVE = "INSERT INTO cminmsgs_hst (" - + "CMINMSGS_ID," - + "CMINMSGS_CLOB_MSG," - + "CMINMSGS_DATE_RECEIVED," - + "CMINMSGS_DATE_PROCESSED," - + "CMINMSGS_SUBSYSTEM_NAME," - + "CMINMSGS_SUBSYSTEM_SEQUENCE," - + "CMINMSGS_SUBSYSTEM_DATE_SENT," - + "CMINMSGS_SUBSYSTEM_SUBTYPE," - + "CMINMSGS_SUBSYSTEM_TYPE," - + "CMINMSGS_STATUS )" + - " SELECT " - + "( CMINMSGS_ID," - + "CMINMSGS_CLOB_MSG," - + "CMINMSGS_DATE_RECEIVED," - + "CMINMSGS_DATE_PROCESSED," - + "CMINMSGS_SUBSYSTEM_NAME," - + "CMINMSGS_SUBSYSTEM_SEQUENCE," - + "CMINMSGS_SUBSYSTEM_DATE_SENT," - + "CMINMSGS_SUBSYSTEM_SUBTYPE," - + "CMINMSGS_SUBSYSTEM_TYPE," - + "CMINMSGS_STATUS)" - + " FROM cminmsgs src" + - " WHERE NOT EXISTS (" + - " SELECT 1 FROM cminmsgs_hst hist" + - " WHERE hist.CMINMSGS_ID = src.CMINMSGS_ID" + - ")" + - " AND src.CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)"; + //move cminmsgs to cminmsgs_hst table if cminmsgs_date_received < now - 1 day + private static final String MOVE = "INSERT INTO cminmsgs_hst (" + + "CMINMSGS_ID," + + "CMINMSGS_CLOB_MSG," + + "CMINMSGS_DATE_RECEIVED," + + "CMINMSGS_DATE_PROCESSED," + + "CMINMSGS_SUBSYSTEM_NAME," + + "CMINMSGS_SUBSYSTEM_SEQUENCE," + + "CMINMSGS_SUBSYSTEM_DATE_SENT," + + "CMINMSGS_SUBSYSTEM_SUBTYPE," + + "CMINMSGS_SUBSYSTEM_TYPE," + + "CMINMSGS_STATUS )" + + " SELECT " + + "( CMINMSGS_ID," + + "CMINMSGS_CLOB_MSG," + + "CMINMSGS_DATE_RECEIVED," + + "CMINMSGS_DATE_PROCESSED," + + "CMINMSGS_SUBSYSTEM_NAME," + + "CMINMSGS_SUBSYSTEM_SEQUENCE," + + "CMINMSGS_SUBSYSTEM_DATE_SENT," + + "CMINMSGS_SUBSYSTEM_SUBTYPE," + + "CMINMSGS_SUBSYSTEM_TYPE," + + "CMINMSGS_STATUS)" + + " FROM cminmsgs src" + + " WHERE NOT EXISTS (" + + " SELECT 1 FROM cminmsgs_hst hist" + + " WHERE hist.CMINMSGS_ID = src.CMINMSGS_ID" + + ")" + + " AND src.CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)"; - private static final String DELETE = "DELETE FROM " - + "cminmsgs " - + "WHERE " - + " CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)"; + //delete cminmsgs if cminmsgs_date_received < now - 1 day + private static final String DELETE = "DELETE FROM " + + "cminmsgs " + + "WHERE " + + " CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)"; - /** - * 保存到指定的表 - * - * @return 成功或失败 - */ - @Transactional - public boolean insertToTable(String tableName, List lsCminmsgHsts) { - if (CollectionUtils.isEmpty(lsCminmsgHsts)) { - throw new RuntimeException("插入数据库内容不能为空"); - } - for (CminmsgHst cminmsgHst : lsCminmsgHsts) { + /** + * 保存到指定的表 + * + * @return 成功或失败 + */ + @Transactional + public boolean insertToTable(String tableName, List lsCminmsgHsts) { + if (CollectionUtils.isEmpty(lsCminmsgHsts)) { + throw new RuntimeException("插入数据库内容不能为空"); + } + for (CminmsgHst cminmsgHst : lsCminmsgHsts) { - try { - // Check if cminmsgs exist before insert - String checkSqlStr = "SELECT COUNT(*) FROM " + tableName + " WHERE CMINMSGS_ID = :CMINMSGS_ID"; - Query checkQuery = entityManager.createNativeQuery(checkSqlStr); - checkQuery.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId()); - Long count = (Long) checkQuery.getSingleResult(); + try { + // Check if cminmsgs exist before insert + String checkSqlStr = "SELECT COUNT(*) FROM " + tableName + " WHERE CMINMSGS_ID = :CMINMSGS_ID"; + Query checkQuery = entityManager.createNativeQuery(checkSqlStr); + checkQuery.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId()); + Long count = (Long) checkQuery.getSingleResult(); - if (count > 0) { - return true; // cminmsgs already exist, return true - } + if (count > 0) { + return true; // cminmsgs already exist, return true + } - // Insert cminmsgs - String sqlStr = "INSERT INTO " + tableName + "(" - + "CMINMSGS_ID," - + "CMINMSGS_CLOB_MSG," - + "CMINMSGS_DATE_RECEIVED," - + "CMINMSGS_DATE_PROCESSED," - + "CMINMSGS_SUBSYSTEM_NAME," - + "CMINMSGS_SUBSYSTEM_SEQUENCE," - + "CMINMSGS_SUBSYSTEM_DATE_SENT," - + "CMINMSGS_SUBSYSTEM_SUBTYPE," - + "CMINMSGS_SUBSYSTEM_TYPE," - + "CMINMSGS_STATUS) VALUES (" - + ":CMINMSGS_ID," - + ":CMINMSGS_CLOB_MSG," - + ":CMINMSGS_DATE_RECEIVED," - + ":CMINMSGS_DATE_PROCESSED," - + ":CMINMSGS_SUBSYSTEM_NAME," - + ":CMINMSGS_SUBSYSTEM_SEQUENCE," - + ":CMINMSGS_SUBSYSTEM_DATE_SENT," - + ":CMINMSGS_SUBSYSTEM_SUBTYPE," - + ":CMINMSGS_SUBSYSTEM_TYPE," - + ":CMINMSGS_STATUS)"; + // Insert cminmsgs + String sqlStr = "INSERT INTO " + tableName + "(" + + "CMINMSGS_ID," + + "CMINMSGS_CLOB_MSG," + + "CMINMSGS_DATE_RECEIVED," + + "CMINMSGS_DATE_PROCESSED," + + "CMINMSGS_SUBSYSTEM_NAME," + + "CMINMSGS_SUBSYSTEM_SEQUENCE," + + "CMINMSGS_SUBSYSTEM_DATE_SENT," + + "CMINMSGS_SUBSYSTEM_SUBTYPE," + + "CMINMSGS_SUBSYSTEM_TYPE," + + "CMINMSGS_STATUS) VALUES (" + + ":CMINMSGS_ID," + + ":CMINMSGS_CLOB_MSG," + + ":CMINMSGS_DATE_RECEIVED," + + ":CMINMSGS_DATE_PROCESSED," + + ":CMINMSGS_SUBSYSTEM_NAME," + + ":CMINMSGS_SUBSYSTEM_SEQUENCE," + + ":CMINMSGS_SUBSYSTEM_DATE_SENT," + + ":CMINMSGS_SUBSYSTEM_SUBTYPE," + + ":CMINMSGS_SUBSYSTEM_TYPE," + + ":CMINMSGS_STATUS)"; - Query query = entityManager.createNativeQuery(sqlStr); - query.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId()); - query.setParameter("CMINMSGS_CLOB_MSG", cminmsgHst.getCminmsgsClobMsg()); - query.setParameter("CMINMSGS_DATE_RECEIVED", cminmsgHst.getCminmsgsDateReceived()); - query.setParameter("CMINMSGS_DATE_PROCESSED", cminmsgHst.getCminmsgsDateProcessed()); - query.setParameter("CMINMSGS_SUBSYSTEM_NAME", cminmsgHst.getCminmsgsSubsystemName()); - query.setParameter("CMINMSGS_SUBSYSTEM_SEQUENCE", cminmsgHst.getCminmsgsSubsystemSequence()); - query.setParameter("CMINMSGS_SUBSYSTEM_DATE_SENT", cminmsgHst.getCminmsgsSubsystemDateSent()); - query.setParameter("CMINMSGS_SUBSYSTEM_SUBTYPE", cminmsgHst.getCminmsgsSubsystemSubtype()); - query.setParameter("CMINMSGS_SUBSYSTEM_TYPE", cminmsgHst.getCminmsgsSubsystemType()); - query.setParameter("CMINMSGS_STATUS", cminmsgHst.getCminmsgsStatus()); + Query query = entityManager.createNativeQuery(sqlStr); + query.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId()); + query.setParameter("CMINMSGS_CLOB_MSG", cminmsgHst.getCminmsgsClobMsg()); + query.setParameter("CMINMSGS_DATE_RECEIVED", cminmsgHst.getCminmsgsDateReceived()); + query.setParameter("CMINMSGS_DATE_PROCESSED", cminmsgHst.getCminmsgsDateProcessed()); + query.setParameter("CMINMSGS_SUBSYSTEM_NAME", cminmsgHst.getCminmsgsSubsystemName()); + query.setParameter("CMINMSGS_SUBSYSTEM_SEQUENCE", cminmsgHst.getCminmsgsSubsystemSequence()); + query.setParameter("CMINMSGS_SUBSYSTEM_DATE_SENT", cminmsgHst.getCminmsgsSubsystemDateSent()); + query.setParameter("CMINMSGS_SUBSYSTEM_SUBTYPE", cminmsgHst.getCminmsgsSubsystemSubtype()); + query.setParameter("CMINMSGS_SUBSYSTEM_TYPE", cminmsgHst.getCminmsgsSubsystemType()); + query.setParameter("CMINMSGS_STATUS", cminmsgHst.getCminmsgsStatus()); - query.executeUpdate(); + query.executeUpdate(); - return true; - } catch (Exception e) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return false; - } - } // end for - return true; - } // end function + return true; + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return false; + } + } // end for + return true; + } // end function - public void moveToHistory() { - entityManager.createNativeQuery(MOVE).executeUpdate(); + @Transactional + public void moveToHistory() { + entityManager.createNativeQuery(MOVE).executeUpdate(); - entityManager.createNativeQuery(DELETE).executeUpdate(); - } + entityManager.createNativeQuery(DELETE).executeUpdate(); + } } // for (CminmsgHst cminmsgHst : lsCminmsgHsts) { // String sqlStr = "insert into " + tableName + "("