|
@@ -5,8 +5,10 @@ import (
|
|
|
"errors"
|
|
|
"eta/eta_api/models/data_manage"
|
|
|
"eta/eta_api/models/data_manage/excel"
|
|
|
+ "eta/eta_api/models/data_manage/excel/request"
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
"strconv"
|
|
|
"time"
|
|
|
)
|
|
@@ -24,6 +26,14 @@ func AddCustomAnalysisTable(excelName, content, excelImage string, excelClassify
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // sheet内容为空
|
|
|
+ if len(luckySheet.Sheets) <= 0 {
|
|
|
+ errMsg = "sheet内容为空"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
excelClassify, err := data_manage.GetExcelClassifyById(excelClassifyId)
|
|
|
if err != nil {
|
|
|
if err.Error() == utils.ErrNoRow() {
|
|
@@ -98,11 +108,20 @@ func AddCustomAnalysisTable(excelName, content, excelImage string, excelClassify
|
|
|
splitNum := 2000 // 基础分割单元格数
|
|
|
|
|
|
// sheet处理
|
|
|
+ sheetNameMap := make(map[string]string)
|
|
|
for k, sheetInfo := range luckySheet.Sheets {
|
|
|
+ sheetName := utils.TrimLRStr(sheetInfo.Name)
|
|
|
+ _, ok := sheetNameMap[sheetName]
|
|
|
+ if ok {
|
|
|
+ errMsg = "excel表中存在同名sheet"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
addSheetItem := excel.AddExcelSheetParams{
|
|
|
ExcelSheetId: 0,
|
|
|
ExcelInfoId: 0,
|
|
|
- SheetName: sheetInfo.Name,
|
|
|
+ SheetName: sheetName,
|
|
|
Sort: k,
|
|
|
}
|
|
|
|
|
@@ -150,7 +169,7 @@ func AddCustomAnalysisTable(excelName, content, excelImage string, excelClassify
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func SaveCustomAnalysisTable(excelInfo *data_manage.ExcelInfo, excelName, content, excelImage string, excelClassifyId int, sysUser *system.Admin) (err error, errMsg string, isSendEmail bool) {
|
|
|
+func SaveCustomAnalysisTable(excelInfo *data_manage.ExcelInfo, excelName, content, excelImage string, excelClassifyId int, sheetOpList []request.SheetOp) (err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
|
|
|
contentByte := []byte(content)
|
|
@@ -162,6 +181,22 @@ func SaveCustomAnalysisTable(excelInfo *data_manage.ExcelInfo, excelName, conten
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // sheet内容为空
|
|
|
+ if len(luckySheet.Sheets) <= 0 {
|
|
|
+ errMsg = "sheet内容为空"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // sheet内容为空
|
|
|
+ if len(sheetOpList) <= 0 {
|
|
|
+ errMsg = "sheet操作为空"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
excelClassify, err := data_manage.GetExcelClassifyById(excelClassifyId)
|
|
|
if err != nil {
|
|
|
if err.Error() == utils.ErrNoRow() {
|
|
@@ -213,6 +248,34 @@ func SaveCustomAnalysisTable(excelInfo *data_manage.ExcelInfo, excelName, conten
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 查找当前excel的sheet列表
|
|
|
+ currSheetList, err := excel.GetAllSheetList(excelInfo.ExcelInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "保存失败"
|
|
|
+ err = errors.New("查找当前excel的sheet列表失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ currSheetMap := make(map[string]string)
|
|
|
+ for _, currSheet := range currSheetList {
|
|
|
+ currSheetMap[currSheet.SheetName] = currSheet.SheetName
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, sheetOp := range sheetOpList {
|
|
|
+ switch sheetOp.OpType {
|
|
|
+ case "add":
|
|
|
+ // 新增
|
|
|
+ case "replace":
|
|
|
+ // 替换
|
|
|
+ case "append":
|
|
|
+ // 追加
|
|
|
+ default:
|
|
|
+ errMsg = fmt.Sprint("第", k+1, "个sheet,错误的操作类型")
|
|
|
+ err = errors.New(errMsg + "op:" + sheetOp.OpType)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 表格
|
|
|
excelInfo.ExcelName = excelName
|
|
|
excelInfo.ExcelClassifyId = excelClassifyId
|
|
@@ -222,11 +285,20 @@ func SaveCustomAnalysisTable(excelInfo *data_manage.ExcelInfo, excelName, conten
|
|
|
splitNum := 2000 // 基础分割单元格数
|
|
|
|
|
|
// sheet处理
|
|
|
+ sheetNameMap := make(map[string]string)
|
|
|
for k, sheetInfo := range luckySheet.Sheets {
|
|
|
+ sheetName := utils.TrimLRStr(sheetInfo.Name)
|
|
|
+ _, ok := sheetNameMap[sheetName]
|
|
|
+ if ok {
|
|
|
+ errMsg = "excel表中存在同名sheet"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
addSheetItem := excel.AddExcelSheetParams{
|
|
|
ExcelSheetId: 0,
|
|
|
ExcelInfoId: 0,
|
|
|
- SheetName: sheetInfo.Name,
|
|
|
+ SheetName: sheetName,
|
|
|
Sort: k,
|
|
|
}
|
|
|
|