Эх сурвалжийг харах

Merge branch 'BI_Dashboard' of http://8.136.199.33:3000/eta_gn_server/eta_api into BI_Dashboard

zqbao 6 сар өмнө
parent
commit
5534c54ad6

+ 287 - 125
controllers/bi_dashboard.go

@@ -5,7 +5,7 @@ import (
 	"errors"
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models/bi_dashboard"
-	"eta_gn/eta_api/services/ppt"
+	"eta_gn/eta_api/models/system"
 	"eta_gn/eta_api/utils"
 	"time"
 )
@@ -15,8 +15,8 @@ type BIDaShboardController struct {
 }
 
 // GroupList
-// @Title 获取可见的目录列表
-// @Description 获取可见的目录列表接口
+// @Title 获取我的列表
+// @Description 获取我的列表接口
 // @Success 200 {object} models.RespGroupList
 // @router /my_list [get]
 func (this *BIDaShboardController) MyList() {
@@ -43,9 +43,9 @@ func (this *BIDaShboardController) MyList() {
 }
 
 // AddDashboard
-// @Title 新增ppt
-// @Description 新增ppt接口
-// @Param	request	body models.AddPptV2Req true "type json string"
+// @Title 新增看板
+// @Description 新增看板接口
+// @Param	request	body models.AddDashboardReq true "type json string"
 // @Success 200 Ret=200 新增成功
 // @router /add [post]
 func (this *BIDaShboardController) AddDashboard() {
@@ -67,14 +67,14 @@ func (this *BIDaShboardController) AddDashboard() {
 	}
 
 	item := &bi_dashboard.BiDashboard{
-		BiDashboardClassifyId: req.ClassifyId,
-		BiDashboardName:       req.BiDashboardName,
-		SysAdminId:            this.SysUser.AdminId,
-		SysAdminName:          this.SysUser.AdminName,
+		//BiDashboardClassifyId: req.ClassifyId,
+		BiDashboardName: req.BiDashboardName,
+		SysAdminId:      this.SysUser.AdminId,
+		SysAdminName:    this.SysUser.AdminName,
 		//Sort:                  0,
-		CreateTime:            time.Now(),
-		ModifyTime:            time.Now(),
-		State:                 1,
+		CreateTime: time.Now(),
+		ModifyTime: time.Now(),
+		State:      1,
 	}
 	id, e := bi_dashboard.AddBiDashboard(item)
 	if e != nil {
@@ -102,7 +102,6 @@ func (this *BIDaShboardController) AddDashboard() {
 		return
 	}
 
-
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "新增成功"
@@ -110,175 +109,115 @@ func (this *BIDaShboardController) AddDashboard() {
 }
 
 // EditPpt
-// @Title 编辑ppt
-// @Description 编辑ppt接口
-// @Param	request	body models.AddPptV2Req true "type json string"
+// @Title 编辑看板
+// @Description 编辑看板接口
+// @Param	request	body bi_dashboard.EditDashboardReq true "type json string"
 // @Success 200 Ret=200 编辑成功
 // @router /edit [post]
-func (this *BIDaShboardController) EditPpt() {
+func (this *BIDaShboardController) EditDashboard() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	var req models.AddPptV2Req
+	var req bi_dashboard.EditDashboardReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-	if req.FirstPage.Title == "" {
+	if req.BiDashboardName == "" {
 		br.Msg = "标题不能为空"
 		return
 	}
-	item, err := models.GetPptV2ByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
+	item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取数据异常!"
 		br.ErrMsg = "获取数据异常,Err:" + err.Error()
 		return
 	}
-	if item != nil && item.PptId != int(req.PptId) {
-		br.Msg = "标题已存在,不可重复添加"
-		br.IsSendEmail = false
-		return
-	}
-	pptInfo, err := models.GetPptV2ById(int(req.PptId))
-	if err != nil {
-		br.Msg = "信息获取失败"
-		br.ErrMsg = "信息获取失败,Err:" + err.Error()
-		return
-	}
 
 	// 判断权限
-	if pptInfo.AdminId != this.SysUser.AdminId {
-		_, err := models.GetPPtGrantConf(pptInfo.PptId, this.SysUser.AdminId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				br.Msg = `该PPT已取消共享,保存失败`
-				br.ErrMsg = `该PPT已取消共享,保存失败`
-				br.IsSendEmail = false
-			} else {
-				br.Msg = `保存失败`
-				br.ErrMsg = `保存失败,ERR:` + err.Error()
-			}
-			return
-		}
+	if item.SysAdminId != this.SysUser.AdminId {
+		br.Msg = `无权编辑`
+		return
 	}
 
 	// 修改
-	pptInfo.TemplateType = req.FirstPage.TemplateType
-	pptInfo.BackgroundImg = req.FirstPage.ImgUrl
-	pptInfo.Title = req.FirstPage.Title
-	pptInfo.ReportType = req.FirstPage.ReportType
-	pptInfo.PptDate = req.FirstPage.PptDate
-	pptInfo.Content = req.Content
-	pptInfo.CoverContent = req.CoverContent
-	pptInfo.ModifyTime = time.Now()
-	pptInfo.TitleSetting = req.TitleSetting
-	err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "TitleSetting"})
-	if err != nil {
-		br.Msg = "编辑失败"
-		br.ErrMsg = "编辑失败,Err:" + err.Error()
-		return
-	}
+	item.BiDashboardName = req.BiDashboardName
+	item.ModifyTime = time.Now()
 
-	pptMap, err := models.GetPptMappingByPptId(req.PptId)
-	if err != nil {
-		br.Msg = `该PPT信息不存在, 保存失败`
-		br.ErrMsg = `该PPT信息不存在, 保存失败, Err` + err.Error()
-		br.IsSendEmail = false
-		return
-	}
-	pptMapList, err := models.GetPptMappingListByGroupId(pptMap.GroupId)
-	if err != nil {
-		br.ErrMsg = "PPT目录信息异常"
-		return
-	}
-	count, err := models.GetPptMappingByGroupPptCountId(pptMap.GroupPptId, this.SysUser.AdminId)
-	if err != nil {
-		br.Msg = "查询映射关系失败"
-		br.ErrMsg = "查询映射关系失败, 保存失败, Err:" + err.Error()
-		return
-	}
-	if !pptMap.IsMoved && len(pptMapList) > 1 && count > 0 {
-		// 如果没有人为移动位置, 默认将当前ppt置顶
-		err = ppt.MoveGroupPpt(pptMap.GroupId, pptMap.GroupPptId, pptMapList[0].GroupPptId, 0, this.SysUser.AdminId)
-		if err != nil {
-			br.Msg = err.Error()
-			br.ErrMsg = "移动失败,Err:" + err.Error()
-			return
-		}
-	}
+	err = bi_dashboard.EditDashboard(item)
+
+	err = bi_dashboard.DeleteBiDashboardDetail(req.BiDashboardId)
 
-	// 日志记录
-	{
-		logInfo := &models.PptV2SaveLog{
-			PptId:         pptInfo.PptId,
-			TemplateType:  pptInfo.TemplateType,
-			BackgroundImg: pptInfo.BackgroundImg,
-			Title:         pptInfo.Title,
-			ReportType:    pptInfo.ReportType,
-			PptDate:       pptInfo.PptDate,
-			Content:       pptInfo.Content,
-			CoverContent:  pptInfo.CoverContent,
-			AdminId:       this.SysUser.AdminId,
-			AdminRealName: this.SysUser.RealName,
+	detailList := make([]*bi_dashboard.BiDashboardDetail, 0)
+	for _, v := range req.List {
+		item := &bi_dashboard.BiDashboardDetail{
+			BiDashboardId: req.BiDashboardId,
+			Type:          v.Type,
+			UniqueCode:    v.UniqueCode,
+			Sort:          v.Sort,
 			CreateTime:    time.Now(),
+			ModifyTime:    time.Now(),
 		}
-		_, err = models.AddPptV2SaveLog(logInfo)
+		detailList = append(detailList, item)
 	}
-
-	resp := models.AddPptResp{
-		PptId: req.PptId,
+	err = bi_dashboard.AddBiDashboardDetailMulti(detailList)
+	if err != nil {
+		br.Msg = "新增详情失败"
+		br.ErrMsg = "新增详情失败,Err:" + err.Error()
+		return
 	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "编辑成功"
 	br.IsAddLog = true
-	br.Data = resp
 }
 
-// DeletePpt
-// @Title 删除ppt
-// @Description 删除ppt接口
-// @Param	request	body models.DeletePptV2Req true "type json string"
+// DeleteDashboard
+// @Title 删除看板
+// @Description 删除看板接口
+// @Param	request	body bi_dashboard.DelDashboardReq true "type json string"
 // @Success 200 Ret=200 删除成功
 // @router /delete [post]
-func (this *BIDaShboardController) DeletePpt() {
+func (this *BIDaShboardController) DeleteDashboard() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	var req models.DeletePptV2Req
+	var req bi_dashboard.DelDashboardReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-	if req.PptId <= 0 {
+	if req.BiDashboardId <= 0 {
 		br.Msg = "参数错误"
 		return
 	}
-	pptInfo, err := models.GetPptV2ById(req.PptId)
-	if err != nil {
-		br.Msg = "ppt不存在"
+	item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
+	if err != nil && !utils.IsErrNoRow(err) {
+		br.Msg = "获取数据异常!"
+		br.ErrMsg = "获取数据异常,Err:" + err.Error()
 		return
 	}
-	if pptInfo.AdminId != this.SysUser.AdminId {
+	if item.SysAdminId != this.SysUser.AdminId {
 		br.Msg = "无权删除"
 		return
 	}
-	err = models.DeletePptV2(req.PptId)
+	err = bi_dashboard.DelDashboard(req.BiDashboardId)
 	if err != nil {
 		br.Msg = "删除失败"
 		br.ErrMsg = "删除失败,Err:" + err.Error()
 		return
 	}
-	//如果该ppt存在单个共享记录,则删除共享
-	err = ppt.DeleteGroupPpt(req.PptId)
+
+	err = bi_dashboard.DelDashboard(req.BiDashboardId)
 	if err != nil {
 		br.Msg = "删除失败"
 		br.ErrMsg = "删除失败,Err:" + err.Error()
@@ -290,13 +229,13 @@ func (this *BIDaShboardController) DeletePpt() {
 	br.Msg = "删除成功"
 }
 
-// DetailPpt
-// @Title 获取ppt详情
-// @Description 获取ppt详情接口
+// DetailDashboard
+// @Title 获取看板详情
+// @Description 获取看板详情接口
 // @Param   PptId   query   int  true       "PptId"
 // @Success 200 {object} models.PptV2
 // @router /detail [get]
-func (this *BIDaShboardController) DetailPpt() {
+func (this *BIDaShboardController) DetailDashboard() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		if br.ErrMsg == "" {
@@ -314,10 +253,11 @@ func (this *BIDaShboardController) DetailPpt() {
 	}
 	dashboardId, _ := this.GetInt("DashboardId")
 
-
 	dashboardItem, err := bi_dashboard.GetDashboardById(dashboardId)
 	if err != nil {
 		err = errors.New("我的看板列表查询出错:" + err.Error())
+		br.Msg = "我的看板列表查询出错"
+		br.ErrMsg = err.Error()
 		return
 	}
 
@@ -328,7 +268,6 @@ func (this *BIDaShboardController) DetailPpt() {
 		return
 	}
 
-
 	resp := new(bi_dashboard.DashboardDetailResp)
 	resp.BiDashboard = dashboardItem
 	resp.List = detailList
@@ -339,3 +278,226 @@ func (this *BIDaShboardController) DetailPpt() {
 	br.Data = resp
 }
 
+// MoveDashboard
+// @Title 移动看板详情
+// @Description 移动看板详情接口
+// @Param	request	body bi_dashboard.MoveDashboardDetailReq true "type json string"
+// @Success 200 Ret=200 移动成功
+// @router /detail/move [post]
+func (this *BIDaShboardController) MoveDashboard() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req bi_dashboard.MoveDashboardDetailReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.BiDashboardId <= 0 {
+		br.Msg = "参数错误"
+		return
+	}
+	if req.BiDashboardDetailId == req.OtherDetailId || req.BiDashboardDetailId <= 0 || req.OtherDetailId <= 0 {
+		br.Msg = "看板Id有误"
+		return
+	}
+	if req.Sort < 0 || req.OtherSort < 0 || req.Sort == req.OtherSort {
+		br.Msg = "排序有误"
+		return
+	}
+
+	item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
+	if err != nil && !utils.IsErrNoRow(err) {
+		br.Msg = "获取数据异常!"
+		br.ErrMsg = "获取数据异常,Err:" + err.Error()
+		return
+	}
+
+	// 判断权限
+	if item.SysAdminId != this.SysUser.AdminId {
+		br.Msg = `无权移动`
+		return
+	}
+
+	// 修改
+	detailItem := &bi_dashboard.BiDashboardDetail{
+		BiDashboardDetailId: req.BiDashboardDetailId,
+		Sort:                req.OtherSort,
+		ModifyTime:          time.Now(),
+	}
+	err = bi_dashboard.EditBiDashboardDetail(detailItem)
+	if err != nil {
+		br.Msg = "编辑详情失败"
+		br.ErrMsg = "编辑详情失败,Err:" + err.Error()
+		return
+	}
+
+	otherItem := &bi_dashboard.BiDashboardDetail{
+		BiDashboardDetailId: req.OtherDetailId,
+		Sort:                req.Sort,
+		ModifyTime:          time.Now(),
+	}
+	err = bi_dashboard.EditBiDashboardDetail(otherItem)
+	if err != nil {
+		br.Msg = "编辑详情失败"
+		br.ErrMsg = "编辑详情失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "编辑成功"
+	br.IsAddLog = true
+}
+
+// ShareList
+// @Title 获取共享列表
+// @Description 获取共享列表接口
+// @Success 200 {object} models.RespGroupList
+// @router /share_list [get]
+func (this *BIDaShboardController) ShareList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	//myPptList := make([]*bi_dashboard.BiDashboard, 0)
+	//otherPptList := make([]*bi_dashboard.BiDashboard, 0)
+	grantList := bi_dashboard.RespGroupList{}
+	dashboradIds := make([]int, 0)
+
+	// 获取我的看板列表
+	ShareCond := ` AND sys_admin_id = ? AND state IN (1,6) `
+	SharePars := []interface{}{this.SysUser.AdminId}
+	ShareList, err := bi_dashboard.GetBiDashboardList(ShareCond, SharePars)
+	if err != nil {
+		err = errors.New("我的看板列表查询出错:" + err.Error())
+		br.ErrMsg = err.Error()
+		br.Msg = "查询失败"
+		return
+	}
+	grantList.MyList = ShareList
+
+	//dashboardMap := make(map[int]*bi_dashboard.BiDashboard)
+	adminIdList := make([]int, 0)   //需要查询的创建人admin_id列表集合
+	adminIdMap := make(map[int]int) //需要查询的创建人admin_id集合,用来去重的,避免重复id
+	grantDashboardList, err := bi_dashboard.GetAllGrantList(this.SysUser.AdminId)
+	if err != nil {
+		err = errors.New("我的看板列表查询出错:" + err.Error())
+		br.ErrMsg = err.Error()
+		br.Msg = "查询失败"
+		return
+	}
+
+	publicAdminIdList := make([]int, 0)
+	publicDashboardListMap := make(map[int][]*bi_dashboard.BiDashboard)
+	for _, v := range grantDashboardList {
+		dashboradIds = append(dashboradIds, v.BiDashboardId)
+		publicDashboardList, ok := publicDashboardListMap[v.SysAdminId]
+		if !ok {
+			publicDashboardList = make([]*bi_dashboard.BiDashboard, 0)
+			publicAdminIdList = append(publicAdminIdList, v.SysAdminId)
+			if _, ok := adminIdMap[v.SysAdminId]; !ok {
+				adminIdList = append(adminIdList, v.SysAdminId) //需要查询的创建人admin_id列表集合
+				adminIdMap[v.SysAdminId] = v.SysAdminId         //需要查询的创建人admin_id集合,用来去重的,避免重复id
+			}
+		}
+
+		tmp := &bi_dashboard.BiDashboard{
+			BiDashboardId:   v.BiDashboardId,
+			BiDashboardName: v.BiDashboardName,
+			CreateTime:      v.CreateTime,
+			ModifyTime:      v.ModifyTime,
+			Sort:            v.Sort,
+			State:           v.State,
+			SysAdminId:      v.SysAdminId,
+			SysAdminName:    v.SysAdminName,
+		}
+		publicDashboardList = append(publicDashboardList, tmp)
+		publicDashboardListMap[v.SysAdminId] = publicDashboardList
+	}
+	// 创建人信息
+	systemAdminMap := make(map[int]*system.Admin)
+	systemAdminList, err := system.GetAdminListByIdList(adminIdList)
+	if err != nil {
+		return
+	}
+	for _, v := range systemAdminList {
+		systemAdminMap[v.AdminId] = v
+	}
+
+	for _, v := range publicAdminIdList {
+		systemAdmin, ok := systemAdminMap[v]
+		if !ok {
+			continue
+		}
+
+		// 看板 列表信息
+		respGroupNameListItemList, ok := publicDashboardListMap[v]
+		if !ok {
+			respGroupNameListItemList = make([]*bi_dashboard.BiDashboard, 0)
+		}
+
+		// ppt 分组信息
+		tmpRespGroupListItem := &bi_dashboard.RespOtherGroupListItem{
+			GroupId:       int64(systemAdmin.AdminId),
+			GroupName:     systemAdmin.RealName,
+			AdminId:       systemAdmin.AdminId,
+			DashboardList: respGroupNameListItemList,
+		}
+		grantList.OtherList = append(grantList.OtherList, tmpRespGroupListItem)
+	}
+	//if len(dashboradIds) > 0 {
+	//	// 通过dashboradIds列表字段获取所有的看板信息
+	//	dashboradList, tmpErr := bi_dashboard.GetDashboradByIds(dashboradIds)
+	//	if tmpErr != nil {
+	//		err = errors.New("查询dashborad详情出错:" + err.Error())
+	//		br.Msg = "查询dashborad详情出错"
+	//		br.ErrMsg = err.Error()
+	//		return
+	//	}
+	//	for _, v := range dashboradList {
+	//		dashboardMap[v.BiDashboardId] = v
+	//	}
+	//}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "查询成功"
+	br.Data = grantList
+	return
+}
+
+// PublicList
+// @Title 获取公共列表
+// @Description 获取公共列表接口
+// @Success 200 {object} models.RespGroupList
+// @router /public_list [get]
+func (this *BIDaShboardController) PublicList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	// 获取我的看板列表
+	privateCond := ` AND sys_admin_id = ? AND state IN (1,6) `
+	privatePars := []interface{}{this.SysUser.AdminId}
+	privateList, err := bi_dashboard.GetBiDashboardList(privateCond, privatePars)
+	if err != nil {
+		err = errors.New("我的看板列表查询出错:" + err.Error())
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "查询成功"
+	br.Data = privateList
+	return
+}

+ 0 - 161
controllers/report.go

@@ -72,167 +72,6 @@ func (this *ReportController) Delete() {
 	br.Msg = "删除成功"
 }
 
-//func (this *ReportController) Edit() {
-//	br := new(models.BaseResponse).Init()
-//	defer func() {
-//		this.Data["json"] = br
-//		this.ServeJSON()
-//	}()
-//	sysUser := this.SysUser
-//	if sysUser == nil {
-//		br.Msg = "请登录"
-//		br.ErrMsg = "请登录,SysUser Is Empty"
-//		br.Ret = 408
-//		return
-//	}
-//
-//	var req models.EditReq
-//	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-//	if err != nil {
-//		br.Msg = "参数解析异常!"
-//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-//		return
-//	}
-//	if req.Content == "" {
-//		br.Msg = "报告内容不能为空"
-//		return
-//	}
-//	var contentSub string
-//	if req.Content != "" {
-//		e := utils.ContentXssCheck(req.Content)
-//		if e != nil {
-//			br.Msg = "存在非法标签"
-//			br.ErrMsg = "存在非法标签, Err: " + e.Error()
-//			return
-//		}
-//		content, e := services.FilterReportContentBr(req.Content)
-//		if e != nil {
-//			br.Msg = "内容去除前后空格失败"
-//			br.ErrMsg = "内容去除前后空格失败, Err: " + e.Error()
-//			return
-//		}
-//		req.Content = content
-//
-//		contentSub, err = services.GetReportContentSub(req.Content)
-//		if err != nil {
-//			go alarm_msg.SendAlarmMsg("解析 ContentSub 失败,Err:"+err.Error(), 3)
-//			//utils.SendEmail(utils.APPNAME+"失败提醒", "解析 ContentSub 失败,Err:"+err.Error(), utils.EmailSendToUsers)
-//		}
-//	}
-//
-//	//更新标记key
-//	markStatus, err := services.UpdateReportEditMark(int(req.ReportId), sysUser.AdminId, 1, sysUser.RealName, this.Lang)
-//	if err != nil {
-//		br.Msg = err.Error()
-//		return
-//	}
-//	if markStatus.Status == 1 {
-//		br.Msg = markStatus.Msg
-//		//br.Ret = 202 //202 服务器已接受请求,但尚未处理。
-//		return
-//	}
-//
-//	var stage int
-//	report, e := models.GetReportByReportId(int(req.ReportId))
-//	if e != nil {
-//		if utils.IsErrNoRow(e) {
-//			br.Msg = "报告已被删除, 请刷新页面"
-//			return
-//		}
-//		br.Msg = "操作失败"
-//		br.ErrMsg = "获取报告失败, Err: " + e.Error()
-//		return
-//	}
-//	if report.State == models.ReportStatePublished || report.State == models.ReportStatePass {
-//		br.Msg = "该报告已发布,不允许编辑"
-//		br.ErrMsg = "该报告已发布,不允许编辑"
-//		return
-//	}
-//	if report.ClassifyNameFirst != req.ClassifyNameFirst || report.ClassifyNameSecond != req.ClassifyNameSecond {
-//		maxStage, _ := models.GetReportStageEdit(req.ClassifyIdFirst, req.ClassifyIdSecond, int(req.ReportId))
-//		maxStage = maxStage + 1
-//		stage = maxStage
-//	} else {
-//		stage = report.Stage
-//	}
-//	//if req.State != report.State {
-//	//	recordItem := &models.ReportStateRecord{
-//	//		ReportId:   int(req.ReportId),
-//	//		ReportType: 1,
-//	//		State:      req.State,
-//	//		AdminId:    this.SysUser.AdminId,
-//	//		AdminName:  this.SysUser.AdminName,
-//	//		CreateTime: time.Now(),
-//	//	}
-//	//	go func() {
-//	//		_, _ = models.AddReportStateRecord(recordItem)
-//	//	}()
-//	//}
-//
-//	//item := new(models.Report)
-//	report.ClassifyIdFirst = req.ClassifyIdFirst
-//	report.ClassifyNameFirst = req.ClassifyNameFirst
-//	report.ClassifyIdSecond = req.ClassifyIdSecond
-//	report.ClassifyNameSecond = req.ClassifyNameSecond
-//	report.ClassifyIdThird = req.ClassifyIdThird
-//	report.ClassifyNameThird = req.ClassifyNameThird
-//	report.Title = req.Title
-//	report.Abstract = req.Abstract
-//	report.Author = req.Author
-//	report.Frequency = req.Frequency
-//	//report.State = report.State // 编辑不变更状态
-//	report.Stage = stage
-//	report.Content = html.EscapeString(req.Content)
-//	report.ContentSub = html.EscapeString(contentSub)
-//	report.CreateTime = req.CreateTime
-//	//report.CollaborateType = req.CollaborateType
-//	//report.ReportLayout = req.ReportLayout
-//	if req.IsPublicPublish <= 0 {
-//		req.IsPublicPublish = 1
-//	}
-//	report.IsPublicPublish = req.IsPublicPublish
-//	err = report.Update([]string{"ClassifyIdFirst", "ClassifyNameFirst", "ClassifyIdSecond", "ClassifyNameSecond", "ClassifyIdThird", "ClassifyNameThird", "Title", "Abstract", "Author", "Frequency", "Stage", "Content", "ContentSub", "CreateTime", "IsPublicPublish"})
-//	if err != nil {
-//		br.Msg = "保存失败"
-//		br.ErrMsg = "保存失败,Err:" + err.Error()
-//		return
-//	}
-//
-//	//处理权限
-//	//if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
-//	go func() {
-//		e := models.RemoveChartPermissionChapterMapping(req.ReportId)
-//		if e != nil {
-//			alarm_msg.SendAlarmMsg("修改删除报告权限失败,Err:"+e.Error(), 3)
-//			return
-//		}
-//		permissionItems, e := models.GetPermission(req.ClassifyIdSecond)
-//		if e != nil {
-//			alarm_msg.SendAlarmMsg("获取权限失败,Err:"+e.Error(), 3)
-//			return
-//		}
-//		for _, v := range permissionItems {
-//			e = models.AddChartPermissionChapterMapping(v.ChartPermissionId, req.ReportId)
-//			if e != nil {
-//				alarm_msg.SendAlarmMsg("新增权限失败,Err:"+e.Error(), 3)
-//				return
-//			}
-//		}
-//		// 同步crm权限
-//		_ = services.EditReportPermissionSync(req.ReportId, req.ClassifyIdSecond)
-//	}()
-//	//}
-//
-//	reportCode := utils.MD5(strconv.Itoa(int(req.ReportId)))
-//	resp := new(models.EditResp)
-//	resp.ReportId = req.ReportId
-//	resp.ReportCode = reportCode
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "保存成功"
-//	br.Data = resp
-//}
-
 // Upload
 // @Title 图片上传
 // @Description 图片上传接口

+ 6 - 5
controllers/report_chapter_type.go

@@ -168,7 +168,8 @@ func (this *ReportChapterTypeController) Add() {
 		return
 	}
 
-	cond = ` and product_id=1`
+	// 国能补充需求调整
+	/*cond = ` and product_id=1`
 	pars = make([]interface{}, 0)
 	permissionList, e := services.GetChartPermissionList(cond, pars)
 	if e != nil {
@@ -179,15 +180,15 @@ func (this *ReportChapterTypeController) Add() {
 	permissionIdName := make(map[int]string)
 	for i := range permissionList {
 		permissionIdName[permissionList[i].ChartPermissionId] = permissionList[i].PermissionName
-	}
+	}*/
 
 	newPermissions := make([]*models.ReportChapterTypePermission, 0) // 报告章节权限表(新)
-	for i := range req.ChartPermissionIdList {
+	for range req.ChartPermissionIdList {
 		newPermissions = append(newPermissions, &models.ReportChapterTypePermission{
 			ReportChapterTypeId:   item.ReportChapterTypeId,
 			ReportChapterTypeName: item.ReportChapterTypeName,
-			ChartPermissionId:     req.ChartPermissionIdList[i],
-			PermissionName:        permissionIdName[req.ChartPermissionIdList[i]],
+			ChartPermissionId:     0,
+			PermissionName:        "",
 			ResearchType:          item.ResearchType,
 			CreatedTime:           nowTime,
 		})

+ 50 - 1
models/bi_dashboard/bi_dashboard.go

@@ -62,7 +62,7 @@ func GetBiDashboardList(condition string, pars []interface{}) (items []*BiDashbo
 // GetDashboardById 获取看板
 func GetDashboardById(id int) (item *BiDashboard, err error) {
 	//o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT * FROM bi_dashboard WHERE bi_dashboard_classify_id = ? limit 1`
+	sql := `SELECT * FROM bi_dashboard WHERE bi_dashboard_id = ? limit 1`
 
 	//sql += `ORDER BY create_time DESC LIMIT ?,?`
 	//_, err = o.Raw(sql).QueryRows(&items)
@@ -70,8 +70,57 @@ func GetDashboardById(id int) (item *BiDashboard, err error) {
 	return
 }
 
+// del
+func DelDashboard(id int) (err error) {
+	return global.DEFAULT_DmSQL.Delete(&BiDashboard{BiDashboardId: id}).Error
+}
+
 // DashboardDetailResp 详情响应体
 type DashboardDetailResp struct {
 	*BiDashboard
 	List []*BiDashboardDetail
 }
+
+type AddDashboardReq struct {
+	List            []*AddDashboardListReq
+	BiDashboardName string `description:"看板名称"`
+}
+
+type AddDashboardListReq struct {
+	Type       int
+	UniqueCode string
+	Sort       int
+}
+
+type EditDashboardReq struct {
+	List            []*AddDashboardListReq
+	BiDashboardId   int    `description:"看板id"`
+	BiDashboardName string `description:"看板名称"`
+}
+
+// update
+func EditDashboard(item *BiDashboard) (err error) {
+	return global.DEFAULT_DmSQL.Model(item).Updates(item).Error
+}
+
+type DelDashboardReq struct {
+	BiDashboardId int `description:"看板id"`
+}
+
+func GetDashboradByIds(dashboradIds []int) (list []*BiDashboard, err error) {
+	//_, err = orm.NewOrmUsingDB("rddp").
+	//	QueryTable("ppt_v2").
+	//	Filter("ppt_id__in", pptIds).
+	//	All(&list)
+	err = global.DEFAULT_DmSQL.Table("bi_dashboard").Where("bi_dashboard_id IN ?", dashboradIds).Find(&list).Error
+
+	return
+}
+
+// GetAllGrantList 获取已经有权限的看板列表
+func GetAllGrantList(sysUserId int) (list []*BiDashboard, err error) {
+	sql := `SELECT a.* FROM bi_dashboard a JOIN bi_dashboard_grant b on a.bi_dashboard_id=b.bi_dashboard_id 
+ WHERE b.grant_admin_id=? GROUP BY a.bi_dashboard_id`
+	err = global.DEFAULT_DmSQL.Raw(sql, sysUserId, sysUserId).Find(&list).Error
+	return
+}

+ 11 - 6
models/bi_dashboard/bi_dashboard_classify.go

@@ -33,17 +33,22 @@ func AddBiDashboardClassify(item *BiDashboardClassify) (lastId int64, err error)
 }
 
 type RespGroupList struct {
-	PublicList  []*RespGroupListItem
-	PrivateList []*BiDashboard
-	GrantList   []RespGroupListItem
+	MyList  []*BiDashboard
+	OtherList   []*RespOtherGroupListItem
 }
 
-type RespGroupListItem struct {
+type RespMyGroupListItem struct {
 	GroupId       int64  `description:"目录id"`
 	GroupName     string `description:"目录名称"`
 	AdminId       int    `description:"目录创建者账号ID"`
-	IsShare       int8   `description:"是否共享,0私有,1共享"`
-	DashboardList []*RespGroupDashboardListItem
+	DashboardList []*BiDashboard
+}
+
+type RespOtherGroupListItem struct {
+	GroupId       int64  `description:"目录id"`
+	GroupName     string `description:"目录名称"`
+	AdminId       int    `description:"目录创建者账号ID"`
+	DashboardList []*BiDashboard
 }
 
 type RespGroupDashboardListItem struct {

+ 14 - 8
models/bi_dashboard/bi_dashboard_detail.go

@@ -37,14 +37,20 @@ func AddBiDashboardDetailMulti(items []*BiDashboardDetail) (err error) {
 	return global.DEFAULT_DmSQL.CreateInBatches(items, 100).Error
 }
 
-type AddDashboardReq struct {
-	List            []*AddDashboardListReq
-	ClassifyId      int    `description:"分类id"`
-	BiDashboardName string `description:"看板名称"`
+// del
+func DeleteBiDashboardDetail(id int) (err error) {
+	return global.DEFAULT_DmSQL.Where("bi_dashboard_id = ?", id).Delete(&BiDashboardDetail{}).Error
 }
 
-type AddDashboardListReq struct {
-	Type       int
-	UniqueCode string
-	Sort       int
+type MoveDashboardDetailReq struct {
+	BiDashboardId       int `description:"看板id"`
+	BiDashboardDetailId int `description:"看板详情id"`
+	Sort                int `description:"排序"`
+	OtherDetailId       int `description:"交换的详情id"`
+	OtherSort           int `description:"交换的排序"`
 }
+
+// update
+func EditBiDashboardDetail(item *BiDashboardDetail) (err error){
+	return global.DEFAULT_DmSQL.Model(item).Where("bi_dashboard_detail_id = ?", item.BiDashboardDetailId).Updates(item).Error
+}

+ 0 - 8
models/bi_dashboard/bi_dashboard_grant.go

@@ -1,7 +1,6 @@
 package bi_dashboard
 
 import (
-	"eta_gn/eta_api/global"
 	"time"
 )
 
@@ -17,10 +16,3 @@ func (m *BiDashboardGrant) TableName() string {
 	return "bi_dashboard_grant"
 }
 
-// GetAllGrantList 获取已经有权限的看板列表
-func GetAllGrantList(sysUserId int) (list []*BiDashboardGrant, err error) {
-	sql := `SELECT a.* FROM bi_dashboard a JOIN bi_dashboard_grant b on a.bi_dashboard_id=b.bi_dashboard_id 
- WHERE a.admin_id=? OR b.grant_admin_id=? GROUP BY a.bi_dashboard_id`
-	err = global.DEFAULT_DmSQL.Raw(sql, sysUserId, sysUserId).Find(&list).Error
-	return
-}

+ 1 - 1
models/data_manage/chart_classify.go

@@ -286,7 +286,7 @@ func (chartClassify *ChartClassify) Update(cols []string) (err error) {
 // GetChartClassifyMaxSort 获取图表分类下最大的排序数
 func GetChartClassifyMaxSort(parentId, source int) (sort int, err error) {
 	o := global.DmSQL["data"]
-	sql := `SELECT Max(sort) AS sort FROM chart_classify WHERE parent_id=? AND source = ? `
+	sql := `SELECT COALESCE(MAX(sort),0) AS sort FROM chart_classify WHERE parent_id=? AND source = ? `
 	err = o.Raw(sql, parentId, source).Scan(&sort).Error
 
 	return

+ 123 - 56
models/data_manage/chart_info.go

@@ -6,11 +6,13 @@ import (
 	"eta_gn/eta_api/models/mgo"
 	"eta_gn/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"go.mongodb.org/mongo-driver/bson"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"go.mongodb.org/mongo-driver/bson"
+	"gorm.io/gorm"
 )
 
 type ChartInfo struct {
@@ -477,6 +479,15 @@ func GetEdbDataList(source, subSource, edbInfoId int, startDate, endDate string)
 
 }
 
+func (e *EdbDataList) AfterFind(db *gorm.DB) (err error) {
+	tmp, err := time.Parse(utils.FormatDateWallWithLoc, e.DataTime)
+	if err != nil {
+		return
+	}
+	e.DataTime = tmp.Format(utils.FormatDate)
+	return
+}
+
 // getEdbDataListByMysql
 // @Description: 通过mysql查询指标数据
 // @author: Roc
@@ -511,7 +522,7 @@ func getEdbDataListByMysql(source, subSource, edbInfoId int, startDate, endDate
 	sql = fmt.Sprintf(sql, tableName)
 	o := global.DmSQL["data"]
 
-	err = o.Raw(sql, utils.ForwardPars(pars, edbInfoId)...).Scan(&list).Error
+	err = o.Raw(sql, utils.ForwardPars(pars, edbInfoId)...).Find(&list).Error
 	//err = o.Raw(sql, pars...).Scan(&list).Error
 	return
 }
@@ -703,60 +714,116 @@ func getEdbDataListMinAndMaxByMongo(source, subSource, edbInfoId int, startDate,
 	return
 }
 
+// type ChartEdbInfoMapping struct {
+// 	EdbInfoId           int     `description:"指标id"`
+// 	SourceName          string  `description:"来源名称"`
+// 	Source              int     `description:"来源id"`
+// 	SubSource           int     `description:"来源id"`
+// 	EdbCode             string  `description:"指标编码"`
+// 	EdbName             string  `description:"指标名称"`
+// 	EdbAliasName        string  `description:"指标名称(别名)"`
+// 	EdbNameEn           string  `description:"英文指标名称"`
+// 	EdbAliasNameEn      string  `description:"英文指标名称(别名)"`
+// 	EdbType             int     `description:"指标类型:1:基础指标,2:计算指标"`
+// 	Frequency           string  `description:"频率"`
+// 	FrequencyEn         string  `description:"英文频率"`
+// 	Unit                string  `description:"单位"`
+// 	UnitEn              string  `description:"英文单位"`
+// 	StartDate           string  `description:"起始日期"`
+// 	EndDate             string  `description:"终止日期"`
+// 	ModifyTime          string  `description:"指标最后更新时间"`
+// 	ChartEdbMappingId   int     `description:"图表指标id"`
+// 	ChartInfoId         int     `description:"图表id"`
+// 	MaxData             float64 `description:"上限"`
+// 	MinData             float64 `description:"下限"`
+// 	IsOrder             bool    `description:"true:正序,false:逆序"`
+// 	IsAxis              int     `description:"1:左轴,0:右轴"`
+// 	EdbInfoType         int     `description:"1:标准指标,0:领先指标"`
+// 	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
+// 	LeadValue           int     `description:"领先值"`
+// 	LeadUnit            string  `description:"领先单位"`
+// 	LeadUnitEn          string  `description:"领先英文单位"`
+// 	ChartStyle          string  `description:"图表类型"`
+// 	ChartColor          string  `description:"颜色"`
+// 	PredictChartColor   string  `description:"预测数据的颜色"`
+// 	ChartWidth          float64 `description:"线条大小"`
+// 	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
+// 	LatestDate          string  `description:"数据最新日期"`
+// 	LatestValue         float64 `description:"数据最新值"`
+// 	MoveLatestDate      string  `description:"移动后的数据最新日期"`
+// 	UniqueCode          string  `description:"指标唯一编码"`
+// 	MinValue            float64 `json:"-" description:"最小值"`
+// 	MaxValue            float64 `json:"-" description:"最大值"`
+// 	DataList            interface{}
+// 	IsNullData          bool    `json:"-" description:"是否空数据"`
+// 	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
+// 	RegionType          string  `description:"交易所来源,海外还是国内" json:"-"`
+// 	ClassifyId          int     `description:"分类id"`
+// 	SubSourceName       string  `description:"子数据来源名称"`
+// 	IndicatorCode       string  `description:"指标代码"`
+// 	IsConvert           int     `description:"是否数据转换 0不转 1转"`
+// 	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
+// 	ConvertValue        float64 `description:"数据转换值"`
+// 	ConvertUnit         string  `description:"数据转换单位"`
+// 	ConvertEnUnit       string  `description:"数据转换单位"`
+// 	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+// 	HaveOperaAuth       bool    `description:"是否有数据权限,默认:false"`
+// }
+
 type ChartEdbInfoMapping struct {
-	EdbInfoId           int     `description:"指标id"`
-	SourceName          string  `description:"来源名称"`
-	Source              int     `description:"来源id"`
-	SubSource           int     `description:"来源id"`
-	EdbCode             string  `description:"指标编码"`
-	EdbName             string  `description:"指标名称"`
-	EdbAliasName        string  `description:"指标名称(别名)"`
-	EdbNameEn           string  `description:"英文指标名称"`
-	EdbAliasNameEn      string  `description:"英文指标名称(别名)"`
-	EdbType             int     `description:"指标类型:1:基础指标,2:计算指标"`
-	Frequency           string  `description:"频率"`
-	FrequencyEn         string  `description:"英文频率"`
-	Unit                string  `description:"单位"`
-	UnitEn              string  `description:"英文单位"`
-	StartDate           string  `description:"起始日期"`
-	EndDate             string  `description:"终止日期"`
-	ModifyTime          string  `description:"指标最后更新时间"`
-	ChartEdbMappingId   int     `description:"图表指标id"`
-	ChartInfoId         int     `description:"图表id"`
-	MaxData             float64 `description:"上限"`
-	MinData             float64 `description:"下限"`
-	IsOrder             bool    `description:"true:正序,false:逆序"`
-	IsAxis              int     `description:"1:左轴,0:右轴"`
-	EdbInfoType         int     `description:"1:标准指标,0:领先指标"`
-	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
-	LeadValue           int     `description:"领先值"`
-	LeadUnit            string  `description:"领先单位"`
-	LeadUnitEn          string  `description:"领先英文单位"`
-	ChartStyle          string  `description:"图表类型"`
-	ChartColor          string  `description:"颜色"`
-	PredictChartColor   string  `description:"预测数据的颜色"`
-	ChartWidth          float64 `description:"线条大小"`
-	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
-	LatestDate          string  `description:"数据最新日期"`
-	LatestValue         float64 `description:"数据最新值"`
-	MoveLatestDate      string  `description:"移动后的数据最新日期"`
-	UniqueCode          string  `description:"指标唯一编码"`
-	MinValue            float64 `json:"-" description:"最小值"`
-	MaxValue            float64 `json:"-" description:"最大值"`
-	DataList            interface{}
-	IsNullData          bool    `json:"-" description:"是否空数据"`
-	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
-	RegionType          string  `description:"交易所来源,海外还是国内" json:"-"`
-	ClassifyId          int     `description:"分类id"`
-	SubSourceName       string  `description:"子数据来源名称"`
-	IndicatorCode       string  `description:"指标代码"`
-	IsConvert           int     `description:"是否数据转换 0不转 1转"`
-	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
-	ConvertValue        float64 `description:"数据转换值"`
-	ConvertUnit         string  `description:"数据转换单位"`
-	ConvertEnUnit       string  `description:"数据转换单位"`
-	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
-	HaveOperaAuth       bool    `description:"是否有数据权限,默认:false"`
+	EdbInfoId           int         `description:"指标id" gorm:"column:edb_info_id"`
+	SourceName          string      `description:"来源名称" gorm:"column:source_name"`
+	Source              int         `description:"来源id" gorm:"column:source"`
+	SubSource           int         `description:"来源id" gorm:"column:sub_source"`
+	EdbCode             string      `description:"指标编码" gorm:"column:edb_code"`
+	EdbName             string      `description:"指标名称" gorm:"column:edb_name"`
+	EdbAliasName        string      `description:"指标名称(别名)" gorm:"column:edb_alias_name"`
+	EdbNameEn           string      `description:"英文指标名称" gorm:"column:edb_name_en"`
+	EdbAliasNameEn      string      `description:"英文指标名称(别名)" gorm:"column:edb_alias_name_en"`
+	EdbType             int         `description:"指标类型:1:基础指标,2:计算指标" gorm:"column:edb_type"`
+	Frequency           string      `description:"频率" gorm:"column:frequency"`
+	FrequencyEn         string      `description:"英文频率" gorm:"column:frequency_en"`
+	Unit                string      `description:"单位" gorm:"column:unit"`
+	UnitEn              string      `description:"英文单位" gorm:"column:unit_en"`
+	StartDate           string      `description:"起始日期" gorm:"column:start_date"`
+	EndDate             string      `description:"终止日期" gorm:"column:end_date"`
+	ModifyTime          string      `description:"指标最后更新时间" gorm:"column:modify_time"`
+	ChartEdbMappingId   int         `description:"图表指标id" gorm:"column:chart_edb_mapping_id"`
+	ChartInfoId         int         `description:"图表id" gorm:"column:chart_info_id"`
+	MaxData             float64     `description:"上限" gorm:"column:max_data"`
+	MinData             float64     `description:"下限" gorm:"column:min_data"`
+	IsOrder             bool        `description:"true:正序,false:逆序" gorm:"column:is_order"`
+	IsAxis              int         `description:"1:左轴,0:右轴" gorm:"column:is_axis"`
+	EdbInfoType         int         `description:"1:标准指标,0:领先指标" gorm:"column:edb_info_type"`
+	EdbInfoCategoryType int         `description:"0:普通指标,1:预测指标" gorm:"column:edb_info_category_type"`
+	LeadValue           int         `description:"领先值" gorm:"column:lead_value"`
+	LeadUnit            string      `description:"领先单位" gorm:"column:lead_unit"`
+	LeadUnitEn          string      `description:"领先英文单位" gorm:"column:lead_unit_en"`
+	ChartStyle          string      `description:"图表类型" gorm:"column:chart_style"`
+	ChartColor          string      `description:"颜色" gorm:"column:chart_color"`
+	PredictChartColor   string      `description:"预测数据的颜色" gorm:"column:predict_chart_color"`
+	ChartWidth          float64     `description:"线条大小" gorm:"column:chart_width"`
+	ChartType           int         `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图" gorm:"column:chart_type"`
+	LatestDate          string      `description:"数据最新日期" gorm:"column:latest_date"`
+	LatestValue         float64     `description:"数据最新值" gorm:"column:latest_value"`
+	MoveLatestDate      string      `description:"移动后的数据最新日期" gorm:"column:move_latest_date"`
+	UniqueCode          string      `description:"指标唯一编码" gorm:"column:unique_code"`
+	MinValue            float64     `json:"-" description:"最小值" gorm:"column:min_value"`
+	MaxValue            float64     `json:"-" description:"最大值" gorm:"column:max_value"`
+	DataList            interface{} `gorm:"-"`
+	IsNullData          bool        `json:"-" description:"是否空数据" gorm:"column:is_null_data"`
+	MappingSource       int         `description:"1:ETA图库;2:商品价格曲线" gorm:"column:mapping_source"`
+	RegionType          string      `description:"交易所来源,海外还是国内" json:"-" gorm:"column:region_type"`
+	ClassifyId          int         `description:"分类id" gorm:"column:classify_id"`
+	SubSourceName       string      `description:"子数据来源名称" gorm:"column:sub_source_name"`
+	IndicatorCode       string      `description:"指标代码" gorm:"column:indicator_code"`
+	IsConvert           int         `description:"是否数据转换 0不转 1转" gorm:"column:is_convert"`
+	ConvertType         int         `description:"数据转换类型 1乘 2除 3对数" gorm:"column:convert_type"`
+	ConvertValue        float64     `description:"数据转换值" gorm:"column:convert_value"`
+	ConvertUnit         string      `description:"数据转换单位" gorm:"column:convert_unit"`
+	ConvertEnUnit       string      `description:"数据转换单位" gorm:"column:convert_en_unit"`
+	IsJoinPermission    int         `description:"是否加入权限管控,0:不加入;1:加入;默认:0" gorm:"column:is_join_permission"`
+	HaveOperaAuth       bool        `description:"是否有数据权限,默认:false" gorm:"column:have_opera_auth"`
 }
 
 type QuarterData struct {

+ 1 - 1
models/data_manage/excel/excel_info.go

@@ -880,7 +880,7 @@ func GetExcelMaxSortByClassifyId(classifyId int, source int) (sort int, err erro
 	//sql := ` SELECT Max(sort) AS sort FROM excel_info WHERE excel_classify_id=? AND source = ? AND is_delete=0 order by sort desc,excel_info_id desc limit 1`
 	//err = o.Raw(sql, classifyId, source).QueryRow(&sort)
 
-	sql := ` SELECT Max(sort) AS sort FROM excel_info WHERE excel_classify_id=? AND source = ? AND is_delete=0 order by sort desc,excel_info_id desc limit 1`
+	sql := ` SELECT COALESCE(MAX(sort),0) AS sort FROM excel_info WHERE excel_classify_id=? AND source = ? AND is_delete=0 order by sort desc,excel_info_id desc limit 1`
 	err = global.DmSQL["data"].Raw(sql, classifyId, source).Scan(&sort).Error
 	return
 }

+ 1 - 1
models/data_manage/excel/excel_sheet.go

@@ -68,7 +68,7 @@ type SheetItem struct {
 	CalcChain    string          `description:"计算公式"`
 	ModifyTime   time.Time       `description:"最近修改日期" json:"-"`
 	CreateTime   time.Time       `description:"创建日期"`
-	Data         *ExcelSheetData `description:"excel的数据"`
+	Data         *ExcelSheetData `gorm:"-" description:"excel的数据"`
 }
 
 // GetAllSheetItemList 根据excel_id获取所有的sheet详情

+ 1 - 1
models/data_manage/factor_edb_series_calculate_data_qjjs.go

@@ -205,7 +205,7 @@ func (m *FactorEdbSeriesCalculateDataQjjs) GetEdbDataList(seriesId int, edbInfoI
 
 	sql += ` ORDER BY data_time ASC `
 	sql = fmt.Sprintf(sql, m.TableName())
-	err = global.DmSQL["data"].Raw(sql, pars...).Scan(&list).Error
+	err = global.DmSQL["data"].Raw(sql, pars...).Find(&list).Error
 
 	return
 }

+ 6 - 3
models/data_manage/supply_analysis/variety.go

@@ -126,7 +126,7 @@ type VarietyItem struct {
 	PermissionUserId          string        `description:"有操作权限的用户id"`
 	ModifyTime                string        `description:"修改时间"`
 	CreateTime                string        `description:"创建时间"`
-	Button                    VarietyButton `description:"操作按钮权限"`
+	Button                    VarietyButton `gorm:"-" description:"操作按钮权限"`
 }
 
 type VarietyButton struct {
@@ -137,13 +137,16 @@ type VarietyButton struct {
 
 // GetListBySuperAdminPage 不区分是否有分析权限的获取分页数据
 func (item Variety) GetListBySuperAdminPage(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*VarietyItem, err error) {
-	baseSql := ` FROM ( SELECT a.*, GROUP_CONCAT(DISTINCT b.sys_user_id ORDER BY b.sys_user_id ASC SEPARATOR ',') AS permission_user_id FROM variety a 
+	baseSql := ` FROM ( SELECT a.variety_id,a.variety_name,a.last_update_sys_user_id,
+a.last_update_sys_user_real_name,a.production_day,a.sys_user_id,a.sys_user_real_name,a.modify_time,a.create_time,LISTAGG(b.sys_user_id, ',') WITHIN GROUP (ORDER BY b.sys_user_id ASC) AS permission_user_id 
+				FROM variety a 
 				LEFT JOIN variety_admin_permission b on a.variety_id=b.variety_id 
 				LEFT JOIN variety_edb_info c on a.variety_id=c.variety_id WHERE 1=1 `
 	if condition != "" {
 		baseSql += condition
 	}
-	baseSql += ` GROUP BY a.variety_id ) d `
+	baseSql += ` GROUP BY a.variety_id,a.variety_name,a.last_update_sys_user_id,
+a.last_update_sys_user_real_name,a.production_day,a.sys_user_id,a.sys_user_real_name,a.modify_time,a.create_time ) d `
 	// 数据总数
 	totalSql := `SELECT COUNT(1) total ` + baseSql
 

+ 6 - 6
models/permission.go

@@ -18,7 +18,7 @@ type ChartPermissionSearchKeyWordMapping struct {
 
 func GetPermission(classifyId int) (items []*ChartPermissionSearchKeyWordMapping, err error) {
 	//o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.from='rddp' AND a.classify_id = ? `
+	sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.source_from='rddp' AND a.classify_id = ? `
 	//_, err = o.Raw(sql, classifyId).QueryRows(&items)
 	err = global.DmSQL["rddp"].Raw(sql, classifyId).Find(&items).Error
 	return
@@ -26,7 +26,7 @@ func GetPermission(classifyId int) (items []*ChartPermissionSearchKeyWordMapping
 
 func GetAllPermissionMapping() (items []*ChartPermissionSearchKeyWordMapping, err error) {
 	//o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.from='rddp'`
+	sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.source_from='rddp'`
 	//_, err = o.Raw(sql).QueryRows(&items)
 	err = global.DmSQL["rddp"].Raw(sql).Find(&items).Error
 	return
@@ -44,7 +44,7 @@ func EditChartPermissionSearchKeyWordMappingMulti(keyword string, permissionIdLi
 			_ = to.Commit()
 		}
 	}()
-	sql := "DELETE FROM chart_permission_search_key_word_mapping WHERE `from` = 'rddp' AND classify_id = ?"
+	sql := "DELETE FROM chart_permission_search_key_word_mapping WHERE source_from= 'rddp' AND classify_id = ?"
 	//_, err = to.Raw(sql, classifyId).Exec()
 	err = to.Exec(sql, classifyId).Error
 	if err != nil {
@@ -94,7 +94,7 @@ type ChartPermissionMappingIdName struct {
 
 func GetChartPermissionNameFromMappingByKeyword(source string, classifyId int) (list []*ChartPermissionMappingIdName, err error) {
 	//o := orm.NewOrmUsingDB("rddp")
-	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.`from` = ? AND a.classify_id = ? "
+	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.source_from = ? AND a.classify_id = ? "
 	//_, err = o.Raw(sql, source, classifyId).QueryRows(&list)
 	err = global.DmSQL["rddp"].Raw(sql, source, classifyId).Find(&list).Error
 	return
@@ -103,7 +103,7 @@ func GetChartPermissionNameFromMappingByKeyword(source string, classifyId int) (
 // UpdateChartPermissionNameFromMappingByKeyword 根据关键词及来源更新新关键词
 func UpdateChartPermissionNameFromMappingByKeyword(newKeyword string, classifyId int, source string) (err error) {
 	//o := orm.NewOrmUsingDB("rddp")
-	sql := " UPDATE chart_permission_search_key_word_mapping SET key_word = ? WHERE classify_id = ? AND `from` = ? "
+	sql := " UPDATE chart_permission_search_key_word_mapping SET key_word = ? WHERE classify_id = ? AND source_from = ? "
 	//_, err = o.Raw(sql, newKeyword, classifyId, source).Exec()
 	err = global.DmSQL["rddp"].Exec(sql, newKeyword, classifyId, source).Error
 	return
@@ -129,7 +129,7 @@ type ChartPermissionSearchKeyWordMappingAndPermissionName struct {
 func GetPermissionByClassifyId(classifyId int) (items []*ChartPermissionSearchKeyWordMappingAndPermissionName, err error) {
 	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT a.chart_permission_name,a.permission_name,b.chart_permission_id,b.key_word,b.classify_id FROM chart_permission AS a 
- join chart_permission_search_key_word_mapping AS b ON a.chart_permission_id=b.chart_permission_id WHERE b.from='rddp' AND b.classify_id = ? `
+ join chart_permission_search_key_word_mapping AS b ON a.chart_permission_id=b.chart_permission_id WHERE b.source_from='rddp' AND b.classify_id = ? `
 	//_, err = o.Raw(sql, classifyId).QueryRows(&items)
 	err = global.DmSQL["rddp"].Raw(sql, classifyId).Find(&items).Error
 	return

+ 3 - 1
models/report_approve/report_approve.go

@@ -378,7 +378,7 @@ func GetApplyReportApproveCount(cond string, pars []interface{}) (count int, err
 	base := fmt.Sprintf(`SELECT a.* FROM report_approve AS a WHERE 1 = 1 %s`, cond)
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM (%s) t`, base)
 	//err = o.Raw(sql, pars).QueryRow(&count)
-	err = global.DmSQL["rddp"].Raw(sql, pars).Scan(&count).Error
+	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -391,6 +391,8 @@ func GetApplyReportApprovePageList(cond string, pars []interface{}, orderRule st
 	}
 	sql := fmt.Sprintf(`SELECT a.* FROM report_approve AS a WHERE 1 = 1 %s %s LIMIT ?,?`, cond, order)
 	//_, err = o.Raw(sql, pars...).QueryRows(&items)
+	pars = append(pars, startSize)
+	pars = append(pars, pageSize)
 	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 2 - 0
models/report_approve/report_approve_flow.go

@@ -171,6 +171,8 @@ func (m *ReportApproveFlow) GetPageItemsByCondition(condition string, pars []int
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
 	//_, err = o.Raw(sql, pars...).QueryRows(&items)
+	pars = append(pars, startSize)
+	pars = append(pars, pageSize)
 	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 3 - 2
models/report_v2.go

@@ -384,12 +384,13 @@ func GetReportListCountByAuthorized(condition string, pars []interface{}) (count
 func GetReportListByAuthorized(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportList, err error) {
 	//o := orm.NewOrmUsingDB("rddp")
 
-	sql := `SELECT id,classify_id_first,classify_name_first,classify_id_second,classify_name_second,classify_id_third,classify_name_third,title,stage,create_time,author,report_layout,collaborate_type,is_public_publish,abstract,has_chapter,publish_time FROM report as a WHERE 1=1  `
+	sql := `SELECT id,classify_id_first,classify_name_first,classify_id_second,classify_name_second,classify_id_third,classify_name_third,title,stage,create_time,author,report_layout,collaborate_type,is_public_publish,abstract,has_chapter,publish_time,report_create_time FROM report as a WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}
 	// 排序:1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过
-	sql += ` GROUP BY a.id ORDER BY  report_create_time DESC LIMIT ?,?`
+	sql += ` GROUP BY id,classify_id_first,classify_name_first,classify_id_second,classify_name_second,classify_id_third,classify_name_third,title,stage,create_time,author,report_layout,collaborate_type,is_public_publish,abstract,has_chapter,publish_time,report_create_time
+            ORDER BY  report_create_time DESC LIMIT ?,?`
 	//_, err = o.Raw(sql, pars...).QueryRows(&items)
 	pars = append(pars, startSize)
 	pars = append(pars, pageSize)

+ 1 - 1
models/search_key_word.go

@@ -28,7 +28,7 @@ func AddTrendTagKeyWord(trend string) (err error) {
 // GetKeyWordListByFrom 根据来源获取搜索关键词列表
 func GetKeyWordListByFrom(from string) (list []*SearchKeyWord, err error) {
 	//o := orm.NewOrm()
-	sql := " SELECT * FROM search_key_word WHERE `from` = ? ORDER BY created_time ASC "
+	sql := ` SELECT * FROM search_key_word WHERE "from" = ? ORDER BY created_time ASC `
 	//_, err = o.Raw(sql, from).QueryRows(&list)
 	err = global.DEFAULT_DmSQL.Raw(sql, from).Find(&list).Error
 	return

+ 1 - 1
models/wechat_send_msg.go

@@ -31,7 +31,7 @@ func GetOpenIdArrByClassifyId(classifyId int) (items []string, err error) {
 			INNER JOIN chart_permission AS f ON e.chart_permission_id=f.chart_permission_id
 			INNER JOIN chart_permission_search_key_word_mapping AS g ON f.chart_permission_id=g.chart_permission_id
 			WHERE ur.open_id != "" AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续') AND  e.status IN('正式','试用','永续') 
-			AND g.from='rddp'
+			AND g.source_from='rddp'
 			AND g.classify_id=?
 			ORDER BY FIELD(c.company_id, 16) DESC, ur.user_record_id ASC  `
 	//o := orm.NewOrmUsingDB("weekly")

+ 30 - 3
routers/commentsRouter.go

@@ -8172,7 +8172,7 @@ func init() {
 
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"],
         beego.ControllerComments{
-            Method: "DeletePpt",
+            Method: "DeleteDashboard",
             Router: `/delete`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
@@ -8181,7 +8181,7 @@ func init() {
 
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"],
         beego.ControllerComments{
-            Method: "DetailPpt",
+            Method: "DetailDashboard",
             Router: `/detail`,
             AllowHTTPMethods: []string{"get"},
             MethodParams: param.Make(),
@@ -8190,7 +8190,16 @@ func init() {
 
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"],
         beego.ControllerComments{
-            Method: "EditPpt",
+            Method: "MoveDashboard",
+            Router: `/detail/move`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"],
+        beego.ControllerComments{
+            Method: "EditDashboard",
             Router: `/edit`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
@@ -8206,6 +8215,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"],
+        beego.ControllerComments{
+            Method: "PublicList",
+            Router: `/public_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BIDaShboardController"],
+        beego.ControllerComments{
+            Method: "ShareList",
+            Router: `/share_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BannerController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:BannerController"],
         beego.ControllerComments{
             Method: "Upload",

+ 22 - 95
services/classify.go

@@ -203,7 +203,7 @@ func AddReportClassify(classifyName string, parentId int, chartPermissionIdList
 		}
 		return
 	}
-	if item != nil {
+	if item != nil && item.Id > 0 {
 		errMsg = "分类名称:" + classifyName + "已存在"
 		isSendEmail = false
 		err = errors.New(errMsg)
@@ -269,85 +269,12 @@ func AddReportClassify(classifyName string, parentId int, chartPermissionIdList
 	classify.ReportDetailShowType = 1 //默认列表格式
 	classify.IsShow = 1
 	classify.Level = level
-	/*classify.Abstract = req.Abstract
-	classify.Descript = req.Descript
-	classify.Abstract = req.Abstract
-	classify.Descript = req.Descript
-	classify.ReportAuthor = req.ReportAuthor
-	classify.AuthorDescript = req.AuthorDescript
-	classify.ColumnImgUrl = req.ColumnImgUrl
-	classify.ReportImgUrl = req.ReportImgUrl
-	classify.HeadImgUrl = req.HeadImgUrl
-	classify.AvatarImgUrl = req.AvatarImgUrl
-	classify.HomeImgUrl = req.HomeImgUrl
-	classify.ClassifyLabel = req.ClassifyLabel
-	classify.ShowType = req.ShowType
-	classify.HasTeleconference = req.HasTeleconference
-	classify.VipTitle = req.VipTitle
-
-	classify.IsShow = req.IsShow
-	classify.YbFiccSort = req.YbFiccSort
-	classify.YbFiccIcon = req.YbFiccIcon
-	classify.YbFiccPcIcon = req.YbFiccPcIcon
-	classify.YbIconUrl = req.YbIconUrl
-	classify.YbBgUrl = req.YbBgUrl
-	classify.YbListImg = req.YbListImg
-	classify.YbShareBgImg = req.YbShareBgImg
-	classify.YbRightBanner = req.YbRightBanner
-	classify.RelateTel = req.RelateTel
-	classify.RelateVideo = req.RelateVideo
-	if req.ParentId > 0 {
-		parentClassify := new(models.Classify)
-		if parentClassify, err = models.GetClassifyById(req.ParentId); err != nil {
-			br.Msg = "获取父级分类信息失败"
-			br.ErrMsg = "获取父级分类信息失败, Err:" + err.Error()
-			return
-		}
-		updateParent := false
-		updateCols := make([]string, 0)
-		updateCols = append(updateCols, "HasTeleconference")
-		if req.HasTeleconference == 1 {
-			// 二级分类包含电话会,则一级分类也默认包含电话会
-			if parentClassify.HasTeleconference == 0 {
-				parentClassify.HasTeleconference = 1
-				updateParent = true
-			}
-		} else {
-			// 二级分类均无电话会,则一级分类也无电话会
-			if parentClassify.HasTeleconference == 1 {
-				child, err := models.GetClassifyChild(parentClassify.Id, "")
-				if err != nil {
-					br.Msg = "获取子分类失败"
-					br.ErrMsg = "获取子分类失败,Err:" + err.Error()
-					return
-				}
-				// 存在同一级分类下的二级分类有电话会则不变动
-				hasTel := false
-				for i := 0; i < len(child); i++ {
-					if child[i].HasTeleconference == 1 {
-						hasTel = true
-						break
-					}
-				}
-				if !hasTel {
-					parentClassify.HasTeleconference = 0
-					updateParent = true
-				}
-			}
-		}
-		if updateParent {
-			if err = parentClassify.UpdateClassify(updateCols); err != nil {
-				br.Msg = "更新父级分类失败"
-				br.ErrMsg = "更新父级分类失败, Err:" + err.Error()
-				return
-			}
-		}
-	}*/
+
 	err = models.AddClassify(classify)
 	if err != nil {
 		return
 	}
-
+	/* 国能补充需求调整
 	//获取报告分类权限列表
 	err = models.EditChartPermissionSearchKeyWordMappingMulti(classifyName, chartPermissionIdList, classify.Id)
 	if err != nil {
@@ -358,7 +285,7 @@ func AddReportClassify(classifyName string, parentId int, chartPermissionIdList
 	// 修改CRM权限
 	go func() {
 		_ = EditClassifyChartPermissionSync(classifyName, classify.Id)
-	}()
+	}()*/
 
 	// 如果父级分类不为空的话,那么就标记有子级分类,同时
 	if parentClassifyItem != nil {
@@ -704,7 +631,7 @@ func EditReportClassify(classifyId int, classifyName string, chartPermissionIdLi
 		}
 		return
 	}
-	originName := item.ClassifyName
+	//originName := item.ClassifyName
 
 	// 重名校验
 	existName, e := models.GetClassifyByName(classifyName, item.ParentId)
@@ -730,23 +657,23 @@ func EditReportClassify(classifyId int, classifyName string, chartPermissionIdLi
 	if err != nil {
 		return
 	}
-
-	err = models.EditChartPermissionSearchKeyWordMappingMulti(item.ClassifyName, chartPermissionIdList, item.Id)
-	if err != nil {
-		errMsg = "修改分类权限失败"
-		return
-	}
-
-	// 修改CRM权限
-	go func() {
-		_ = EditClassifyChartPermissionSync(item.ClassifyName, item.Id)
-	}()
-
-	// TODO 修改分类的关联品种时,历史报告中关联的品种怎么处理?
-	// 更新报告分类名称/父级分类后
-	go func() {
-		_ = AfterUpdateClassifyNameOrParent(item.Id, item.ParentId, item.ParentId, originName, item.ClassifyName, item.Level)
-	}()
+	/* 	国能补充需求调整
+	   	err = models.EditChartPermissionSearchKeyWordMappingMulti(item.ClassifyName, chartPermissionIdList, item.Id)
+	   	if err != nil {
+	   		errMsg = "修改分类权限失败"
+	   		return
+	   	}
+
+	   	// 修改CRM权限
+	   	go func() {
+	   		_ = EditClassifyChartPermissionSync(item.ClassifyName, item.Id)
+	   	}()
+
+	   	// TODO 修改分类的关联品种时,历史报告中关联的品种怎么处理?
+	   	// 更新报告分类名称/父级分类后
+	   	go func() {
+	   		_ = AfterUpdateClassifyNameOrParent(item.Id, item.ParentId, item.ParentId, originName, item.ClassifyName, item.Level)
+	   	}()*/
 
 	return
 }

+ 20 - 18
services/report_v2.go

@@ -798,26 +798,28 @@ func EditChapterBaseInfoAndPermission(reportInfo *models.Report, reportChapterIn
 			delChapterPermissionMap[v.ChartPermissionId] = v
 		}
 
-		for _, permissionId := range permissionIdList {
-			_, ok := currChapterPermissionMap[permissionId]
-			// 如果存在,那么从 “需要删除的报告章节品种权限配置” 的map中移除
-			if ok {
-				delete(delChapterPermissionMap, permissionId)
-				continue
+		// 国能补充需求调整
+		/*
+			for _, permissionId := range permissionIdList {
+				_, ok := currChapterPermissionMap[permissionId]
+				// 如果存在,那么从 “需要删除的报告章节品种权限配置” 的map中移除
+				if ok {
+					delete(delChapterPermissionMap, permissionId)
+					continue
+				}
+				// 如果不存在,那么就新增品种权限配置
+				addChapterPermissionList = append(addChapterPermissionList, &report.ReportChapterPermissionMapping{
+					//ReportChapterPermissionMappingId:         0,
+					ReportChapterId:   reportChapterInfo.ReportChapterId,
+					ChartPermissionId: permissionId,
+					CreateTime:        time.Now(),
+				})
 			}
-			// 如果不存在,那么就新增品种权限配置
-			addChapterPermissionList = append(addChapterPermissionList, &report.ReportChapterPermissionMapping{
-				//ReportChapterPermissionMappingId:         0,
-				ReportChapterId:   reportChapterInfo.ReportChapterId,
-				ChartPermissionId: permissionId,
-				CreateTime:        time.Now(),
-			})
-		}
 
-		// 查出需要移除的品种权限配置
-		for _, v := range delChapterPermissionMap {
-			delChapterPermissionMappingIdList = append(delChapterPermissionMappingIdList, v.ReportChapterPermissionMappingId)
-		}
+			// 查出需要移除的品种权限配置
+			for _, v := range delChapterPermissionMap {
+				delChapterPermissionMappingIdList = append(delChapterPermissionMappingIdList, v.ReportChapterPermissionMappingId)
+			}*/
 	}
 
 	err = models.EditChapterBaseInfoAndPermission(reportInfo, reportChapterInfo, updateCols, addChapterAdminList, addChapterPermissionList, delReportChapterGrantIdList, delChapterPermissionMappingIdList)

+ 16 - 15
utils/constants.go

@@ -6,21 +6,22 @@ import (
 
 // 常量定义
 const (
-	FormatTime                 = "15:04:05"                //时间格式
-	FormatTimeHm               = "15:04"                   //时间格式
-	FormatDate                 = "2006-01-02"              //日期格式
-	FormatDateUnSpace          = "20060102"                //日期格式
-	FormatDateTime             = "2006-01-02 15:04:05"     //完整时间格式
-	HlbFormatDateTime          = "2006-01-02_15:04:05.999" //完整时间格式
-	FormatDateTimeUnSpace      = "20060102150405"          //完整时间格式
-	FormatShortDateTimeUnSpace = "060102150405"            //省去开头两位年份的时间格式
-	EmptyDateTimeStr           = "0000-00-00 00:00:00"     //DateTime零值字符串
-	EmptyDateStr               = "0000-00-00"              //Date零值字符串
-	FormatMonthDayUnSpace      = "0102"                    //日期格式
-	FormatMonthDay             = "01-02"                   //日期格式
-	FormatYearMonthDate        = "2006-01"                 //日期格式
-	FormatYearDate             = "2006"                    //日期格式
-	PageSize15                 = 15                        //列表页每页数据量
+	FormatTime                 = "15:04:05"                  //时间格式
+	FormatTimeHm               = "15:04"                     //时间格式
+	FormatDate                 = "2006-01-02"                //日期格式
+	FormatDateWallWithLoc      = "2006-01-02T15:04:05-07:00" //日期格式
+	FormatDateUnSpace          = "20060102"                  //日期格式
+	FormatDateTime             = "2006-01-02 15:04:05"       //完整时间格式
+	HlbFormatDateTime          = "2006-01-02_15:04:05.999"   //完整时间格式
+	FormatDateTimeUnSpace      = "20060102150405"            //完整时间格式
+	FormatShortDateTimeUnSpace = "060102150405"              //省去开头两位年份的时间格式
+	EmptyDateTimeStr           = "0000-00-00 00:00:00"       //DateTime零值字符串
+	EmptyDateStr               = "0000-00-00"                //Date零值字符串
+	FormatMonthDayUnSpace      = "0102"                      //日期格式
+	FormatMonthDay             = "01-02"                     //日期格式
+	FormatYearMonthDate        = "2006-01"                   //日期格式
+	FormatYearDate             = "2006"                      //日期格式
+	PageSize15                 = 15                          //列表页每页数据量
 	PageSize5                  = 5
 	PageSize10                 = 10
 	PageSize20                 = 20