From b5c2455af77ba59beb1c29034f9085575683a59d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Tue, 20 Sep 2022 11:03:38 +0800 Subject: [PATCH] =?UTF-8?q?enhance(meter):=E6=94=B9=E8=BF=9B=E7=BB=88?= =?UTF-8?q?=E7=AB=AF=E8=A1=A8=E8=AE=A1=E6=89=B9=E9=87=8F=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=80=A7=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/meter04kv.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/service/meter04kv.go b/service/meter04kv.go index b4a3cee..7b08c70 100644 --- a/service/meter04kv.go +++ b/service/meter04kv.go @@ -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 } }