Roc 1 개월 전
부모
커밋
c047924f98
3개의 변경된 파일49개의 추가작업 그리고 23개의 파일을 삭제
  1. 5 23
      controllers/data_manage/ai_predict_model/index.go
  2. 9 0
      services/binlog/handler.go
  3. 35 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())

+ 35 - 0
utils/common.go

@@ -2822,3 +2822,38 @@ func FindMinMax(numbers []float64) (min float64, max float64) {
 func IsAdminRole(roleTypeCode string) bool {
 	return roleTypeCode == ROLE_TYPE_CODE_ADMIN
 }
+
+// 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
+}