|
@@ -1167,272 +1167,6 @@ func RefreshManualData(edbCode string) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
-// EdbInfoReplace 替换指标v2版本(更换时间:2022年01月05日15:33:42)
|
|
|
|
-func EdbInfoReplace(oldEdbInfo, newEdbInfo *data_manage.EdbInfo, sysAdminId int, sysAdminRealName string) (replaceChartTotal, replaceCalculateTotal int, err error) {
|
|
|
|
- defer func() {
|
|
|
|
- if err != nil {
|
|
|
|
- fmt.Println("ERR:", err.Error())
|
|
|
|
- }
|
|
|
|
- }()
|
|
|
|
- mappingList, replaceChartTotal, replaceCalculateTotal, err := data_manage.ReplaceChartEdb(oldEdbInfo, newEdbInfo)
|
|
|
|
- if err != nil {
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- //更新指标
|
|
|
|
- err = replaceRelationEdbInfo(mappingList, oldEdbInfo, newEdbInfo, sysAdminId, sysAdminRealName)
|
|
|
|
- return
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// replaceRelationEdbInfo 刷新指标
|
|
|
|
-func replaceRelationEdbInfo(mappingList []*data_manage.EdbInfoCalculateMapping, oldEdbInfo, newEdbInfo *data_manage.EdbInfo, sysAdminId int, sysAdminRealName string) (err error) {
|
|
|
|
- errmsg := ``
|
|
|
|
- defer func() {
|
|
|
|
- if errmsg != "" {
|
|
|
|
- fmt.Println("errmsg:" + errmsg)
|
|
|
|
- }
|
|
|
|
- if err != nil && errmsg != "" {
|
|
|
|
- go alarm_msg.SendAlarmMsg("替换关联指标失败提醒,errmsg:"+errmsg, 3)
|
|
|
|
- //go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"替换指标失败提醒", "errmsg:"+errmsg, utils.EmailSendToUsers)
|
|
|
|
- }
|
|
|
|
- }()
|
|
|
|
- //获取计算指标关联指标
|
|
|
|
- allMappingList := make([]*data_manage.EdbInfoCalculateMapping, 0)
|
|
|
|
- allMapping := make(map[int]int)
|
|
|
|
- tmpMapping := make(map[int]int)
|
|
|
|
- for _, v := range mappingList {
|
|
|
|
- if _, ok := allMapping[v.EdbInfoId]; !ok {
|
|
|
|
- allMappingList = append(allMappingList, v)
|
|
|
|
- }
|
|
|
|
- newList, _ := data_manage.GetAllCalculateV2(v.EdbInfoId, newEdbInfo.EdbInfoId, tmpMapping)
|
|
|
|
- for _, nv := range newList {
|
|
|
|
- if _, ok := allMapping[v.EdbInfoId]; !ok {
|
|
|
|
- allMappingList = append(allMappingList, nv)
|
|
|
|
- }
|
|
|
|
- allMapping[v.EdbInfoId] = v.EdbInfoId
|
|
|
|
- }
|
|
|
|
- allMapping[v.EdbInfoId] = v.EdbInfoId
|
|
|
|
- }
|
|
|
|
- for mk, mv := range allMappingList { //原指标关联的所有计算指标
|
|
|
|
- fmt.Println("mk/mv", mk, mv)
|
|
|
|
- //重新计算计算指标
|
|
|
|
- {
|
|
|
|
- edbInfo, tmpErr := data_manage.GetEdbInfoById(mv.EdbInfoId) //计算指标
|
|
|
|
- err = tmpErr
|
|
|
|
- if err != nil {
|
|
|
|
- if err.Error() == utils.ErrNoRow() {
|
|
|
|
- errmsg = "计算指标已被删除"
|
|
|
|
- } else {
|
|
|
|
- errmsg = "获取计算指标失败:err:" + err.Error()
|
|
|
|
- }
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- fromEdbInfoList, tmpErr := data_manage.GetEdbInfoCalculateDetail(mv.EdbInfoId, edbInfo.Source)
|
|
|
|
- err = tmpErr
|
|
|
|
- if err != nil {
|
|
|
|
- errmsg = "获取计算指标失败:err:" + err.Error()
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if len(fromEdbInfoList) <= 0 {
|
|
|
|
- errmsg = "计算指标所依赖指标不存在"
|
|
|
|
- err = fmt.Errorf("计算指标所依赖指标不存在")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- fromEdbInfoItem := fromEdbInfoList[0]
|
|
|
|
- if fromEdbInfoItem == nil {
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- fromEdbInfo, tmpErr := data_manage.GetEdbInfoById(fromEdbInfoItem.FromEdbInfoId)
|
|
|
|
- err = tmpErr
|
|
|
|
- if err != nil {
|
|
|
|
- errmsg = "获取计算指标 来源指标失败:err:" + err.Error()
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- edbCode := edbInfo.EdbCode
|
|
|
|
- //uniqueCode := edbInfo.UniqueCode
|
|
|
|
- sourName := edbInfo.SourceName
|
|
|
|
- source := edbInfo.Source
|
|
|
|
- subSource := edbInfo.SubSource
|
|
|
|
- edbInfoId := edbInfo.EdbInfoId
|
|
|
|
-
|
|
|
|
- req := &data_manage.EdbInfoCalculateBatchSaveReqByEdbLib{
|
|
|
|
- AdminId: sysAdminId,
|
|
|
|
- AdminName: sysAdminRealName,
|
|
|
|
- EdbInfoId: edbInfoId,
|
|
|
|
- EdbName: edbInfo.EdbName,
|
|
|
|
- Frequency: edbInfo.Frequency,
|
|
|
|
- Unit: edbInfo.Unit,
|
|
|
|
- ClassifyId: edbInfo.ClassifyId,
|
|
|
|
- Formula: edbInfo.CalculateFormula, //N数值移动平均计算、环比值、环差值
|
|
|
|
- FromEdbInfoId: fromEdbInfoList[0].FromEdbInfoId,
|
|
|
|
- Source: edbInfo.Source,
|
|
|
|
- MoveType: edbInfo.MoveType,
|
|
|
|
- MoveFrequency: edbInfo.MoveFrequency,
|
|
|
|
- CalculateFormula: edbInfo.CalculateFormula,
|
|
|
|
- EdbInfoIdArr: nil,
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if source == utils.DATA_SOURCE_CALCULATE_ZJPJ {
|
|
|
|
- edbInfoIdArr := make([]data_manage.EdbInfoFromTag, 0)
|
|
|
|
- //A指标
|
|
|
|
- aFromEdbInfoId := fromEdbInfoList[0].FromEdbInfoId
|
|
|
|
- //找出需要替换的指标
|
|
|
|
- {
|
|
|
|
- for _, v := range fromEdbInfoList {
|
|
|
|
- if v.FromTag == "A" {
|
|
|
|
- if v.FromEdbInfoId == oldEdbInfo.EdbInfoId {
|
|
|
|
- aFromEdbInfoId = newEdbInfo.EdbInfoId
|
|
|
|
- } else {
|
|
|
|
- aFromEdbInfoId = fromEdbInfoList[0].FromEdbInfoId
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if v.FromTag == "B" {
|
|
|
|
- if v.FromEdbInfoId == oldEdbInfo.EdbInfoId {
|
|
|
|
- edbInfoIdArr = append(edbInfoIdArr, data_manage.EdbInfoFromTag{
|
|
|
|
- EdbInfoId: newEdbInfo.EdbInfoId,
|
|
|
|
- FromTag: v.FromTag,
|
|
|
|
- })
|
|
|
|
- } else {
|
|
|
|
- edbInfoIdArr = append(edbInfoIdArr, data_manage.EdbInfoFromTag{
|
|
|
|
- EdbInfoId: v.FromEdbInfoId,
|
|
|
|
- FromTag: v.FromTag,
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- req.FromEdbInfoId = aFromEdbInfoId
|
|
|
|
- req.EdbInfoIdArr = edbInfoIdArr
|
|
|
|
-
|
|
|
|
- sourName = "直接拼接"
|
|
|
|
- if len(req.EdbInfoIdArr) != 1 {
|
|
|
|
- errmsg = "请传入拼接日期之后的指标"
|
|
|
|
- err = fmt.Errorf("请传入拼接日期之后的指标")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- secondEdbInfoReq := req.EdbInfoIdArr[0]
|
|
|
|
- secondEdbInfo, tmpErr := data_manage.GetEdbInfoById(secondEdbInfoReq.EdbInfoId)
|
|
|
|
- err = tmpErr
|
|
|
|
- if err != nil {
|
|
|
|
- errmsg = "获取拼接日期之后的指标信息失败:Err:" + err.Error()
|
|
|
|
- err = fmt.Errorf("获取拼接日期之后的指标信息失败:Err:" + err.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if fromEdbInfo.EdbInfoId == secondEdbInfo.EdbInfoId {
|
|
|
|
- errmsg = "两个指标不允许为同一个"
|
|
|
|
- err = fmt.Errorf("两个指标不允许为同一个")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- } else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { //累计值同比拼接
|
|
|
|
- edbInfoIdArr := make([]data_manage.EdbInfoFromTag, 0)
|
|
|
|
- //A指标
|
|
|
|
- aFromEdbInfoId := fromEdbInfoList[0].FromEdbInfoId
|
|
|
|
- // 找出需要替换的指标
|
|
|
|
- {
|
|
|
|
- for _, v := range fromEdbInfoList {
|
|
|
|
- if v.FromTag == "A" {
|
|
|
|
- if v.FromEdbInfoId == oldEdbInfo.EdbInfoId {
|
|
|
|
- aFromEdbInfoId = newEdbInfo.EdbInfoId
|
|
|
|
- } else {
|
|
|
|
- aFromEdbInfoId = fromEdbInfoList[0].FromEdbInfoId
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if v.FromTag == "B" {
|
|
|
|
- if v.FromEdbInfoId == oldEdbInfo.EdbInfoId {
|
|
|
|
- edbInfoIdArr = append(edbInfoIdArr, data_manage.EdbInfoFromTag{
|
|
|
|
- EdbInfoId: newEdbInfo.EdbInfoId,
|
|
|
|
- FromTag: v.FromTag,
|
|
|
|
- })
|
|
|
|
- } else {
|
|
|
|
- edbInfoIdArr = append(edbInfoIdArr, data_manage.EdbInfoFromTag{
|
|
|
|
- EdbInfoId: v.FromEdbInfoId,
|
|
|
|
- FromTag: v.FromTag,
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- req.FromEdbInfoId = aFromEdbInfoId
|
|
|
|
- req.EdbInfoIdArr = edbInfoIdArr
|
|
|
|
-
|
|
|
|
- sourName = "累计值同比拼接"
|
|
|
|
-
|
|
|
|
- if fromEdbInfo.Frequency != "月度" {
|
|
|
|
- errmsg = "累计值同比拼接,待拼接指标只能筛选月度指标"
|
|
|
|
- err = fmt.Errorf("累计值同比拼接,待拼接指标只能筛选月度指标")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if len(req.EdbInfoIdArr) != 1 {
|
|
|
|
- errmsg = "请传入同比值指标"
|
|
|
|
- err = fmt.Errorf("请传入同比值指标")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- secondEdbInfoReq := req.EdbInfoIdArr[0]
|
|
|
|
- tbzEdbInfo, tmpErr := data_manage.GetEdbInfoById(secondEdbInfoReq.EdbInfoId)
|
|
|
|
- err = tmpErr
|
|
|
|
- if err != nil {
|
|
|
|
- errmsg = "获取同比值指标信息失败:Err:" + err.Error()
|
|
|
|
- err = fmt.Errorf("获取同比值指标信息失败:Err:" + err.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if tbzEdbInfo.Source != utils.DATA_SOURCE_CALCULATE_TBZ {
|
|
|
|
- errmsg = "指标必须是传入同比值指标类型"
|
|
|
|
- err = fmt.Errorf("指标必须是传入同比值指标类型")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if tbzEdbInfo.Frequency != "月度" {
|
|
|
|
- errmsg = "同比值指标只能筛选月度指标"
|
|
|
|
- err = fmt.Errorf("同比值指标只能筛选月度指标")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if fromEdbInfo.EdbInfoId == tbzEdbInfo.EdbInfoId {
|
|
|
|
- errmsg = "两个指标不允许为同一个"
|
|
|
|
- err = fmt.Errorf("两个指标不允许为同一个")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- errmsg = "无效计算方式,source:" + strconv.Itoa(source)
|
|
|
|
- err = fmt.Errorf("无效计算方式,source:" + strconv.Itoa(source))
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 调用指标库去更新
|
|
|
|
- reqJson, tmpErr := json.Marshal(req)
|
|
|
|
- if tmpErr == nil {
|
|
|
|
- respItem, tmpErr := EditEdbCalculateData(string(reqJson))
|
|
|
|
- if err != nil {
|
|
|
|
- err = tmpErr
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if respItem.Ret != 200 {
|
|
|
|
- err = errors.New("修改失败")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- err = tmpErr
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- maxAndMinItem, tmpErr := data_manage.GetEdbInfoMaxAndMinInfo(source, subSource, edbCode)
|
|
|
|
- err = tmpErr
|
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
|
- errmsg = "生成" + sourName + "失败,GetEdbInfoMaxAndMinInfo Err:" + err.Error()
|
|
|
|
- err = fmt.Errorf("生成" + sourName + "失败,GetEdbInfoMaxAndMinInfo Err:" + err.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if maxAndMinItem != nil {
|
|
|
|
- err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
// 获取频度的英文版
|
|
// 获取频度的英文版
|
|
func GetFrequencyEn(frequency string) (frequencyEn string) {
|
|
func GetFrequencyEn(frequency string) (frequencyEn string) {
|
|
switch frequency {
|
|
switch frequency {
|
|
@@ -3058,6 +2792,25 @@ func GetEdbChartAdminList(source int) (list []int, err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// EdbInfoReplace 替换指标v2版本(更换时间:2022年01月05日15:33:42)
|
|
|
|
+func EdbInfoReplace(oldEdbInfo, newEdbInfo *data_manage.EdbInfo, sysAdminId int, sysAdminRealName string) (replaceChartTotal, replaceCalculateTotal int, err error) {
|
|
|
|
+ defer func() {
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println("ERR:", err.Error())
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ // 替换关联表中的source_edb_info_id
|
|
|
|
+ relationEdbInfoIdList, replaceChartTotal, replaceCalculateTotal, err := data_manage.ReplaceChartEdb(oldEdbInfo, newEdbInfo)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 更新所有的关联指标
|
|
|
|
+ err, _ = EdbInfoRefreshAllFromBaseV3(relationEdbInfoIdList, true, true)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
// GetEdbMenuTreeRecursive 递归指标库菜单树
|
|
// GetEdbMenuTreeRecursive 递归指标库菜单树
|
|
func GetEdbMenuTreeRecursive(list []*data_manage.EdbClassifyItems, parentId int) []*data_manage.EdbChartClassify {
|
|
func GetEdbMenuTreeRecursive(list []*data_manage.EdbClassifyItems, parentId int) []*data_manage.EdbChartClassify {
|
|
res := make([]*data_manage.EdbChartClassify, 0)
|
|
res := make([]*data_manage.EdbChartClassify, 0)
|