From 1e2a7fbb75f19cf554ab8933050b67ecb70d932b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Wed, 17 Aug 2022 14:22:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(meter):=E5=8A=A0=E5=85=A5=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=AF=BC=E5=85=A5=E6=88=B7=E8=A1=A8=E8=A1=A8=E8=AE=A1?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=BE=85=E6=B5=8B?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/meter04kv.go | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/controller/meter04kv.go b/controller/meter04kv.go index 1949dc8..3135bb2 100644 --- a/controller/meter04kv.go +++ b/controller/meter04kv.go @@ -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, "调试中") +}