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

import com.casic.core.hibernate.HibernateEntityDao;
import com.casic.dma.model.domain.PositionInfo;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Service
public class PositionInfoManager extends HibernateEntityDao<PositionInfo> {

    @Resource
    private PosDMAManager posDMAManager;

    @Resource
    private DevPosManager devPosManager;

    public Criteria getCriteria() {
        return getSession().createCriteria(PositionInfo.class);
    }

    /**
     * DMA模型管理
     * 获取已有的有效监测点,并且这些监测点不在数组中[ids]
     * @param ids
     * @return
     */
    public List<PositionInfo> findActivePositionInfoAndNotIn(Set<Long> ids) {
        Criteria criteria = getSession().createCriteria(PositionInfo.class);
        criteria.addOrder(Order.asc("ID"));
        criteria.add(Restrictions.eq("active", true));
        if (!ids.isEmpty()) {
            criteria.add(Restrictions.not(Restrictions.in("ID", ids)));
        }
        return criteria.list();
    }

    /**
     * 删除与监测点关联的信息,包括PositionInfo、PosDMA、DevPos
     * 二院系统采用#软删除#
     * @param positionInfoID
     * @return
     */
    @Transactional
    public Map<String, Object> removeModel(Long positionInfoID) {
        PositionInfo positionInfo = get(positionInfoID);
        Map<String, Object> map = new HashMap<String, Object>();

        String hql = "delete from PosDMA where positionInfo=:pos";
        map.put("pos", positionInfo);
        posDMAManager.batchUpdate(hql, map);

        hql = "delete from DevPos where positionInfo=:pos";
        devPosManager.batchUpdate(hql, map);
        remove(positionInfo);

        map.clear();
        map.put("success", true);
        map.put("msg", "删除成功!");

        return map;
    }
}