forked from free-lancers/electricity_bill_calc_service
feat(meter):基本完成0.4kV表计档案批量导入功能。
This commit is contained in:
@@ -2,8 +2,10 @@ package service
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/config"
|
||||
"electricity_bill_calc/excel"
|
||||
"electricity_bill_calc/global"
|
||||
"electricity_bill_calc/model"
|
||||
"fmt"
|
||||
|
||||
"xorm.io/builder"
|
||||
"xorm.io/xorm"
|
||||
@@ -105,3 +107,36 @@ func (m _Meter04kVService) UpdateSingleMeter(meter *model.Meter04KV) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (_Meter04kVService) DuplicateMeterCodeValidate(meters []model.Meter04KV) []excel.ExcelAnalysisError {
|
||||
errs := make([]excel.ExcelAnalysisError, 0)
|
||||
for i := 0; i < len(meters); i++ {
|
||||
for j := i + 1; j < len(meters); j++ {
|
||||
if meters[j].Code == meters[i].Code {
|
||||
errs = append(errs, excel.ExcelAnalysisError{Row: j + 1, Col: 0, Err: excel.AnalysisError{Err: fmt.Errorf("第 %d 行表计表号与第 %d 行表计表号重复!", j+1, i+1)}})
|
||||
}
|
||||
}
|
||||
}
|
||||
return errs
|
||||
}
|
||||
|
||||
func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error {
|
||||
tx := global.DBConn.NewSession()
|
||||
if err := tx.Begin(); err != nil {
|
||||
return err
|
||||
}
|
||||
defer tx.Close()
|
||||
|
||||
for _, meter := range meters {
|
||||
err := m.insertNewMeter(tx, meter)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
err := tx.Commit()
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user