feat(meter):0.4kV表计上传的数据处理策略改为如有相同的则采用更新。
This commit is contained in:
parent
875a176795
commit
6fc40e3a93
1
go.mod
1
go.mod
|
@ -3,6 +3,7 @@ module electricity_bill_calc
|
|||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/deckarep/golang-set/v2 v2.1.0
|
||||
github.com/gin-gonic/gin v1.8.1
|
||||
github.com/go-redis/redis/v8 v8.11.5
|
||||
github.com/google/uuid v1.3.0
|
||||
|
|
2
go.sum
2
go.sum
|
@ -92,6 +92,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
|
|||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI=
|
||||
github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
|
||||
github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||
|
|
|
@ -5,8 +5,10 @@ import (
|
|||
"electricity_bill_calc/excel"
|
||||
"electricity_bill_calc/global"
|
||||
"electricity_bill_calc/model"
|
||||
"electricity_bill_calc/utils"
|
||||
"fmt"
|
||||
|
||||
mapset "github.com/deckarep/golang-set/v2"
|
||||
"xorm.io/builder"
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
@ -121,6 +123,22 @@ func (_Meter04kVService) DuplicateMeterCodeValidate(meters []model.Meter04KV) []
|
|||
}
|
||||
|
||||
func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error {
|
||||
parkIds := utils.Reduce(meters, mapset.NewSet[string](), func(acc mapset.Set[string], elem model.Meter04KV) mapset.Set[string] {
|
||||
acc.Add(elem.ParkId)
|
||||
return acc
|
||||
})
|
||||
if parkIds.Cardinality() > 1 {
|
||||
return fmt.Errorf("一次只能向同一个园区中添加0.4kV表计。")
|
||||
}
|
||||
parkId, _ := parkIds.Pop()
|
||||
|
||||
allMeterCodes := make([]string, 0)
|
||||
err := global.DBConn.Table(&model.Meter04KV{}).Where(builder.Eq{"park_id": parkId}).Select("code").Find(&allMeterCodes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
meterCodes := mapset.NewSet(allMeterCodes...)
|
||||
|
||||
tx := global.DBConn.NewSession()
|
||||
if err := tx.Begin(); err != nil {
|
||||
return err
|
||||
|
@ -128,12 +146,17 @@ func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error {
|
|||
defer tx.Close()
|
||||
|
||||
for _, meter := range meters {
|
||||
err := m.insertNewMeter(tx, meter)
|
||||
var err error
|
||||
if meterCodes.Contains(meter.Code) {
|
||||
err = m.updateMeter(tx, meter)
|
||||
} else {
|
||||
err = m.insertNewMeter(tx, meter)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
err := tx.Commit()
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue
Block a user