From dce83d7e49b8f77ab7bef873daf40349cbd3abe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Thu, 8 Sep 2022 19:39:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(excel):=E4=BF=AE=E5=A4=8DNullDecimal?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=86=85=E5=AE=B9=E7=9A=84=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/end_user.go | 1 + excel/abstract.go | 4 +++- service/end_user.go | 7 ++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/controller/end_user.go b/controller/end_user.go index d9d61d8..01f148b 100644 --- a/controller/end_user.go +++ b/controller/end_user.go @@ -106,6 +106,7 @@ func uploadEndUserRegisterTemplate(c *gin.Context) { result.Error(http.StatusInternalServerError, err.Error()) return } + if meterType == 0 { errs := service.EndUserService.BatchImportNonPVRegister(requestReportId, archiveFile) if errs.Len() > 0 { diff --git a/excel/abstract.go b/excel/abstract.go index 7b1504d..7d5c27a 100644 --- a/excel/abstract.go +++ b/excel/abstract.go @@ -166,7 +166,9 @@ func (a *ExcelAnalyzer[T]) Analysis(bean T) ([]T, []ExcelAnalysisError) { errs = append(errs, ExcelAnalysisError{Row: rowIndex + 1, Col: recognizer.MatchIndex + 1, Err: AnalysisError{Err: fmt.Errorf("单元格内容应为纯数字内容。%w", err)}}) actualField.Set(reflect.ValueOf((nullValue))) } else { - actualField.Set(reflect.ValueOf(decimalValue)) + value := decimal.NewNullDecimal(decimalValue) + value.Valid = true + actualField.Set(reflect.ValueOf(value)) } } case "int64", "int": diff --git a/service/end_user.go b/service/end_user.go index 3c92ab7..299411d 100644 --- a/service/end_user.go +++ b/service/end_user.go @@ -222,9 +222,11 @@ func (es _EndUserService) BatchImportNonPVRegister(reportId string, file io.Read elem.CurrentPeriodCritical = decimal.Zero elem.CurrentPeriodPeak = decimal.Zero elem.CurrentPeriodValley = decimal.Zero + elem.CurrentPeriodFlat = elem.CurrentPeriodOverall.Sub(elem.CurrentPeriodCritical).Sub(elem.CurrentPeriodPeak).Sub(elem.CurrentPeriodValley) elem.AdjustCritical = decimal.Zero elem.AdjustPeak = decimal.Zero elem.AdjustValley = decimal.Zero + elem.AdjustFlat = elem.AdjustOverall.Sub(elem.AdjustCritical).Sub(elem.AdjustPeak).Sub(elem.AdjustValley) err := es.UpdateEndUserRegisterRecord(tx, elem) if err != nil { errs.AddError(es.newVirtualExcelAnalysisError(err)) @@ -278,7 +280,7 @@ func (es _EndUserService) BatchImportPVRegister(reportId string, file io.Reader) }, make(map[string]model.EndUserDetail, 0), ) - analyzer, err := excel.NewEndUserNonPVExcelAnalyzer(file) + analyzer, err := excel.NewEndUserPVExcelAnalyzer(file) if err != nil { errs.AddError(es.newVirtualExcelAnalysisError(err)) return errs @@ -290,6 +292,7 @@ func (es _EndUserService) BatchImportPVRegister(reportId string, file io.Reader) } return errs } + tx := global.DBConn.NewSession() if err = tx.Begin(); err != nil { errs.AddError(es.newVirtualExcelAnalysisError(err)) @@ -316,9 +319,11 @@ func (es _EndUserService) BatchImportPVRegister(reportId string, file io.Reader) elem.CurrentPeriodCritical = im.CurrentPeriodCritical.Decimal elem.CurrentPeriodPeak = im.CurrentPeriodPeak.Decimal elem.CurrentPeriodValley = im.CurrentPeriodValley.Decimal + elem.CurrentPeriodFlat = elem.CurrentPeriodOverall.Sub(elem.CurrentPeriodCritical).Sub(elem.CurrentPeriodPeak).Sub(elem.CurrentPeriodValley) elem.AdjustCritical = im.AdjustCritical.Decimal elem.AdjustPeak = im.AdjustPeak.Decimal elem.AdjustValley = im.AdjustValley.Decimal + elem.AdjustFlat = elem.AdjustOverall.Sub(elem.AdjustCritical).Sub(elem.AdjustPeak).Sub(elem.AdjustValley) err := es.UpdateEndUserRegisterRecord(tx, elem) if err != nil { errs.AddError(es.newVirtualExcelAnalysisError(err))