zoie 1 vuosi sitten
vanhempi
commit
0d5d1dedcf
3 muutettua tiedostoa jossa 203 lisäystä ja 22 poistoa
  1. 190 11
      controllers/TaskData.go
  2. 5 5
      models/Task/TaskData.go
  3. 8 6
      routers/TaskData.go

+ 190 - 11
controllers/TaskData.go

@@ -857,9 +857,8 @@ func (c *TaskDataController) CopyFromPosition() {
 			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)
+		Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, sn, id_str, CopyTime, CopyEndTime)
+		List, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id_str, StartTime, EndTime, 0, 9999)
 		ct := copyTime
 		go func(TaskDataList []Task.TaskData_, task_id string, T_saveT int) {
 			for _, taskData := range TaskDataList {
@@ -923,8 +922,7 @@ func (c *TaskDataController) RepairSensorData() {
 			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)
+		list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id_str, StartTime, EndTime, 0, 9999)
 		for i := 0; i < len(list)-1; i++ {
 			current := list[i].T_time
 			next := list[i+1].T_time
@@ -1013,13 +1011,12 @@ func (c *TaskDataController) DataSensorDataTrend() {
 			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)
+		list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id_str, StartTime, EndTime, 0, 9999)
 		if len(list) == 0 {
 			continue
 		}
 
-		Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, sn, id, StartTime, EndTime)
+		Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, sn, id_str, StartTime, EndTime)
 		first := list[0]
 		last := list[len(list)-1]
 
@@ -1039,7 +1036,7 @@ func (c *TaskDataController) DataSensorDataTrend() {
 			Task.InsertTaskData(Task_r.T_task_id, Task.TaskData_{
 				//加保存时间
 				T_sn:   first.T_sn,
-				T_id:   strconv.Itoa(id),
+				T_id:   id_str,
 				T_t:    tt,
 				T_rh:   ttrh,
 				T_time: ttime,
@@ -1220,8 +1217,7 @@ func (c *TaskDataController) DataSensorDataSmooth() {
 		}
 		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)
+		list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id_str, StartTime, EndTime, 0, 9999)
 		for i := 1; i < len(list); i++ {
 			n := list[i-1]
 			old := list[i]
@@ -1257,3 +1253,186 @@ func (c *TaskDataController) DataSensorDataSmooth() {
 	c.Data["json"] = lib.JSONS{200, "操作成功处理" + fmt.Sprint(count) + "条数据", nil}
 	c.ServeJSON()
 }
+
+// CopyFromPosition 数据拷贝平均值
+func (c *TaskDataController) CopyFromPositionAverageSN() {
+	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")
+	CopySN := c.GetString("CopySN")
+	CopyID := c.GetString("CopyID")
+	copyTime, ok := lib.TimeStrToTime(CopyTime)
+	// 时间间隔 s
+	T_saveT, _ := c.GetInt("T_saveT")
+	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")
+
+	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|")
+	if len(SN_List) != 2 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "SN_List Err!"}
+		c.ServeJSON()
+		return
+	}
+	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
+	}
+	sn_id1 := strings.Split(SN_List[0], ",")
+	if len(sn_id1) != 2 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "SN_List Err!"}
+		c.ServeJSON()
+		return
+	}
+	sn1, id_str1 := sn_id1[0], sn_id1[1]
+	sn_id2 := strings.Split(SN_List[1], ",")
+	if len(sn_id2) != 2 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "SN_List Err!"}
+		c.ServeJSON()
+		return
+	}
+	sn2, id_str2 := sn_id2[0], sn_id2[1]
+	List1, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn1, id_str1, StartTime, EndTime, 0, 9999)
+	List2, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn2, id_str2, StartTime, EndTime, 0, 9999)
+	var list []Task.TaskData_
+	ct := copyTime
+	for i := 0; i < len(List1); i++ {
+		if List1[i].T_time != List2[i].T_time {
+			ct = ct.Add(time.Second * time.Duration(T_saveT))
+			continue
+		}
+		T_t := (List1[i].T_t + List2[i].T_t) / 2
+		T_rh := (List1[i].T_rh + List2[i].T_rh) / 2
+		list = append(list, Task.TaskData_{
+			T_sn:   CopySN,
+			T_id:   CopyID,
+			T_t:    T_t,
+			T_rh:   T_rh,
+			T_time: ct.Format("2006-01-02 15:04:05"),
+		})
+		ct = ct.Add(time.Second * time.Duration(T_saveT))
+	}
+	Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, CopySN, CopyID, CopyTime, CopyEndTime)
+
+	go func(TaskDataList []Task.TaskData_, task_id string) {
+		for _, taskData := range TaskDataList {
+			Task.InsertTaskData(task_id, taskData)
+		}
+	}(list, Task_r.T_task_id)
+
+	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
+}
+
+// CopyFromPosition 数据拷贝
+func (c *TaskDataController) CopyFromPositionSN() {
+	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)
+	CopySN := c.GetString("CopySN")
+	CopyID := c.GetString("CopyID")
+	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"), "|"), "|")
+	if len(SN_List) != 1 {
+		c.Data["json"] = lib.JSONS{202, "SN_List Err!", nil}
+		c.ServeJSON()
+		return
+	}
+	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
+	}
+
+	sn_id := strings.Split(SN_List[0], ",")
+	if len(sn_id) != 2 {
+		c.Data["json"] = lib.JSONS{202, "SN_List Err!", nil}
+		c.ServeJSON()
+		return
+	}
+	sn, id_str := sn_id[0], sn_id[1]
+	Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, CopySN, CopyID, CopyTime, CopyEndTime)
+	List, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id_str, 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")
+			taskData.T_sn = CopySN
+			taskData.T_id = CopyID
+			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
+}

