|
@@ -7,6 +7,7 @@ import com.persagy.common.criteria.CriteriaUtils;
|
|
|
import com.persagy.common.criteria.JacksonCriteria;
|
|
|
import com.persagy.common.date.DateUtils;
|
|
|
import com.persagy.common.json.JacksonMapper;
|
|
|
+import com.persagy.common.security.MD5Utils;
|
|
|
import com.persagy.common.web.MapResponse;
|
|
|
import com.persagy.common.web.PagedResponse;
|
|
|
import com.persagy.dmp.alarm.entity.AlarmLog;
|
|
@@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
+import javax.persistence.*;
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.util.*;
|
|
|
|
|
@@ -347,4 +349,59 @@ public class AlarmRecordService extends AlarmBaseService {
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
+ @PersistenceUnit
|
|
|
+ private EntityManagerFactory emf;
|
|
|
+
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public MapResponse deleteData() {
|
|
|
+ EntityManager em = emf.createEntityManager();
|
|
|
+ EntityTransaction tx = null;
|
|
|
+ try {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ while (true) {
|
|
|
+ sb.append(" SELECT * FROM alarm_record WHERE (obj_id,item_code,trigger_time) IN ( ");
|
|
|
+ sb.append(" SELECT t.obj_id,t.item_code,t.trigger_time FROM (SELECT obj_id,item_code,trigger_time ");
|
|
|
+ sb.append(" FROM alarm_record WHERE nature IS NULL LIMIT 1) AS t)");
|
|
|
+ sb.append(" ORDER BY create_time ");
|
|
|
+
|
|
|
+ Query query = em.createNativeQuery(sb.toString(), AlarmRecord.class);
|
|
|
+ List<AlarmRecord> list = query.getResultList();
|
|
|
+ if(null== list || list.isEmpty()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ Map<String, AlarmRecord> map = new HashMap<>();
|
|
|
+ List<String> idDeleteList = new ArrayList<>();
|
|
|
+ for (AlarmRecord alarmRecord : list) {
|
|
|
+ String key = MD5Utils.getSign(alarmRecord.getObjId() + alarmRecord.getObjId()
|
|
|
+ + (null != alarmRecord.getTriggerTime() ? alarmRecord.getTriggerTime().getTime() : ""));
|
|
|
+ map.put(key, alarmRecord);
|
|
|
+ idDeleteList.add(alarmRecord.getId());
|
|
|
+ }
|
|
|
+ sb.setLength(0);
|
|
|
+ tx = em.getTransaction();
|
|
|
+ tx.begin();
|
|
|
+ for (AlarmRecord alarmRecord : map.values()) {
|
|
|
+ alarmRecord.setNature(1);
|
|
|
+ em.persist(alarmRecord);
|
|
|
+ idDeleteList.remove(alarmRecord.getId());
|
|
|
+ }
|
|
|
+ sb.append("DELETE FROM alarm_record WHERE id IN (:ids)");
|
|
|
+ query = em.createNativeQuery(sb.toString(), AlarmRecord.class);
|
|
|
+ query.setParameter("ids", idDeleteList);
|
|
|
+ query.executeUpdate();
|
|
|
+ tx.commit();
|
|
|
+ sb.setLength(0);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ if (null != tx) {
|
|
|
+ tx.rollback();
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ if (null != em) {
|
|
|
+ em.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|