syncretize_energy_cps.py 6.76 KB
Newer Older
lcn's avatar
lcn committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
from dataclasses import dataclass

from pot_libs.common.components.fields import Cid
from pot_libs.sanic_api import Model
from pot_libs.sanic_api.column import Float, List, Str, Opt, Int, Dict
from unify_api.utils.response_code import DbErr


@dataclass
class PvEvaluateReq(Model):
    cid: int = Int("cid").eg(45)
    start: str = Str("开始时间").eg("2019-05")
    end: str = Str("结束时间").eg("2019-12")


@dataclass
class PvEvaluateComputeReq(Model):
    cid: int = Int("cid").eg(45)
    start: str = Str("开始时间").eg("2019-05")
    end: str = Str("结束时间").eg("2019-12")
    area_conversion_ratio: float = Float("面积折算系数").eg(0.8)
    capacity_per_meter: float = Float("单位面积容量").eg(100)
    install_space: float = Float("场地面积").eg(1000)
    self_use_ratio: float = Float("自用比例").eg(1)
    internet_ratio: float = Float("上网比例").eg(0)
    efficiency: float = Float("光伏发电效率").eg(0.80)
    evaluate_year: int = Int("发电年限").eg(25)
    rmb_per_w: float = Float("建设单价").eg(4.3)
    maintenance_per_wp: float = Float("维护成本").eg(0.05)
    coal_in_grid: float = Float("上网电价").eg(0.45)


@dataclass
class PvEvaluateResp(Model):
    rule: int = Opt(Int("一充一放:1、两充两放:2").eg(1))
    sum_kwh_p: float = Float("峰值总耗电量").eg(1)
    electrovalence: dict = Dict("电价时段").eg({"v": ["01:00"]})
    slot: list = List("时间").eg(["00:00", "01:00"])
    p: list = List("负荷").eg(["12", "13"])
    kwh: list = List("电量").eg(["1", "2"])


@dataclass
class PvEvaluateTwoResp(Model):
    rule: int = Opt(Int("一充一放:1、两充两放:2").eg(1))
    sum_kwh_p: float = Float("峰时段总耗电量").eg(1)
    sum_kwh_s: float = Opt(Float("尖时段总耗电量").eg(1))
    electrovalence: dict = Dict("电价时段").eg({"v": ["01:00"]})
    kwh_slot: list = List("电量时间").eg(["00:00", "01:00"])
    p_slot: list = List("负荷时间").eg(["00:00", "01:00"])
    p: list = List("负荷").eg(["12", "13"])
    kwh: list = List("电量").eg(["1", "2"])


@dataclass
class Optimizecurve(Model):
    """光伏优化曲线"""
    slot: list = List('slot').items(Str())
    before_curve: list = List('优化前').items(Float())
    after_curve: list = List('优化后').items(Float())
    pv_curve: list = List('pv_curve').items(Float())


@dataclass
class ComputeTable(Model):
    """光伏测算表"""
    slot: list = List('年份').items(Int())
    year_attenuation: list = List('年衰减值').items(Float())
    surplus_capacity: list = List('剩余容量').items(Float())
    year_add_electric: list = List('年发电量').items(Float())
    wp_rmb: list = List('维护成本').items(Float())
    all_rmb: list = List('累计总成本').items(Float())
    this_year_earnings: list = List('本年收益').items(Float())
    all_earnings: list = List('累计收益').items(Float())


@dataclass
class PvEvaluateComputeResp(Model):
    optimize_curve: Optimizecurve = Optimizecurve   # 优化曲线
    compute_table: list = List('测算表')  # 测算表
    invest_capacity: float = Float("装机容量").eg(1000.123)
    first_year_kwh: float = Float("首年发电量").eg(1000.123)
    static_period: float = Float("回收周期").eg(1000.123)
    total_capacity: float = Float("建设面积").eg(1000.123)
    invest_charge: float = Float("建设投资").eg(1000.123)
    c_emissions: float = Float("首年碳减排").eg(1000.123)
    co2_emissions: float = Float("首年co2减排").eg(1000.123)
    year_earnings: float = Float("预期年收益").eg(1000.123)
    all_c_emissions: float = Float("累计碳减排").eg(1000.123)
    tree: int = Int("植树").eg(1000)
    download_url: str = Str("下载连接").eg("")


