def get_resources_by_status(self):
        logger.info("\t ==========[ get_resources_by_status ]==========")
        conditions = and_()
        or_conditions = or_()
        or_conditions.append(Pro_Resource_Apply.status == STATUS_RESOURCE.APPLIED)
        or_conditions.append(Pro_Resource_Apply.status == STATUS_RESOURCE.CHECKED)
        or_conditions.append(Pro_Resource_Apply.status == STATUS_RESOURCE.PAYED)
        or_conditions.append(Pro_Resource_Apply.status == STATUS_RESOURCE.CONFIRMPAYED)
        or_conditions.append(Pro_Resource_Apply.status == STATUS_RESOURCE.STARTED)
        or_conditions.append(Pro_Resource_Apply.status == STATUS_RESOURCE.CLOSED)
        conditions.append(or_conditions)
        res_status = self.params.get("res_status")
        if res_status:
            conditions.append(Pro_Resource_Apply.status == res_status)
        env_id = self.params.get("env_id", 0)
        if env_id:
            conditions.append(Pro_Info.env_id == env_id)
        logger.info("\t [res_status]: %s" % res_status)
        resource_list = self.db.query(
            Pro_Resource_Apply
        ).outerjoin(
            Pro_Info, Pro_Info.id == Pro_Resource_Apply.pro_id
        ).filter(
            conditions
        ).order_by(
            Pro_Resource_Apply.create_time.desc()
        ).all()

        # 按状态查询申请数量
        status_counts = self.db.query(
            Pro_Resource_Apply.status, func.count(Pro_Resource_Apply.id)
        ).filter(
            or_conditions
        ).group_by(
            Pro_Resource_Apply.status
        ).all()
        status_counts = dict(status_counts)
        logger.info("status_counts: %s" % status_counts)

        # 按环境查询申请数量
        env_counts = self.db.query(
            Pro_Info.env_id, func.count(Pro_Resource_Apply.id)
        ).outerjoin(
            Pro_Resource_Apply, Pro_Resource_Apply.pro_id == Pro_Info.id
        ).outerjoin(
            Env_Info, Env_Info.id == Pro_Info.env_id
        ).filter(
            or_conditions
        ).group_by(
            Env_Info.id
        ).all()
        env_counts = dict(env_counts)
        logger.info("env_counts: %s" % env_counts)

        data = ObjectDict()
        data.resource_list = resource_list
        data.status_counts = status_counts
        data.env_counts = env_counts
        return self.success(data=data)
    def get_resources_by_status(self):
        logger.info("\t ==========[ get_resources_by_status ]==========")
        conditions = and_()
        or_conditions = or_()
        or_conditions.append(
            Pro_Resource_Apply.status == STATUS_RESOURCE.APPLIED)
        or_conditions.append(
            Pro_Resource_Apply.status == STATUS_RESOURCE.CHECKED)
        or_conditions.append(
            Pro_Resource_Apply.status == STATUS_RESOURCE.PAYED)
        or_conditions.append(
            Pro_Resource_Apply.status == STATUS_RESOURCE.CONFIRMPAYED)
        or_conditions.append(
            Pro_Resource_Apply.status == STATUS_RESOURCE.STARTED)
        or_conditions.append(
            Pro_Resource_Apply.status == STATUS_RESOURCE.CLOSED)
        conditions.append(or_conditions)
        res_status = self.params.get("res_status")
        if res_status:
            conditions.append(Pro_Resource_Apply.status == res_status)
        env_id = self.params.get("env_id", 0)
        if env_id:
            conditions.append(Pro_Info.env_id == env_id)
        logger.info("\t [res_status]: %s" % res_status)
        resource_list = self.db.query(Pro_Resource_Apply).outerjoin(
            Pro_Info, Pro_Info.id == Pro_Resource_Apply.pro_id).filter(
                conditions).order_by(
                    Pro_Resource_Apply.create_time.desc()).all()

        # 按状态查询申请数量
        status_counts = self.db.query(
            Pro_Resource_Apply.status,
            func.count(Pro_Resource_Apply.id)).filter(or_conditions).group_by(
                Pro_Resource_Apply.status).all()
        status_counts = dict(status_counts)
        logger.info("status_counts: %s" % status_counts)

        # 按环境查询申请数量
        env_counts = self.db.query(
            Pro_Info.env_id, func.count(Pro_Resource_Apply.id)).outerjoin(
                Pro_Resource_Apply,
                Pro_Resource_Apply.pro_id == Pro_Info.id).outerjoin(
                    Env_Info, Env_Info.id == Pro_Info.env_id).filter(
                        or_conditions).group_by(Env_Info.id).all()
        env_counts = dict(env_counts)
        logger.info("env_counts: %s" % env_counts)

        data = ObjectDict()
        data.resource_list = resource_list
        data.status_counts = status_counts
        data.env_counts = env_counts
        return self.success(data=data)