From c1350d63af61c098eac9076087f753473c4d5961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Tue, 16 Aug 2022 15:58:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(meter):=E5=A2=9E=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E8=8E=B7=E5=8F=96=E6=88=B7=E8=A1=A8=E8=A1=A8=E8=AE=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/meter04kv.go | 38 ++++++++++++++++++++++++++++++++++++++ service/meter04kv.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 service/meter04kv.go diff --git a/controller/meter04kv.go b/controller/meter04kv.go index 44ae264..657c20a 100644 --- a/controller/meter04kv.go +++ b/controller/meter04kv.go @@ -6,6 +6,7 @@ import ( "electricity_bill_calc/service" "fmt" "net/http" + "strconv" "github.com/gin-gonic/gin" ) @@ -22,6 +23,7 @@ func InitializeMeter04kVController(router *gin.Engine) { } Meter04kVController.Router.GET("/park/:pid/meter/template", security.EnterpriseAuthorize, download04kvMeterArchiveTemplate) + Meter04kVController.Router.GET("/park/:pid/meters", security.EnterpriseAuthorize, ListPaged04kVMeter) } func download04kvMeterArchiveTemplate(c *gin.Context) { @@ -51,3 +53,39 @@ func download04kvMeterArchiveTemplate(c *gin.Context) { c.Header("Content-Transfer-Encoding", "binary") c.FileAttachment("./assets/meter_04kv_template.xlsx", fmt.Sprintf("%s-户表档案.xlsx", parkDetail.Name)) } + +func ListPaged04kVMeter(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 + } + requestPage, err := strconv.Atoi(c.DefaultQuery("page", "1")) + if err != nil { + result.NotAccept("查询参数[page]格式不正确。") + return + } + requestKeyword := c.DefaultQuery("keyword", "") + meters, totalItem, err := service.Meter04kVService.ListMeterDetail(requestParkId, requestKeyword, requestPage) + if err != nil { + result.NotFound(err.Error()) + return + } + result.Json( + http.StatusOK, + "已获取到符合条件的0.4kV表计集合。", + response.NewPagedResponse(requestPage, totalItem).ToMap(), + gin.H{"meters": meters}, + ) +} diff --git a/service/meter04kv.go b/service/meter04kv.go new file mode 100644 index 0000000..7937cab --- /dev/null +++ b/service/meter04kv.go @@ -0,0 +1,36 @@ +package service + +import ( + "electricity_bill_calc/config" + "electricity_bill_calc/global" + "electricity_bill_calc/model" + + "xorm.io/builder" +) + +type _Meter04kVService struct{} + +var Meter04kVService _Meter04kVService + +func (_Meter04kVService) ListMeterDetail(park, keyword string, page int) ([]model.Meter04KV, int64, error) { + cond := builder.NewCond() + if len(keyword) > 0 { + cond = cond.And( + builder.Like{"address", keyword}. + Or(builder.Like{"customer_name", keyword}). + Or(builder.Like{"code", keyword}). + Or(builder.Like{"contact_name", keyword}). + Or(builder.Like{"contact_phone", keyword})) + } + total, err := global.DBConn.Where(cond).Count(new(model.Meter04KV)) + if err != nil { + return make([]model.Meter04KV, 0), -1, err + } + var meters = make([]model.Meter04KV, 0) + startItem := (page - 1) * config.ServiceSettings.ItemsPageSize + err = global.DBConn. + Where(cond). + Limit(config.ServiceSettings.ItemsPageSize, startItem). + Find(&meters) + return meters, total, err +}