Browse Source

fix:审批

Roc 3 months ago
parent
commit
831a75eb22

+ 26 - 0
controllers/data_manage/chart_info_share.go

@@ -14,6 +14,7 @@ import (
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"sort"
+	"strconv"
 	"strings"
 )
 
@@ -120,6 +121,31 @@ func (c *ChartInfoShareController) Save() {
 		return
 	}
 
+	if req.ChartInfoId <= 0 {
+		br.Msg = `请选择图表`
+		br.IsSendEmail = false
+		return
+	}
+
+	chartItem, err := data_manage.GetChartInfoById(req.ChartInfoId)
+	if err != nil {
+		br.Msg = "查找图表失败"
+		br.ErrMsg = "查找图表失败,Err:" + err.Error()
+		return
+	}
+	if chartItem.ChartInfoId <= 0 {
+		br.Msg = "图表不存在"
+		br.ErrMsg = "图表不存在,ChartInfoId:" + strconv.Itoa(req.ChartInfoId)
+		br.IsSendEmail = false
+		return
+	}
+	if chartItem.SysUserId != c.SysUser.AdminId {
+		br.Msg = "您没有权限设置共享"
+		br.ErrMsg = "您没有权限设置共享,EdbInfoId:" + strconv.Itoa(req.ChartInfoId)
+		br.IsSendEmail = false
+		return
+	}
+
 	obj := data_manage.ChartInfoShare{}
 	err = obj.SaveChartInfoShare([]int{req.ChartInfoId}, req.UserIdList, req.ShareType)
 	if err != nil {

+ 16 - 0
controllers/data_manage/chart_public.go

@@ -51,6 +51,7 @@ func (c *ChartPublicController) Save() {
 	if len(req.ChartInfoList) <= 0 {
 		br.Msg = `请选择指标`
 		br.IsSendEmail = false
+		return
 	}
 
 	// 待处理的资产
@@ -185,6 +186,7 @@ func (c *ChartPublicController) Cancel() {
 	if len(req.ChartInfoList) <= 0 {
 		br.Msg = `请选择指标`
 		br.IsSendEmail = false
+		return
 	}
 
 	// 待处理的资产
@@ -435,6 +437,20 @@ func (c *ChartPublicController) BatchMoveChart() {
 		return
 	}
 
+	// 校验分类
+	obj := data_manage.ChartPublicClassify{}
+	publicClassifyItem, err := obj.GetChartClassifyById(req.NewClassifyId)
+	if err != nil {
+		br.Msg = "获取公共分类失败!"
+		br.ErrMsg = "获取公共分类失败!" + err.Error()
+		return
+	}
+	if publicClassifyItem.ChartPublicClassifyId <= 0 {
+		br.Msg = "公共分类不存在!"
+		br.ErrMsg = "公共分类不存在!"
+		return
+	}
+
 	chartInfoIdList := make([]int, 0)
 	if req.IsSelectAll {
 		// 获取指标

+ 5 - 4
controllers/data_manage/data_approve/data_approve.go

@@ -24,6 +24,7 @@ type DataApproveController struct {
 // @Description 审批列表
 // @Param   PageSize			query	int		true	"每页数据条数"
 // @Param   CurrentIndex		query	int		true	"当前页页码"
+// @Param   DataType			query   int     true	"审批类型;1:指标审批;2:图表审批"
 // @Param   ListType			query   int     true	"列表类型:1-待处理;2-已处理;3-我发起的"
 // @Param   ClassifyId			query	int		false	"分类ID"
 // @Param   Keyword				query	string	false	"搜索关键词"
@@ -48,6 +49,7 @@ func (this *DataApproveController) List() {
 	sysUser := this.SysUser
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
+	dataType, _ := this.GetInt("DataType", utils.DataApproveTypeEdb)
 	listType, _ := this.GetInt("ListType")
 	approveState, _ := this.GetInt("ApproveState")
 	timeType, _ := this.GetInt("TimeType")
@@ -55,7 +57,6 @@ func (this *DataApproveController) List() {
 	endTime := this.GetString("EndTime")
 	sortField, _ := this.GetInt("SortField")
 	sortRule, _ := this.GetInt("SortRule")
-	classifyId, _ := this.GetInt("ClassifyId")
 	keyword := this.GetString("Keyword")
 
 	if pageSize <= 0 {
@@ -73,11 +74,11 @@ func (this *DataApproveController) List() {
 
 	switch listType {
 	case 1:
-		list, total, msg, err = dataApproveServ.ProcessingDataApprove(sysUser.AdminId, classifyId, timeType, sortField, sortRule, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
+		list, total, msg, err = dataApproveServ.ProcessingDataApprove(sysUser.AdminId, dataType, timeType, sortField, sortRule, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
 	case 2:
-		list, total, msg, err = dataApproveServ.SolvedDataApprove(sysUser.AdminId, classifyId, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
+		list, total, msg, err = dataApproveServ.SolvedDataApprove(sysUser.AdminId, dataType, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
 	case 3:
-		list, total, msg, err = dataApproveServ.MyApplyDataApproves(sysUser.AdminId, classifyId, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
+		list, total, msg, err = dataApproveServ.MyApplyDataApproves(sysUser.AdminId, dataType, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
 	default:
 		br.Msg = "列表类型错误"
 		return

+ 30 - 0
controllers/data_manage/data_approve/data_approve_flow.go

@@ -8,6 +8,8 @@ import (
 	DataApprove "eta_gn/eta_api/services/data/data_approve"
 	"eta_gn/eta_api/utils"
 	"fmt"
+	"strconv"
+	"strings"
 )
 
 type DataApproveFlowController struct {
@@ -142,6 +144,34 @@ func (c *DataApproveFlowController) Detail() {
 		return
 	}
 
+	ignoreApproveUserIdList := []int{}
+	{
+		var businessConf *models.BusinessConf
+		switch dataType {
+		case utils.DataApproveTypeEdb:
+			businessConf, err = models.GetBusinessConfByKey(models.IgnoreEdbApproveUserId)
+		case utils.DataApproveTypeChart:
+			businessConf, err = models.GetBusinessConfByKey(models.IgnoreChartApproveUserId)
+		}
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取商家配置失败, Err: " + err.Error()
+			return
+		}
+		if businessConf.ConfVal != `` {
+			tmpIgnoreUserIdStrList := strings.Split(businessConf.ConfVal, `,`)
+			for _, v := range tmpIgnoreUserIdStrList {
+				userId, tmpErr := strconv.Atoi(v)
+				if tmpErr != nil {
+					continue
+				}
+				ignoreApproveUserIdList = append(ignoreApproveUserIdList, userId)
+			}
+		}
+	}
+
+	detail.IgnoreApproveUserIdList = ignoreApproveUserIdList
+
 	br.Data = detail
 	br.Ret = 200
 	br.Success = true

+ 25 - 0
controllers/data_manage/edb_info_share.go

@@ -13,6 +13,7 @@ import (
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"strconv"
 	"strings"
 )
 
@@ -119,6 +120,30 @@ func (c *EdbInfoShareController) Save() {
 		return
 	}
 
+	if req.EdbInfoId <= 0 {
+		br.Msg = `请选择指标`
+		br.IsSendEmail = false
+		return
+	}
+	edbItem, err := data_manage.GetEdbInfoById(req.EdbInfoId)
+	if err != nil {
+		br.Msg = "查找指标失败"
+		br.ErrMsg = "查找指标失败,Err:" + err.Error()
+		return
+	}
+	if edbItem.EdbInfoId <= 0 {
+		br.Msg = "指标不存在"
+		br.ErrMsg = "指标不存在,ChartInfoId:" + strconv.Itoa(req.EdbInfoId)
+		br.IsSendEmail = false
+		return
+	}
+	if edbItem.SysUserId != c.SysUser.AdminId {
+		br.Msg = "您没有权限设置共享"
+		br.ErrMsg = "您没有权限设置共享,EdbInfoId:" + strconv.Itoa(req.EdbInfoId)
+		br.IsSendEmail = false
+		return
+	}
+
 	obj := data_manage.EdbInfoShare{}
 	err = obj.SaveEdbInfoShare([]int{req.EdbInfoId}, req.UserIdList, req.ShareType)
 	if err != nil {

+ 16 - 0
controllers/data_manage/edb_public.go

@@ -224,6 +224,7 @@ func (c *EdbPublicController) Save() {
 	if len(req.EdbInfoList) <= 0 {
 		br.Msg = `请选择指标`
 		br.IsSendEmail = false
+		return
 	}
 
 	// 待处理的资产
@@ -358,6 +359,7 @@ func (c *EdbPublicController) Cancel() {
 	if len(req.EdbInfoList) <= 0 {
 		br.Msg = `请选择指标`
 		br.IsSendEmail = false
+		return
 	}
 
 	// 待处理的资产
@@ -634,6 +636,20 @@ func (c *EdbPublicController) BatchMoveEdb() {
 		return
 	}
 
+	// 校验分类
+	obj := data_manage.EdbPublicClassify{}
+	publicClassifyItem, err := obj.GetEdbClassifyById(req.NewClassifyId)
+	if err != nil {
+		br.Msg = "获取公共分类失败!"
+		br.ErrMsg = "获取公共分类失败!" + err.Error()
+		return
+	}
+	if publicClassifyItem.EdbPublicClassifyId <= 0 {
+		br.Msg = "公共分类不存在!"
+		br.ErrMsg = "公共分类不存在!"
+		return
+	}
+
 	edbInfoIdList := make([]int, 0)
 	if req.IsSelectAll {
 		// 获取指标

+ 3 - 2
models/data_manage/data_approve/response/approve_flow.go

@@ -20,8 +20,9 @@ type DataApproveFlowListResp struct {
 }
 
 type DataApproveFlowDetailResp struct {
-	DataApproveFlowItem `description:"审批流信息"`
-	Nodes               []*DataApproveNodeItem `description:"节点信息"`
+	DataApproveFlowItem     `description:"审批流信息"`
+	Nodes                   []*DataApproveNodeItem `description:"节点信息"`
+	IgnoreApproveUserIdList []int                  `description:"忽略审批人ID列表"`
 }
 
 type DataApproveNodeUser struct {

+ 0 - 1
models/data_manage/request/public_chart.go

@@ -29,7 +29,6 @@ type SetChartPublicChartReq struct {
 // @Description: 获取图表列表(设置公开的时候)请求结构体
 type SearchPublicChartReq struct {
 	ChartPublicList      []int  `description:"图表公开状态:1:未公开,2:已提交;3:已公开。可多选,默认是未公开"`
-	SourceList           []int  `description:"来源id"`
 	Keyword              string `description:"关键字"`
 	ClassifyIdList       []int  `description:"图表分类选择,如果不指定分类,那么就是所有分类"`
 	PublicClassifyIdList []int  `description:"图表所属公共分类id,如果不指定分类,那么就是所有分类"`

+ 33 - 20
services/data/data_approve/approve.go

@@ -255,7 +255,7 @@ func PassDataApprove(approveId int, adminId int) (msg string, err error) {
 		}
 	}
 
-	// 最后一个审批, 更新审批记录、审批、报告状态、推送消息给申请人
+	// 最后一个审批, 更新审批记录、审批、资产状态、推送消息给申请人
 	if lastApprove {
 		if e = recordItem.Update(recordCols); e != nil {
 			err = fmt.Errorf("更新审批记录状态失败, Err: %s", e.Error())
@@ -270,7 +270,7 @@ func PassDataApprove(approveId int, adminId int) (msg string, err error) {
 			return
 		}
 		if e = updateDataApproveState(approveItem, DataApproveStatePass); e != nil {
-			err = fmt.Errorf("更新报告审批状态失败, Err: %s", e.Error())
+			err = fmt.Errorf("更新资产审批状态失败, Err: %s", e.Error())
 			return
 		}
 
@@ -423,7 +423,23 @@ func UpdatePublicByDataList(dataType, dataApproveState int, dataList []SetDataPu
 	// 指标库
 	case utils.DataApproveTypeChart:
 		// 图库
-		// TODO
+		switch dataApproveState {
+		case DataApproveStateApproving:
+			err = data_manage.UpdatePublicChart(dataIdList, utils.DataPublicSuccess)
+		case DataApproveStatePass:
+			for _, dataItem := range dataList {
+				err = data_manage.UpdatePublicChartSuccess(dataItem.DataId, dataItem.ClassifyId)
+			}
+		case DataApproveStateRefuse:
+			err = data_manage.UpdatePublicChart(dataIdList, utils.DataPublicReject)
+		case DataApproveStateCancel:
+			err = data_manage.UpdatePublicChart(dataIdList, utils.DataPublicDefault)
+		}
+
+		// 更新ES
+		for _, dataId := range dataIdList {
+			data.EsAddOrEditChartInfo(dataId)
+		}
 	}
 
 	return
@@ -436,10 +452,9 @@ func ProcessingDataApprove(adminId, dataType, timeType, sortField, sortRule, sta
 	order := ""
 
 	// 筛选条件
-	if dataType > 0 {
-		cond += fmt.Sprintf(` AND b.%s = ?`, dataApproveModel.DataApproveCols.DataType)
-		pars = append(pars, dataType)
-	}
+	cond += fmt.Sprintf(` AND b.%s = ?`, dataApproveModel.DataApproveCols.DataType)
+	pars = append(pars, dataType)
+
 	if timeType <= 0 {
 		timeType = 1
 	}
@@ -505,10 +520,9 @@ func SolvedDataApprove(adminId, dataType, timeType, sortField, sortRule, approve
 	order := ""
 
 	// 筛选条件
-	if dataType > 0 {
-		cond += fmt.Sprintf(` AND b.%s = ?`, dataApproveModel.DataApproveCols.DataType)
-		pars = append(pars, dataType)
-	}
+	cond += fmt.Sprintf(` AND b.%s = ?`, dataApproveModel.DataApproveCols.DataType)
+	pars = append(pars, dataType)
+
 	if timeType > 0 && startTime != "" && endTime != "" {
 		_, e := time.Parse(utils.FormatDate, startTime)
 		if e != nil {
@@ -579,10 +593,9 @@ func MyApplyDataApproves(adminId, dataType, timeType, sortField, sortRule, appro
 	order := ""
 
 	// 筛选条件
-	if dataType > 0 {
-		cond += fmt.Sprintf(` AND a.%s = ?`, dataApproveModel.DataApproveCols.DataType)
-		pars = append(pars, dataType)
-	}
+	cond += fmt.Sprintf(` AND a.%s = ?`, dataApproveModel.DataApproveCols.DataType)
+	pars = append(pars, dataType)
+
 	if timeType > 0 && startTime != "" && endTime != "" {
 		_, e := time.Parse(utils.FormatDate, startTime)
 		if e != nil {
@@ -878,7 +891,7 @@ func refuseDataApprove(approveItem *dataApproveModel.DataApprove, recordItem *da
 		return
 	}
 
-	// 驳回-更新审批, 报告状态, 推送消息
+	// 驳回-更新审批, 资产状态, 推送消息
 	approveItem.State = DataApproveStateRefuse
 	approveItem.ApproveRemark = approveRemark
 	approveItem.ApproveTime = now
@@ -890,7 +903,7 @@ func refuseDataApprove(approveItem *dataApproveModel.DataApprove, recordItem *da
 	}
 
 	if e := updateDataApproveState(approveItem, DataApproveStateRefuse); e != nil {
-		err = fmt.Errorf("更新报告状态失败, Err: %s", e.Error())
+		err = fmt.Errorf("更新资产状态失败, Err: %s", e.Error())
 		return
 	}
 
@@ -978,10 +991,10 @@ func cancelDataApprove(item *dataApproveModel.DataApprove, approveId, sysAdminId
 		return
 	}
 
-	// 修改报告状态
+	// 修改资产状态
 	e = updateDataApproveState(approveItem, DataApproveStateCancel)
 	if e != nil {
-		err = fmt.Errorf("更新报告审批撤回失败, Err: %s", e.Error())
+		err = fmt.Errorf("更新资产审批撤回失败, Err: %s", e.Error())
 		return
 	}
 
@@ -1019,7 +1032,7 @@ func cancelDataApprove(item *dataApproveModel.DataApprove, approveId, sysAdminId
 	return
 }
 
-// CheckOpenApprove 校验报告是否开启了审批流
+// CheckOpenApprove 校验资产是否开启了审批流
 func CheckOpenApprove(dataType int) (opening bool, err error) {
 	// 查询对应分类是否有审批流
 	flowOb := new(dataApproveModel.DataApproveFlow)

+ 11 - 2
services/data/edb_info.go

@@ -701,8 +701,17 @@ func AddEdbInfo(secName, unit, frequency, noticeTime, mobile string, classifyId,
 
 // AddOrEditEdbInfoToEs 添加/修改ES中的指标
 func AddOrEditEdbInfoToEs(edbInfoId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			utils.FileLog.Error("添加/修改ES中的指标失败; err:%s", err.Error())
+		}
+	}()
 	//添加es
-	itemInfo, _ := data_manage.GetEdbInfoEsByCondition("AND edb_info_id=?", []interface{}{edbInfoId})
+	itemInfo, err := data_manage.GetEdbInfoEsByCondition("AND edb_info_id=?", []interface{}{edbInfoId})
+	if err != nil {
+		return
+	}
 	obj := data_manage.EdbInfoShare{}
 	list, _ := obj.GetListByEdbInfoId(edbInfoId)
 	sharedList := make([]int, 0)
@@ -711,7 +720,7 @@ func AddOrEditEdbInfoToEs(edbInfoId int) {
 	}
 	itemInfo.SharedUserIdList = sharedList
 
-	go elastic.EsAddOrEditEdbInfoData(utils.DATA_INDEX_NAME, strconv.Itoa(itemInfo.EdbInfoId), itemInfo)
+	err = elastic.EsAddOrEditEdbInfoData(utils.DATA_INDEX_NAME, strconv.Itoa(itemInfo.EdbInfoId), itemInfo)
 }
 
 // AddOrEditAllEdbInfoToEs 修复ES中的所有指标

+ 3 - 3
services/elastic/chart.go

@@ -269,7 +269,7 @@ func SearchChartInfoDataByShared(keywordStr string, from, size, chartShare int,
 	if keywordStr != `` {
 		// 默认使用中文名字字段去匹配
 		keywordNameKey := `ChartName`
-		query = query.Must(elastic.NewMatchQuery(keywordStr, keywordNameKey))
+		query = query.Must(elastic.NewMatchQuery(keywordNameKey, keywordStr))
 	}
 
 	// 图表与用户的权限匹配
@@ -339,7 +339,7 @@ func SearchChartInfoDataByPublic(keywordStr string, from, size int, chartPublicL
 		for _, v := range classifyIdList {
 			termsList = append(termsList, v)
 		}
-		query = query.Must(elastic.NewTermsQuery("ClassifyId", termsList...))
+		query = query.Must(elastic.NewTermsQuery("ChartClassifyId", termsList...))
 	}
 
 	// publicClassifyIdList 指定公共分类下的图表
@@ -365,7 +365,7 @@ func SearchChartInfoDataByPublic(keywordStr string, from, size int, chartPublicL
 	if keywordStr != `` {
 		// 默认使用中文名字字段去匹配
 		keywordNameKey := `ChartName`
-		query = query.Must(elastic.NewMatchQuery(keywordStr, keywordNameKey))
+		query = query.Must(elastic.NewMatchQuery(keywordNameKey, keywordStr))
 	}
 
 	// 图表与用户的权限匹配