Pārlūkot izejas kodu

update:复制到增加温湿度选择

zoie 2 dienas atpakaļ
vecāks
revīzija
6f878e0ef1
1 mainītis faili ar 32 papildinājumiem un 9 dzēšanām
  1. 32 9
      controllers/TaskData.go

+ 32 - 9
controllers/TaskData.go

@@ -12,6 +12,15 @@ import (
 	"ColdVerify_local/models/Task"
 	"errors"
 	"fmt"
+	"math"
+	"net/http"
+	"os"
+	"sort"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
+
 	"github.com/beego/beego/v2/client/orm"
 	beego "github.com/beego/beego/v2/server/web"
 	"github.com/signintech/gopdf"
@@ -21,14 +30,6 @@ import (
 	"gonum.org/v1/plot/plotter"
 	"gonum.org/v1/plot/vg"
 	"gonum.org/v1/plot/vg/draw"
-	"math"
-	"net/http"
-	"os"
-	"sort"
-	"strconv"
-	"strings"
-	"sync"
-	"time"
 )
 
 type TaskDataController struct {
@@ -2209,6 +2210,8 @@ func (c *TaskDataController) CopyFromPositionSN() {
 	CopyEndTime := copyTime.Add(endTime.Sub(startTime)).Format("2006-01-02 15:04")
 	// 时间间隔 分钟
 	T_saveT, _ := c.GetInt("T_saveT")
+	T_switch_t, _ := c.GetBool("T_switch_t", true)
+	T_switch_h, _ := c.GetBool("T_switch_h", true)
 
 	SN_List := strings.Split(strings.Trim(c.GetString("SN_List"), "|"), "|")
 	if len(SN_List) != 1 {
@@ -2237,11 +2240,31 @@ func (c *TaskDataController) CopyFromPositionSN() {
 	}
 	sn, id_str := sn_id[0], sn_id[1]
 	List, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, sn, id_str, StartTime, EndTime, 0, 9999)
+	// 获取目标位置的原有数据
+	CopyList, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, CopySN, CopyID, CopyTime, CopyEndTime, 0, 9999)
+	copyDataMap := make(map[string]Task.TaskData_)
+	for _, data := range CopyList {
+		copyDataMap[data.T_time] = data
+	}
 	Task.DeleteTaskDataByTimeRange(Task_r.T_task_id, CopySN, CopyID, CopyTime, CopyEndTime)
 	ct := copyTime
 	var valueStrings []string
 	for _, data := range List {
-		valueStrings = append(valueStrings, fmt.Sprintf("('%s','%s',%v,%v,'%s')", CopySN, CopyID, data.T_t, data.T_rh, ct.Format("2006-01-02 15:04")))
+		t_t := data.T_t
+		t_rh := data.T_rh
+		timeKey := ct.Format("2006-01-02 15:04")
+		// 如果开关为false,使用目标位置原有的值
+		if !T_switch_t {
+			if copyData, exists := copyDataMap[timeKey]; exists {
+				t_t = copyData.T_t
+			}
+		}
+		if !T_switch_h {
+			if copyData, exists := copyDataMap[timeKey]; exists {
+				t_rh = copyData.T_rh
+			}
+		}
+		valueStrings = append(valueStrings, fmt.Sprintf("('%s','%s',%v,%v,'%s')", CopySN, CopyID, t_t, t_rh, timeKey))
 		ct = ct.Add(time.Second * time.Duration(T_saveT))
 	}
 	err = Task.Batch_Adds_TaskData(T_task_id, valueStrings)