zoie 1 vuosi sitten
vanhempi
commit
e8bfb6aacd
2 muutettua tiedostoa jossa 77 lisäystä ja 32 poistoa
  1. 49 7
      controllers/TaskData.go
  2. 28 25
      models/Task/TaskData.go

+ 49 - 7
controllers/TaskData.go

@@ -313,7 +313,7 @@ func (c *TaskDataController) TaskData_AddS_Excel() {
 		c.ServeJSON()
 		return
 	}
-	var T_Data_list_x = 0
+	var T_Data_list_x int
 	snMaps := make(map[string]string)
 	var valueStrings []string
 	for k, val := range rows {
@@ -336,8 +336,8 @@ func (c *TaskDataController) TaskData_AddS_Excel() {
 			return
 		}
 		t, _ := lib.ReplaceSeconds(val[4])
-		valueStrings = append(valueStrings, fmt.Sprintf("('%s','%s',%v,%v,'%v')", val[0], val[1], val[2], val[3], t))
-		T_Data_list_x += 1
+		valueStrings = append(valueStrings, fmt.Sprintf("('%s','%s',%v,%v,'%s')", val[0], val[1], val[2], val[3], t))
+		//T_Data_list_x += 1
 	}
 
 	for T_id, T_sn := range snMaps {
@@ -365,14 +365,56 @@ func (c *TaskDataController) TaskData_AddS_Excel() {
 		}
 	}
 
-	_, is := Task.Adds_TaskData(Task_r.T_task_id, valueStrings)
-	if !is {
-		c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: 0}
+	// 删除重复数据
+	err = Task.DeleteDeduplicate(T_task_id)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "导入失败"}
 		c.ServeJSON()
 		return
 	}
+	// 创建唯一缩影
+	err = Task.Create_Unique_Index(T_task_id)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "导入失败"}
+		c.ServeJSON()
+		return
+	}
+
+	pageSize := 10000                          // 每页的条数
+	totalPages := len(valueStrings) / pageSize // 总页数
+
+	// 遍历每一页
+	for page := 1; page <= totalPages+1; page++ {
+
+		// 计算当前页的起始索引和结束索引
+		startIndex := (page - 1) * pageSize
+		if startIndex > len(valueStrings) {
+			startIndex = len(valueStrings)
+		}
+		endIndex := page * pageSize
+
+		// 边界判断,如果结束索引超过列表长度,则将结束索引设置为列表最后一个元素的索引加一
+		if endIndex > len(valueStrings) {
+			endIndex = len(valueStrings)
+		}
+
+		fmt.Printf("startIndex %d endIndex %d\n", startIndex, endIndex)
+
+		// 获取当前页的数据
+		currentList := valueStrings[startIndex:endIndex]
+		err = Task.Adds_TaskData(T_task_id, currentList)
+		if err == nil {
+			T_Data_list_x += len(currentList)
+		}
+
+	}
+
+	//err = Task.Adds_TaskData(T_task_id, valueStrings)
+
+	// 删除唯一索引
+	Task.Delete_Unique_Index(T_task_id)
 
-	System.Add_UserLogs_T(T_uuid, "本地版-任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+string(T_Data_list_x))
+	System.Add_UserLogs_T(T_uuid, "本地版-任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+strconv.Itoa(T_Data_list_x))
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: strconv.Itoa(T_Data_list_x)}
 	c.ServeJSON()

+ 28 - 25
models/Task/TaskData.go

@@ -35,7 +35,7 @@ func (t *TaskData) TableName() string {
 var redisCache_TaskData cache.Cache
 
 func init() {
-	orm2.Debug = true
+	//orm2.Debug = true
 	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
 		"redis_"+"TaskData", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
 	logs.Println(config)
@@ -398,49 +398,52 @@ func Add_TaskData(T_task_id string, T_sn string, T_id string, T_t string, T_rh s
 	return true
 }
 
-func Adds_TaskData(T_task_id string, valueStrings []string) (int64, bool) {
-
+// 创建唯一索引
+func Create_Unique_Index(T_task_id string) error {
+	// 创建索引
 	o := orm.NewOrm()
-
-	// 删除重复数据
-	err := DeleteDeduplicate(T_task_id)
-	if err != nil {
+	createIndexSql := "ALTER TABLE z_task_data_" + T_task_id + " ADD CONSTRAINT unique_index_t_sn_t_id_t_time UNIQUE (t_sn, t_id, t_time);"
+	//fmt.Println(sql)
+	_, err := o.Raw(createIndexSql).Exec()
+	if err != nil && !strings.Contains(err.Error(), "Duplicate key name 'unique_index_t_sn_t_id_t_time'") {
 		logs.Error(lib.FuncName(), err)
-		return 0, false
+		return err
 	}
+	return nil
+}
 
+// 删除唯一索引
+func Delete_Unique_Index(T_task_id string) error {
 	// 创建索引
-	createIndexSql := "ALTER TABLE z_task_data_" + T_task_id + " ADD CONSTRAINT unique_index_t_sn_t_id_t_time UNIQUE (t_sn, t_id, t_time);"
+	o := orm.NewOrm()
+	// 删除索引
+	deleteIndexSql := "ALTER TABLE z_task_data_" + T_task_id + " DROP INDEX unique_index_t_sn_t_id_t_time;"
 	//fmt.Println(sql)
-	_, err = o.Raw(createIndexSql).Exec()
-	if err != nil && !strings.Contains(err.Error(), "Duplicate key name 'unique_index_t_sn_t_id_t_time'") {
+	_, err := o.Raw(deleteIndexSql).Exec()
+	if err != nil {
 		logs.Error(lib.FuncName(), err)
-		return 0, false
+		return err
 	}
+	return nil
+}
+
+func Adds_TaskData(T_task_id string, valueStrings []string) error {
+
+	o := orm.NewOrm()
 
 	// 插入数据
 	sql := "INSERT INTO z_task_data_" + T_task_id + " (`t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) VALUES"
 	sql += strings.Join(valueStrings, ",")
 	sql += " ON DUPLICATE KEY UPDATE t_t = VALUES(t_t), t_rh = VALUES(t_rh)"
 	//fmt.Println(sql)
-	res, err := o.Raw(sql).Exec()
-	if err != nil {
-		logs.Error(lib.FuncName(), err)
-		return 0, false
-	}
-
-	// 删除索引
-	deleteIndexSql := "ALTER TABLE z_task_data_" + T_task_id + " DROP INDEX unique_index_t_sn_t_id_t_time;"
-	//fmt.Println(sql)
-	_, err = o.Raw(deleteIndexSql).Exec()
+	_, err := o.Raw(sql).Exec()
 	if err != nil {
 		logs.Error(lib.FuncName(), err)
-		return 0, false
+		return err
 	}
-	num, _ := res.RowsAffected()
 
 	//fmt.Println("mysql row affected nums: ", num)
-	return num, true
+	return nil
 }
 
 // 修改