+ 5 - 5
models/Task/TaskData.go

@@ -154,7 +154,7 @@ func Read_TaskData_ById_List(T_task_id string, SN string, T_id string, Time_star
 	key, _ := strconv.Atoi(maps_z[0][0].(string))
 	return maps, int64(key)
 }
-func Read_TaskData_ById_List_AES(T_task_id string, SN string, T_id int, Time_start_ string, Time_end_ string, page int, page_z int) ([]TaskData_, int64) {
+func Read_TaskData_ById_List_AES(T_task_id string, SN string, T_id string, Time_start_ string, Time_end_ string, page int, page_z int) ([]TaskData_, int64) {
 	o := orm.NewOrm()
 	var maps []TaskData_
 	var maps_z []orm2.ParamsList
@@ -177,8 +177,8 @@ func Read_TaskData_ById_List_AES(T_task_id string, SN string, T_id int, Time_sta
 		sql_condition += " AND t_time <= '" + Time_end_ + "'"
 	}
 
-	if T_id != -1 {
-		sql_condition += " AND t_id = '" + strconv.Itoa(T_id) + "'"
+	if len(T_id) > 0 {
+		sql_condition += " AND t_id = '" + T_id + "'"
 	}
 	if len(SN) > 0 {
 		sql_condition += " AND t_sn = '" + SN + "'"
@@ -621,8 +621,8 @@ func InsertTaskData(T_task_id string, d TaskData_) {
 }
 
 // DeleteTaskDataByTimeRange 删除时间范围内的数据
-func DeleteTaskDataByTimeRange(T_task_id, sn string, id int, start, end string) {
-	sqlStatement := fmt.Sprintf("delete from z_task_data_%s where t_time between '%s' and '%s' and t_id = '%d' and t_sn = '%s'", T_task_id, start, end, id, sn)
+func DeleteTaskDataByTimeRange(T_task_id, sn string, id string, start, end string) {
+	sqlStatement := fmt.Sprintf("delete from z_task_data_%s where t_time between '%s' and '%s' and t_id = '%s' and t_sn = '%s'", T_task_id, start, end, id, sn)
 	o := orm.NewOrm()
 	exec, err := o.Raw(sqlStatement).Exec()
 	if err != nil {

+ 8 - 6
routers/TaskData.go

@@ -29,10 +29,12 @@ func init() {
 	//beego.Router("/TaskData/Up_TaskData_Back", &controllers.TaskDataController{}, "*:TaskData_Up_TaskData_Back") // 更新线上数据
 
 	// 数据处理
-	beego.Router("/TaskData/CopyFromPosition", &controllers.TaskDataController{}, "*:CopyFromPosition")         // 数据复制
-	beego.Router("/TaskData/RepairSensorData", &controllers.TaskDataController{}, "*:RepairSensorData")         // 数据补漏
-	beego.Router("/TaskData/DataSensorDataTrend", &controllers.TaskDataController{}, "*:DataSensorDataTrend")   // 数据趋势
-	beego.Router("/TaskData/UpdateRand", &controllers.TaskDataController{}, "*:UpdateRand")                     // 数据随机
-	beego.Router("/TaskData/UpdateFix", &controllers.TaskDataController{}, "*:UpdateFix")                       // 更新固定值
-	beego.Router("/TaskData/DataSensorDataSmooth", &controllers.TaskDataController{}, "*:DataSensorDataSmooth") // 数据平滑
+	beego.Router("/TaskData/CopyFromPosition", &controllers.TaskDataController{}, "*:CopyFromPosition")                   // 数据复制
+	beego.Router("/TaskData/RepairSensorData", &controllers.TaskDataController{}, "*:RepairSensorData")                   // 数据补漏
+	beego.Router("/TaskData/DataSensorDataTrend", &controllers.TaskDataController{}, "*:DataSensorDataTrend")             // 数据趋势
+	beego.Router("/TaskData/UpdateRand", &controllers.TaskDataController{}, "*:UpdateRand")                               // 数据随机
+	beego.Router("/TaskData/UpdateFix", &controllers.TaskDataController{}, "*:UpdateFix")                                 // 更新固定值
+	beego.Router("/TaskData/DataSensorDataSmooth", &controllers.TaskDataController{}, "*:DataSensorDataSmooth")           // 数据平滑
+	beego.Router("/TaskData/CopyFromPositionAverageSN", &controllers.TaskDataController{}, "*:CopyFromPositionAverageSN") // 平均复制到
+	beego.Router("/TaskData/CopyFromPositionSN", &controllers.TaskDataController{}, "*:CopyFromPositionSN")               // 增加复制到某测点
 }