package com.ld.igds.es.service; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import com.bstek.bdf2.core.orm.hibernate.HibernateDao; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import com.bstek.dorado.data.provider.Page; import com.ld.igds.models.Energy; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.DateUtil; @Component public class HEsService extends HibernateDao { public List listEsMeter(Map param) { if (null == param) { param = new HashMap(); param.put("time", new Date()); } Date time = (Date) param.get("time"); String hql = " from " + Energy.class.getName() + " where companyId=:companyId and updateTime>=:time and updateTime <:end order by updateTime desc"; param.put("companyId", ContextUtil.getCompanyId()); param.put("time", DateUtil.getCurZero(time)); param.put("end", DateUtil.getNextZero(time)); // 获取所有满足条件的数据 List list = this.query(hql, param); if (null == list || list.isEmpty()) return list; // 数据筛选,只要最新一条数据 Map tempMap = new HashMap(); list.stream().forEachOrdered(data -> { if(StringUtils.isEmpty(data.getDeviceId())){ data.setDeviceId("0"); data.setDeviceName("电表"); } if (null == tempMap.get(data.getDepotId())) { tempMap.put(data.getDepotId() + "-" + data.getDeviceId(), data); } }); // MAP转换为LIST return new ArrayList(tempMap.values()); } public void queryData(Page page, Map param) throws Exception { String hql = " from " + Energy.class.getName() + " where companyId=:companyId "; Map args = new HashMap(); args.put("companyId", ContextUtil.getCompanyId()); if(null != param){ Date start = (Date) param.get("start"); if(null != start){ start = DateUtil.getCurZero(start); hql += " and updateTime >=:start "; args.put("start", start); } Date end = (Date) param.get("end"); if(null != end){ end = DateUtil.getNextZero(end); hql += " and updateTime <:end "; args.put("end", end); } String depotId = (String) param.get("depotId"); if(StringUtils.isNotEmpty(depotId)){ hql += " and depotId =:depotId "; args.put("depotId", depotId); } } String coutHql = "select count(1) "+ hql; hql += " order by updateTime desc"; this.pagingQuery(page, hql, coutHql, args); } }