git commit -m "feat: add logic to delete cminmsgs older than 1 day"

This commit is contained in:
zhiqiang feng
2024-02-26 16:28:06 +08:00
parent d9be7c345f
commit 90984d568d
@@ -16,117 +16,120 @@ import com.gzzn.omms.msgexchangeapi.entity.CminmsgHst;
@Component @Component
public class CminmsgHstDaoImpl implements CminmsgHstDao { public class CminmsgHstDaoImpl implements CminmsgHstDao {
@PersistenceContext @PersistenceContext
private EntityManager entityManager; private EntityManager entityManager;
private static final String MOVE = "INSERT INTO cminmsgs_hst (" //move cminmsgs to cminmsgs_hst table if cminmsgs_date_received < now - 1 day
+ "CMINMSGS_ID," private static final String MOVE = "INSERT INTO cminmsgs_hst ("
+ "CMINMSGS_CLOB_MSG," + "CMINMSGS_ID,"
+ "CMINMSGS_DATE_RECEIVED," + "CMINMSGS_CLOB_MSG,"
+ "CMINMSGS_DATE_PROCESSED," + "CMINMSGS_DATE_RECEIVED,"
+ "CMINMSGS_SUBSYSTEM_NAME," + "CMINMSGS_DATE_PROCESSED,"
+ "CMINMSGS_SUBSYSTEM_SEQUENCE," + "CMINMSGS_SUBSYSTEM_NAME,"
+ "CMINMSGS_SUBSYSTEM_DATE_SENT," + "CMINMSGS_SUBSYSTEM_SEQUENCE,"
+ "CMINMSGS_SUBSYSTEM_SUBTYPE," + "CMINMSGS_SUBSYSTEM_DATE_SENT,"
+ "CMINMSGS_SUBSYSTEM_TYPE," + "CMINMSGS_SUBSYSTEM_SUBTYPE,"
+ "CMINMSGS_STATUS )" + + "CMINMSGS_SUBSYSTEM_TYPE,"
" SELECT " + "CMINMSGS_STATUS )" +
+ "( CMINMSGS_ID," " SELECT "
+ "CMINMSGS_CLOB_MSG," + "( CMINMSGS_ID,"
+ "CMINMSGS_DATE_RECEIVED," + "CMINMSGS_CLOB_MSG,"
+ "CMINMSGS_DATE_PROCESSED," + "CMINMSGS_DATE_RECEIVED,"
+ "CMINMSGS_SUBSYSTEM_NAME," + "CMINMSGS_DATE_PROCESSED,"
+ "CMINMSGS_SUBSYSTEM_SEQUENCE," + "CMINMSGS_SUBSYSTEM_NAME,"
+ "CMINMSGS_SUBSYSTEM_DATE_SENT," + "CMINMSGS_SUBSYSTEM_SEQUENCE,"
+ "CMINMSGS_SUBSYSTEM_SUBTYPE," + "CMINMSGS_SUBSYSTEM_DATE_SENT,"
+ "CMINMSGS_SUBSYSTEM_TYPE," + "CMINMSGS_SUBSYSTEM_SUBTYPE,"
+ "CMINMSGS_STATUS)" + "CMINMSGS_SUBSYSTEM_TYPE,"
+ " FROM cminmsgs src" + + "CMINMSGS_STATUS)"
" WHERE NOT EXISTS (" + + " FROM cminmsgs src" +
" SELECT 1 FROM cminmsgs_hst hist" + " WHERE NOT EXISTS (" +
" WHERE hist.CMINMSGS_ID = src.CMINMSGS_ID" + " SELECT 1 FROM cminmsgs_hst hist" +
")" + " WHERE hist.CMINMSGS_ID = src.CMINMSGS_ID" +
" AND src.CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)"; ")" +
" AND src.CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)";
private static final String DELETE = "DELETE FROM " //delete cminmsgs if cminmsgs_date_received < now - 1 day
+ "cminmsgs " private static final String DELETE = "DELETE FROM "
+ "WHERE " + "cminmsgs "
+ " CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)"; + "WHERE "
+ " CMINMSGS_DATE_RECEIVED < DATE_SUB(NOW(), INTERVAL 1 DAY)";
/** /**
* 保存到指定的表 * 保存到指定的表
* *
* @return 成功或失败 * @return 成功或失败
*/ */
@Transactional @Transactional
public boolean insertToTable(String tableName, List<CminmsgHst> lsCminmsgHsts) { public boolean insertToTable(String tableName, List<CminmsgHst> lsCminmsgHsts) {
if (CollectionUtils.isEmpty(lsCminmsgHsts)) { if (CollectionUtils.isEmpty(lsCminmsgHsts)) {
throw new RuntimeException("插入数据库内容不能为空"); throw new RuntimeException("插入数据库内容不能为空");
} }
for (CminmsgHst cminmsgHst : lsCminmsgHsts) { for (CminmsgHst cminmsgHst : lsCminmsgHsts) {
try { try {
// Check if cminmsgs exist before insert // Check if cminmsgs exist before insert
String checkSqlStr = "SELECT COUNT(*) FROM " + tableName + " WHERE CMINMSGS_ID = :CMINMSGS_ID"; String checkSqlStr = "SELECT COUNT(*) FROM " + tableName + " WHERE CMINMSGS_ID = :CMINMSGS_ID";
Query checkQuery = entityManager.createNativeQuery(checkSqlStr); Query checkQuery = entityManager.createNativeQuery(checkSqlStr);
checkQuery.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId()); checkQuery.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId());
Long count = (Long) checkQuery.getSingleResult(); Long count = (Long) checkQuery.getSingleResult();
if (count > 0) { if (count > 0) {
return true; // cminmsgs already exist, return true return true; // cminmsgs already exist, return true
} }
// Insert cminmsgs // Insert cminmsgs
String sqlStr = "INSERT INTO " + tableName + "(" String sqlStr = "INSERT INTO " + tableName + "("
+ "CMINMSGS_ID," + "CMINMSGS_ID,"
+ "CMINMSGS_CLOB_MSG," + "CMINMSGS_CLOB_MSG,"
+ "CMINMSGS_DATE_RECEIVED," + "CMINMSGS_DATE_RECEIVED,"
+ "CMINMSGS_DATE_PROCESSED," + "CMINMSGS_DATE_PROCESSED,"
+ "CMINMSGS_SUBSYSTEM_NAME," + "CMINMSGS_SUBSYSTEM_NAME,"
+ "CMINMSGS_SUBSYSTEM_SEQUENCE," + "CMINMSGS_SUBSYSTEM_SEQUENCE,"
+ "CMINMSGS_SUBSYSTEM_DATE_SENT," + "CMINMSGS_SUBSYSTEM_DATE_SENT,"
+ "CMINMSGS_SUBSYSTEM_SUBTYPE," + "CMINMSGS_SUBSYSTEM_SUBTYPE,"
+ "CMINMSGS_SUBSYSTEM_TYPE," + "CMINMSGS_SUBSYSTEM_TYPE,"
+ "CMINMSGS_STATUS) VALUES (" + "CMINMSGS_STATUS) VALUES ("
+ ":CMINMSGS_ID," + ":CMINMSGS_ID,"
+ ":CMINMSGS_CLOB_MSG," + ":CMINMSGS_CLOB_MSG,"
+ ":CMINMSGS_DATE_RECEIVED," + ":CMINMSGS_DATE_RECEIVED,"
+ ":CMINMSGS_DATE_PROCESSED," + ":CMINMSGS_DATE_PROCESSED,"
+ ":CMINMSGS_SUBSYSTEM_NAME," + ":CMINMSGS_SUBSYSTEM_NAME,"
+ ":CMINMSGS_SUBSYSTEM_SEQUENCE," + ":CMINMSGS_SUBSYSTEM_SEQUENCE,"
+ ":CMINMSGS_SUBSYSTEM_DATE_SENT," + ":CMINMSGS_SUBSYSTEM_DATE_SENT,"
+ ":CMINMSGS_SUBSYSTEM_SUBTYPE," + ":CMINMSGS_SUBSYSTEM_SUBTYPE,"
+ ":CMINMSGS_SUBSYSTEM_TYPE," + ":CMINMSGS_SUBSYSTEM_TYPE,"
+ ":CMINMSGS_STATUS)"; + ":CMINMSGS_STATUS)";
Query query = entityManager.createNativeQuery(sqlStr); Query query = entityManager.createNativeQuery(sqlStr);
query.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId()); query.setParameter("CMINMSGS_ID", cminmsgHst.getCminmsgsId());
query.setParameter("CMINMSGS_CLOB_MSG", cminmsgHst.getCminmsgsClobMsg()); query.setParameter("CMINMSGS_CLOB_MSG", cminmsgHst.getCminmsgsClobMsg());
query.setParameter("CMINMSGS_DATE_RECEIVED", cminmsgHst.getCminmsgsDateReceived()); query.setParameter("CMINMSGS_DATE_RECEIVED", cminmsgHst.getCminmsgsDateReceived());
query.setParameter("CMINMSGS_DATE_PROCESSED", cminmsgHst.getCminmsgsDateProcessed()); query.setParameter("CMINMSGS_DATE_PROCESSED", cminmsgHst.getCminmsgsDateProcessed());
query.setParameter("CMINMSGS_SUBSYSTEM_NAME", cminmsgHst.getCminmsgsSubsystemName()); query.setParameter("CMINMSGS_SUBSYSTEM_NAME", cminmsgHst.getCminmsgsSubsystemName());
query.setParameter("CMINMSGS_SUBSYSTEM_SEQUENCE", cminmsgHst.getCminmsgsSubsystemSequence()); query.setParameter("CMINMSGS_SUBSYSTEM_SEQUENCE", cminmsgHst.getCminmsgsSubsystemSequence());
query.setParameter("CMINMSGS_SUBSYSTEM_DATE_SENT", cminmsgHst.getCminmsgsSubsystemDateSent()); query.setParameter("CMINMSGS_SUBSYSTEM_DATE_SENT", cminmsgHst.getCminmsgsSubsystemDateSent());
query.setParameter("CMINMSGS_SUBSYSTEM_SUBTYPE", cminmsgHst.getCminmsgsSubsystemSubtype()); query.setParameter("CMINMSGS_SUBSYSTEM_SUBTYPE", cminmsgHst.getCminmsgsSubsystemSubtype());
query.setParameter("CMINMSGS_SUBSYSTEM_TYPE", cminmsgHst.getCminmsgsSubsystemType()); query.setParameter("CMINMSGS_SUBSYSTEM_TYPE", cminmsgHst.getCminmsgsSubsystemType());
query.setParameter("CMINMSGS_STATUS", cminmsgHst.getCminmsgsStatus()); query.setParameter("CMINMSGS_STATUS", cminmsgHst.getCminmsgsStatus());
query.executeUpdate(); query.executeUpdate();
return true; return true;
} catch (Exception e) { } catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false; return false;
} }
} // end for } // end for
return true; return true;
} // end function } // end function
public void moveToHistory() { @Transactional
entityManager.createNativeQuery(MOVE).executeUpdate(); public void moveToHistory() {
entityManager.createNativeQuery(MOVE).executeUpdate();
entityManager.createNativeQuery(DELETE).executeUpdate(); entityManager.createNativeQuery(DELETE).executeUpdate();
} }
} }
// for (CminmsgHst cminmsgHst : lsCminmsgHsts) { // for (CminmsgHst cminmsgHst : lsCminmsgHsts) {
// String sqlStr = "insert into " + tableName + "(" // String sqlStr = "insert into " + tableName + "("