enhance(meter):改进终端表计批量导入性能。

This commit is contained in:
徐涛 2022-09-20 11:03:38 +08:00
parent a13193cfa4
commit b5c2455af7

View File

@ -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
}
}