enhance(meter):改进终端表计批量导入性能。
This commit is contained in:
parent
a13193cfa4
commit
b5c2455af7
|
@ -175,7 +175,7 @@ func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error {
|
|||
}
|
||||
parkId, _ := parkIds.Pop()
|
||||
|
||||
ctx, cancel := global.TimeoutContext()
|
||||
ctx, cancel := global.TimeoutContext(120)
|
||||
defer cancel()
|
||||
|
||||
allMeterCodes := make([]string, 0)
|
||||
|
@ -193,14 +193,31 @@ func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var (
|
||||
updates = make([]model.Meter04KV, 0)
|
||||
inserts = make([]model.Meter04KV, 0)
|
||||
)
|
||||
for _, meter := range meters {
|
||||
var err error
|
||||
if meterCodes.Contains(meter.Code) {
|
||||
err = m.updateMeter(&tx, &ctx, meter)
|
||||
updates = append(updates, meter)
|
||||
} else {
|
||||
err = m.insertNewMeter(&tx, &ctx, meter)
|
||||
inserts = append(inserts, meter)
|
||||
}
|
||||
}
|
||||
if len(updates) > 0 {
|
||||
_, err = tx.NewUpdate().Model(&updates).
|
||||
Column("address", "customer_name", "contact_name", "contact_phone", "ratio", "seq", "public_meter", "dilute", "enabled").
|
||||
Bulk().
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
}
|
||||
if len(inserts) > 0 {
|
||||
_, err = tx.NewInsert().Model(&inserts).Exec(ctx)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user