# coding: utf-8
from .Solutions_base01 import 能源解决方案类


class 供蒸汽方案(能源解决方案类):
    def __init__(self, 数据, 设备列表):
        super().__init__(数据, 设备列表)
        self.执行计算过程()

    def 生成指标索引(self):
        self.指标索引 = {
            '方案标识': self.设备配置str,
            '内部收益率': round(self.技经计算.内部收益率, 3),
            '利润总额/万': int(self.技经计算.年均利润总额 / 10000),
            '投资回收期/年': round(self.技经计算.投资回收期, 2),
            '建设投资/万': int(self.技经计算.建设投资 / 10000),
            '发电量/万kWh': int(self.系统全年量['发电量'] / 10000),
            '自耗电量/万kWh': int(self.系统全年量['自耗电量'] / 10000),
            '售电量/万kWh': int(self.系统全年量['售电量'] / 10000),
            '外购电量/万kWh': int(self.系统全年量['外购电量'] / 10000),
            '产汽量/万t': round(self.系统全年量['产汽量'] / 10000, 2),
            '售汽量/万t': round(self.系统全年量['售汽量'] / 10000, 2),
            '耗气量/万方': int(self.系统全年量['耗气量'] / 10000),
            '耗水量/万t': round(self.系统全年量['耗水量'] / 10000, 2)
    }

    def 生成结果列表(self):
        self.结果列表 = [
            self.设备配置string,
            self.技经计算.技经计算结果['建设投资(万元)'],
            self.技经计算.技经计算结果['年均销售收入(万元)'],
            self.技经计算.技经计算结果['年均总成本费用(万元)'],
            self.技经计算.技经计算结果['年均利润总额(万元)'],
            self.技经计算.技经计算结果['投资回收期'],
            self.技经计算.技经计算结果['内部收益率_税后'],

            self.满负荷运行小时数listStr,

            self.能源投入产出.结果显示索引列表['发电量/万kWh'],
            self.能源投入产出.结果显示索引列表['外购电量/万kWh'],
            self.能源投入产出.结果显示索引列表['自耗电量/万kWh'],
            self.能源投入产出.结果显示索引列表['售电量/万kWh'],
            self.能源投入产出.结果显示索引列表['产汽量/万t'],
            self.能源投入产出.结果显示索引列表['售汽量/万t'],
            self.能源投入产出.结果显示索引列表['耗气量/万方'],
            self.能源投入产出.结果显示索引列表['耗水量'],
            self.能源投入产出.结果显示索引列表['蒸汽收入/万元'],
            self.能源投入产出.结果显示索引列表['售电收入/万万'],
            self.能源投入产出.结果显示索引列表['燃气费/万元'],
            self.能源投入产出.结果显示索引列表['电费/万元'],
            self.能源投入产出.结果显示索引列表['水费/万元'],
        ]


    # def 运行策略(self,i):
    #     for 设备 in self.设备列表:
    #         设备.实时单位产汽运行收益 = 设备.计算实时单位产汽运行收益(i)
    #         设备.设备实时量['单位产汽运行收益'][i] = 设备.实时单位产汽运行收益
    #         # print(设备.名称,设备.实时单位产汽运行收益)
    #     排序后的设备列表 = self.根据运行收益排序(self.设备列表, '实时单位产汽运行收益')
    #     实时待解决蒸汽负荷 = self.数据.数据索引['蒸汽负荷'][i]
	#
    #     for 设备 in 排序后的设备列表:
    #         if 设备.满负荷运行小时数 >= 设备.满负荷运行小时数限制 or 设备.最低产汽运行负荷 > 实时待解决蒸汽负荷:
    #             设备.设备实时量['产汽量'][i] = 0
    #         else:
    #             设备.设备实时量['产汽量'][i] = min(实时待解决蒸汽负荷, 设备.锅炉额定产汽量)
    #             设备.满负荷运行小时数 += 设备.设备实时量['产汽量'][i] / 设备.锅炉额定产汽量
    #             实时待解决蒸汽负荷 = 实时待解决蒸汽负荷 - 设备.设备实时量['产汽量'][i]
    #     self.计算设备其他实时量(i)

    # def 实时运行策略(self, time):
    #     当前运行策略 = 运行策略(self.设备列表, self.数据, time, self.发电机总满负荷运行小时数)
    #     最优产蒸汽方案 = 当前运行策略.opt_产蒸汽方案
    #     for i, 设备 in enumerate(self.设备列表):
    #         设备.设备实时量['产汽量'][time] = 最优产蒸汽方案[i]
    #         if 设备.名称 == '燃气轮机' or 设备.名称 == '燃气内燃机':
    #             self.发电机总满负荷运行小时数 += 设备.设备实时量['产汽量'][time] / 设备.锅炉额定产汽量


