forked from free-lancers/electricity_bill_calc_service
enhance(meter):部署抄表模板下载功能。
This commit is contained in:
@@ -37,6 +37,9 @@ func InitializeMeterHandlers(router *fiber.App) {
|
||||
router.Get("/meter/choice", security.EnterpriseAuthorize, listUnboundMeters)
|
||||
router.Get("/meter/choice/tenement", security.EnterpriseAuthorize, listUnboundTenementMeters)
|
||||
router.Get("/reading/:pid", security.EnterpriseAuthorize, queryMeterReadings)
|
||||
router.Post("/reading/:pid/:code", security.EnterpriseAuthorize, recordMeterReading)
|
||||
router.Put("/reading/:pid/:code/:reading", security.EnterpriseAuthorize, updateMeterReading)
|
||||
router.Get("/reading/:pid/template", security.EnterpriseAuthorize, downloadMeterReadingsTemplate)
|
||||
}
|
||||
|
||||
// 查询指定园区下的表计信息
|
||||
@@ -170,13 +173,19 @@ func downloadMeterArchiveTemplate(c *fiber.Ctx) error {
|
||||
meterLog.Error("无法下载指定的园区表计登记模板,无法生成表计登记模板", zap.Error(err))
|
||||
return result.NotFound(fmt.Sprintf("无法生成表计登记模板,%s", err.Error()))
|
||||
}
|
||||
|
||||
templateGenerator := excel.NewMeterArchiveExcelTemplateGenerator()
|
||||
defer templateGenerator.Close()
|
||||
err = templateGenerator.WriteTemplateData(buildings)
|
||||
if err != nil {
|
||||
meterLog.Error("无法下载指定的园区表计登记模板,无法生成表计登记模板", zap.Error(err))
|
||||
return result.Error(fiber.StatusInternalServerError, fmt.Sprintf("无法生成表计登记模板,%s", err.Error()))
|
||||
}
|
||||
|
||||
c.Status(fiber.StatusOK)
|
||||
c.Set(fiber.HeaderContentType, fiber.MIMEOctetStream)
|
||||
c.Set("Content-Transfer-Encoding", "binary")
|
||||
c.Set(fiber.HeaderContentDisposition, fmt.Sprintf("attachment; filename=%s-表计登记模板.xlsx", parkDetail.Name))
|
||||
templateGenerator := excel.NewMeterArchiveExcelTemplateGenerator()
|
||||
defer templateGenerator.Close()
|
||||
err = templateGenerator.WriteTemplateData(buildings)
|
||||
templateGenerator.WriteTo(c.Response().BodyWriter())
|
||||
return nil
|
||||
}
|
||||
@@ -564,7 +573,44 @@ func updateMeterReading(c *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
// 下载指定园区的表计抄表模板
|
||||
func downlongMeterReadingTemplate(c *fiber.Ctx) error {
|
||||
func downloadMeterReadingsTemplate(c *fiber.Ctx) error {
|
||||
parkId := c.Params("pid")
|
||||
meterLog.Info("下载指定的园区表计抄表模板", zap.String("park id", parkId))
|
||||
result := response.NewResult(c)
|
||||
session, err := _retreiveSession(c)
|
||||
if err != nil {
|
||||
meterLog.Error("无法下载指定的园区表计抄表模板,无法获取当前用户会话", zap.Error(err))
|
||||
return result.Unauthorized(err.Error())
|
||||
}
|
||||
if ok, err := checkParkBelongs(meterLog, parkId, session, &result); !ok {
|
||||
return err
|
||||
}
|
||||
parkDetail, err := repository.ParkRepository.RetrieveParkDetail(parkId)
|
||||
if err != nil {
|
||||
meterLog.Error("无法下载指定的园区表计登记模板,无法获取园区信息", zap.Error(err))
|
||||
return result.NotFound(err.Error())
|
||||
}
|
||||
meterDocs, err := repository.MeterRepository.ListMeterDocForTemplate(parkId)
|
||||
if err != nil {
|
||||
meterLog.Error("无法下载指定的园区表计抄表模板,无法获取表计档案列表", zap.Error(err))
|
||||
return result.NotFound(fmt.Sprintf("无法获取表计档案列表,%s", err.Error()))
|
||||
}
|
||||
if err != nil {
|
||||
meterLog.Error("无法下载指定的园区表计登记模板,无法生成表计登记模板", zap.Error(err))
|
||||
return result.NotFound(fmt.Sprintf("无法生成表计登记模板,%s", err.Error()))
|
||||
}
|
||||
templateGenerator := excel.NewMeterReadingsExcelTemplateGenerator()
|
||||
defer templateGenerator.Close()
|
||||
err = templateGenerator.WriteTemplateData(meterDocs)
|
||||
if err != nil {
|
||||
meterLog.Error("无法下载指定的园区表计抄表模板,无法生成表计抄表模板", zap.Error(err))
|
||||
return result.Error(fiber.StatusInternalServerError, fmt.Sprintf("无法生成表计抄表模板,%s", err.Error()))
|
||||
}
|
||||
c.Status(fiber.StatusOK)
|
||||
c.Set(fiber.HeaderContentType, fiber.MIMEOctetStream)
|
||||
c.Set("Content-Transfer-Encoding", "binary")
|
||||
c.Set(fiber.HeaderContentDisposition, fmt.Sprintf("attachment; filename=%s-表计抄表模板.xlsx", parkDetail.Name))
|
||||
templateGenerator.WriteTo(c.Response().BodyWriter())
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user