Newer
Older
PgInterface / src / main / java / com / casic / PgInterface / patroler / manager / PgMaintainManager.java
xiaowei on 21 Aug 2018 4 KB 新增维护类别
package com.casic.PgInterface.patroler.manager;

import com.casic.PgInterface.core.hibernate.HibernateEntityDao;
import com.casic.PgInterface.core.util.DateUtils;
import com.casic.PgInterface.core.util.StringUtils;
import com.casic.PgInterface.patroler.domain.PgMaintain;
import com.casic.PgInterface.patroler.dto.PgMaintainDocDto;
import com.casic.PgInterface.patroler.dto.PgMaintainDto;
import com.casic.PgInterface.patroler.dto.PgPatrolMaintainInfoDto;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 * Created by yxw on 2018/3/28.
 */
@Service
public class PgMaintainManager extends HibernateEntityDao<PgMaintain>{

    public List<PgMaintainDocDto> getPgMaintainList() {
        String sql = "SELECT B.ID,B.MAINTAINER,A.LIST_NAME, B.DESCRIBE, B.BEGINTIME,B.TIMELIMT,A.FILE_NAME " +
                "FROM PG_MAINTAINDOC A LEFT JOIN PG_MAINTAIN B ON B.ID = A.PGMAINTAIN_ID " +
                "WHERE B.ACTIVE = 1 ORDER BY B.ID ASC";

        List<PgMaintainDocDto> pgMaintainDocDtoList = new ArrayList<PgMaintainDocDto>();
        List<Object[]> objects = this.getSession().createSQLQuery(sql).list();

        for (int i = 0; i < objects.size() ; i++) {
            PgMaintainDocDto pgMaintainDocDto = new PgMaintainDocDto();
            pgMaintainDocDto.setId(String.valueOf(objects.get(i)[0]));
            pgMaintainDocDto.setMainTainer(String.valueOf(objects.get(i)[1]));
            pgMaintainDocDto.setList_name(String.valueOf(objects.get(i)[2]));
            pgMaintainDocDto.setDescribe(String.valueOf(objects.get(i)[3]));
            pgMaintainDocDto.setBeginTime(String.valueOf(objects.get(i)[4]));
            pgMaintainDocDto.setTimeLimt(String.valueOf(objects.get(i)[5]));
            pgMaintainDocDto.setFile_name(String.valueOf(objects.get(i)[6]));
            pgMaintainDocDtoList.add(pgMaintainDocDto);
        }
        return pgMaintainDocDtoList;
    }

    public List<PgMaintainDto> getPgMaintainByMaintainerOrTime(String mainTainer,String startTime,String endTime) {
        try {
            Criteria criteria = createCriteria(PgMaintain.class);
            if (StringUtils.isNotBlank(mainTainer)) {
                criteria.add(Restrictions.eq("mainTainer", mainTainer));
            }
            if (StringUtils.isNotBlank(startTime)) {
                criteria.add(Restrictions.ge("beginTime", DateUtils.sdf_day.parse(startTime)));
            }
            if (StringUtils.isNotBlank(endTime)) {
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(DateUtils.sdf_day.parse(endTime));
                calendar.add(Calendar.DATE, 1);
                criteria.add(Restrictions.le("beginTime", calendar.getTime()));
            }

            criteria.add(Restrictions.eq("active", 1));
            criteria.addOrder(Order.desc("id"));

            List<PgMaintain> pgMaintainList=criteria.list();
            List<PgMaintainDto> pgMaintainDtoList=new ArrayList<PgMaintainDto>();
            for(PgMaintain pgMaintain : pgMaintainList)
            {
                pgMaintainDtoList.add(new PgMaintainDto(pgMaintain));
            }

            return pgMaintainDtoList;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //yyyy-mm-dd
    public List<PgPatrolMaintainInfoDto> getMaintainByTime(String startTime,String endTime,String statisticType) {

        String sql="";
        String dateType="";
        List<PgPatrolMaintainInfoDto> pgPatrolMaintainInfoDtoList=new ArrayList<PgPatrolMaintainInfoDto>();

        int type=Integer.valueOf(statisticType);
        switch(type) {
            case 0://年
                dateType = "yyyy";
                break;
            case 1://月
                dateType = "yyyy-mm";
                break;
            case 2://周
                dateType = "iw";
                break;
            case 3://日
                dateType="yyyy-mm-dd";
                break;
            default:
                break;
        }
        sql="select count(*), to_char(t.BEGINTIME, '"+dateType+"') from PG_MAINTAIN t where t.BEGINTIME >= " +
                "to_date('"+startTime+"', 'yyyy-mm-dd') and t.BEGINTIME <= to_date('"+endTime+"', 'yyyy-mm-dd') group " +
                "by to_char(t.BEGINTIME, '"+dateType+"')";

        List<Object[]> objects = this.getSession().createSQLQuery(sql).list();
        for(int i=0;i<objects.size();i++) {
            PgPatrolMaintainInfoDto pgPatrolMaintainInfoDto=new PgPatrolMaintainInfoDto();
            pgPatrolMaintainInfoDto.setNum(objects.get(i)[0].toString());
            pgPatrolMaintainInfoDto.setDate(objects.get(i)[1].toString());

            pgPatrolMaintainInfoDtoList.add(pgPatrolMaintainInfoDto);
        }
        return pgPatrolMaintainInfoDtoList;
    }


}