Newer
Older
alarm / WebRoot / WEB-INF / classes / com / casic / dma / dmamanager / DmaDeviceManager.java
zhout on 2 Mar 2022 1 KB first commit
package com.casic.dma.dmamanager;

import com.casic.alarm.domain.Device;
import com.casic.core.hibernate.HibernateEntityDao;
import com.casic.dma.model.domain.DMAInfo;
import com.casic.dma.model.domain.DevPos;
import com.casic.dma.model.domain.PosDMA;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by yxw on 2017/2/23.
 */
@Service
public class DmaDeviceManager extends HibernateEntityDao<DMAInfo> {

    @Transactional
    public Map getDevByRegionIdAndType(int regionId, String sensorType) {
        Map map = new HashMap<Device, String>();
        String hql = "from PosDMA where dmaInfo.ID =" + regionId +
                " and active = true ";
        List<PosDMA> posDmas=this.getSession().createQuery(hql).list();

        //for each postion
        for (PosDMA posDMA : posDmas) {
            Criteria criteria = this.getSession().createCriteria(DevPos.class);
            criteria.add(Restrictions.eq("active", true));
            criteria.add(Restrictions.eq("sensorType", sensorType));
            criteria.createAlias("positionInfo", "positionInfo");
            criteria.add(Restrictions.eq("positionInfo.ID", posDMA.getPositionInfo().getID()));
            List<DevPos> devPosList=criteria.list();
            if (devPosList != null && devPosList.size() > 0) {
                map.put(devPosList.get(0).getDevice(), posDMA.getDirection());
            }
        }
        return map;
    }

    public DMAInfo getDMAInfoByDBID(double dbId)
    {
        Criteria criteria = this.getSession().createCriteria(DMAInfo.class);
        criteria.add(Restrictions.eq("ID", Math.round(dbId)));
        List<DMAInfo> DMAInfos=criteria.list();
        return DMAInfos.get(0);
    }
}