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()
|
parkId, _ := parkIds.Pop()
|
||||||
|
|
||||||
ctx, cancel := global.TimeoutContext()
|
ctx, cancel := global.TimeoutContext(120)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
allMeterCodes := make([]string, 0)
|
allMeterCodes := make([]string, 0)
|
||||||
|
@ -193,14 +193,31 @@ func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
updates = make([]model.Meter04KV, 0)
|
||||||
|
inserts = make([]model.Meter04KV, 0)
|
||||||
|
)
|
||||||
for _, meter := range meters {
|
for _, meter := range meters {
|
||||||
var err error
|
|
||||||
if meterCodes.Contains(meter.Code) {
|
if meterCodes.Contains(meter.Code) {
|
||||||
err = m.updateMeter(&tx, &ctx, meter)
|
updates = append(updates, meter)
|
||||||
} else {
|
} 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 {
|
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
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user