393 lines
11 KiB
Go
393 lines
11 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"electricity_bill_calc/logger"
|
|
"fmt"
|
|
"github.com/doug-martin/goqu/v9"
|
|
"github.com/jackc/pgx/v5"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type _GMRepository struct {
|
|
log *zap.Logger
|
|
ds goqu.DialectWrapper
|
|
}
|
|
|
|
var GMRepository = &_GMRepository{
|
|
log: logger.Named("Repository", "GM"),
|
|
ds: goqu.Dialect("postgres"),
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteMeterBinding(ctx context.Context, tx pgx.Tx, pid string, tenements []string, meterCodes ...[]string) error {
|
|
DeleteQuery := gm.ds.From(goqu.T("tenement_meter")).
|
|
Where(goqu.I("park_id").Eq(pid)).
|
|
Delete()
|
|
|
|
if len(tenements) > 0 {
|
|
DeleteQuery = DeleteQuery.
|
|
Where(goqu.I("tenement_id").In(tenements))
|
|
}
|
|
|
|
if len(meterCodes) > 0 {
|
|
DeleteQuery = DeleteQuery.
|
|
Where(goqu.I("meter_id").In(meterCodes))
|
|
}
|
|
|
|
DeleteQuerySql, DeleteQueryArgs, _ := DeleteQuery.ToSQL()
|
|
|
|
_, err := tx.Exec(ctx, DeleteQuerySql, DeleteQueryArgs...)
|
|
if err != nil {
|
|
gm.log.Error("数据库在删除tenement_meter表数据中出错", zap.Error(err))
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteTenements(ctx context.Context, tx pgx.Tx, pid string, tenements ...[]string) error {
|
|
DeleteTenements := gm.ds.
|
|
From("tenement").
|
|
Where(goqu.I("park_id").Eq(pid)).
|
|
Delete()
|
|
|
|
fmt.Println(len(tenements))
|
|
if len(tenements) > 0 {
|
|
DeleteTenements = DeleteTenements.
|
|
Where(goqu.I("id").In(tenements))
|
|
}
|
|
|
|
DeleteTenementsSql, DeleteTenementsArgs, _ := DeleteTenements.ToSQL()
|
|
|
|
_, err := tx.Exec(ctx, DeleteTenementsSql, DeleteTenementsArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
gm.log.Error("删除商户信息出错", zap.Error(err))
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteInvoices(ctx context.Context, tx pgx.Tx, parks string, val ...[]string) error {
|
|
if len(val) > 0 {
|
|
updateQuery, updateQueryArgs, _ := gm.ds.
|
|
Update(goqu.T("report_tenement")).
|
|
Set(goqu.Record{"invoice": nil}).
|
|
Where(goqu.I("invoice").In(val)).
|
|
Where(
|
|
goqu.I("report_id").
|
|
Eq(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
),
|
|
).ToSQL()
|
|
_, err := tx.Exec(ctx, updateQuery, updateQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
gm.log.Error("更新发票记录出错", zap.Error(err))
|
|
return err
|
|
}
|
|
} else {
|
|
updateQuery, updateQueryArgs, _ := gm.ds.
|
|
Update(goqu.T("report_tenement")).
|
|
Set(goqu.Record{"invoice": nil}).
|
|
Where(
|
|
goqu.I("report_id").
|
|
Eq(gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
)).ToSQL()
|
|
_, err := tx.Exec(ctx, updateQuery, updateQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
gm.log.Error("更新发票记录出错", zap.Error(err))
|
|
return err
|
|
}
|
|
}
|
|
|
|
deleteQuery := gm.ds.
|
|
From(goqu.T("invoices")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Delete()
|
|
if len(val) > 0 {
|
|
deleteQuery.Where(goqu.I("invoice_code").In(val))
|
|
}
|
|
deleteQuerySql, deleteQueryArgs, _ := deleteQuery.ToSQL()
|
|
|
|
_, err := tx.Exec(ctx, deleteQuerySql, deleteQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
gm.log.Error("删除指定园区发票记录出错", zap.Error(err))
|
|
return err
|
|
}
|
|
return nil
|
|
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteMeterPookings(ctx context.Context, tx pgx.Tx, parks string, val ...[]string) error {
|
|
deleteQuery := gm.ds.
|
|
Delete(goqu.T("meter_relations")).
|
|
Where(goqu.I("park_id").Eq(parks))
|
|
|
|
if len(val) > 0 {
|
|
deleteQuery = deleteQuery.
|
|
Where(
|
|
goqu.I("master_meter_id").In(val),
|
|
goqu.Or(goqu.I("slave_meter_id").In(val)),
|
|
)
|
|
}
|
|
deleteQuerySql, deleteQueryArgs, _ := deleteQuery.ToSQL()
|
|
_, err := tx.Exec(ctx, deleteQuerySql, deleteQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
gm.log.Error("删除指定园区中的表计分摊关系失败", zap.Error(err))
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteMeters(ctx context.Context, tx pgx.Tx, parks string, val ...[]string) error {
|
|
deleteQuery := gm.ds.
|
|
Delete(goqu.T("meter_04kv")).
|
|
Where(goqu.I("park_id").Eq(parks))
|
|
|
|
if len(val) > 0 {
|
|
deleteQuery = deleteQuery.Where(goqu.I("code").In(val))
|
|
}
|
|
|
|
deleteQuerySql, deleteQueryArgs, _ := deleteQuery.ToSQL()
|
|
|
|
_, err := tx.Exec(ctx, deleteQuerySql, deleteQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
gm.log.Error("删除指定园区的符合条件的标记出错", zap.Error(err))
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteReports(ctx context.Context, tx pgx.Tx, parks string, val ...[]string) error {
|
|
var err error
|
|
|
|
if len(val) > 0 {
|
|
deleteReportTenementQuerySql, deleteReportTenementQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_tenement")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportTenementQuerySql, deleteReportTenementQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportPooledConsumptionQuerySql, deleteReportPooledConsumptionQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_pooled_consumption")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportPooledConsumptionQuerySql, deleteReportPooledConsumptionQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportPublicConsumptionQuerySql, deleteReportPublicConsumptionQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_public_consumption")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportPublicConsumptionQuerySql, deleteReportPublicConsumptionQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportSummaryQuerySql, deleteReportSummaryQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_summary")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportSummaryQuerySql, deleteReportSummaryQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportTaskQuerySql, deleteReportTaskQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_task")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportTaskQuerySql, deleteReportTaskQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportQuerySql, deleteReportQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportQuerySql, deleteReportQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
} else {
|
|
deleteReportTenementQuerySql, deleteReportTenementQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_tenement")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportTenementQuerySql, deleteReportTenementQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportPooledConsumptionQuerySql, deleteReportPooledConsumptionQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_pooled_consumption")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportPooledConsumptionQuerySql, deleteReportPooledConsumptionQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportPublicConsumptionQuerySql, deleteReportPublicConsumptionQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_public_consumption")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportPublicConsumptionQuerySql, deleteReportPublicConsumptionQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportSummaryQuerySql, deleteReportSummaryQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_summary")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportSummaryQuerySql, deleteReportSummaryQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportTaskQuerySql, deleteReportTaskQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report_task")).
|
|
Where(goqu.I("report_id").In(
|
|
gm.ds.
|
|
From(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)),
|
|
)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportTaskQuerySql, deleteReportTaskQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
deleteReportQuerySql, deleteReportQueryArgs, _ := gm.ds.
|
|
Delete(goqu.T("report")).
|
|
Where(goqu.I("park_id").Eq(parks)).ToSQL()
|
|
_, err = tx.Exec(ctx, deleteReportQuerySql, deleteReportQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteBuildings(ctx context.Context, tx pgx.Tx, parks string, val ...[]string) error {
|
|
if len(val) > 0 {
|
|
updateBulidingSql, updateBlidingArgs, _ := gm.ds.
|
|
Update(goqu.T("tenement")).
|
|
Set(goqu.Record{"building": nil}).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("building").In(
|
|
gm.ds.
|
|
From(goqu.I("park_building")).
|
|
Where(goqu.I("park_id").Eq(parks)).
|
|
Where(goqu.I("id").In(val)).
|
|
Select(goqu.I("id")),
|
|
)).ToSQL()
|
|
_, err := tx.Exec(ctx, updateBulidingSql, updateBlidingArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
} else {
|
|
updateBulidingSql, updateBlidingArgs, _ := gm.ds.
|
|
Update(goqu.T("tenement")).
|
|
Set(goqu.Record{"building": nil}).
|
|
Where(goqu.I("park_id").Eq(parks)).ToSQL()
|
|
_, err := tx.Exec(ctx, updateBulidingSql, updateBlidingArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
}
|
|
|
|
deleteQuery := gm.ds.
|
|
Delete(goqu.I("park_building")).
|
|
Where(goqu.I("park_id").Eq(parks))
|
|
|
|
if len(val) > 0 {
|
|
deleteQuery = deleteQuery.
|
|
Where(goqu.I("id").In(val))
|
|
}
|
|
|
|
deleteQuerySql, deleteQueryArgs, _ := deleteQuery.ToSQL()
|
|
_, err := tx.Exec(ctx, deleteQuerySql, deleteQueryArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (gm _GMRepository) DeleteParks(ctx context.Context, tx pgx.Tx, park []string) error {
|
|
deleteParksSql, deleteParksArgs, _ := gm.ds.
|
|
Delete(goqu.T("park")).
|
|
Where(goqu.I("id").In(park)).ToSQL()
|
|
|
|
_, err := tx.Exec(ctx, deleteParksSql, deleteParksArgs...)
|
|
if err != nil {
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|