diff --git a/model/calculate/calculate.go b/model/calculate/calculate.go new file mode 100644 index 0000000..da5177c --- /dev/null +++ b/model/calculate/calculate.go @@ -0,0 +1,92 @@ +package calculate + +import ( + "electricity_bill_calc/model" + "electricity_bill_calc/types" + + "github.com/shopspring/decimal" +) + +type Reading struct { + ReadAt types.DateTime + Ratio decimal.Decimal + Overall decimal.Decimal + Critical decimal.Decimal + Peak decimal.Decimal + Flat decimal.Decimal + Valley decimal.Decimal +} + +type Pooling struct { + Code string + Detail model.ConsumptionUnit +} + +type Meter struct { + Code string + Detail model.MeterDetail + CoveredArea decimal.Decimal + LastTermReading *Reading + CurrentTermReading *Reading + Overall model.ConsumptionUnit + Critical model.ConsumptionUnit + Peak model.ConsumptionUnit + Flat model.ConsumptionUnit + Valley model.ConsumptionUnit + AdjustLoss model.ConsumptionUnit + PooledBasic model.ConsumptionUnit + PooledAdjust model.ConsumptionUnit + PooledLoss model.ConsumptionUnit + PooledPublic model.ConsumptionUnit + SharedPoolingProportion decimal.Decimal + Poolings []*Pooling +} + +type TenementCharge struct { + Tenement string + Overall model.ConsumptionUnit + Critical model.ConsumptionUnit + Peak model.ConsumptionUnit + Flat model.ConsumptionUnit + Valley model.ConsumptionUnit + BasicFee decimal.Decimal + AdjustFee decimal.Decimal + LossPooled decimal.Decimal + PublicPooled decimal.Decimal + FinalCharges decimal.Decimal + Submeters []*Meter + Poolings []*Meter +} + +type Summary struct { + ReportId string + OverallArea decimal.Decimal + Overall model.ConsumptionUnit + ConsumptionFee decimal.Decimal + Critical model.ConsumptionUnit + Peak model.ConsumptionUnit + Flat model.ConsumptionUnit + Valley model.ConsumptionUnit + Loss decimal.Decimal + LossFee decimal.Decimal + LossProportion decimal.Decimal + AuthoizeLoss model.ConsumptionUnit + BasicFee decimal.Decimal + BasicPooledPriceConsumption decimal.Decimal + BasicPooledPriceArea decimal.Decimal + AdjustFee decimal.Decimal + AdjustPooledPriceConsumption decimal.Decimal + AdjustPooledPriceArea decimal.Decimal + LossDilutedPrice decimal.Decimal + TotalConsumption decimal.Decimal + FinalDilutedOverall decimal.Decimal +} + +type PoolingSummary struct { + Tenement string + Meter string + TargetMeter string + Area decimal.NullDecimal + OverallAmount decimal.Decimal + PoolingProportion decimal.Decimal +} diff --git a/model/enums.go b/model/enums.go index 18eb8fe..79b5225 100644 --- a/model/enums.go +++ b/model/enums.go @@ -81,3 +81,10 @@ const ( REPORT_CALCULATE_TASK_STATUS_UNKNOWN_ERROR REPORT_CALCULATE_TASK_STATUS_UNEXISTS = 99 ) + +const ( + REPORT_WITHDRAW_NON int16 = iota + REPORT_WITHDRAW_APPLYING + REPORT_WITHDRAW_DENIED + REPORT_WITHDRAW_GRANTED +) diff --git a/repository/report.go b/repository/report.go new file mode 100644 index 0000000..4e251d6 --- /dev/null +++ b/repository/report.go @@ -0,0 +1,19 @@ +package repository + +import ( + "electricity_bill_calc/logger" + + "github.com/doug-martin/goqu/v9" + _ "github.com/doug-martin/goqu/v9/dialect/postgres" + "go.uber.org/zap" +) + +type _ReportRepository struct { + log *zap.Logger + ds goqu.DialectWrapper +} + +var ReportRepository = _ReportRepository{ + log: logger.Named("Repository", "Report"), + ds: goqu.Dialect("postgres"), +} diff --git a/vo/report.go b/vo/report.go new file mode 100644 index 0000000..d685e69 --- /dev/null +++ b/vo/report.go @@ -0,0 +1 @@ +package vo