|
@@ -328,6 +328,9 @@ func (c *TaskDataController) Export_Data_Excel() {
|
|
|
}
|
|
|
fmt.Println("DeviceSensor_data:", len(DeviceSensor_data_list))
|
|
|
|
|
|
+ path := "./ofile"
|
|
|
+ Task.Create_Dir(path)
|
|
|
+
|
|
|
timeStr := time.Now().Format("20060102150405")
|
|
|
// 保存文件
|
|
|
if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
|
|
@@ -350,6 +353,92 @@ func (c *TaskDataController) Export_Data_Excel() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func (c *TaskDataController) Check() {
|
|
|
+ T_task_id := c.GetString("T_task_id")
|
|
|
+ Task_r, is := Task.Read_Task(T_task_id)
|
|
|
+ if !is {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ type R_JSONS struct {
|
|
|
+ T_sn string // SN
|
|
|
+ T_id int // 编号
|
|
|
+ T_unm int // 数据量
|
|
|
+ T_time_interval int64 // 时间间隔
|
|
|
+ Time_start string // 开始
|
|
|
+ Time_end string // 结束
|
|
|
+ Result int // 200 OK, 201 可以补 , 202 不能补
|
|
|
+ Result_str string // 提示内容
|
|
|
+ Result_Time_start string // 2022-8-05 21:01
|
|
|
+ Result_Time_defect int64 // 缺失时间间隔
|
|
|
+ }
|
|
|
+ var r_jsons []R_JSONS
|
|
|
+
|
|
|
+ List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
|
|
|
+ for _, v := range List {
|
|
|
+ var r_json R_JSONS
|
|
|
+ r_json.T_sn = v.T_sn
|
|
|
+ r_json.T_id = v.T_id
|
|
|
+ r_json.Result = 200
|
|
|
+
|
|
|
+ DeviceSensor_data := Task.Read_TaskData_ById_List_(Task_r.T_task_id, v.T_sn, v.T_id)
|
|
|
+ r_json.T_unm = len(DeviceSensor_data)
|
|
|
+
|
|
|
+ if r_json.T_unm > 2 {
|
|
|
+
|
|
|
+ r_json.Time_end = DeviceSensor_data[len(DeviceSensor_data)-1].T_time
|
|
|
+ r_json.Time_start = DeviceSensor_data[0].T_time
|
|
|
+
|
|
|
+ formatTime_a, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[0].T_time)
|
|
|
+ formatTime_b, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[1].T_time)
|
|
|
+ formatTime_x := formatTime_b.Unix() - formatTime_a.Unix()
|
|
|
+ r_json.T_time_interval = formatTime_x
|
|
|
+ println("formatTime_x:", v.T_id, v.T_sn, formatTime_x)
|
|
|
+ if formatTime_x > 60*30 || formatTime_x < 60 {
|
|
|
+ r_json.Result = 202
|
|
|
+ r_json.Result_str = "数据异常(数据的第一个时间与第二个时间相差 " + strconv.FormatInt(formatTime_x, 10) + "秒),必须大于60秒,小于30分钟"
|
|
|
+ r_jsons = append(r_jsons, r_json)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ for data_i := 2; data_i < len(DeviceSensor_data); data_i++ {
|
|
|
+ formatTime_a = formatTime_b
|
|
|
+ formatTime_b, _ = time.Parse("2006-1-2 15:04", DeviceSensor_data[data_i].T_time)
|
|
|
+ formatTime_ := formatTime_b.Unix() - formatTime_a.Unix()
|
|
|
+ println("formatTime_x-:", formatTime_)
|
|
|
+ if formatTime_ < formatTime_x {
|
|
|
+ r_json.Result = 202
|
|
|
+ r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒,间隔小于时间间隔,不能自动补充"
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if formatTime_x != formatTime_ {
|
|
|
+ if formatTime_ > 60*30 {
|
|
|
+ r_json.Result = 202
|
|
|
+ r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒,相差时间大于30分钟,不能自动补充"
|
|
|
+ break
|
|
|
+ }
|
|
|
+ r_json.Result = 201
|
|
|
+ r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒"
|
|
|
+ r_json.Result_Time_start = DeviceSensor_data[data_i-1].T_time
|
|
|
+ r_json.Result_Time_defect = formatTime_
|
|
|
+ println(r_json.Result_str)
|
|
|
+ break
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ r_json.Result = 202
|
|
|
+ r_json.Result_str = "数据量太少 必须大于 2条以上!"
|
|
|
+ }
|
|
|
+
|
|
|
+ r_jsons = append(r_jsons, r_json)
|
|
|
+ }
|
|
|
+
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// 打包数据本地数据
|
|
|
func (c *TaskDataController) TaskData_Import_TaskData() {
|
|
|
// 获取登录用户的uuid
|
|
@@ -362,7 +451,10 @@ func (c *TaskDataController) TaskData_Import_TaskData() {
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
- sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id)
|
|
|
+ if err := Task.Create_Dir(conf.Sql_Temp_Dir); err != nil {
|
|
|
+ logs.Println("创建sql临时文件失败")
|
|
|
+ }
|
|
|
+ sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Dir, T_task_id)
|
|
|
org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
|
|
|
if err != nil {
|
|
|
c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线上数据导出失败!"}
|
|
@@ -376,7 +468,7 @@ func (c *TaskDataController) TaskData_Import_TaskData() {
|
|
|
Task.CREATE_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
for i < 10 {
|
|
|
Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
- org, err := Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
|
|
|
+ org, err = Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
|
|
|
if err != nil {
|
|
|
logs.Println("任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, err.Error())
|
|
|
} else {
|
|
@@ -416,8 +508,10 @@ func (c *TaskDataController) TaskData_Up_TaskData() {
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id)
|
|
|
+ if err := Task.Create_Dir(conf.Sql_Temp_Dir); err != nil {
|
|
|
+ logs.Println("创建sql临时文件失败")
|
|
|
+ }
|
|
|
+ sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Dir, T_task_id)
|
|
|
org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
|
|
|
if err != nil {
|
|
|
logs.Println(T_uuid, "任务数据-更新线上数据", "导出线下数据Z_TaskData_"+T_task_id, err.Error())
|