|
@@ -11,7 +11,6 @@ import (
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
- "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -50,21 +49,19 @@ func CREATE_TaskData(alias_name, T_task_id string) bool {
|
|
|
" `t_time` datetime(0) NULL DEFAULT NULL," +
|
|
|
" PRIMARY KEY (`ID`) USING BTREE" +
|
|
|
") ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;"
|
|
|
+
|
|
|
_, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
return false
|
|
|
}
|
|
|
+
|
|
|
+ //sqlIndex := "ALTER TABLE `z_task_data_" + T_task_id + "` add unique index(`t_sn`,`t_id`,`t_time`);"
|
|
|
+ //logs.Debug(sqlIndex)
|
|
|
+ //o.Raw(sqlIndex).Exec()
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
// ---------------- 特殊方法 -------------------
|
|
|
-// 获取 ById
|
|
|
-//func Read_List_ById(id int) (r TaskData) {
|
|
|
-// o := orm.NewOrm()
|
|
|
-//
|
|
|
-// return r
|
|
|
-//}
|
|
|
-
|
|
|
// 清空
|
|
|
func Truncate_TaskData(alias_name, T_task_id string) bool {
|
|
|
|
|
@@ -72,37 +69,11 @@ func Truncate_TaskData(alias_name, T_task_id string) bool {
|
|
|
|
|
|
sql := "truncate table z_task_data_" + T_task_id
|
|
|
logs.Println(sql)
|
|
|
- o.Raw(sql).Exec()
|
|
|
-
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
-// 添加
|
|
|
-func Import_TaskData(Sn string, T_id int, T_task_id string, Time_start string, Time_end string) bool {
|
|
|
- //if conf.Server_test {
|
|
|
- // return true
|
|
|
- //}
|
|
|
- o := orm.NewOrm()
|
|
|
-
|
|
|
- // 开始插入数据
|
|
|
- sql := "insert into z_task_data_" + T_task_id + "(t_id,t_t,t_rh,t_time) select t_id,t_t,t_rh,t_time from Z_DeviceData_" + Sn
|
|
|
- sql = sql + " WHERE t_time >= '" + Time_start + "' AND t_time <= '" + Time_end + "'"
|
|
|
- // 这里有时间优化 用于一次 prepare 多次 exec,以提高批量执行的速度
|
|
|
- logs.Println(sql)
|
|
|
- res, err := o.Raw(sql).Exec()
|
|
|
+ _, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
return false
|
|
|
}
|
|
|
-
|
|
|
- // 强行替换 ID
|
|
|
- sql = "UPDATE z_task_data_" + T_task_id + " SET `t_sn` = '" + Sn + "',`t_id` = " + strconv.Itoa(T_id) + " WHERE `t_sn` IS NULL"
|
|
|
- // 设备 ID
|
|
|
- //sql = "UPDATE z_task_data_"+T_task_id+" SET `t_sn` = '"+Sn+"' WHERE `t_sn` IS NULL"
|
|
|
- logs.Println(sql)
|
|
|
- o.Raw(sql).Exec()
|
|
|
-
|
|
|
- res.RowsAffected()
|
|
|
return true
|
|
|
}
|
|
|
|
|
@@ -148,8 +119,11 @@ func Read_TaskData_ById_List(T_task_id string, SN string, T_id int, Time_start_
|
|
|
if len(SN) > 0 {
|
|
|
sql_condition += " AND t_sn = '" + SN + "'"
|
|
|
}
|
|
|
+ if len(sql_condition) > 0 {
|
|
|
+ sql_condition = " WHERE " + strings.TrimLeft(sql_condition, " AND ")
|
|
|
+ }
|
|
|
|
|
|
- sql := "SELECT COUNT(ID) FROM z_task_data_" + T_task_id + " WHERE 1=1" + sql_condition
|
|
|
+ sql := "SELECT COUNT(ID) FROM z_task_data_" + T_task_id + sql_condition
|
|
|
|
|
|
fmt.Println(sql)
|
|
|
_, err := o.Raw(sql).ValuesList(&maps_z)
|
|
@@ -161,13 +135,16 @@ func Read_TaskData_ById_List(T_task_id string, SN string, T_id int, Time_start_
|
|
|
}
|
|
|
|
|
|
//fmt.Println("maps_z;",maps_z[0][0])
|
|
|
- sql = "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%m-%d %H:%i:%s') AS t_times,t_time FROM z_task_data_" + T_task_id + " WHERE 1=1" + sql_condition + " ORDER BY t_time DESC "
|
|
|
+ sql = "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%m-%d %H:%i:%s') AS t_times,t_time FROM z_task_data_" + T_task_id + sql_condition + " ORDER BY t_time DESC"
|
|
|
if page_z != 9999 {
|
|
|
sql = sql + " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(pagez)
|
|
|
}
|
|
|
|
|
|
fmt.Println(sql)
|
|
|
_, err = o.Raw(sql).QueryRows(&maps)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ }
|
|
|
|
|
|
//value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", cnt), 64)
|
|
|
key, _ := strconv.Atoi(maps_z[0][0].(string))
|
|
@@ -187,7 +164,11 @@ func Read_TaskData_ById_List_(T_task_id string, SN string, T_id int) []TaskData_
|
|
|
sql := "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i') AS t_times,t_time FROM z_task_data_" + T_task_id + " WHERE " + sql_condition + " ORDER BY t_time "
|
|
|
|
|
|
fmt.Println(sql)
|
|
|
- o.Raw(sql).QueryRows(&maps)
|
|
|
+ _, err := o.Raw(sql).QueryRows(&maps)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return maps
|
|
|
+ }
|
|
|
|
|
|
return maps
|
|
|
}
|
|
@@ -200,7 +181,12 @@ func Read_TaskData_ById_ClassList(T_task_id string) []TaskDataClass_ {
|
|
|
sql := "SELECT DISTINCT t_sn,t_id FROM z_task_data_" + T_task_id + " ORDER BY t_id "
|
|
|
|
|
|
fmt.Println(sql)
|
|
|
- o.Raw(sql).QueryRows(&maps)
|
|
|
+ _, err := o.Raw(sql).QueryRows(&maps)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return maps
|
|
|
+ }
|
|
|
|
|
|
return maps
|
|
|
}
|
|
@@ -231,10 +217,15 @@ func Add_TaskData(T_task_id string, T_sn string, T_id string, T_t string, T_rh s
|
|
|
sql := "INSERT INTO z_task_data_" + T_task_id + " (`t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) " +
|
|
|
"VALUES ('" + T_sn + "', " + T_id + ", " + T_t + "," + T_rh + ", '" + T_time + "')"
|
|
|
|
|
|
+ // 更新数据
|
|
|
+ //sql := "INSERT INTO z_task_data_" + T_task_id + " (`t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) " +
|
|
|
+ // "VALUES ('" + T_sn + "', " + T_id + ", " + T_t + "," + T_rh + ", '" + T_time + "')" +
|
|
|
+ // "on duplicate key update `t_t`=" + T_t + ",`t_rh`=" + T_rh
|
|
|
+
|
|
|
fmt.Println(sql)
|
|
|
res, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
return false
|
|
|
}
|
|
|
res.RowsAffected()
|
|
@@ -268,7 +259,7 @@ func Up_TaskData(T_task_id string, Id string, T_t string, T_rh string, T_time st
|
|
|
//fmt.Println(sql)
|
|
|
res, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
return false
|
|
|
}
|
|
|
res.RowsAffected()
|
|
@@ -288,7 +279,7 @@ func Del_TaskData(T_task_id string, Id string) bool {
|
|
|
logs.Println(sql)
|
|
|
res, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
return false
|
|
|
}
|
|
|
res.RowsAffected()
|
|
@@ -308,7 +299,7 @@ func Del_TaskData_t_id(T_task_id string, Id string) bool {
|
|
|
logs.Println(sql)
|
|
|
res, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
return false
|
|
|
}
|
|
|
res.RowsAffected()
|
|
@@ -340,72 +331,25 @@ func Check_TaskData_Num(T_task_id string) bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-func Read_TaskData_List(alias_name, T_task_id string, page int, page_z int) []*TaskData_ {
|
|
|
- o := orm2.NewOrmUsingDB(alias_name)
|
|
|
- var maps []*TaskData_
|
|
|
- pagez := page_z
|
|
|
-
|
|
|
- var offset int
|
|
|
- if page <= 1 {
|
|
|
- offset = 0
|
|
|
- } else {
|
|
|
- page -= 1
|
|
|
- offset = page * pagez
|
|
|
- }
|
|
|
-
|
|
|
- sql := "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i:%s') AS t_times FROM z_task_data_" + T_task_id + " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(pagez)
|
|
|
+func Read_TaskData_Num(T_task_id string) int {
|
|
|
+ o1 := orm2.NewOrmUsingDB(conf.Local_AliasName)
|
|
|
|
|
|
+ var maps_z []orm2.ParamsList
|
|
|
+ sql := "SELECT COUNT(ID) FROM z_task_data_" + T_task_id
|
|
|
fmt.Println(sql)
|
|
|
- _, err := o.Raw(sql).QueryRows(&maps)
|
|
|
+ _, err := o1.Raw(sql).ValuesList(&maps_z)
|
|
|
if err != nil {
|
|
|
- logs.Println("查询失败 z_task_data_" + T_task_id)
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return 0
|
|
|
}
|
|
|
-
|
|
|
- return maps
|
|
|
-}
|
|
|
-
|
|
|
-func Add_TaskData_List(alias_name, T_task_id string, TaskList []*TaskData_) (int, int) {
|
|
|
- var wg sync.WaitGroup
|
|
|
- limiter := make(chan bool, 80)
|
|
|
- succeeds := 0
|
|
|
- fails := 0
|
|
|
- o := orm2.NewOrmUsingDB(alias_name)
|
|
|
-
|
|
|
- for _, val := range TaskList {
|
|
|
- wg.Add(1)
|
|
|
- limiter <- true
|
|
|
-
|
|
|
- go func(TaskData *TaskData_) {
|
|
|
- defer wg.Done()
|
|
|
- //if Add_TaskData(T_task_id, TaskData.T_sn, strconv.Itoa(TaskData.T_id), fmt.Sprintf("%.2f", TaskData.T_t),
|
|
|
- // fmt.Sprintf("%.2f", TaskData.T_rh), TaskData.T_time) {
|
|
|
- // succeeds++
|
|
|
- //} else {
|
|
|
- // fails++
|
|
|
- //}
|
|
|
-
|
|
|
- sql := "INSERT INTO z_task_data_" + T_task_id + " (`t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) " +
|
|
|
- "VALUES ('" + TaskData.T_sn + "', " + strconv.Itoa(TaskData.T_id) + ", " + fmt.Sprintf("%.2f", TaskData.T_t) + "," +
|
|
|
- fmt.Sprintf("%.2f", TaskData.T_rh) + ", '" + TaskData.T_time + "')"
|
|
|
-
|
|
|
- //fmt.Println(sql)
|
|
|
- _, err := o.Raw(sql).Exec()
|
|
|
- if err != nil {
|
|
|
- fails++
|
|
|
- } else {
|
|
|
- succeeds++
|
|
|
- }
|
|
|
- <-limiter
|
|
|
- }(val)
|
|
|
- }
|
|
|
- wg.Wait()
|
|
|
- return succeeds, fails
|
|
|
+ key, _ := strconv.Atoi(maps_z[0][0].(string))
|
|
|
+ return key
|
|
|
}
|
|
|
|
|
|
func Dump_TaskData(T_task_id, root, password, url_port, database, sql_file string) (string, error) {
|
|
|
// url_port 127.0.0.1:3306
|
|
|
// mysql8.0 以上加 --column-statistics=0
|
|
|
- // mysqldump --column-statistics=0 -uroot -proot -h127.0.0.1 -P3306 cold_verify Z_TaskData_ixEfo5zk2Oeb> /Data/Z_TaskData_ixEfo5zk2Oeb.sql
|
|
|
+ // mysqldump --column-statistics=0 -uroot -proot -h127.0.0.1 -P3306 cold_verify Z_TaskData_ixEfo5zk2Oeb > /Data/Z_TaskData_ixEfo5zk2Oeb.sql
|
|
|
v := Read_Local_Mysql_Version()
|
|
|
host_port := strings.Split(url_port, ":")
|
|
|
table_name := "z_task_data_" + T_task_id
|
|
@@ -414,22 +358,29 @@ func Dump_TaskData(T_task_id, root, password, url_port, database, sql_file strin
|
|
|
org += "--column-statistics=0 "
|
|
|
}
|
|
|
//--no-create-info 只导出数据,而不添加 CREATE TABLE 语句。
|
|
|
- org = org + fmt.Sprintf("-u%s -p%s -h%s -P%s %s %s> %s --no-create-info",
|
|
|
+ org = org + fmt.Sprintf("-u%s -p%s -h%s -P%s --no-create-info --set-gtid-purged=OFF --quick %s %s > %s ",
|
|
|
root, password, host_port[0], host_port[1], database, table_name, sql_file)
|
|
|
|
|
|
logs.Println(org)
|
|
|
_, err := lib.Command(org)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ }
|
|
|
+
|
|
|
return org, err
|
|
|
}
|
|
|
|
|
|
func Insert_TaskData(root, password, url_port, database, sql_file string) (string, error) {
|
|
|
// url_port 127.0.0.1:3306
|
|
|
- // mysql -uroot -proot -h127.0.0.1 -P3306 cold_verify_local < /data/Z_TaskData_ixEfo5zk2Oeb.sql
|
|
|
+ // mysql -u root -p root -h127.0.0.1 -P3306 cold_verify_local < /data/Z_TaskData_ixEfo5zk2Oeb.sql
|
|
|
host_port := strings.Split(url_port, ":")
|
|
|
org := fmt.Sprintf("mysql -u%s -p%s -h%s -P%s %s < %s",
|
|
|
root, password, host_port[0], host_port[1], database, sql_file)
|
|
|
logs.Println(org)
|
|
|
_, err := lib.Command(org)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ }
|
|
|
return org, err
|
|
|
}
|
|
|
|
|
@@ -440,3 +391,36 @@ func Read_Local_Mysql_Version() int {
|
|
|
version, _ := strconv.Atoi(params[0]["version()"].(string)[0:1])
|
|
|
return version
|
|
|
}
|
|
|
+
|
|
|
+func Import_TaskData(T_task_id string, offset, pagez int) bool {
|
|
|
+ var maps []TaskData_
|
|
|
+ serverOrm := orm2.NewOrmUsingDB(conf.Server_AliasName)
|
|
|
+ localOrm := orm2.NewOrmUsingDB(conf.Local_AliasName)
|
|
|
+ tb_name := "z_task_data_" + T_task_id
|
|
|
+
|
|
|
+ // 开从先上版查询数据
|
|
|
+ sql := "select `ID`, `t_sn`, `t_id`, `t_t`, `t_rh`, DATE_FORMAT(t_time,'%Y-%m-%d %H:%i:%s') AS t_times from " + tb_name + " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(pagez)
|
|
|
+ logs.Println(sql)
|
|
|
+ _, err := serverOrm.Raw(sql).QueryRows(&maps)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ values := []string{}
|
|
|
+ for _, row := range maps {
|
|
|
+ // 处理数据
|
|
|
+ values = append(values, fmt.Sprintf("('%s',%d,%v,%v,'%s')", row.T_sn, row.T_id, row.T_t, row.T_rh, row.T_time))
|
|
|
+ }
|
|
|
+ // 向本地版插入数据
|
|
|
+ sql = "INSERT IGNORE INTO " + tb_name + "( `t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) VALUES " + strings.Join(values, ",")
|
|
|
+
|
|
|
+ //logs.Println(sql)
|
|
|
+ _, err = localOrm.Raw(sql).Exec()
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ return true
|
|
|
+}
|