浏览代码

fix:兼容前端传递的数据类型

Roc 2 年之前
父节点
当前提交
36073c75ed
共有 1 个文件被更改,包括 64 次插入10 次删除
  1. 64 10
      services/excel/lucky_sheet.go

+ 64 - 10
services/excel/lucky_sheet.go

@@ -4,7 +4,9 @@ import (
 	"encoding/json"
 	"fmt"
 	"hongze/hongze_chart_lib/utils"
+	"reflect"
 	"sort"
+	"strconv"
 )
 
 type LuckySheetDataBak struct {
@@ -177,14 +179,19 @@ type LuckySheetDataValue struct {
 	Value          interface{}            `json:"v" description:"原始值"`
 	Monitor        string                 `json:"m" description:"显示值"`
 	Background     string                 `json:"bg" description:"背景色,实例值:#fff000"`
-	FontFamily     int                    `json:"ff" description:"字体,0 Times New Roman、 1 Arial、2 Tahoma 、3 Verdana、4 微软雅黑、5 宋体(Song)、6 黑体(ST Heiti)、7 楷体(ST Kaiti)、 8 仿宋(ST FangSong)、9 新宋体(ST Song)、10 华文新魏、11 华文行楷、12 华文隶书	"`
+	FontFamily     int                    `description:"字体,0 Times New Roman、 1 Arial、2 Tahoma 、3 Verdana、4 微软雅黑、5 宋体(Song)、6 黑体(ST Heiti)、7 楷体(ST Kaiti)、 8 仿宋(ST FangSong)、9 新宋体(ST Song)、10 华文新魏、11 华文行楷、12 华文隶书	"`
+	FF             interface{}            `json:"ff" description:"字体,0 Times New Roman、 1 Arial、2 Tahoma 、3 Verdana、4 微软雅黑、5 宋体(Song)、6 黑体(ST Heiti)、7 楷体(ST Kaiti)、 8 仿宋(ST FangSong)、9 新宋体(ST Song)、10 华文新魏、11 华文行楷、12 华文隶书	"`
 	FontColor      string                 `json:"fc" description:"字体颜色,示例值:#fff000" `
 	Bold           int                    `json:"bl" description:"粗体,0 常规 、 1加粗	"`
 	Italic         int                    `json:"it" description:"斜体,0 常规 、 1 斜体"`
-	Fontsize       int                    `json:"fs" description:"字体大小,14"`
-	CancelLine     int                    `json:"cl" description:"删除线,	0 常规 、 1 删除线"`
-	HorizontalType int                    `json:"ht" description:"水平对齐,	0 居中、1 左、2右"`
-	VerticalType   int                    `json:"vt" description:"垂直对齐,	0 中间、1 上、2下"`
+	Fontsize       int                    `description:"字体大小,14"`
+	CancelLine     int                    ` description:"删除线,	0 常规 、 1 删除线"`
+	HorizontalType int                    `description:"水平对齐,	0 居中、1 左、2右"`
+	VerticalType   int                    ` description:"垂直对齐,	0 中间、1 上、2下"`
+	Fs             interface{}            `json:"fs" description:"字体大小,14"`
+	Cl             interface{}            `json:"cl" description:"删除线,	0 常规 、 1 删除线"`
+	Ht             interface{}            `json:"ht" description:"水平对齐,	0 居中、1 左、2右"`
+	Vt             interface{}            `json:"vt" description:"垂直对齐,	0 中间、1 上、2下"`
 	//TextRotate     string                    `json:"tr" description:"竖排文字,	3"`
 	//RotateText     string                    `json:"rt" description:"文字旋转角度,	介于0~180之间的整数,包含0和180"`
 	TextBeak  int                       `json:"tb" description:"文本换行,	0 截断、1溢出、2 自动换行"`
@@ -198,12 +205,17 @@ type LuckySheetDataCellType struct {
 	Fa string `json:"fa" description:"格式名称,例如:“General”为自动格式"`
 	T  string `json:"t" description:"格式类型,例如:“n”为数字类型"`
 	S  []struct {
-		FontFamily     string      `json:"ff" description:"字体,0 Times New Roman、 1 Arial、2 Tahoma 、3 Verdana、4 微软雅黑、5 宋体(Song)、6 黑体(ST Heiti)、7 楷体(ST Kaiti)、 8 仿宋(ST FangSong)、9 新宋体(ST Song)、10 华文新魏、11 华文行楷、12 华文隶书	"`
+		FontFamily     int         `description:"字体,0 Times New Roman、 1 Arial、2 Tahoma 、3 Verdana、4 微软雅黑、5 宋体(Song)、6 黑体(ST Heiti)、7 楷体(ST Kaiti)、 8 仿宋(ST FangSong)、9 新宋体(ST Song)、10 华文新魏、11 华文行楷、12 华文隶书	"`
+		FF             interface{} `json:"ff" description:"字体,0 Times New Roman、 1 Arial、2 Tahoma 、3 Verdana、4 微软雅黑、5 宋体(Song)、6 黑体(ST Heiti)、7 楷体(ST Kaiti)、 8 仿宋(ST FangSong)、9 新宋体(ST Song)、10 华文新魏、11 华文行楷、12 华文隶书	"`
 		FontColor      string      `json:"fc" description:"字体颜色,示例值:#fff000" `
-		Fontsize       int         `json:"fs" description:"字体大小,14"`
-		CancelLine     int         `json:"cl" description:"删除线,	0 常规 、 1 删除线"`
-		HorizontalType int         `json:"ht" description:"水平对齐,	0 居中、1 左、2右"`
-		VerticalType   int         `json:"vt" description:"垂直对齐,	0 中间、1 上、2下"`
+		Fontsize       int         `description:"字体大小,14"`
+		CancelLine     int         ` description:"删除线,	0 常规 、 1 删除线"`
+		HorizontalType int         `description:"水平对齐,	0 居中、1 左、2右"`
+		VerticalType   int         `description:"垂直对齐,	0 中间、1 上、2下"`
+		Fs             int         `json:"fs" description:"字体大小,14"`
+		Cl             int         `json:"cl" description:"删除线,	0 常规 、 1 删除线"`
+		Ht             int         `json:"ht" description:"水平对齐,	0 居中、1 左、2右"`
+		Vt             int         `json:"vt" description:"垂直对齐,	0 中间、1 上、2下"`
 		Un             int         `json:"un" description:""`
 		Bold           int         `json:"bl" description:"粗体,0 常规 、 1加粗	"`
 		Italic         int         `json:"it" description:"斜体,0 常规 、 1 斜体"`
@@ -224,6 +236,48 @@ type LuckySheetDataCellComment struct {
 // GetLuckySheetData 获取LuckySheetData的结构体
 func GetLuckySheetData(jsonStr string) (item *LuckySheetData, err error) {
 	err = json.Unmarshal([]byte(jsonStr), &item)
+	for k, v := range item.CellData {
+		value := v.Value
+		value.Fontsize = getIntValueByInterface(value.Fs)
+		value.CancelLine = getIntValueByInterface(value.Cl)
+		value.HorizontalType = getIntValueByInterface(value.Ht)
+		value.VerticalType = getIntValueByInterface(value.Vt)
+		value.FontFamily = getIntValueByInterface(value.FF)
+
+		if len(value.CellType.S) > 0 {
+			for kk, vv := range value.CellType.S {
+				vv.Fontsize = getIntValueByInterface(vv.Fs)
+				vv.CancelLine = getIntValueByInterface(vv.Cl)
+				vv.HorizontalType = getIntValueByInterface(vv.Ht)
+				vv.VerticalType = getIntValueByInterface(vv.Vt)
+				vv.FontFamily = getIntValueByInterface(vv.FF)
+				value.CellType.S[kk] = vv
+			}
+		}
+
+		item.CellData[k].Value = value
+	}
+	return
+}
+
+// 兼容前端js传递的数据类型
+func getIntValueByInterface(valInterface interface{}) (val int) {
+	if valInterface == nil {
+		return
+	}
+	switch reflect.TypeOf(valInterface).Kind() {
+	case reflect.String:
+		tmpValue := reflect.ValueOf(valInterface).String()
+		tmpValInt, err := strconv.Atoi(tmpValue)
+		if err != nil {
+			val = 0
+		} else {
+			val = tmpValInt
+		}
+	case reflect.Int, reflect.Int32, reflect.Int64:
+		tmpValue := reflect.ValueOf(valInterface).Int()
+		val = int(tmpValue)
+	}
 	return
 }