| 
					
				 | 
			
			
				@@ -14,7 +14,6 @@ import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/xuri/excelize/v2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"math" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"os" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	"sort" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"strconv" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"strings" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"sync" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -551,7 +550,7 @@ func (c *TaskDataController) Check_Asyn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	r_jsons := make([]R_JSONS, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	r_jsons := make([]R_JSONS, len(List)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var limitMaxNum = 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var chData = make(chan int, limitMaxNum) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var jobGroup sync.WaitGroup 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -625,12 +624,18 @@ func (c *TaskDataController) Check_Asyn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//使用Wait等待所有任务执行完毕 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	jobGroup.Wait() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	jsonsMap := map[string]R_JSONS{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	resp := make([]R_JSONS, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	sort.Slice(r_jsons, func(i, j int) bool { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return r_jsons[i].T_id < r_jsons[j].T_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, json := range r_jsons { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		jsonsMap[json.T_id] = json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		resp = append(resp, jsonsMap[v.T_id]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: resp} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -772,6 +777,13 @@ func (c *TaskDataController) TaskData_Up_TaskData_Back() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_delivery_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 采集中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	Task_r.T_delivery_state = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err = NatsServer.Update_Task(Task_r) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -790,5 +802,461 @@ func (c *TaskDataController) TaskData_Up_TaskData_Back() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// CopyFromPosition 数据拷贝 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c *TaskDataController) CopyFromPosition() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if !b_ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartTime := c.GetString("StartTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	startTime, ok := lib.TimeStrToTime(StartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EndTime := c.GetString("EndTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	endTime, ok := lib.TimeStrToTime(EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CopyTime := c.GetString("CopyTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	copyTime, ok := lib.TimeStrToTime(CopyTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CopyEndTime := copyTime.Add(endTime.Sub(startTime)).Format("2006-01-02 15:04:05") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 时间间隔 分钟 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_saveT, _ := c.GetInt("T_saveT") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_task_id := c.GetString("T_task_id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Task_r, err := NatsServer.Read_Task(T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_collection_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据采集中,请稍后!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range SN_List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn_id := strings.Split(v, ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(sn_id) != 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn, id_str := sn_id[0], sn_id[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id, _ := strconv.Atoi(id_str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, sn, id, CopyTime, CopyEndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id, StartTime, EndTime, 0, 9999) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ct := copyTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		go func(TaskDataList []Task.TaskData_, task_id string, T_saveT int) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for _, taskData := range TaskDataList { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				taskData.T_time = ct.Format("2006-01-02 15:04:05") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Task.InsertTaskData(task_id, taskData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ct = ct.Add(time.Second * time.Duration(T_saveT)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}(List, Task_r.T_task_id, T_saveT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	System.Add_UserLogs_T(T_uuid, "数据复制", fmt.Sprintf("数据复制(%s)[%s|%s],复制时间:%s,,时间间隔:%d", T_task_id, StartTime, EndTime, CopyTime, T_saveT), SN_List) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{200, "数据复制已提交后台处理!", nil} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// RepairSensorData 数据补漏 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c *TaskDataController) RepairSensorData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if !b_ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartTime := c.GetString("StartTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok := lib.TimeStrToTime(StartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EndTime := c.GetString("EndTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok = lib.TimeStrToTime(EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 时间间隔 秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	saveTime, _ := c.GetInt("T_saveT") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_task_id := c.GetString("T_task_id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Task_r, err := NatsServer.Read_Task(T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_collection_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据采集中,请稍后!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	num := 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range SN_List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn_id := strings.Split(v, ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(sn_id) != 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn, id_str := sn_id[0], sn_id[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id, _ := strconv.Atoi(id_str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id, StartTime, EndTime, 0, 9999) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i := 0; i < len(list)-1; i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			current := list[i].T_time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			next := list[i+1].T_time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			c, _ := time.Parse("2006-01-02 15:04:05", current) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			n, _ := time.Parse("2006-01-02 15:04:05", next) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			interval := n.Unix() - c.Unix() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			logs.Debug("时间间隔:", interval, "保存时间:", saveTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			fmt.Println("当前:", current, "下一个:", next) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if int(interval) > saveTime { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ttInterval := list[i+1].T_t - list[i].T_t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ttt := list[i].T_t // 温度临时变量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				trhInterval := list[i+1].T_rh - list[i].T_rh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				trht := list[i].T_rh //湿度临时变量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				count := (int(interval) - saveTime) / saveTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if int(interval)%saveTime != 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					count++ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				num += count 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for k := 0; k < count; k++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					t := c.Add(time.Second * time.Duration(saveTime)).Format("2006-01-02 15:04:05") //时间临时变量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					ttt += ttInterval / float32(count) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					trht += trhInterval / float32(count) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Task.InsertTaskData(Task_r.T_task_id, Task.TaskData_{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						T_sn:   list[i].T_sn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						T_id:   list[i].T_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						T_t:    ttt, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						T_rh:   trht, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						T_time: t, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					c = c.Add(time.Second * time.Duration(saveTime)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	System.Add_UserLogs_T(T_uuid, "数据补漏", fmt.Sprintf("数据补漏(%s)[%s|%s],时间间隔:%d", T_task_id, StartTime, EndTime, saveTime), SN_List) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{200, fmt.Sprintf("补漏完成!共补漏%d条数据", num), nil} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// DataSensorDataTrend 数据趋势 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c *TaskDataController) DataSensorDataTrend() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if !b_ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartTime := c.GetString("StartTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok := lib.TimeStrToTime(StartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EndTime := c.GetString("EndTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok = lib.TimeStrToTime(EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 时间间隔 秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	saveTime, _ := c.GetInt("T_saveT") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_task_id := c.GetString("T_task_id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Task_r, err := NatsServer.Read_Task(T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_collection_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据采集中,请稍后!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range SN_List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn_id := strings.Split(v, ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(sn_id) != 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn, id_str := sn_id[0], sn_id[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id, _ := strconv.Atoi(id_str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id, StartTime, EndTime, 0, 9999) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(list) == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, sn, id, StartTime, EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		first := list[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		last := list[len(list)-1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		current, _ := time.Parse("2006-01-02 15:04:05", first.T_time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		next, _ := time.Parse("2006-01-02 15:04:05", last.T_time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		interval := next.Sub(current).Seconds() / float64(saveTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ttInterval := (last.T_t - first.T_t) / float32(interval) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		trhInterval := (last.T_rh - first.T_rh) / float32(interval) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tt := first.T_t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ttrh := first.T_rh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for current.Unix() < next.Unix() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tt += ttInterval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ttrh += trhInterval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ttime := current.Format("2006-01-02 15:04:05") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Task.InsertTaskData(Task_r.T_task_id, Task.TaskData_{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//加保存时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_sn:   first.T_sn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_id:   strconv.Itoa(id), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_t:    tt, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_rh:   ttrh, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_time: ttime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			current = current.Add(time.Second * time.Duration(saveTime)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	System.Add_UserLogs_T(T_uuid, "数据趋势", fmt.Sprintf("数据趋势(%s)[%s|%s],时间间隔:%d", T_task_id, StartTime, EndTime, saveTime), SN_List) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{200, "设置趋势操作成功", nil} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// UpdateRand 数据随机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c *TaskDataController) UpdateRand() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if !b_ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartTime := c.GetString("StartTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok := lib.TimeStrToTime(StartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EndTime := c.GetString("EndTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok = lib.TimeStrToTime(EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TemperatureMin, _ := c.GetInt("TemperatureMin") // 温度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TemperatureMax, _ := c.GetInt("TemperatureMax") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	HumidityMax, _ := c.GetInt("HumidityMax") // 湿度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	HumidityMin, _ := c.GetInt("HumidityMin") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_task_id := c.GetString("T_task_id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Task_r, err := NatsServer.Read_Task(T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_collection_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据采集中,请稍后!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range SN_List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn_id := strings.Split(v, ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(sn_id) != 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn, id := sn_id[0], sn_id[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Task.UpdateTaskDataTemperatureAndHumidityRandom(Task_r.T_task_id, sn, id, StartTime, EndTime, TemperatureMax, TemperatureMin, HumidityMax, HumidityMin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	System.Add_UserLogs_T(T_uuid, "数据随机", fmt.Sprintf("数据随机(%s)[%s|%s],温度[%d-%d],湿度[%d-%d]", T_task_id, StartTime, EndTime, TemperatureMin, TemperatureMax, HumidityMax, HumidityMin), SN_List) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//反馈成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{200, "调整随机偏移值成功!", nil} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// UpdateFix 更新固定值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c *TaskDataController) UpdateFix() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if !b_ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartTime := c.GetString("StartTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok := lib.TimeStrToTime(StartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EndTime := c.GetString("EndTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok = lib.TimeStrToTime(EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FixTemperature := c.GetString("FixTemperature") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FixHumidity := c.GetString("FixHumidity") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//2.得到数据进行统一设置访问修改 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	humidity, _ := strconv.ParseFloat(FixHumidity, 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	temperature, _ := strconv.ParseFloat(FixTemperature, 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_task_id := c.GetString("T_task_id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Task_r, err := NatsServer.Read_Task(T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_collection_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据采集中,请稍后!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//3.循环更新数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range SN_List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn_id := strings.Split(v, ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(sn_id) != 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn, id := sn_id[0], sn_id[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Task.UpdateTaskDataTemperatureAndHumidity(Task_r.T_task_id, sn, id, StartTime, EndTime, temperature, humidity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	System.Add_UserLogs_T(T_uuid, "更新固定值", fmt.Sprintf("更新固定值(%s)[%s|%s],温度[%f],湿度[%f]", T_task_id, StartTime, EndTime, temperature, humidity), SN_List) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//4.反馈成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{200, "调整固定偏移值成功!", nil} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// DataSensorDataSmooth 数据平滑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c *TaskDataController) DataSensorDataSmooth() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if !b_ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartTime := c.GetString("StartTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok := lib.TimeStrToTime(StartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EndTime := c.GetString("EndTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, ok = lib.TimeStrToTime(EndTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	tRange, _ := c.GetFloat("tRange") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	hRange, _ := c.GetFloat("hRange") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_task_id := c.GetString("T_task_id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Task_r, err := NatsServer.Read_Task(T_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if Task_r.T_collection_state == 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据采集中,请稍后!"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var count int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range SN_List { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn_id := strings.Split(v, ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(sn_id) != 2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sn := sn_id[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id_str := sn_id[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id, _ := strconv.Atoi(id_str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id, StartTime, EndTime, 0, 9999) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i := 1; i < len(list); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			n := list[i-1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			old := list[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			newO := list[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//变化差 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var tInterval = old.T_t - n.T_t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var hInterval = old.T_rh - n.T_rh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			fmt.Println("温度:", n.T_t, "温度next:", old.T_t, "差值:", n.T_t-old.T_t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if tRange != 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if tInterval > float32(tRange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					newO.T_t = n.T_t + float32(tRange) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else if tInterval < -float32(tRange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					newO.T_t = n.T_t - float32(tRange) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if hRange != 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if hInterval > float32(hRange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					newO.T_rh = n.T_rh + float32(hRange) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else if hInterval < -float32(hRange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					newO.T_rh = n.T_rh - float32(hRange) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if old.T_rh != newO.T_rh || old.T_t != newO.T_t { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fmt.Println("原始数据:", old, "新数据:", newO) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				list[i] = newO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Task.UpdateTaskData(Task_r.T_task_id, sn, id_str, old, newO) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				count++ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	System.Add_UserLogs_T(T_uuid, "数据平滑", fmt.Sprintf("数据平滑(%s)[%s|%s],温度[%f],湿度[%f]", T_task_id, StartTime, EndTime, tRange, hRange), SN_List) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Data["json"] = lib.JSONS{200, "操作成功处理" + fmt.Sprint(count) + "条数据", nil} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.ServeJSON() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |