forked from free-lancers/electricity_bill_calc_service
		
	fix(meter):修复表计查询中的错误映射关系。
This commit is contained in:
		| @@ -23,19 +23,19 @@ import ( | |||||||
| var meterLog = logger.Named("Handler", "Meter") | var meterLog = logger.Named("Handler", "Meter") | ||||||
|  |  | ||||||
| func InitializeMeterHandlers(router *fiber.App) { | func InitializeMeterHandlers(router *fiber.App) { | ||||||
|  | 	router.Get("/meter/choice", security.EnterpriseAuthorize, listUnboundMeters) | ||||||
|  | 	router.Get("/meter/choice/tenement", security.EnterpriseAuthorize, listUnboundTenementMeters) | ||||||
| 	router.Get("/meter/:pid", security.EnterpriseAuthorize, searchMetersWithinPark) | 	router.Get("/meter/:pid", security.EnterpriseAuthorize, searchMetersWithinPark) | ||||||
| 	router.Post("/meter/:pid", security.EnterpriseAuthorize, createNewMeterManually) | 	router.Post("/meter/:pid", security.EnterpriseAuthorize, createNewMeterManually) | ||||||
| 	router.Get("/meter/:pid/template", security.EnterpriseAuthorize, downloadMeterArchiveTemplate) | 	router.Get("/meter/:pid/template", security.EnterpriseAuthorize, downloadMeterArchiveTemplate) | ||||||
| 	router.Post("/meter/:pid/batch", security.EnterpriseAuthorize, uploadMeterArchive) | 	router.Post("/meter/:pid/batch", security.EnterpriseAuthorize, uploadMeterArchive) | ||||||
|  | 	router.Get("/meter/:pid/pooled", security.EnterpriseAuthorize, listPooledMeters) | ||||||
| 	router.Get("/meter/:pid/:code", security.EnterpriseAuthorize, retrieveSpecificMeterDetail) | 	router.Get("/meter/:pid/:code", security.EnterpriseAuthorize, retrieveSpecificMeterDetail) | ||||||
| 	router.Put("/meter/:pid/:code", security.EnterpriseAuthorize, updateMeterManually) | 	router.Put("/meter/:pid/:code", security.EnterpriseAuthorize, updateMeterManually) | ||||||
| 	router.Patch("/meter/:pid/:code", security.EnterpriseAuthorize, replaceMeter) | 	router.Patch("/meter/:pid/:code", security.EnterpriseAuthorize, replaceMeter) | ||||||
| 	router.Get("/meter/:pid/:code/binding", security.EnterpriseAuthorize, listAssociatedMeters) | 	router.Get("/meter/:pid/:code/binding", security.EnterpriseAuthorize, listAssociatedMeters) | ||||||
| 	router.Post("/meter/:pid/:code/binding", security.EnterpriseAuthorize, bindAssociatedMeters) | 	router.Post("/meter/:pid/:code/binding", security.EnterpriseAuthorize, bindAssociatedMeters) | ||||||
| 	router.Delete("/meter/:pid/:code/binding/:slave", security.EnterpriseAuthorize, unbindAssociatedMeters) | 	router.Delete("/meter/:pid/:code/binding/:slave", security.EnterpriseAuthorize, unbindAssociatedMeters) | ||||||
| 	router.Get("/meter/:pid/pooled", security.EnterpriseAuthorize, listPooledMeters) |  | ||||||
| 	router.Get("/meter/choice", security.EnterpriseAuthorize, listUnboundMeters) |  | ||||||
| 	router.Get("/meter/choice/tenement", security.EnterpriseAuthorize, listUnboundTenementMeters) |  | ||||||
| 	router.Get("/reading/:pid", security.EnterpriseAuthorize, queryMeterReadings) | 	router.Get("/reading/:pid", security.EnterpriseAuthorize, queryMeterReadings) | ||||||
| 	router.Put("/reading/:pid/:code/:reading", security.EnterpriseAuthorize, updateMeterReading) | 	router.Put("/reading/:pid/:code/:reading", security.EnterpriseAuthorize, updateMeterReading) | ||||||
| 	router.Get("/reading/:pid/template", security.EnterpriseAuthorize, downloadMeterReadingsTemplate) | 	router.Get("/reading/:pid/template", security.EnterpriseAuthorize, downloadMeterReadingsTemplate) | ||||||
|   | |||||||
| @@ -74,7 +74,7 @@ type NestedMeter struct { | |||||||
|  |  | ||||||
| type PooledMeterDetailCompound struct { | type PooledMeterDetailCompound struct { | ||||||
| 	MeterDetail | 	MeterDetail | ||||||
| 	BindMeters []MeterDetail `json:"bindMeters"` | 	BindMeters []MeterDetail `json:"bindedMeters"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // 以下结构体用于导入表计档案数据 | // 以下结构体用于导入表计档案数据 | ||||||
|   | |||||||
| @@ -12,7 +12,6 @@ import ( | |||||||
| 	"electricity_bill_calc/types" | 	"electricity_bill_calc/types" | ||||||
| 	"electricity_bill_calc/vo" | 	"electricity_bill_calc/vo" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"strings" |  | ||||||
|  |  | ||||||
| 	"github.com/doug-martin/goqu/v9" | 	"github.com/doug-martin/goqu/v9" | ||||||
| 	_ "github.com/doug-martin/goqu/v9/dialect/postgres" | 	_ "github.com/doug-martin/goqu/v9/dialect/postgres" | ||||||
| @@ -477,7 +476,7 @@ func (mr _MeterRepository) UnbindMeter(tx pgx.Tx, ctx context.Context, pid, mast | |||||||
| 			goqu.I("park_id").Eq(pid), | 			goqu.I("park_id").Eq(pid), | ||||||
| 			goqu.I("master_meter_id").Eq(masterMeter), | 			goqu.I("master_meter_id").Eq(masterMeter), | ||||||
| 			goqu.I("slave_meter_id").Eq(slaveMeter), | 			goqu.I("slave_meter_id").Eq(slaveMeter), | ||||||
| 			goqu.I("revoke_at").IsNull(), | 			goqu.I("revoked_at").IsNull(), | ||||||
| 		). | 		). | ||||||
| 		Prepared(true).ToSQL() | 		Prepared(true).ToSQL() | ||||||
|  |  | ||||||
| @@ -518,25 +517,17 @@ func (mr _MeterRepository) ListPooledMeterRelations(pid, code string) ([]*model. | |||||||
| // 列出指定公摊表计列表所包含的全部关联表计关系 | // 列出指定公摊表计列表所包含的全部关联表计关系 | ||||||
| func (mr _MeterRepository) ListPooledMeterRelationsByCodes(pid string, codes []string) ([]*model.MeterRelation, error) { | func (mr _MeterRepository) ListPooledMeterRelationsByCodes(pid string, codes []string) ([]*model.MeterRelation, error) { | ||||||
| 	mr.log.Info("列出指定公摊表计列表所包含的全部关联表计关系", zap.String("park id", pid), zap.Strings("meter codes", codes)) | 	mr.log.Info("列出指定公摊表计列表所包含的全部关联表计关系", zap.String("park id", pid), zap.Strings("meter codes", codes)) | ||||||
| 	cacheConditions := []string{ |  | ||||||
| 		pid, |  | ||||||
| 		strings.Join(codes, ","), |  | ||||||
| 	} |  | ||||||
| 	if relations, err := cache.RetrieveSearch[[]*model.MeterRelation]("meter_relations", cacheConditions...); err == nil { |  | ||||||
| 		mr.log.Info("从缓存中获取到了所需的关联表计信息", zap.Int("count", len(*relations))) |  | ||||||
| 		return *relations, nil |  | ||||||
| 	} |  | ||||||
| 	ctx, cancel := global.TimeoutContext() | 	ctx, cancel := global.TimeoutContext() | ||||||
| 	defer cancel() | 	defer cancel() | ||||||
|  |  | ||||||
| 	var relations []*model.MeterRelation | 	var relations []*model.MeterRelation | ||||||
| 	relationsSql, relationsArgs, _ := mr.ds. | 	relationsSql, relationsArgs, _ := mr.ds. | ||||||
| 		From(goqu.T("meter_relations")). | 		From(goqu.T("meter_relations").As("r")). | ||||||
| 		Select("*"). | 		Select("r.*"). | ||||||
| 		Where( | 		Where( | ||||||
| 			goqu.I("r.park_id").Eq(pid), | 			goqu.I("r.park_id").Eq(pid), | ||||||
| 			goqu.I("r.master_meter_id").Eq(goqu.Func("any", codes)), | 			goqu.I("r.master_meter_id").In(codes), | ||||||
| 			goqu.I("r.revoke_at").IsNull(), | 			goqu.I("r.revoked_at").IsNull(), | ||||||
| 		). | 		). | ||||||
| 		Prepared(true).ToSQL() | 		Prepared(true).ToSQL() | ||||||
|  |  | ||||||
| @@ -561,7 +552,7 @@ func (mr _MeterRepository) ListMeterRelations(pid, code string) ([]*model.MeterR | |||||||
| 		Where( | 		Where( | ||||||
| 			goqu.I("r.park_id").Eq(pid), | 			goqu.I("r.park_id").Eq(pid), | ||||||
| 			goqu.I("r.slave_meter_id").Eq(code), | 			goqu.I("r.slave_meter_id").Eq(code), | ||||||
| 			goqu.I("r.revoke_at").IsNull(), | 			goqu.I("r.revoked_at").IsNull(), | ||||||
| 		). | 		). | ||||||
| 		Prepared(true).ToSQL() | 		Prepared(true).ToSQL() | ||||||
|  |  | ||||||
| @@ -687,7 +678,7 @@ func (mr _MeterRepository) ListUnboundMeters(uid string, pid *string, keyword *s | |||||||
| 			)) | 			)) | ||||||
| 	} | 	} | ||||||
| 	slaveMeterQuery = slaveMeterQuery.Where( | 	slaveMeterQuery = slaveMeterQuery.Where( | ||||||
| 		goqu.I("revoke_at").IsNull(), | 		goqu.I("revoked_at").IsNull(), | ||||||
| 	) | 	) | ||||||
| 	meterQuery = meterQuery.Where( | 	meterQuery = meterQuery.Where( | ||||||
| 		goqu.I("m.code").NotIn(slaveMeterQuery), | 		goqu.I("m.code").NotIn(slaveMeterQuery), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user