feat(meter):基本完成0.4kV表计档案批量导入功能。
This commit is contained in:
parent
81533fcdf3
commit
97f8ef65d8
|
@ -6,6 +6,7 @@ import (
|
||||||
"electricity_bill_calc/response"
|
"electricity_bill_calc/response"
|
||||||
"electricity_bill_calc/security"
|
"electricity_bill_calc/security"
|
||||||
"electricity_bill_calc/service"
|
"electricity_bill_calc/service"
|
||||||
|
"electricity_bill_calc/utils"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -261,6 +262,21 @@ func batchImport04kVMeterArchive(c *gin.Context) {
|
||||||
result.Json(http.StatusNotAcceptable, "上传的表计档案文件存在错误。", gin.H{"errors": errs})
|
result.Json(http.StatusNotAcceptable, "上传的表计档案文件存在错误。", gin.H{"errors": errs})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Printf("[controller|debug] records: %+v", records)
|
|
||||||
result.Failure(http.StatusNotAcceptable, "调试中")
|
mergedMeters := utils.Map(records, func(meter model.Meter04KV) model.Meter04KV {
|
||||||
|
meter.ParkId = requestParkId
|
||||||
|
meter.Enabled = true
|
||||||
|
return meter
|
||||||
|
})
|
||||||
|
errs = service.Meter04kVService.DuplicateMeterCodeValidate(mergedMeters)
|
||||||
|
if len(errs) > 0 {
|
||||||
|
result.Json(http.StatusNotAcceptable, "上传的表计档案文件存在错误。", gin.H{"errors": errs})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = service.Meter04kVService.BatchCreateMeter(mergedMeters)
|
||||||
|
if err != nil {
|
||||||
|
result.Error(http.StatusInternalServerError, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
result.Json(http.StatusOK, "上传的表计档案已经全部导入。", gin.H{"errors": make([]excel.ExcelAnalysisError, 0)})
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,10 @@ package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"electricity_bill_calc/config"
|
"electricity_bill_calc/config"
|
||||||
|
"electricity_bill_calc/excel"
|
||||||
"electricity_bill_calc/global"
|
"electricity_bill_calc/global"
|
||||||
"electricity_bill_calc/model"
|
"electricity_bill_calc/model"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
|
@ -105,3 +107,36 @@ func (m _Meter04kVService) UpdateSingleMeter(meter *model.Meter04KV) error {
|
||||||
}
|
}
|
||||||
return nil
|
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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user