Browse Source

Merge branch 'fix/250120' into debug

# Conflicts:
#	utils/common.go
Roc 1 month ago
parent
commit
7062bf604f
3 changed files with 79 additions and 23 deletions
  1. 5 23
      controllers/data_manage/ai_predict_model/index.go
  2. 9 0
      services/binlog/handler.go
  3. 65 0
      utils/common.go

+ 5 - 23
controllers/data_manage/ai_predict_model/index.go

@@ -298,13 +298,7 @@ func (this *AiPredictModelIndexController) Import() {
 				// 其余信息
 				imports[indexName].Index.ModelFramework = strings.TrimSpace(cells[2].String())
 				strDate := strings.TrimSpace(cells[4].String())
-				predictDate, _ := time.Parse("2006/01/02", strDate)
-				if predictDate.IsZero() {
-					predictDate, _ = time.Parse("01-02-06", strDate)
-					if predictDate.IsZero() {
-						predictDate, _ = time.Parse("2006/1/2", strDate)
-					}
-				}
+				predictDate, _ := utils.GetExcelDate(strDate)
 				imports[indexName].Index.PredictDate = predictDate
 
 				strVal := strings.TrimSpace(cells[5].String())
@@ -387,15 +381,9 @@ func (this *AiPredictModelIndexController) Import() {
 					case 1:
 						// 日期列
 						strDate := strings.TrimSpace(cell.String())
-						dataDate, _ := time.Parse("2006/01/02", strDate)
+						dataDate, _ := utils.GetExcelDate(strDate)
 						if dataDate.IsZero() {
-							dataDate, _ = time.Parse("01-02-06", strDate)
-							if dataDate.IsZero() {
-								dataDate, _ = time.Parse("2006/1/2", strDate)
-								if dataDate.IsZero() {
-									continue
-								}
-							}
+							continue
 						}
 						colKeys[ck].DataDate = dataDate
 						colKeys[ck+1].DataDate = dataDate
@@ -530,15 +518,9 @@ func (this *AiPredictModelIndexController) Import() {
 					case 1:
 						// 日期列
 						strDate := strings.TrimSpace(cell.String())
-						dataDate, _ := time.Parse("2006/01/02", strDate)
+						dataDate, _ := utils.GetExcelDate(strDate)
 						if dataDate.IsZero() {
-							dataDate, _ = time.Parse("01-02-06", strDate)
-							if dataDate.IsZero() {
-								dataDate, _ = time.Parse("2006/1/2", strDate)
-								if dataDate.IsZero() {
-									continue
-								}
-							}
+							continue
 						}
 						colKeys[ck].DataDate = dataDate
 						colKeys[ck+1].DataDate = dataDate

+ 9 - 0
services/binlog/handler.go

@@ -190,9 +190,18 @@ func (h *EdbEventHandler) Update(e *canal.RowsEvent) error {
 }
 
 func (h *EdbEventHandler) MapRowToStruct(columns []schema.TableColumn, row []interface{}) edbmonitorSvr.EdbInfoBingLog {
+	defer func() {
+		if r := recover(); r != nil {
+			utils.FileLog.Info(fmt.Sprintf("binlog update data source panic;data:%v; err: %v", columns, r))
+		}
+	}()
 	newEdbInfo := edbmonitorSvr.EdbInfoBingLog{}
 	for i, column := range columns {
 		value := reflect.ValueOf(row[i])
+		// 数据无效的话,那么就过滤掉
+		if !value.IsValid() {
+			continue
+		}
 		switch column.Name {
 		case "edb_info_id":
 			newEdbInfo.EdbInfoId = int(value.Int())

+ 65 - 0
utils/common.go

@@ -2867,3 +2867,68 @@ func FindMinMax(numbers []float64) (min float64, max float64) {
 
 	return min, max
 }
+
+// IsAdminRole
+// @Description: 判断是否管理员角色
+// @author: Roc
+// @datetime 2024-11-12 09:40:48
+// @param roleTypeCode string
+// @return bool
+func IsAdminRole(roleTypeCode string) bool {
+	return roleTypeCode == ROLE_TYPE_CODE_ADMIN
+}
+
+// FindMinMax 取出数组中的最小值和最大值
+func FindMinMax(numbers []float64) (min float64, max float64) {
+	if len(numbers) == 0 {
+		return 0, 0 // 如果切片为空,返回0, 0
+	}
+
+	min, max = numbers[0], numbers[0] // 初始化 min 和 max 为切片的第一个元素
+
+	for _, num := range numbers {
+		if num < min {
+			min = num
+		}
+		if num > max {
+			max = num
+		}
+	}
+
+	return min, max
+}
+
+// GetExcelDate
+// @Description: 获取excel的日期
+// @author: Roc
+// @datetime 2025-01-20 10:10:42
+// @param strDate string
+// @return newDate time.Time
+// @return err error
+func GetExcelDate(strDate string) (newDate time.Time, err error) {
+	newDate, _ = time.ParseInLocation("2006/01/02", strDate, time.Local)
+	if !newDate.IsZero() {
+		return
+	}
+	newDate, _ = time.ParseInLocation("01-02-06", strDate, time.Local)
+	if !newDate.IsZero() {
+		return
+	}
+
+	newDate, _ = time.ParseInLocation("2006/1/2", strDate, time.Local)
+	if !newDate.IsZero() {
+		return
+	}
+
+	//可能是excel的日期格式
+	_, tmpErr := strconv.Atoi(strDate)
+	if tmpErr != nil {
+		err = tmpErr
+		return
+	}
+
+	newDateStr := ConvertToFormatDay(strDate) //录入日期
+	newDate, _ = time.ParseInLocation(FormatDate, newDateStr, time.Local)
+
+	return
+}