|
@@ -20,13 +20,13 @@ type CustomAnalysisController struct {
|
|
|
controllers.BaseAuthController
|
|
|
}
|
|
|
|
|
|
-// GetExcelByName
|
|
|
+// ExcelByName
|
|
|
// @Title 根据excel名称获取表格详情(基础信息+第一页初始化数据)
|
|
|
// @Description 根据excel名称获取表格详情(基础信息+第一页初始化数据)
|
|
|
// @Param ExcelName query string true "搜索关键词"
|
|
|
// @Success 200 {object} response.ExcelListResp
|
|
|
// @router /excel_by_name [get]
|
|
|
-func (c *CustomAnalysisController) GetExcelByName() {
|
|
|
+func (c *CustomAnalysisController) ExcelByName() {
|
|
|
br := new(models.BaseResponse).Init()
|
|
|
defer func() {
|
|
|
c.Data["json"] = br
|
|
@@ -76,37 +76,6 @@ func (c *CustomAnalysisController) GetExcelByName() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- if len(sheetList) > 0 {
|
|
|
- sheetIdList := make([]int, 0)
|
|
|
- for _, v := range sheetList {
|
|
|
- sheetIdList = append(sheetIdList, v.ExcelSheetId)
|
|
|
- }
|
|
|
- // 获取所有sheet的第一页的数据
|
|
|
- sheetDataList, err := excelModel.GetSheetDataListBySheetIdListAndPage(sheetIdList, 1)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取sheet中的数据失败"
|
|
|
- br.ErrMsg = "获取sheet中的数据失败,err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- sheetDataMap := make(map[int]*excelModel.ExcelSheetData)
|
|
|
- for _, v := range sheetDataList {
|
|
|
- sheetDataMap[v.ExcelSheetId] = v
|
|
|
- }
|
|
|
-
|
|
|
- for k, v := range sheetList {
|
|
|
- sheetData, ok := sheetDataMap[v.ExcelSheetId]
|
|
|
- if !ok {
|
|
|
- continue
|
|
|
- }
|
|
|
- v.Data = sheetData
|
|
|
- sheetList[k] = v
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // TODO 合并单元格信息、计算公式
|
|
|
-
|
|
|
resp.SheetList = sheetList
|
|
|
}
|
|
|
|
|
@@ -174,7 +143,124 @@ func (c *CustomAnalysisController) Add() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- _, err, errMsg, isSendEmail := excel.AddCustomAnalysisTable(utils.TrimLRStr(req.ExcelName), req.Content, req.ExcelImage, req.ExcelClassifyId, sysUser)
|
|
|
+ excelInfo, err, errMsg, isSendEmail := excel.AddCustomAnalysisTable(utils.TrimLRStr(req.ExcelName), req.Content, req.ExcelImage, req.ExcelClassifyId, sysUser)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ if errMsg != `` {
|
|
|
+ br.Msg = errMsg
|
|
|
+ }
|
|
|
+ br.ErrMsg = "保存失败,Err:" + err.Error()
|
|
|
+ br.IsSendEmail = isSendEmail
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新excel下载地址(默认的EXCEL需要更新,自定义表格不需要更新)
|
|
|
+ //if req.Source == 1 {
|
|
|
+ // go UpdateExcelInfoFileUrl(excelInfo)
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ resp := new(response.AddExcelInfoResp)
|
|
|
+ resp.ExcelInfoId = excelInfo.ExcelInfoId
|
|
|
+ resp.UniqueCode = excelInfo.UniqueCode
|
|
|
+
|
|
|
+ //新增操作日志
|
|
|
+ //{
|
|
|
+ // excelLog := &data_manage.ExcelInfoLog{
|
|
|
+ // //ExcelInfoLogId: 0,
|
|
|
+ // ExcelInfoId: excelInfo.ExcelInfoId,
|
|
|
+ // ExcelName: req.ExcelName,
|
|
|
+ // ExcelClassifyId: req.ExcelClassifyId,
|
|
|
+ // SysUserId: sysUser.AdminId,
|
|
|
+ // SysUserRealName: sysUser.RealName,
|
|
|
+ // UniqueCode: excelInfo.UniqueCode,
|
|
|
+ // CreateTime: time.Now(),
|
|
|
+ // Content: string(c.Ctx.Input.RequestBody),
|
|
|
+ // Status: "新增表格",
|
|
|
+ // Method: c.Ctx.Input.URI(),
|
|
|
+ // }
|
|
|
+ // go data_manage.AddExcelInfoLog(excelLog)
|
|
|
+ //}
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "保存成功"
|
|
|
+ br.Data = resp
|
|
|
+ br.IsAddLog = false //数据量太大了,不写入日志吧
|
|
|
+}
|
|
|
+
|
|
|
+// Save
|
|
|
+// @Title 保存表格接口
|
|
|
+// @Description 保存表格接口
|
|
|
+// @Param request body request.AddExcelInfoReq true "type json string"
|
|
|
+// @Success 200 {object} response.AddExcelInfoResp
|
|
|
+// @router /save [post]
|
|
|
+func (c *CustomAnalysisController) Save() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sysUser := c.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ deleteCache := true
|
|
|
+ cacheKey := "CACHE_EXCEL_TABLE_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
|
|
|
+ defer func() {
|
|
|
+ if deleteCache {
|
|
|
+ _ = utils.Rc.Delete(cacheKey)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
|
|
|
+ deleteCache = false
|
|
|
+ br.Msg = "系统处理中,请稍后重试!"
|
|
|
+ br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(c.Ctx.Input.RequestBody)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req request.AddExcelInfoReq
|
|
|
+ err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req.ExcelName = strings.Trim(req.ExcelName, " ")
|
|
|
+ if req.ExcelName == "" {
|
|
|
+ br.Msg = "请填写表格名称!"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if req.ExcelInfoId <= 0 {
|
|
|
+ br.Msg = "请选择excel!"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if req.ExcelClassifyId <= 0 {
|
|
|
+ br.Msg = "分类参数错误!"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ excelInfo, err := data_manage.GetExcelInfoById(req.ExcelInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "找不到该EXCEL!"
|
|
|
+ br.ErrMsg = "找不到该EXCEL!err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if excelInfo.Source != utils.CUSTOM_ANALYSIS_TABLE {
|
|
|
+ br.Msg = "EXCEL异常!"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err, errMsg, isSendEmail := excel.SaveCustomAnalysisTable(excelInfo, utils.TrimLRStr(req.ExcelName), req.Content, req.ExcelImage, req.ExcelClassifyId, sysUser)
|
|
|
if err != nil {
|
|
|
br.Msg = "保存失败"
|
|
|
if errMsg != `` {
|
|
@@ -190,9 +276,9 @@ func (c *CustomAnalysisController) Add() {
|
|
|
// go UpdateExcelInfoFileUrl(excelInfo)
|
|
|
//}
|
|
|
//
|
|
|
- //resp := new(response.AddExcelInfoResp)
|
|
|
- //resp.ExcelInfoId = excelInfo.ExcelInfoId
|
|
|
- //resp.UniqueCode = excelInfo.UniqueCode
|
|
|
+ resp := new(response.AddExcelInfoResp)
|
|
|
+ resp.ExcelInfoId = excelInfo.ExcelInfoId
|
|
|
+ resp.UniqueCode = excelInfo.UniqueCode
|
|
|
|
|
|
//新增操作日志
|
|
|
//{
|
|
@@ -215,6 +301,218 @@ func (c *CustomAnalysisController) Add() {
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
br.Msg = "保存成功"
|
|
|
- //br.Data = resp
|
|
|
+ br.Data = resp
|
|
|
br.IsAddLog = false //数据量太大了,不写入日志吧
|
|
|
}
|
|
|
+
|
|
|
+// BaseExcelDetail
|
|
|
+// @Title 根据excel名称获取表格详情(基础信息+第一页初始化数据)
|
|
|
+// @Description 根据excel名称获取表格详情(基础信息+第一页初始化数据)
|
|
|
+// @Param UniqueCode query string true "excel唯一编码"
|
|
|
+// @Success 200 {object} response.ExcelListResp
|
|
|
+// @router /excel/base [get]
|
|
|
+func (c *CustomAnalysisController) BaseExcelDetail() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := c.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ uniqueCode := c.GetString("UniqueCode")
|
|
|
+ if uniqueCode == `` {
|
|
|
+ br.Msg = "请选择表格"
|
|
|
+ br.ErrMsg = "UniqueCode未传"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := response.FindExcelInfoResp{}
|
|
|
+
|
|
|
+ // 获取数据详情
|
|
|
+ excelDetail, err := data_manage.GetNoContentExcelInfoByUniqueCode(uniqueCode)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "获取表格事变"
|
|
|
+ br.ErrMsg = err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ resp.IsFind = true
|
|
|
+ resp.ExcelInfo = excelDetail
|
|
|
+ if excelDetail != nil {
|
|
|
+ sheetList, err := excelModel.GetAllSheetItemList(excelDetail.ExcelInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取sheet失败"
|
|
|
+ br.ErrMsg = "获取sheet失败,err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(sheetList) > 0 {
|
|
|
+ sheetIdList := make([]int, 0)
|
|
|
+ for _, v := range sheetList {
|
|
|
+ sheetIdList = append(sheetIdList, v.ExcelSheetId)
|
|
|
+ }
|
|
|
+ // 获取所有sheet的第一页的数据
|
|
|
+ sheetDataList, err := excelModel.GetSheetDataListBySheetIdListAndPage(sheetIdList, 1)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取sheet中的数据失败"
|
|
|
+ br.ErrMsg = "获取sheet中的数据失败,err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ sheetDataMap := make(map[int]*excelModel.ExcelSheetData)
|
|
|
+ for _, v := range sheetDataList {
|
|
|
+ sheetDataMap[v.ExcelSheetId] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, v := range sheetList {
|
|
|
+ sheetData, ok := sheetDataMap[v.ExcelSheetId]
|
|
|
+ if !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ v.Data = sheetData
|
|
|
+ sheetList[k] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO 合并单元格信息、计算公式
|
|
|
+
|
|
|
+ resp.SheetList = sheetList
|
|
|
+ }
|
|
|
+
|
|
|
+ //resp := response.ExcelListResp{
|
|
|
+ // Paging: page,
|
|
|
+ // List: list,
|
|
|
+ //}
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// ExcelDataList
|
|
|
+// @Title 根据excel名称获取表格详情(基础信息+第一页初始化数据)
|
|
|
+// @Description 根据excel名称获取表格详情(基础信息+第一页初始化数据)
|
|
|
+// @Param UniqueCode query string true "excel唯一编码"
|
|
|
+// @Param Page query int true "页码"
|
|
|
+// @Success 200 {object} response.ExcelListResp
|
|
|
+// @router /excel/data [get]
|
|
|
+func (c *CustomAnalysisController) ExcelDataList() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := c.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ uniqueCode := c.GetString("UniqueCode")
|
|
|
+ if uniqueCode == `` {
|
|
|
+ br.Msg = "请选择表格"
|
|
|
+ br.ErrMsg = "UniqueCode未传"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ page, _ := c.GetInt("Page")
|
|
|
+ if page <= 0 {
|
|
|
+ br.Msg = "页码异常"
|
|
|
+ br.ErrMsg = "页码异常"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ sheetList := make([]*excelModel.SheetItem, 0)
|
|
|
+ // 获取数据详情
|
|
|
+ excelDetail, err := data_manage.GetNoContentExcelInfoByUniqueCode(uniqueCode)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = sheetList
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "获取表格事变"
|
|
|
+ br.ErrMsg = err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if excelDetail.Source != utils.CUSTOM_ANALYSIS_TABLE {
|
|
|
+ br.Msg = "excel异常"
|
|
|
+ br.ErrMsg = "excel异常"
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if excelDetail != nil {
|
|
|
+ sheetList, err = excelModel.GetAllSheetItemList(excelDetail.ExcelInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取sheet失败"
|
|
|
+ br.ErrMsg = "获取sheet失败,err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(sheetList) > 0 {
|
|
|
+ sheetIdList := make([]int, 0)
|
|
|
+ for _, v := range sheetList {
|
|
|
+ sheetIdList = append(sheetIdList, v.ExcelSheetId)
|
|
|
+ }
|
|
|
+ // 获取所有sheet的第一页的数据
|
|
|
+ sheetDataList, err := excelModel.GetSheetDataListBySheetIdListAndPage(sheetIdList, page)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取sheet中的数据失败"
|
|
|
+ br.ErrMsg = "获取sheet中的数据失败,err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ sheetDataMap := make(map[int]*excelModel.ExcelSheetData)
|
|
|
+ for _, v := range sheetDataList {
|
|
|
+ sheetDataMap[v.ExcelSheetId] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, v := range sheetList {
|
|
|
+ sheetData, ok := sheetDataMap[v.ExcelSheetId]
|
|
|
+ if !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ v.Data = sheetData
|
|
|
+ sheetList[k] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO 合并单元格信息、计算公式
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //resp := response.ExcelListResp{
|
|
|
+ // Paging: page,
|
|
|
+ // List: list,
|
|
|
+ //}
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = sheetList
|
|
|
+}
|