package com.casic.alarm.manager; import com.casic.alarm.domain.AlarmTime; import com.casic.alarm.domain.Device; import com.casic.core.hibernate.HibernateEntityDao; import com.casic.core.hibernate.HibernateUtils; import com.casic.core.hibernate.MatchType; import com.casic.core.page.Page; import com.casic.core.util.StringUtils; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; import java.util.*; @Service public class AlarmTimeManager extends HibernateEntityDao<AlarmTime> { public Map pageQuery(AlarmTime model, int page, int rows) { Map<String, Object> map = new HashMap<String, Object>(); try { StringBuilder hql = new StringBuilder(); hql.append("from Device where active=true"); if (StringUtils.isNotBlank(model.getDevType())) { hql.append(" and deviceType.typeName =:devType"); map.put("devType", model.getDevType()); } if (StringUtils.isNotBlank(model.getDevCode())) { hql.append(" and devCode like:devCode"); map.put("devCode", "%" + model.getDevCode() + "%"); } hql.append(" order by deviceType.typeName, devCode asc"); Page p = pagedQuery(hql.toString(), page, rows, map); List<Device> list = (List<Device>) p.getResult(); int total = p.getTotalCount(); List<AlarmTime> alarmTimeList = new ArrayList<>(); for (Device device : list) { AlarmTime alarmTime = findUniqueBy("devCode", device.getDevCode()); if (null == alarmTime) { alarmTime = new AlarmTime(); alarmTime.setDevCode(device.getDevCode()); } alarmTime.setDevType(device.getDeviceType().getTypeName()); alarmTimeList.add(alarmTime); } map.clear(); map.put("rows", alarmTimeList); map.put("total", total); } catch (Exception e) { e.printStackTrace(); map.clear(); map.put("rows", 0); map.put("total", new ArrayList<AlarmTime>()); } return map; } public Map saveTime(AlarmTime model) { Map<String, Object> map = new HashMap<String, Object>(); try { if (StringUtils.isNotBlank(model.getDevCode())) { String[] strings = model.getDevCode().split(","); for (int i = 0; i < strings.length; i++) { Criteria criteria = getSession().createCriteria(AlarmTime.class); criteria.add(Restrictions.and( HibernateUtils.buildCriterion("devCode", strings[i], MatchType.EQ))); List<AlarmTime> alarmTimeList = criteria.list(); if (alarmTimeList.size() > 0) { AlarmTime alarmTime = alarmTimeList.get(0); alarmTime.setDevCode(strings[i]); alarmTime.setStartDate(model.getStartDate()); alarmTime.setEndDate(model.getEndDate()); alarmTime.setStartTime(model.getStartTime()); alarmTime.setEndTime(model.getEndTime()); save(alarmTime); } else { AlarmTime alarmTime = new AlarmTime(); alarmTime.setDevCode(strings[i]); alarmTime.setStartDate(model.getStartDate()); alarmTime.setEndDate(model.getEndDate()); alarmTime.setStartTime(model.getStartTime()); alarmTime.setEndTime(model.getEndTime()); save(alarmTime); } } map.put("success", true); map.put("msg", "保存成功"); } } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("msg", "保存失败!"); } return map; } public Map deleteTime(AlarmTime model) { Map<String, Object> map = new HashMap<String, Object>(); try { if (StringUtils.isNotBlank(model.getDevCode())) { String[] strings = model.getDevCode().split(","); for (int i = 0; i < strings.length; i++) { Criteria criteria = getSession().createCriteria(AlarmTime.class); criteria.add(Restrictions.and(HibernateUtils.buildCriterion("devCode", strings[i], MatchType.EQ))); List<AlarmTime> alarmTimeList = criteria.list(); for (AlarmTime alarmTime : alarmTimeList) { this.remove(alarmTime); } } map.put("success", true); map.put("msg", "删除成功"); } } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("msg", "删除失败!"); } return map; } }