feat(meter):加入批量导入户表表计档案功能,待测。

This commit is contained in:
徐涛 2022-08-17 14:22:50 +08:00
parent 21803bf832
commit 1e2a7fbb75

View File

@ -1,6 +1,7 @@
package controller
import (
"electricity_bill_calc/excel"
"electricity_bill_calc/model"
"electricity_bill_calc/response"
"electricity_bill_calc/security"
@ -31,6 +32,7 @@ func InitializeMeter04kVController(router *gin.Engine) {
Meter04kVController.Router.GET("/park/:pid/meter/:code", security.EnterpriseAuthorize, fetch04kVMeterDetail)
Meter04kVController.Router.POST("/park/:pid/meter", security.EnterpriseAuthorize, createSingle04kVMeter)
Meter04kVController.Router.PUT("/park/:pid/meter/:code", security.EnterpriseAuthorize, modifySingle04kVMeter)
Meter04kVController.Router.POST("/park/:pid/meter/batch", security.EnterpriseAuthorize, batchImport04kVMeterArchive)
}
func download04kvMeterArchiveTemplate(c *gin.Context) {
@ -221,3 +223,44 @@ func modifySingle04kVMeter(c *gin.Context) {
}
result.Updated("指定0.4kV表计信息已经更新。")
}
func batchImport04kVMeterArchive(c *gin.Context) {
result := response.NewResult(c)
requestParkId := c.Param("pid")
userSession, err := _retreiveSession(c)
if err != nil {
result.Unauthorized(err.Error())
return
}
sure, err := service.ParkService.EnsurePark(userSession.Uid, requestParkId)
if err != nil {
result.Error(http.StatusInternalServerError, err.Error())
return
}
if !sure {
result.Unauthorized("不能访问不属于自己的园区。")
return
}
uploadedFile, err := c.FormFile("data")
if err != nil {
result.NotAccept("没有接收到上传的档案文件。")
return
}
archiveFile, err := uploadedFile.Open()
if err != nil {
result.Error(http.StatusInternalServerError, err.Error())
return
}
analyzer, err := excel.NewMeterArchiveExcelAnalyzer(archiveFile)
if err != nil {
result.Error(http.StatusInternalServerError, err.Error())
return
}
records, errs := analyzer.Analysis(*new(model.Meter04KV))
if len(errs) > 0 {
result.Json(http.StatusNotAcceptable, "上传的表计档案文件存在错误。", gin.H{"errors": errs})
return
}
log.Printf("[controller|debug] records: %+v", records)
result.Failure(http.StatusNotAcceptable, "调试中")
}