@dataclass
class EssEvaluateReq (Model):
    cid: int = Int("cid").eg(45)
    start: str = Str("开始时间").eg("2019-05")
    end: str = Str("结束时间").eg("2019-12")
    work_day: int = Int("1 全部 2工作日 3非工作日").eg(1)


@dataclass
class EssEvaluateComputeReq(Model):
    cid: int = Int("cid").eg(45)
    start: str = Str("开始时间").eg("2019-05")
    end: str = Str("结束时间").eg("2019-12")
    rule: int = Int("一充一放:1、两充两放:2").eg(1)
    install_capacity: float = Float("储能容量").eg(1000)
    pcs_type: float = Float("pcs类型").eg(123)
    decay_rate: float = Float("衰减率").eg(0.03)
    DOD: float = Float("放电深度").eg(0.9)
    year_use_days: int = Int("年利用天数").eg(330)
    maintenance_ratio_per_year: float = Float("运维费用占静态投资比例").eg(0.03)
    subsidy_year: int = Int("补贴年限").eg(10)
    epc_price: float = Float("建设单价").eg(1.4)
    kwh_subsidy: float = Float("度电补贴").eg(0)


@dataclass
class OptCurve(Model):
    """储能优化曲线"""
    slot: list = List('slot').items(Str())
    load_curve: list = List('load_curve').items(Float())
    bat_curve: list = List('bat_curve').items(Float())
    load_bat_curve: list = List('load_bat_curve').items(Float())


# @dataclass
# class EssComputeTable(Model):
#     """储能测算表"""
#     slot: list = List('年份').items(Int())
#     surplus_capacity: list = List('剩余容量').items(Float())
#     count_num: list = List('累计充放数').items(Float())
#     earnings: list = List('充放电收益').items(Float())
#     wp_rmb: list = List('维护成本').items(Float())
#     all_rmb: list = List('累计总成本').items(Float())
#     this_year_earnings: list = List('本年收益').items(Float())
#     all_earnings: list = List('累计收益').items(Float())


@dataclass
class EssEvaluateComputeResp(Model):
    evaluate_table: OptCurve = OptCurve
    ess_compute_table: list = List('测算表')  # 测算表
    invest_capacity: float = Float("储能容量").eg(1000.123)
    static_period: int = Int("回收期").eg(10)
    pcs_capacity: float = Float("PCS选型").eg(1000)
    month_average_dc_kwh: float = Float("月削峰电量").eg(1000.123)
    month_dc_benefit: float = Float("预期价差收益").eg(1000.123)
    download_url: str = Str("download_url").eg("")


@dataclass
class ElectrovalenceSettingReq(Model):
    cid: int = Int("cid").eg(45)
    price_md: float = Float("需量单价").eg(35)
    price_tc: float = Float("容量单价").eg(23)
    std_cos: float = Float("力调电费").eg(0.85)
    electrovalence: list = List("电镀电费").eg([{
        "name": "s", "price": "0.123", "slot": [["12:00", "13:00"]]}])


@dataclass
class ElectrovalenceReq(Model):
    cid: int = Int("cid").eg(45)


@dataclass
class ElectrovalenceResp(Model):
    price_md: float = Float("需量单价").eg(1000.123)
    price_tc: float = Float("容量单价").eg(1000.123)
    std_cos: float = Float("力调电费").eg(1000.123)
    electrovalence: list = List("电度电费:s尖,p峰,f平,v谷").eg([{
        "name": "s", "price": "0.123", "slot": ["12:00-13:00"]}])